bld1: building 7ibk2fmg37r1fcckn8mxg858pv8m0xlm-python3.14-mcp-2.3.0.drv structuredAttrs is enabled Sourcing python-remove-tests-dir-hook Sourcing python-catch-conflicts-hook.sh Sourcing python-remove-bin-bytecode-hook.sh Sourcing pypa-build-hook Using pypaBuildPhase Sourcing python-runtime-deps-check-hook Using pythonRuntimeDepsCheckHook Sourcing pypa-install-hook Using pypaInstallPhase Sourcing python-imports-check-hook.sh Using pythonImportsCheckPhase Sourcing python-metadata-check-hook.sh Using pythonMetadataCheckPhase Sourcing python-namespaces-hook Sourcing python-catch-conflicts-hook.sh Sourcing pytest-check-hook Using pytestCheckPhase Running phase: unpackPhase unpacking source archive /nix/store/prbkdf4kv543ij4r95gk96pykmcqy7xp-source source root is source setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "source/uv.lock" Running phase: patchPhase Running phase: updateAutotoolsGnuConfigScriptsPhase Running phase: configurePhase no configure script, doing nothing Running phase: buildPhase Executing pypaBuildPhase Setting UV_DYNAMIC_VERSIONING_BYPASS to 2.3.0 Creating a wheel... pypa build flags: --no-isolation --outdir dist/ --wheel * Getting build dependencies for wheel... * Building wheel... Successfully built mcp-2.3.0-py3-none-any.whl Finished creating a wheel... Finished executing pypaBuildPhase Running phase: pythonRuntimeDepsCheckHook Executing pythonRuntimeDepsCheck Checking runtime dependencies for mcp-2.3.0-py3-none-any.whl Finished executing pythonRuntimeDepsCheck Running phase: installPhase Executing pypaInstallPhase Successfully installed mcp-2.3.0-py3-none-any.whl Finished executing pypaInstallPhase Running phase: pythonOutputDistPhase Executing pythonOutputDistPhase Finished executing pythonOutputDistPhase Running phase: fixupPhase shrinking RPATHs of ELF executables and libraries in /nix/store/7xz9ma2k2sldzysn777zphvp0id0sx3j-python3.14-mcp-2.3.0-dist checking for references to /build/ in /nix/store/7xz9ma2k2sldzysn777zphvp0id0sx3j-python3.14-mcp-2.3.0-dist... patching script interpreter paths in /nix/store/7xz9ma2k2sldzysn777zphvp0id0sx3j-python3.14-mcp-2.3.0-dist shrinking RPATHs of ELF executables and libraries in /nix/store/xbc8cpmhbgszb6gjhbymygg4kq4289ld-python3.14-mcp-2.3.0 checking for references to /build/ in /nix/store/xbc8cpmhbgszb6gjhbymygg4kq4289ld-python3.14-mcp-2.3.0... patching script interpreter paths in /nix/store/xbc8cpmhbgszb6gjhbymygg4kq4289ld-python3.14-mcp-2.3.0 stripping (with command strip and flags -S -p) in /nix/store/xbc8cpmhbgszb6gjhbymygg4kq4289ld-python3.14-mcp-2.3.0/lib /nix/store/xbc8cpmhbgszb6gjhbymygg4kq4289ld-python3.14-mcp-2.3.0/bin Rewriting #!/nix/store/xahxrjs30p3mw0a42bqg9ikgkikskw8m-python3-3.14.8/bin/python3.14 to #!/nix/store/xahxrjs30p3mw0a42bqg9ikgkikskw8m-python3-3.14.8 wrapping `/nix/store/xbc8cpmhbgszb6gjhbymygg4kq4289ld-python3.14-mcp-2.3.0/bin/mcp'... Executing pythonRemoveTestsDir Finished executing pythonRemoveTestsDir Running phase: installCheckPhase no Makefile or custom installCheckPhase, doing nothing Running phase: pythonCatchConflictsPhase Running phase: pythonRemoveBinBytecodePhase Running phase: pythonImportsCheckPhase Executing pythonImportsCheckPhase Check whether the following modules can be imported: mcp Running phase: pythonMetadataCheckPhase Executing pythonMetadataCheckPhase Running phase: pytestCheckPhase Executing pytestCheckPhase pytest flags: -m pytest -k not\ \(test_client_with_stdio_parameters_launches_the_server_as_a_subprocess\)\ and\ not\ \(test_tool_call_and_notification_round_trip_over_a_stdio_subprocess\)\ and\ not\ \(test_a_tool_spawned_childs_stdout_writes_never_reach_the_wire\)\ and\ not\ \(test_notification_validation_error\)\ and\ not\ \(test_sse_security_\)\ and\ not\ \(test_streamable_http_\)\ and\ not\ \(test_streamablehttp_\)\ and\ not\ \(test_messages_are_executed_concurrently\) --numprocesses=48 ============================= test session starts ============================== platform linux -- Python 3.14.8, pytest-9.1.1, pluggy-1.6.0 rootdir: /build/source configfile: pyproject.toml plugins: anyio-4.15.1, examples-0.0.18, inline-snapshot-0.34.2, logfire-4.41.0, asyncio-1.4.0, xdist-3.8.0 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function 48 workers [5913 items] scheduling tests via LoadScheduling tests/client/auth/extensions/test_identity_assertion.py::test_resource_server_metadata_is_never_consulted tests/client/test_auth.py::test_registration_response_with_substituted_metadata_yields_the_credentials tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_sets_client_info tests/client/test_auth.py::TestOAuthFallback::test_prioritize_www_auth_scope_over_prm tests/client/test_client.py::test_client_is_initialized tests/client/test_auth.py::test_union_scopes[no-new] tests/client/test_caching.py::test_keys_with_field_values_that_concatenate_identically_do_not_collide[InMemoryResponseCacheStore] tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_valid_client_metadata_url tests/client/test_caching.py::test_a_stale_private_entry_does_not_shadow_a_fresh_public_one tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32601] tests/client/test_input_required.py::test_multi_round_loops_until_retry_returns_non_input_required tests/client/test_client_caching.py::test_a_custom_store_with_a_url_server_constructs_and_is_used tests/client/test_client_caching.py::test_a_shared_store_hit_prunes_a_header_map_the_writers_filter_dropped tests/client/test_client_extensions.py::test_settings_dict_is_held_by_reference_not_copied tests/client/test_extension.py::test_notification_binding_accepts_core_known_method tests/client/test_probe.py::test_a_valid_discover_result_is_adopted_without_initializing tests/client/test_session.py::test_send_request_skips_the_surface_gate_when_method_absent_at_version tests/client/test_session.py::test_discover_is_idempotent_and_returns_the_cached_result tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_modern_path tests/client/test_session_notification_bindings.py::test_binding_delivery_works_without_adopt tests/client/test_session_claims.py::test_unknown_result_type_fails_validation_with_and_without_claims[False] tests/client/test_stdio.py::test_invalid_utf8_flushed_by_a_dying_server_does_not_break_shutdown tests/client/test_streamable_http.py::test_post_request_merges_per_message_metadata_headers tests/client/test_session.py::test_a_2026_result_type_tag_from_a_legacy_server_never_reaches_the_result[get_prompt-body1] tests/docs_src/test_completions.py::test_returning_none_is_an_empty_list_not_an_error tests/client/test_transport_stream_cleanup.py::test_sse_client_closes_all_streams_on_http_error tests/docs_src/test_media.py::test_icons_are_visible_where_they_were_declared tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error="insufficient_scope"-error-insufficient_scope] tests/docs_src/test_apps.py::test_one_tool_two_answers tests/docs/test_translations.py::test_glossary_of_the_wrong_shape_stops_translate_with_exit_2_but_never_breaks_stage[entry-string] tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial002.py] tests/docs_src/test_caching.py::test_the_client_program_on_the_page_makes_three_fetches_for_four_calls tests/client/test_subscriptions.py::test_unconsumed_duplicate_events_coalesce tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial001.py] [gw13] [ 0%] PASSED tests/client/test_probe.py::test_a_valid_discover_result_is_adopted_without_initializing tests/docs_src/test_prompts.py::test_message_list_becomes_a_multi_turn_template tests/cli/test_claude.py::test_mcp_requirement_pins_release_versions [gw0] [ 0%] PASSED tests/cli/test_claude.py::test_mcp_requirement_pins_release_versions tests/docs_src/test_deploy.py::test_a_shared_key_and_name_let_any_worker_finish_a_round_trip [gw20] [ 0%] PASSED tests/client/test_session.py::test_send_request_skips_the_surface_gate_when_method_absent_at_version tests/client/test_session.py::test_raising_sampling_callback_answers_with_code_zero [gw8] [ 0%] PASSED tests/client/test_auth.py::test_union_scopes[no-new] tests/client/test_auth.py::test_union_scopes[both-empty] [gw8] [ 0%] PASSED tests/client/test_auth.py::test_union_scopes[both-empty] tests/client/test_auth.py::test_credentials_match_issuer_same_issuer [gw5] [ 0%] PASSED tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_valid_client_metadata_url tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_invalid_client_metadata_url_raises_error tests/docs_src/test_header_parameters.py::test_a_legacy_http_connection_ignores_the_annotation tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial009.py] [gw16] [ 0%] PASSED tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32601] tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32001] tests/docs_src/test_sampling_and_roots.py::test_an_undeclared_capability_fails_before_a_request_is_sent tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial002.py] [gw44] [ 0%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial003.py] [gw44] [ 0%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial002.py] [gw41] [ 0%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial003.py] [gw16] [ 0%] PASSED tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32001] [gw2] [ 0%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_sets_client_info tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_scopes [gw2] [ 0%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_scopes tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_client_secret_post tests/docs_src/test_extensions.py::test_contributed_tool_is_listed_and_callable tests/docs_src/test_client.py::test_a_raising_tool_is_a_result_not_an_exception [gw14] [ 0%] PASSED tests/client/test_extension.py::test_notification_binding_accepts_core_known_method tests/client/test_extension.py::test_notification_binding_is_frozen [gw3] [ 0%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_prioritize_www_auth_scope_over_prm tests/client/test_auth.py::TestOAuthFallback::test_prioritize_prm_scopes_when_no_www_auth_scope [gw3] [ 0%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_prioritize_prm_scopes_when_no_www_auth_scope tests/client/test_auth.py::TestOAuthFallback::test_omit_scope_when_no_prm_scopes_or_www_auth [gw3] [ 0%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_omit_scope_when_no_prm_scopes_or_www_auth tests/client/test_auth.py::TestOAuthFallback::test_token_exchange_request_authorization_code [gw11] [ 0%] PASSED tests/client/test_caching.py::test_a_stale_private_entry_does_not_shadow_a_fresh_public_one tests/client/test_caching.py::test_an_entry_without_an_expiry_is_never_fresh tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001.py] [gw46] [ 0%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001_client.py] [gw46] [ 0%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001_client.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial002.py] [gw46] [ 0%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial003.py] [gw45] [ 0%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial009.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial001.py] [gw45] [ 0%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial002.py] [gw18] [ 0%] PASSED tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_modern_path tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_handshake_path [gw18] [ 0%] PASSED tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_handshake_path tests/client/test_send_request_mcp_name.py::test_name_value_passes_through_encode_header_value [gw18] [ 0%] PASSED tests/client/test_send_request_mcp_name.py::test_name_value_passes_through_encode_header_value tests/client/test_send_request_mcp_name.py::test_core_tools_call_header_comes_from_the_stamp_alone [gw18] [ 0%] PASSED tests/client/test_send_request_mcp_name.py::test_core_tools_call_header_comes_from_the_stamp_alone tests/client/test_send_request_mcp_name.py::test_stamp_table_rows_win_over_name_param_by_ordering [gw18] [ 0%] PASSED tests/client/test_send_request_mcp_name.py::test_stamp_table_rows_win_over_name_param_by_ordering tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_preconnect_path [gw3] [ 0%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_token_exchange_request_authorization_code tests/client/test_auth.py::TestOAuthFallback::test_refresh_token_request [gw3] [ 0%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_refresh_token_request tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_token_exchange [gw9] [ 0%] PASSED tests/client/test_client.py::test_client_is_initialized tests/client/test_client.py::test_client_exposes_negotiated_protocol_version [gw9] [ 0%] PASSED tests/client/test_client.py::test_client_exposes_negotiated_protocol_version tests/client/test_client.py::test_client_with_simple_server [gw19] [ 0%] PASSED tests/client/test_session.py::test_a_2026_result_type_tag_from_a_legacy_server_never_reaches_the_result[get_prompt-body1] tests/client/test_session.py::test_call_tool_accepts_a_null_structured_content_the_output_schema_permits [gw18] [ 0%] PASSED tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_preconnect_path tests/client/test_send_request_mcp_name.py::test_missing_name_value_fails_loud_naming_method_and_key tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial002.py] [gw47] [ 0%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial003.py] [gw14] [ 0%] PASSED tests/client/test_extension.py::test_notification_binding_is_frozen tests/client/test_extension.py::test_extension_defaults_advertise_nothing [gw14] [ 0%] PASSED tests/client/test_extension.py::test_extension_defaults_advertise_nothing [gw7] [ 0%] PASSED tests/client/test_caching.py::test_keys_with_field_values_that_concatenate_identically_do_not_collide[InMemoryResponseCacheStore] tests/client/test_caching.py::test_set_replaces_the_entry_for_an_existing_key[InMemoryResponseCacheStore] [gw7] [ 0%] PASSED tests/client/test_caching.py::test_set_replaces_the_entry_for_an_existing_key[InMemoryResponseCacheStore] tests/client/test_caching.py::test_delete_removes_only_the_given_key[InMemoryResponseCacheStore] [gw7] [ 0%] PASSED tests/client/test_caching.py::test_delete_removes_only_the_given_key[InMemoryResponseCacheStore] tests/client/test_caching.py::test_delete_is_idempotent[InMemoryResponseCacheStore] [gw7] [ 0%] PASSED tests/client/test_caching.py::test_delete_is_idempotent[InMemoryResponseCacheStore] tests/client/test_caching.py::test_clear_removes_every_entry_across_methods_and_partitions[InMemoryResponseCacheStore] [gw7] [ 0%] PASSED tests/client/test_caching.py::test_clear_removes_every_entry_across_methods_and_partitions[InMemoryResponseCacheStore] tests/client/test_caching.py::test_cache_config_defaults_construct_an_unshared_zero_ttl_config [gw7] [ 0%] PASSED tests/client/test_caching.py::test_cache_config_defaults_construct_an_unshared_zero_ttl_config tests/client/test_caching.py::test_a_custom_store_without_a_partition_is_rejected_at_construction [gw7] [ 0%] PASSED tests/client/test_caching.py::test_a_custom_store_without_a_partition_is_rejected_at_construction tests/client/test_caching.py::test_a_custom_store_with_an_explicit_partition_constructs [gw7] [ 0%] PASSED tests/client/test_caching.py::test_a_custom_store_with_an_explicit_partition_constructs tests/client/test_caching.py::test_an_empty_target_id_is_rejected_at_construction [gw7] [ 0%] PASSED tests/client/test_caching.py::test_an_empty_target_id_is_rejected_at_construction tests/client/test_caching.py::test_a_negative_default_ttl_is_rejected_at_construction [gw7] [ 0%] PASSED tests/client/test_caching.py::test_a_negative_default_ttl_is_rejected_at_construction tests/client/test_caching.py::test_a_new_entry_past_the_cap_evicts_the_least_recently_used_one tests/docs_src/test_oauth_clients.py::test_the_provider_is_an_httpx_auth [gw40] [ 0%] PASSED tests/docs_src/test_oauth_clients.py::test_the_provider_is_an_httpx_auth tests/docs_src/test_oauth_clients.py::test_the_metadata_defaults_are_the_authorization_code_flow [gw40] [ 0%] PASSED tests/docs_src/test_oauth_clients.py::test_the_metadata_defaults_are_the_authorization_code_flow tests/docs_src/test_oauth_clients.py::test_redirect_uris_is_required [gw40] [ 0%] PASSED tests/docs_src/test_oauth_clients.py::test_redirect_uris_is_required tests/docs_src/test_oauth_clients.py::test_the_redirect_handler_receives_the_authorization_url [gw40] [ 0%] PASSED tests/docs_src/test_oauth_clients.py::test_the_redirect_handler_receives_the_authorization_url tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_has_no_human_in_the_loop [gw40] [ 0%] PASSED tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_has_no_human_in_the_loop tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_builds_its_own_metadata [gw40] [ 0%] PASSED tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_builds_its_own_metadata tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[ClientCredentialsOAuthProvider] [gw40] [ 0%] PASSED tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[ClientCredentialsOAuthProvider] tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[PrivateKeyJWTOAuthProvider] [gw40] [ 0%] PASSED tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[PrivateKeyJWTOAuthProvider] tests/docs_src/test_oauth_clients.py::test_the_two_remaining_keyword_arguments_have_defaults [gw40] [ 0%] PASSED tests/docs_src/test_oauth_clients.py::test_the_two_remaining_keyword_arguments_have_defaults tests/docs_src/test_oauth_clients.py::test_the_one_more_provider_is_private_key_jwt [gw40] [ 0%] PASSED tests/docs_src/test_oauth_clients.py::test_the_one_more_provider_is_private_key_jwt [gw5] [ 0%] PASSED tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_invalid_client_metadata_url_raises_error tests/client/test_auth.py::TestCIMD::test_auth_flow_uses_cimd_when_server_supports [gw5] [ 0%] PASSED tests/client/test_auth.py::TestCIMD::test_auth_flow_uses_cimd_when_server_supports tests/client/test_auth.py::TestCIMD::test_auth_flow_falls_back_to_dcr_when_no_cimd_support [gw5] [ 1%] PASSED tests/client/test_auth.py::TestCIMD::test_auth_flow_falls_back_to_dcr_when_no_cimd_support tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_when_as_supports_and_client_has_refresh_token [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_when_as_supports_and_client_has_refresh_token tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_with_www_authenticate_scope [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_with_www_authenticate_scope tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_does_not_support [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_does_not_support tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_client_has_no_refresh_token_grant [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_client_has_no_refresh_token_grant tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_duplicated_when_already_present [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_duplicated_when_already_present tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_scopes_selected [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_scopes_selected tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_scopes_supported_is_none [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_scopes_supported_is_none tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_as_metadata [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_as_metadata tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_grant_types_provided [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_grant_types_provided tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_default_client_metadata_includes_refresh_token_grant [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_default_client_metadata_includes_refresh_token_grant tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_adds_offline_access_when_as_advertises [gw5] [ 1%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_adds_offline_access_when_as_advertises tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_no_offline_access_when_as_does_not_advertise [gw18] [ 1%] PASSED tests/client/test_send_request_mcp_name.py::test_missing_name_value_fails_loud_naming_method_and_key tests/client/test_send_request_mcp_name.py::test_non_string_name_value_fails_loud [gw18] [ 1%] PASSED tests/client/test_send_request_mcp_name.py::test_non_string_name_value_fails_loud tests/client/test_send_request_mcp_name.py::test_absent_params_fails_loud_not_attribute_error [gw18] [ 1%] PASSED tests/client/test_send_request_mcp_name.py::test_absent_params_fails_loud_not_attribute_error tests/client/test_send_request_mcp_name.py::test_request_without_name_param_sends_no_mcp_name [gw18] [ 1%] PASSED tests/client/test_send_request_mcp_name.py::test_request_without_name_param_sends_no_mcp_name tests/client/test_session.py::test_client_session_initialize [gw18] [ 1%] PASSED tests/client/test_session.py::test_client_session_initialize tests/client/test_session.py::test_client_session_custom_client_info [gw18] [ 1%] PASSED tests/client/test_session.py::test_client_session_custom_client_info tests/client/test_session.py::test_client_session_default_client_info [gw18] [ 1%] PASSED tests/client/test_session.py::test_client_session_default_client_info tests/client/test_session.py::test_client_session_version_negotiation_success [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial001.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial002.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial003.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial004.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial005.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial006.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial006.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial001.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial002.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial001.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial002.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial003.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial001.py] [gw46] [ 1%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial002.py] [gw21] [ 1%] PASSED tests/client/test_session.py::test_discover_is_idempotent_and_returns_the_cached_result tests/client/test_session.py::test_era_neutral_properties_are_none_before_any_handshake [gw21] [ 1%] PASSED tests/client/test_session.py::test_era_neutral_properties_are_none_before_any_handshake tests/client/test_session.py::test_era_neutral_properties_after_discover [gw21] [ 1%] PASSED tests/client/test_session.py::test_era_neutral_properties_after_discover tests/client/test_session.py::test_server_info_is_none_when_the_discover_result_carries_no_stamp [gw21] [ 1%] PASSED tests/client/test_session.py::test_server_info_is_none_when_the_discover_result_carries_no_stamp tests/client/test_session.py::test_a_malformed_server_info_stamp_reads_as_absent [gw21] [ 1%] PASSED tests/client/test_session.py::test_a_malformed_server_info_stamp_reads_as_absent tests/client/test_session.py::test_discover_reraises_unsupported_version_with_malformed_error_data [gw21] [ 1%] PASSED tests/client/test_session.py::test_discover_reraises_unsupported_version_with_malformed_error_data tests/client/test_session.py::test_a_positive_inbound_ttl_reaches_the_result_unchanged [gw21] [ 1%] PASSED tests/client/test_session.py::test_a_positive_inbound_ttl_reaches_the_result_unchanged tests/client/test_session.py::test_a_boolean_inbound_ttl_is_not_clamped_only_coerced_by_validation[True] [gw21] [ 1%] PASSED tests/client/test_session.py::test_a_boolean_inbound_ttl_is_not_clamped_only_coerced_by_validation[True] tests/client/test_session.py::test_a_boolean_inbound_ttl_is_not_clamped_only_coerced_by_validation[False] [gw21] [ 1%] PASSED tests/client/test_session.py::test_a_boolean_inbound_ttl_is_not_clamped_only_coerced_by_validation[False] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2024-11-05] [gw21] [ 1%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2024-11-05] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-03-26] [gw21] [ 1%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-03-26] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-06-18] tests/docs_src/test_lifespan.py::test_lifespan_object_reaches_the_tool [gw4] [ 1%] PASSED tests/client/test_auth.py::test_registration_response_with_substituted_metadata_yields_the_credentials tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[string] [gw4] [ 1%] PASSED tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[string] tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[not-a-string] [gw4] [ 1%] PASSED tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[not-a-string] tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-json] [gw4] [ 1%] PASSED tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-json] tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-an-object] [gw4] [ 1%] PASSED tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-an-object] tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-utf8] [gw4] [ 1%] PASSED tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-utf8] tests/client/test_auth.py::test_token_exchange_reports_an_unimplemented_registered_auth_method [gw4] [ 1%] PASSED tests/client/test_auth.py::test_token_exchange_reports_an_unimplemented_registered_auth_method tests/client/test_auth.py::test_prepare_token_auth_leaves_a_private_key_jwt_client_to_its_provider [gw4] [ 1%] PASSED tests/client/test_auth.py::test_prepare_token_auth_leaves_a_private_key_jwt_client_to_its_provider tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_uses_registration_endpoint_from_metadata [gw4] [ 1%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_uses_registration_endpoint_from_metadata tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_to_default_register_endpoint_when_no_metadata [gw4] [ 1%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_to_default_register_endpoint_when_no_metadata tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_when_metadata_has_no_registration_endpoint [gw4] [ 1%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_when_metadata_has_no_registration_endpoint tests/client/test_auth.py::test_registration_request_sends_application_type [gw4] [ 1%] PASSED tests/client/test_auth.py::test_registration_request_sends_application_type tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_valid_tokens [gw4] [ 1%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_valid_tokens tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_no_tokens [gw4] [ 1%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_no_tokens tests/client/test_auth.py::TestAuthFlow::test_auth_flow_no_unnecessary_retry_after_oauth [gw4] [ 1%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_no_unnecessary_retry_after_oauth [gw21] [ 1%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-06-18] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-11-25] [gw21] [ 2%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-11-25] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2024-11-05] [gw21] [ 2%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2024-11-05] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-03-26] [gw21] [ 2%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-03-26] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-06-18] [gw21] [ 2%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-06-18] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-11-25] [gw21] [ 2%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-11-25] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2024-11-05] [gw21] [ 2%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2024-11-05] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-03-26] [gw21] [ 2%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-03-26] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-06-18] [gw21] [ 2%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-06-18] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-11-25] [gw46] [ 2%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001.py] [gw46] [ 2%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001_client.py] [gw46] [ 2%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001_client.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial002.py] [gw46] [ 2%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial003.py] [gw46] [ 2%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial004.py] [gw46] [ 2%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial005.py] [gw46] [ 2%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial006.py] [gw46] [ 2%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial006.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial007.py] [gw3] [ 2%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_token_exchange tests/cli/test_claude.py::test_mcp_requirement_leaves_dev_versions_unpinned [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_mcp_requirement_leaves_dev_versions_unpinned tests/cli/test_claude.py::test_mcp_requirement_leaves_local_versions_unpinned [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_mcp_requirement_leaves_local_versions_unpinned tests/cli/test_claude.py::test_mcp_requirement_falls_back_when_mcp_is_not_installed [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_mcp_requirement_falls_back_when_mcp_is_not_installed tests/cli/test_claude.py::test_generates_uv_run_command [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_generates_uv_run_command tests/cli/test_claude.py::test_file_spec_without_object_suffix [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_file_spec_without_object_suffix tests/cli/test_claude.py::test_with_packages_sorted_and_deduplicated [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_with_packages_sorted_and_deduplicated tests/cli/test_claude.py::test_explicit_mcp_cli_kept_alongside_pinned_requirement [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_explicit_mcp_cli_kept_alongside_pinned_requirement tests/cli/test_claude.py::test_with_editable_adds_flag [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_with_editable_adds_flag tests/cli/test_claude.py::test_env_vars_written [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_env_vars_written tests/cli/test_claude.py::test_existing_env_vars_merged_new_wins [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_existing_env_vars_merged_new_wins tests/cli/test_claude.py::test_existing_env_vars_preserved_without_new [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_existing_env_vars_preserved_without_new tests/cli/test_claude.py::test_other_servers_preserved [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_other_servers_preserved tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-8-sig] [gw0] [ 2%] PASSED tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-8-sig] tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-16] tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_refresh_token [gw3] [ 2%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_refresh_token tests/client/test_auth.py::TestOAuthFallback::test_none_auth_method [gw3] [ 2%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_none_auth_method tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_recent_protocol_version [gw3] [ 2%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_recent_protocol_version tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_excluded_with_old_protocol_version [gw3] [ 2%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_excluded_with_old_protocol_version tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_protected_resource_metadata [gw3] [ 2%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_protected_resource_metadata tests/client/test_auth.py::test_auth_flow_follows_a_same_origin_redirect_of_its_own_request [gw3] [ 2%] PASSED tests/client/test_auth.py::test_auth_flow_follows_a_same_origin_redirect_of_its_own_request tests/client/test_auth.py::test_auth_flow_does_not_follow_a_redirect_of_its_own_request_to_another_origin [gw3] [ 2%] PASSED tests/client/test_auth.py::test_auth_flow_does_not_follow_a_redirect_of_its_own_request_to_another_origin tests/client/test_auth.py::test_auth_flow_stops_following_a_redirecting_request_after_a_few_hops [gw3] [ 2%] PASSED tests/client/test_auth.py::test_auth_flow_stops_following_a_redirecting_request_after_a_few_hops tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[404-True] [gw3] [ 2%] PASSED tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[404-True] tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[307-True] [gw3] [ 2%] PASSED tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[307-True] tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[500-False] tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[io.modelcontextprotocol/ui] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[io.modelcontextprotocol/ui] tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/my_ext] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/my_ext] tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.x-y.z2/n.a-b_c] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.x-y.z2/n.a-b_c] tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[example/x] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[example/x] tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[a/b] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[a/b] tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/9start] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/9start] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[noprefix] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[noprefix] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[-foo/bar] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[-foo/bar] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[.leading/x] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[.leading/x] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[a..b/x] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[a..b/x] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo-/x] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo-/x] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[9foo/x] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[9foo/x] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/-bar] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/-bar] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/bar-] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/bar-] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/] [gw14] [ 2%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/] [gw38] [ 2%] PASSED tests/docs_src/test_media.py::test_icons_are_visible_where_they_were_declared tests/docs_src/test_middleware.py::test_timing_record_predicate [gw38] [ 2%] PASSED tests/docs_src/test_middleware.py::test_timing_record_predicate tests/docs_src/test_middleware.py::test_middleware_observes_every_inbound_message [gw26] [ 2%] PASSED tests/client/test_streamable_http.py::test_post_request_merges_per_message_metadata_headers tests/client/test_streamable_http.py::test_pre_session_bare_404_maps_to_method_not_found [gw26] [ 2%] PASSED tests/client/test_streamable_http.py::test_pre_session_bare_404_maps_to_method_not_found tests/client/test_streamable_http.py::test_initialize_post_clears_cached_pv_header_and_unstamped_posts_read_it [gw26] [ 3%] PASSED tests/client/test_streamable_http.py::test_initialize_post_clears_cached_pv_header_and_unstamped_posts_read_it tests/client/test_streamable_http.py::test_modern_cancelled_frame_aborts_the_matching_in_flight_post [gw26] [ 3%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frame_aborts_the_matching_in_flight_post tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[no-version-yet] [gw26] [ 3%] PASSED tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[no-version-yet] tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[2025-11-25] [gw26] [ 3%] PASSED tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[2025-11-25] tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[unknown-id] [gw26] [ 3%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[unknown-id] tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[bool-must-not-alias-request-id-1] [gw26] [ 3%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[bool-must-not-alias-request-id-1] tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[string-1-must-not-match-int-1] [gw26] [ 3%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[string-1-must-not-match-int-1] tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-request-id] [gw26] [ 3%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-request-id] tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-params] [gw26] [ 3%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-params] tests/client/test_streamable_http.py::test_handler_scoped_cancelled_frames_are_translated_at_modern_too [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial004.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial005.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial001.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial002.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial003.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial001.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial002.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial003.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial001.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial002.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial003.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial004.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial001.py] [gw47] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial002.py] tests/client/test_auth.py::TestAuthFlow::test_token_exchange_accepts_201_status [gw4] [ 3%] PASSED tests/client/test_auth.py::TestAuthFlow::test_token_exchange_accepts_201_status tests/client/test_auth.py::TestAuthFlow::test_403_insufficient_scope_updates_scope_from_header [gw4] [ 3%] PASSED tests/client/test_auth.py::TestAuthFlow::test_403_insufficient_scope_updates_scope_from_header tests/client/test_auth.py::test_403_step_up_preserves_scope_from_stored_token [gw4] [ 3%] PASSED tests/client/test_auth.py::test_403_step_up_preserves_scope_from_stored_token tests/client/test_auth.py::test_scope_step_up_discovers_the_authorization_server_before_reauthorizing [gw4] [ 3%] PASSED tests/client/test_auth.py::test_scope_step_up_discovers_the_authorization_server_before_reauthorizing tests/client/test_auth.py::test_403_without_a_scope_challenge_is_returned_to_the_caller [gw4] [ 3%] PASSED tests/client/test_auth.py::test_403_without_a_scope_challenge_is_returned_to_the_caller tests/client/test_auth.py::test_build_metadata[simple-url] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial005.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial006.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial006.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial001.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial002.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial003.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial004.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/real_host/tutorial001.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/real_host/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial001.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial002.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial003.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial001.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial002.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial003.py] [gw44] [ 3%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial003.py] [gw21] [ 3%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-11-25] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2024-11-05] [gw21] [ 3%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2024-11-05] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-03-26] [gw21] [ 3%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-03-26] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-06-18] [gw21] [ 3%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-06-18] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-11-25] [gw21] [ 3%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-11-25] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2024-11-05] [gw21] [ 3%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2024-11-05] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-03-26] [gw21] [ 3%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-03-26] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-06-18] [gw21] [ 3%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-06-18] tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-11-25] [gw21] [ 3%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-11-25] [gw17] [ 3%] PASSED tests/client/test_input_required.py::test_multi_round_loops_until_retry_returns_non_input_required tests/client/test_input_required.py::test_exceeding_max_rounds_raises_with_the_configured_cap [gw17] [ 3%] PASSED tests/client/test_input_required.py::test_exceeding_max_rounds_raises_with_the_configured_cap tests/client/test_input_required.py::test_dispatch_returning_error_data_aborts_the_loop_as_mcp_error [gw17] [ 3%] PASSED tests/client/test_input_required.py::test_dispatch_returning_error_data_aborts_the_loop_as_mcp_error tests/client/test_input_required.py::test_request_state_passes_through_byte_identical [gw17] [ 3%] PASSED tests/client/test_input_required.py::test_request_state_passes_through_byte_identical tests/client/test_input_required.py::test_state_only_legs_back_off_exponentially_to_the_cap[trio-mockclock] [gw17] [ 3%] PASSED tests/client/test_input_required.py::test_state_only_legs_back_off_exponentially_to_the_cap[trio-mockclock] tests/client/test_input_required.py::test_backoff_counter_resets_after_a_leg_with_input_requests[trio-mockclock] [gw17] [ 3%] PASSED tests/client/test_input_required.py::test_backoff_counter_resets_after_a_leg_with_input_requests[trio-mockclock] tests/client/test_input_required.py::test_input_requests_are_dispatched_concurrently [gw17] [ 3%] PASSED tests/client/test_input_required.py::test_input_requests_are_dispatched_concurrently tests/client/test_input_required.py::test_default_max_rounds_constant [gw17] [ 3%] PASSED tests/client/test_input_required.py::test_default_max_rounds_constant tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_tools-tools/list] [gw17] [ 4%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_tools-tools/list] tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resources-resources/list] [gw17] [ 4%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resources-resources/list] tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_prompts-prompts/list] [gw17] [ 4%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_prompts-prompts/list] tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resource_templates-resources/templates/list] [gw17] [ 4%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resource_templates-resources/templates/list] tests/client/test_list_methods_cursor.py::test_list_tools_with_strict_server_validation [gw17] [ 4%] PASSED tests/client/test_list_methods_cursor.py::test_list_tools_with_strict_server_validation tests/client/test_list_methods_cursor.py::test_list_tools_with_lowlevel_server [gw17] [ 4%] PASSED tests/client/test_list_methods_cursor.py::test_list_tools_with_lowlevel_server tests/client/test_list_roots_callback.py::test_list_roots_callback [gw42] [ 4%] PASSED tests/docs_src/test_sampling_and_roots.py::test_an_undeclared_capability_fails_before_a_request_is_sent tests/client/test_probe.py::test_an_unparseable_discover_result_falls_back_to_initialize [gw13] [ 4%] PASSED tests/client/test_probe.py::test_an_unparseable_discover_result_falls_back_to_initialize tests/client/test_probe.py::test_a_discover_result_advertising_only_legacy_versions_falls_back_to_initialize [gw13] [ 4%] PASSED tests/client/test_probe.py::test_a_discover_result_advertising_only_legacy_versions_falls_back_to_initialize tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[method-not-found-32601] [gw13] [ 4%] PASSED tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[method-not-found-32601] tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[invalid-request-32600] [gw13] [ 4%] PASSED tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[invalid-request-32600] tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[internal-error-32603] [gw13] [ 4%] PASSED tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[internal-error-32603] tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[parse-error-32700] [gw13] [ 4%] PASSED tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[parse-error-32700] tests/client/test_probe.py::test_unsupported_version_with_a_mutual_modern_version_retries_once_then_adopts [gw13] [ 4%] PASSED tests/client/test_probe.py::test_unsupported_version_with_a_mutual_modern_version_retries_once_then_adopts tests/client/test_probe.py::test_unsupported_version_naming_only_handshake_versions_falls_back_to_initialize [gw13] [ 4%] PASSED tests/client/test_probe.py::test_unsupported_version_naming_only_handshake_versions_falls_back_to_initialize tests/client/test_probe.py::test_unsupported_version_with_disjoint_modern_only_supported_reraises [gw13] [ 4%] PASSED tests/client/test_probe.py::test_unsupported_version_with_disjoint_modern_only_supported_reraises tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[no-data] [gw13] [ 4%] PASSED tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[no-data] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_client_secret_post tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_credentials [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_credentials tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_secret_post_includes_client_id [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_secret_post_includes_client_id tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_without_scopes [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_without_scopes tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_init_sets_client_info [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_init_sets_client_info tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_client_credentials [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_client_credentials tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_without_scopes [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_without_scopes tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider_with_additional_claims [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider_with_additional_claims tests/client/auth/extensions/test_client_credentials.py::TestStaticAssertionProvider::test_returns_static_token [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestStaticAssertionProvider::test_returns_static_token tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-as-configured] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-as-configured] tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-root-slash] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-root-slash] tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-as-configured] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-as-configured] tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-root-slash] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-root-slash] [gw15] [ 4%] PASSED tests/client/test_client_extensions.py::test_settings_dict_is_held_by_reference_not_copied tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[none] [gw23] [ 4%] PASSED tests/client/test_session_claims.py::test_unknown_result_type_fails_validation_with_and_without_claims[False] tests/client/test_session_claims.py::test_non_string_result_type_fails_core_validation_not_discrimination [gw23] [ 4%] PASSED tests/client/test_session_claims.py::test_non_string_result_type_fails_core_validation_not_discrimination tests/client/test_session_claims.py::test_adopt_built_adapter_revalidates_model_instances [gw23] [ 4%] PASSED tests/client/test_session_claims.py::test_adopt_built_adapter_revalidates_model_instances tests/client/test_session_claims.py::test_input_required_routes_to_core_arm_with_claims_active [gw23] [ 4%] PASSED tests/client/test_session_claims.py::test_input_required_routes_to_core_arm_with_claims_active tests/client/test_session_claims.py::test_claimed_result_raises_unexpected_claimed_result_by_default [gw23] [ 4%] PASSED tests/client/test_session_claims.py::test_claimed_result_raises_unexpected_claimed_result_by_default tests/client/test_session_claims.py::test_call_tool_result_path_identical_under_both_allow_claimed_values [gw23] [ 4%] PASSED tests/client/test_session_claims.py::test_call_tool_result_path_identical_under_both_allow_claimed_values tests/client/test_session_claims.py::test_call_tool_overload_matrix_narrows_statically [gw23] [ 4%] PASSED tests/client/test_session_claims.py::test_call_tool_overload_matrix_narrows_statically tests/client/test_session_claims.py::test_claimed_raw_passes_v2026_tools_call_surface_validation [gw23] [ 4%] PASSED tests/client/test_session_claims.py::test_claimed_raw_passes_v2026_tools_call_surface_validation tests/client/test_session_concurrency.py::test_concurrent_tool_calls_resolve_out_of_order_to_their_own_callers [gw25] [ 4%] PASSED tests/client/test_subscriptions.py::test_unconsumed_duplicate_events_coalesce tests/client/test_subscriptions.py::test_graceful_server_close_ends_the_loop_cleanly [gw25] [ 4%] PASSED tests/client/test_subscriptions.py::test_graceful_server_close_ends_the_loop_cleanly tests/client/test_subscriptions.py::test_abrupt_stream_end_raises_subscription_lost [gw25] [ 4%] PASSED tests/client/test_subscriptions.py::test_abrupt_stream_end_raises_subscription_lost tests/client/test_subscriptions.py::test_listen_on_a_legacy_connection_raises_the_typed_steer [gw25] [ 4%] PASSED tests/client/test_subscriptions.py::test_listen_on_a_legacy_connection_raises_the_typed_steer tests/client/test_subscriptions.py::test_server_rejection_raises_from_enter_not_from_iteration [gw25] [ 4%] PASSED tests/client/test_subscriptions.py::test_server_rejection_raises_from_enter_not_from_iteration tests/client/test_subscriptions.py::test_immediate_result_without_ack_opens_already_closed [gw25] [ 4%] PASSED tests/client/test_subscriptions.py::test_immediate_result_without_ack_opens_already_closed tests/client/test_subscriptions.py::test_server_sent_cancelled_for_the_listen_id_raises_subscription_lost [gw25] [ 4%] PASSED tests/client/test_subscriptions.py::test_server_sent_cancelled_for_the_listen_id_raises_subscription_lost tests/client/test_subscriptions.py::test_exiting_the_context_frees_the_server_slot [gw25] [ 4%] PASSED tests/client/test_subscriptions.py::test_exiting_the_context_frees_the_server_slot tests/client/test_subscriptions.py::test_concurrent_subscriptions_demux_independently [gw9] [ 4%] PASSED tests/client/test_client.py::test_client_with_simple_server tests/client/test_client.py::test_client_send_ping [gw9] [ 4%] PASSED tests/client/test_client.py::test_client_send_ping tests/client/test_client.py::test_client_list_tools [gw9] [ 4%] PASSED tests/client/test_client.py::test_client_list_tools tests/client/test_client.py::test_client_call_tool tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[secret] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[secret] tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[jwt] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[jwt] tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[secret] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[secret] tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[jwt] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[jwt] tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[secret] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[secret] tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[jwt] [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[jwt] tests/client/auth/extensions/test_client_credentials.py::test_an_issuer_that_is_not_an_http_url_is_rejected_at_construction [gw2] [ 4%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_an_issuer_that_is_not_an_http_url_is_rejected_at_construction tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[secret] [gw0] [ 4%] PASSED tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-16] tests/cli/test_claude.py::test_raises_when_config_dir_missing [gw0] [ 5%] PASSED tests/cli/test_claude.py::test_raises_when_config_dir_missing tests/cli/test_claude.py::test_get_uv_path[/usr/local/bin/uv-/usr/local/bin/uv] [gw0] [ 5%] PASSED tests/cli/test_claude.py::test_get_uv_path[/usr/local/bin/uv-/usr/local/bin/uv] tests/cli/test_claude.py::test_get_uv_path[None-uv] [gw0] [ 5%] PASSED tests/cli/test_claude.py::test_get_uv_path[None-uv] tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py-C:\\Users\\server.py] [gw0] [ 5%] PASSED tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py-C:\\Users\\server.py] tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py:app-C:\\Users\\server.py:app] [gw0] [ 5%] PASSED tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py:app-C:\\Users\\server.py:app] tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[server.py-None] [gw0] [ 5%] PASSED tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[server.py-None] tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[foo.py:srv_obj-srv_obj] [gw0] [ 5%] PASSED tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[foo.py:srv_obj-srv_obj] tests/cli/test_utils.py::test_parse_file_path_missing [gw0] [ 5%] PASSED tests/cli/test_utils.py::test_parse_file_path_missing tests/cli/test_utils.py::test_parse_file_exit_on_dir [gw0] [ 5%] PASSED tests/cli/test_utils.py::test_parse_file_exit_on_dir tests/cli/test_utils.py::test_build_uv_command_pins_the_running_mcp_version [gw0] [ 5%] PASSED tests/cli/test_utils.py::test_build_uv_command_pins_the_running_mcp_version tests/cli/test_utils.py::test_build_uv_command_leaves_source_builds_unpinned [gw0] [ 5%] PASSED tests/cli/test_utils.py::test_build_uv_command_leaves_source_builds_unpinned tests/cli/test_utils.py::test_build_uv_command_adds_editable_and_packages [gw0] [ 5%] PASSED tests/cli/test_utils.py::test_build_uv_command_adds_editable_and_packages tests/cli/test_utils.py::test_get_npx_unix_like [gw0] [ 5%] PASSED tests/cli/test_utils.py::test_get_npx_unix_like tests/cli/test_utils.py::test_get_npx_windows [gw33] [ 5%] PASSED tests/docs_src/test_prompts.py::test_message_list_becomes_a_multi_turn_template tests/docs_src/test_prompts.py::test_title_and_argument_descriptions [gw33] [ 5%] PASSED tests/docs_src/test_prompts.py::test_title_and_argument_descriptions tests/docs_src/test_prompts.py::test_default_value_makes_the_argument_optional [gw33] [ 5%] PASSED tests/docs_src/test_prompts.py::test_default_value_makes_the_argument_optional tests/docs_src/test_protocol_versions.py::test_auto_lands_on_the_modern_version [gw33] [ 5%] PASSED tests/docs_src/test_protocol_versions.py::test_auto_lands_on_the_modern_version tests/docs_src/test_protocol_versions.py::test_legacy_forces_the_initialize_handshake [gw33] [ 5%] PASSED tests/docs_src/test_protocol_versions.py::test_legacy_forces_the_initialize_handshake tests/docs_src/test_protocol_versions.py::test_version_pin_sends_nothing_and_knows_nothing [gw20] [ 5%] PASSED tests/client/test_session.py::test_raising_sampling_callback_answers_with_code_zero tests/client/test_session.py::test_receive_loop_logs_and_drops_malformed_notification [gw20] [ 5%] PASSED tests/client/test_session.py::test_receive_loop_logs_and_drops_malformed_notification tests/client/test_session.py::test_raising_message_handler_on_transport_exception_costs_the_delivery_not_the_connection [gw20] [ 5%] PASSED tests/client/test_session.py::test_raising_message_handler_on_transport_exception_costs_the_delivery_not_the_connection tests/client/test_session.py::test_message_handler_awaiting_session_traffic_on_transport_exception_completes [gw11] [ 5%] PASSED tests/client/test_caching.py::test_an_entry_without_an_expiry_is_never_fresh tests/client/test_caching.py::test_write_deletes_the_opposite_arm_before_setting_its_own [gw11] [ 5%] PASSED tests/client/test_caching.py::test_write_deletes_the_opposite_arm_before_setting_its_own tests/client/test_caching.py::test_an_eviction_landing_during_an_async_set_is_compensated [gw11] [ 5%] PASSED tests/client/test_caching.py::test_an_eviction_landing_during_an_async_set_is_compensated tests/client/test_caching.py::test_a_cancellation_landing_as_the_set_commits_still_compensates_an_eviction [gw11] [ 5%] PASSED tests/client/test_caching.py::test_a_cancellation_landing_as_the_set_commits_still_compensates_an_eviction tests/client/test_caching.py::test_a_cancellation_during_the_refresh_purge_still_purges_both_arms [gw11] [ 5%] PASSED tests/client/test_caching.py::test_a_cancellation_during_the_refresh_purge_still_purges_both_arms tests/client/test_caching.py::test_a_cancellation_during_an_eviction_still_evicts_both_arms [gw11] [ 5%] PASSED tests/client/test_caching.py::test_a_cancellation_during_an_eviction_still_evicts_both_arms tests/client/test_caching.py::test_evict_key_with_a_wedged_store_delete_returns_at_the_cleanup_bound tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[/bar] [gw14] [ 5%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[/bar] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/ba r] [gw14] [ 5%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/ba r] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[io.modelcontextprotocol/ui\n] [gw14] [ 5%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[io.modelcontextprotocol/ui\n] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[] tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial001.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial002.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial001.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial002.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial003.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial004.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial001.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial002.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial003.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial004.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial005.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial006.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial006.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial007.py] [gw44] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial007.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial003.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial004.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial001.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial002.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003_client.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003_client.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004_client.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004_client.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial005.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006_client.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006_client.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007.py] [gw39] [ 5%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007.py] [gw20] [ 5%] PASSED tests/client/test_session.py::test_message_handler_awaiting_session_traffic_on_transport_exception_completes tests/client/test_session.py::test_receive_loop_consumes_server_cancelled_without_reaching_message_handler [gw20] [ 5%] PASSED tests/client/test_session.py::test_receive_loop_consumes_server_cancelled_without_reaching_message_handler tests/client/test_session.py::test_request_timeout_zero_overrides_session_timeout [gw20] [ 5%] PASSED tests/client/test_session.py::test_request_timeout_zero_overrides_session_timeout tests/client/test_session.py::test_progress_notification_reaches_request_callback_and_message_handler [gw20] [ 6%] PASSED tests/client/test_session.py::test_progress_notification_reaches_request_callback_and_message_handler tests/client/test_session.py::test_dispatcher_keyword_runs_over_direct_dispatch [gw29] [ 6%] PASSED tests/docs_src/test_client.py::test_a_raising_tool_is_a_result_not_an_exception tests/docs_src/test_client.py::test_an_unknown_tool_name_is_a_result_not_an_exception [gw29] [ 6%] PASSED tests/docs_src/test_client.py::test_an_unknown_tool_name_is_a_result_not_an_exception tests/docs_src/test_client.py::test_resources_and_templates_are_two_separate_lists [gw29] [ 6%] PASSED tests/docs_src/test_client.py::test_resources_and_templates_are_two_separate_lists tests/docs_src/test_client.py::test_read_resource_fills_in_a_template [gw29] [ 6%] PASSED tests/docs_src/test_client.py::test_read_resource_fills_in_a_template tests/docs_src/test_client.py::test_resource_subscriptions_are_listen_based_on_the_modern_wire [gw29] [ 6%] PASSED tests/docs_src/test_client.py::test_resource_subscriptions_are_listen_based_on_the_modern_wire tests/docs_src/test_client.py::test_list_prompts_describes_the_arguments [gw29] [ 6%] PASSED tests/docs_src/test_client.py::test_list_prompts_describes_the_arguments tests/docs_src/test_client.py::test_get_prompt_renders_the_messages [gw29] [ 6%] PASSED tests/docs_src/test_client.py::test_get_prompt_renders_the_messages tests/docs_src/test_client.py::test_complete_suggests_values_for_an_argument [gw29] [ 6%] PASSED tests/docs_src/test_client.py::test_complete_suggests_values_for_an_argument tests/docs_src/test_client.py::test_the_pagination_loop_collects_every_tool_from_a_single_page_server [gw29] [ 6%] PASSED tests/docs_src/test_client.py::test_the_pagination_loop_collects_every_tool_from_a_single_page_server tests/docs_src/test_client.py::test_raise_exceptions_is_a_constructor_flag tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007_client.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007_client.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001_client.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001_client.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial001.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial002.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial003.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial004.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial001.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial002.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial003.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial001.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial002.py] [gw39] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/index/tutorial001.py] [gw22] [ 6%] PASSED tests/client/test_session_notification_bindings.py::test_binding_delivery_works_without_adopt tests/client/test_session_promotions.py::test_dispatch_input_request_routes_through_the_callback_table [gw22] [ 6%] PASSED tests/client/test_session_promotions.py::test_dispatch_input_request_routes_through_the_callback_table tests/client/test_session_promotions.py::test_dispatch_input_request_returns_error_data_on_refusal [gw22] [ 6%] PASSED tests/client/test_session_promotions.py::test_dispatch_input_request_returns_error_data_on_refusal tests/client/test_session_promotions.py::test_validate_tool_result_passes_a_conforming_result [gw26] [ 6%] PASSED tests/client/test_streamable_http.py::test_handler_scoped_cancelled_frames_are_translated_at_modern_too tests/client/test_streamable_http.py::test_cancel_for_a_request_sent_under_2025_still_posts_after_modern_adoption [gw26] [ 6%] PASSED tests/client/test_streamable_http.py::test_cancel_for_a_request_sent_under_2025_still_posts_after_modern_adoption tests/client/test_streamable_http.py::test_scope_cancel_aborts_a_modern_listen_post_end_to_end [gw26] [ 6%] PASSED tests/client/test_streamable_http.py::test_scope_cancel_aborts_a_modern_listen_post_end_to_end tests/client/test_streamable_http.py::test_a_finished_post_task_does_not_evict_a_reused_ids_new_registration [gw3] [ 6%] PASSED tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[500-False] tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-03-26-False] [gw3] [ 6%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-03-26-False] tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-06-18-True] [gw3] [ 6%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-06-18-True] tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-11-25-True] [gw3] [ 6%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-11-25-True] tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[zzz-False] [gw3] [ 6%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[zzz-False] tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[9999-99-99-False] [gw3] [ 6%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[9999-99-99-False] tests/client/test_auth.py::test_validate_resource_rejects_mismatched_resource [gw3] [ 6%] PASSED tests/client/test_auth.py::test_validate_resource_rejects_mismatched_resource tests/client/test_auth.py::test_validate_resource_accepts_matching_resource [gw3] [ 6%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_matching_resource tests/client/test_auth.py::test_validate_resource_custom_callback [gw3] [ 6%] PASSED tests/client/test_auth.py::test_validate_resource_custom_callback tests/client/test_auth.py::test_validate_resource_accepts_root_url_with_trailing_slash [gw3] [ 6%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_root_url_with_trailing_slash tests/client/test_auth.py::test_validate_resource_accepts_server_url_with_trailing_slash [gw3] [ 6%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_server_url_with_trailing_slash tests/client/test_auth.py::test_get_resource_url_uses_canonical_when_prm_mismatches [gw3] [ 6%] PASSED tests/client/test_auth.py::test_get_resource_url_uses_canonical_when_prm_mismatches tests/client/test_auth.py::TestRegistrationResponse::test_handle_registration_response_reads_before_accessing_text [gw3] [ 6%] PASSED tests/client/test_auth.py::TestRegistrationResponse::test_handle_registration_response_reads_before_accessing_text tests/docs_src/test_oauth_clients.py::test_every_oauth_error_is_an_oauth_flow_error [gw40] [ 6%] PASSED tests/docs_src/test_oauth_clients.py::test_every_oauth_error_is_an_oauth_flow_error tests/docs_src/test_oauth_clients.py::test_not_everything_is_a_flow_error [gw40] [ 6%] PASSED tests/docs_src/test_oauth_clients.py::test_not_everything_is_a_flow_error tests/docs_src/test_opentelemetry.py::test_a_plain_server_is_traced_with_no_extra_code [gw7] [ 6%] PASSED tests/client/test_caching.py::test_a_new_entry_past_the_cap_evicts_the_least_recently_used_one tests/client/test_caching.py::test_a_get_refreshes_an_entrys_recency [gw7] [ 6%] PASSED tests/client/test_caching.py::test_a_get_refreshes_an_entrys_recency tests/client/test_caching.py::test_replacing_an_entry_at_the_cap_refreshes_its_recency_without_evicting [gw7] [ 6%] PASSED tests/client/test_caching.py::test_replacing_an_entry_at_the_cap_refreshes_its_recency_without_evicting tests/client/test_caching.py::test_a_touched_list_entry_survives_read_key_churn_through_the_cap [gw7] [ 6%] PASSED tests/client/test_caching.py::test_a_touched_list_entry_survives_read_key_churn_through_the_cap tests/client/test_caching.py::test_a_zero_cap_disables_eviction [gw7] [ 6%] PASSED tests/client/test_caching.py::test_a_zero_cap_disables_eviction tests/client/test_caching.py::test_deleting_an_entry_frees_its_cap_slot [gw7] [ 6%] PASSED tests/client/test_caching.py::test_deleting_an_entry_frees_its_cap_slot tests/client/test_caching.py::test_a_negative_cap_is_rejected_at_construction [gw7] [ 6%] PASSED tests/client/test_caching.py::test_a_negative_cap_is_rejected_at_construction tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[legacy] [gw7] [ 6%] PASSED tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[legacy] tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[pre-negotiation] [gw7] [ 6%] PASSED tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[pre-negotiation] tests/client/test_caching.py::test_a_legacy_session_with_a_default_ttl_caches_on_the_private_arm_only [gw7] [ 6%] PASSED tests/client/test_caching.py::test_a_legacy_session_with_a_default_ttl_caches_on_the_private_arm_only tests/client/test_caching.py::test_entries_never_cross_negotiated_eras_on_a_shared_store [gw7] [ 6%] PASSED tests/client/test_caching.py::test_entries_never_cross_negotiated_eras_on_a_shared_store tests/client/test_caching.py::test_coordinators_negotiating_the_same_era_share_entries_through_the_store [gw7] [ 6%] PASSED tests/client/test_caching.py::test_coordinators_negotiating_the_same_era_share_entries_through_the_store tests/client/test_caching.py::test_an_explicit_zero_ttl_is_not_overridden_by_the_default_ttl [gw7] [ 6%] PASSED tests/client/test_caching.py::test_an_explicit_zero_ttl_is_not_overridden_by_the_default_ttl tests/client/test_caching.py::test_a_hint_absent_modern_result_uses_the_default_ttl_privately [gw7] [ 6%] PASSED tests/client/test_caching.py::test_a_hint_absent_modern_result_uses_the_default_ttl_privately tests/client/test_caching.py::test_a_ttl_above_24_hours_is_clamped_to_the_cap [gw7] [ 6%] PASSED tests/client/test_caching.py::test_a_ttl_above_24_hours_is_clamped_to_the_cap tests/client/test_caching.py::test_a_public_result_lands_on_the_public_arm_and_clears_the_private_arm [gw7] [ 6%] PASSED tests/client/test_caching.py::test_a_public_result_lands_on_the_public_arm_and_clears_the_private_arm tests/client/test_caching.py::test_arm_key_layout_is_pinned_for_shared_store_compatibility [gw7] [ 7%] PASSED tests/client/test_caching.py::test_arm_key_layout_is_pinned_for_shared_store_compatibility tests/client/test_caching.py::test_public_entries_do_not_cross_partitions_by_default [gw7] [ 7%] PASSED tests/client/test_caching.py::test_public_entries_do_not_cross_partitions_by_default tests/client/test_caching.py::test_share_public_serves_public_entries_across_partitions_but_never_private_ones [gw7] [ 7%] PASSED tests/client/test_caching.py::test_share_public_serves_public_entries_across_partitions_but_never_private_ones [gw46] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial007.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial001.py] [gw46] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial002.py] [gw46] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial003.py] [gw46] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial004.py] [gw46] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial004.py] [gw32] [ 7%] PASSED tests/docs_src/test_completions.py::test_returning_none_is_an_empty_list_not_an_error tests/docs_src/test_completions.py::test_context_arguments_resolve_a_dependent_parameter [gw32] [ 7%] PASSED tests/docs_src/test_completions.py::test_context_arguments_resolve_a_dependent_parameter tests/docs_src/test_completions.py::test_the_typed_prefix_still_filters_a_dependent_parameter [gw32] [ 7%] PASSED tests/docs_src/test_completions.py::test_the_typed_prefix_still_filters_a_dependent_parameter tests/docs_src/test_completions.py::test_context_arguments_is_optional [gw32] [ 7%] PASSED tests/docs_src/test_completions.py::test_context_arguments_is_optional tests/docs_src/test_completions.py::test_no_context_means_no_suggestions [gw32] [ 7%] PASSED tests/docs_src/test_completions.py::test_no_context_means_no_suggestions tests/docs_src/test_completions.py::test_the_prompt_branch_is_untouched_by_the_new_one [gw32] [ 7%] PASSED tests/docs_src/test_completions.py::test_the_prompt_branch_is_untouched_by_the_new_one tests/docs_src/test_context.py::test_the_context_parameter_is_not_in_the_input_schema [gw32] [ 7%] PASSED tests/docs_src/test_context.py::test_the_context_parameter_is_not_in_the_input_schema tests/docs_src/test_context.py::test_every_request_gets_its_own_context [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial004.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial005.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial006.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial006.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial007.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial007.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial001.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial002.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial003.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial004.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial001.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial002.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial003.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial004.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial005.py] [gw45] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial003.py] [gw43] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial001.py] tests/docs_src/test_session_groups.py::test_both_servers_call_their_tool_search [gw42] [ 7%] PASSED tests/docs_src/test_session_groups.py::test_both_servers_call_their_tool_search tests/docs_src/test_session_groups.py::test_a_connected_server_is_aggregated_into_the_group [gw42] [ 7%] PASSED tests/docs_src/test_session_groups.py::test_a_connected_server_is_aggregated_into_the_group tests/docs_src/test_session_groups.py::test_colliding_names_are_rejected [gw42] [ 7%] PASSED tests/docs_src/test_session_groups.py::test_colliding_names_are_rejected tests/docs_src/test_session_groups.py::test_component_name_hook_prefixes_every_name [gw42] [ 7%] PASSED tests/docs_src/test_session_groups.py::test_component_name_hook_prefixes_every_name tests/docs_src/test_session_groups.py::test_the_hook_is_a_plain_function_of_name_and_server_info [gw42] [ 7%] PASSED tests/docs_src/test_session_groups.py::test_the_hook_is_a_plain_function_of_name_and_server_info tests/docs_src/test_session_groups.py::test_the_key_is_prefixed_but_the_wire_name_is_not [gw42] [ 7%] PASSED tests/docs_src/test_session_groups.py::test_the_key_is_prefixed_but_the_wire_name_is_not tests/docs_src/test_session_groups.py::test_call_tool_routes_to_the_owning_server [gw17] [ 7%] PASSED tests/client/test_list_roots_callback.py::test_list_roots_callback tests/client/test_logging_callback.py::test_logging_callback [gw18] [ 7%] PASSED tests/client/test_session.py::test_client_session_version_negotiation_success [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial001.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial002.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial003.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial001.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial002.py] [gw41] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial003.py] [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_the_client_program_on_the_page_makes_three_fetches_for_four_calls tests/docs_src/test_caching.py::test_caching_is_on_by_default_the_second_call_makes_no_fetch [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_caching_is_on_by_default_the_second_call_makes_no_fetch tests/docs_src/test_caching.py::test_a_hintless_result_is_not_cached_by_default [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_a_hintless_result_is_not_cached_by_default tests/docs_src/test_caching.py::test_cache_none_makes_every_call_a_round_trip [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_cache_none_makes_every_call_a_round_trip tests/docs_src/test_caching.py::test_refresh_refetches_and_replaces_the_cached_entry [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_refresh_refetches_and_replaces_the_cached_entry tests/docs_src/test_caching.py::test_bypass_fetches_without_reading_or_writing_the_cache [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_bypass_fetches_without_reading_or_writing_the_cache tests/docs_src/test_caching.py::test_an_expired_entry_is_not_revived_when_the_refetch_fails [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_an_expired_entry_is_not_revived_when_the_refetch_fails tests/docs_src/test_caching.py::test_two_concurrent_identical_calls_are_two_fetches [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_two_concurrent_identical_calls_are_two_fetches tests/docs_src/test_caching.py::test_a_session_tier_call_always_makes_the_round_trip [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_a_session_tier_call_always_makes_the_round_trip tests/docs_src/test_caching.py::test_a_custom_store_requires_a_partition [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_a_custom_store_requires_a_partition tests/docs_src/test_caching.py::test_a_custom_store_with_an_in_process_server_requires_target_id [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_a_custom_store_with_an_in_process_server_requires_target_id tests/docs_src/test_caching.py::test_the_wire_presence_check_the_page_recommends_works [gw31] [ 7%] PASSED tests/docs_src/test_caching.py::test_the_wire_presence_check_the_page_recommends_works tests/docs_src/test_cancellation.py::test_abandoning_the_call_runs_the_shielded_cleanup_to_the_end[auto] [gw31] [ 7%] PASSED tests/docs_src/test_cancellation.py::test_abandoning_the_call_runs_the_shielded_cleanup_to_the_end[auto] tests/docs_src/test_cancellation.py::test_abandoning_the_call_runs_the_shielded_cleanup_to_the_end[legacy] [gw45] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_anyio.py] [gw45] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_anyio.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_asyncio.py] [gw45] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_asyncio.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_trio.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_trio.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial005.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial006.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial006.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial007.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial007.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/testing/tutorial001.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/testing/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial001.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial002.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial003.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial004.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial005.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial001.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial002.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial003.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial004.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial005.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial006.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial006.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial007.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial007.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial008.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial008.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial001.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial002.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial003.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial003.py] [gw41] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial001.py] [gw41] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial002.py] [gw41] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial003.py] [gw41] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial003.py] [gw10] [ 8%] PASSED tests/client/test_client_caching.py::test_a_shared_store_hit_prunes_a_header_map_the_writers_filter_dropped [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_resource_server_metadata_is_never_consulted tests/client/auth/extensions/test_identity_assertion.py::test_asm_404_at_configured_issuer_raises_before_minting_assertion [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_404_at_configured_issuer_raises_before_minting_assertion tests/client/auth/extensions/test_identity_assertion.py::test_asm_5xx_stops_discovery_and_raises [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_5xx_stops_discovery_and_raises tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_wrong_issuer_is_rejected_before_minting_assertion [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_wrong_issuer_is_rejected_before_minting_assertion tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_off_origin_token_endpoint_is_rejected_before_minting_assertion [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_off_origin_token_endpoint_is_rejected_before_minting_assertion tests/client/auth/extensions/test_identity_assertion.py::test_403_insufficient_scope_unions_challenged_scope_with_configured [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_403_insufficient_scope_unions_challenged_scope_with_configured tests/client/auth/extensions/test_identity_assertion.py::test_403_without_insufficient_scope_does_not_reauthorize [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_403_without_insufficient_scope_does_not_reauthorize tests/client/auth/extensions/test_identity_assertion.py::test_token_endpoint_error_surfaces_as_oauth_token_error [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_token_endpoint_error_surfaces_as_oauth_token_error tests/client/auth/extensions/test_identity_assertion.py::test_client_secret_basic_sends_basic_header_not_body_secret [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_client_secret_basic_sends_basic_header_not_body_secret tests/client/auth/extensions/test_identity_assertion.py::test_stored_token_is_reused_without_reauthorizing [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_stored_token_is_reused_without_reauthorizing tests/client/auth/extensions/test_identity_assertion.py::test_second_401_re_exchanges_without_refetching_asm [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_second_401_re_exchanges_without_refetching_asm tests/client/auth/extensions/test_identity_assertion.py::test_no_configured_scope_omits_scope_and_backfills_from_request [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_no_configured_scope_omits_scope_and_backfills_from_request tests/client/auth/extensions/test_identity_assertion.py::test_empty_client_secret_is_rejected [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_empty_client_secret_is_rejected tests/client/auth/extensions/test_identity_assertion.py::test_empty_issuer_is_rejected tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial004.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial005.py] [gw45] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial005.py] [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_empty_issuer_is_rejected tests/client/auth/extensions/test_identity_assertion.py::test_origin_normalizes_default_ports [gw1] [ 8%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_origin_normalizes_default_ports tests/client/test_auth.py::TestPKCEParameters::test_pkce_generation [gw1] [ 8%] PASSED tests/client/test_auth.py::TestPKCEParameters::test_pkce_generation tests/client/test_auth.py::TestPKCEParameters::test_pkce_uniqueness [gw1] [ 8%] PASSED tests/client/test_auth.py::TestPKCEParameters::test_pkce_uniqueness tests/client/test_auth.py::TestOAuthContext::test_oauth_provider_initialization [gw1] [ 8%] PASSED tests/client/test_auth.py::TestOAuthContext::test_oauth_provider_initialization tests/client/test_auth.py::TestOAuthContext::test_context_url_parsing [gw1] [ 8%] PASSED tests/client/test_auth.py::TestOAuthContext::test_context_url_parsing tests/client/test_auth.py::TestOAuthContext::test_token_validity_checking [gw1] [ 8%] PASSED tests/client/test_auth.py::TestOAuthContext::test_token_validity_checking tests/client/test_auth.py::TestOAuthContext::test_clear_tokens [gw1] [ 8%] PASSED tests/client/test_auth.py::TestOAuthContext::test_clear_tokens tests/client/test_auth.py::TestOAuthFlow::test_build_protected_resource_discovery_urls [gw39] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/index/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001.py] [gw39] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001_client.py] [gw39] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001_client.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial002.py] [gw39] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial002.py] [gw25] [ 8%] PASSED tests/client/test_subscriptions.py::test_concurrent_subscriptions_demux_independently tests/client/test_subscriptions.py::test_change_notifications_still_reach_message_handler [gw25] [ 8%] PASSED tests/client/test_subscriptions.py::test_change_notifications_still_reach_message_handler tests/client/test_subscriptions.py::test_enter_times_out_when_the_ack_never_arrives [gw25] [ 8%] PASSED tests/client/test_subscriptions.py::test_enter_times_out_when_the_ack_never_arrives tests/client/test_subscriptions.py::test_an_open_stream_outlives_the_session_read_timeout [gw12] [ 8%] PASSED tests/client/test_client_caching.py::test_a_custom_store_with_a_url_server_constructs_and_is_used tests/client/test_client_caching.py::test_a_custom_store_with_an_explicit_target_id_constructs_for_any_server [gw12] [ 8%] PASSED tests/client/test_client_caching.py::test_a_custom_store_with_an_explicit_target_id_constructs_for_any_server tests/client/test_client_caching.py::test_cache_none_disables_the_cache_and_the_handler_wrap [gw12] [ 8%] PASSED tests/client/test_client_caching.py::test_cache_none_disables_the_cache_and_the_handler_wrap tests/client/test_client_caching.py::test_the_default_cache_uses_a_per_client_in_memory_store [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_the_default_cache_uses_a_per_client_in_memory_store tests/client/test_client_caching.py::test_the_negotiated_version_supplier_tracks_the_session_lifecycle [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_the_negotiated_version_supplier_tracks_the_session_lifecycle tests/client/test_client_caching.py::test_a_list_changed_notification_evicts_without_a_user_handler [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_a_list_changed_notification_evicts_without_a_user_handler tests/client/test_client_caching.py::test_a_user_handler_receives_the_notification_the_eviction_consumed [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_a_user_handler_receives_the_notification_the_eviction_consumed tests/client/test_client_caching.py::test_non_notification_items_pass_through_to_the_user_handler_untouched [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_non_notification_items_pass_through_to_the_user_handler_untouched tests/client/test_client_caching.py::test_a_raising_eviction_does_not_block_notification_delivery [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_a_raising_eviction_does_not_block_notification_delivery tests/client/test_client_caching.py::test_a_second_list_tools_within_the_ttl_is_served_from_the_cache [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_a_second_list_tools_within_the_ttl_is_served_from_the_cache tests/client/test_client_caching.py::test_an_expired_entry_is_refetched [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_an_expired_entry_is_refetched tests/client/test_client_caching.py::test_each_list_verb_caches_independently_under_its_own_method [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_each_list_verb_caches_independently_under_its_own_method tests/client/test_client_caching.py::test_read_resource_caches_per_uri [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_read_resource_caches_per_uri tests/client/test_client_caching.py::test_cursor_continuations_neither_read_nor_write_the_cache [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_cursor_continuations_neither_read_nor_write_the_cache tests/client/test_client_caching.py::test_an_expired_cursor_rejection_evicts_the_methods_entry [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_an_expired_cursor_rejection_evicts_the_methods_entry tests/client/test_client_caching.py::test_an_expired_cursor_rejection_under_bypass_does_not_evict [gw12] [ 9%] PASSED tests/client/test_client_caching.py::test_an_expired_cursor_rejection_under_bypass_does_not_evict tests/client/test_client_caching.py::test_a_non_cursor_error_on_a_continuation_does_not_evict [gw14] [ 9%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[] tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[42] [gw14] [ 9%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[42] tests/client/test_extension.py::test_subclass_without_identifier_allowed_at_definition [gw14] [ 9%] PASSED tests/client/test_extension.py::test_subclass_without_identifier_allowed_at_definition tests/client/test_extension.py::test_advertise_serves_captured_settings [gw14] [ 9%] PASSED tests/client/test_extension.py::test_advertise_serves_captured_settings tests/client/test_extension.py::test_advertise_defaults_to_empty_settings [gw14] [ 9%] PASSED tests/client/test_extension.py::test_advertise_defaults_to_empty_settings tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[noprefix] [gw14] [ 9%] PASSED tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[noprefix] tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[foo/] [gw14] [ 9%] PASSED tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[foo/] tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[] [gw14] [ 9%] PASSED tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[] [gw26] [ 9%] PASSED tests/client/test_streamable_http.py::test_a_finished_post_task_does_not_evict_a_reused_ids_new_registration tests/client/test_streamable_http.py::test_a_non_resumable_sse_drop_resolves_the_request_with_an_error [gw26] [ 9%] PASSED tests/client/test_streamable_http.py::test_a_non_resumable_sse_drop_resolves_the_request_with_an_error tests/client/test_streamable_http.py::test_a_superseded_posts_late_real_response_cannot_answer_the_successor tests/client/test_client_caching.py::test_a_tools_list_changed_notification_makes_the_next_list_refetch [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_tools_list_changed_notification_makes_the_next_list_refetch tests/client/test_client_caching.py::test_a_resource_updated_notification_evicts_that_uris_read_entry [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_resource_updated_notification_evicts_that_uris_read_entry tests/client/test_client_caching.py::test_the_modern_in_process_path_drops_the_eviction_notification [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_the_modern_in_process_path_drops_the_eviction_notification tests/client/test_client_caching.py::test_a_discover_result_never_enters_the_response_cache [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_discover_result_never_enters_the_response_cache tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5] [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5] tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5.0] [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5.0] tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5] [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5] tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5.0] [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5.0] tests/client/test_client_caching.py::test_each_notification_evicts_exactly_its_entries_end_to_end [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_each_notification_evicts_exactly_its_entries_end_to_end tests/client/test_client_caching.py::test_private_entries_never_cross_partitions_between_clients_sharing_a_store tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial002.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/logging/tutorial001.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/logging/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial001.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial002.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial003.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial004.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial005.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial006.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial006.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial007.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial007.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial001.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial002.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial003.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial004.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial005.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial005.py] [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_private_entries_never_cross_partitions_between_clients_sharing_a_store tests/client/test_client_caching.py::test_a_server_stamped_public_entry_does_not_cross_partitions_by_default [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_server_stamped_public_entry_does_not_cross_partitions_by_default tests/client/test_client_caching.py::test_share_public_serves_a_server_stamped_public_entry_across_partitions [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_share_public_serves_a_server_stamped_public_entry_across_partitions tests/client/test_client_caching.py::test_same_partition_clients_share_read_entries_through_the_store [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_same_partition_clients_share_read_entries_through_the_store tests/client/test_client_caching.py::test_mutating_returned_results_never_corrupts_the_cached_entry [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_mutating_returned_results_never_corrupts_the_cached_entry tests/client/test_client_caching.py::test_a_cache_hit_still_yields_to_the_event_loop [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_cache_hit_still_yields_to_the_event_loop tests/client/test_client_caching.py::test_a_legacy_peer_injecting_cache_hints_caches_nothing [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_legacy_peer_injecting_cache_hints_caches_nothing tests/client/test_client_caching.py::test_a_verb_cancelled_mid_write_leaves_no_stale_arm_pair [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_verb_cancelled_mid_write_leaves_no_stale_arm_pair tests/client/test_client_caching.py::test_an_eviction_landing_mid_fetch_discards_that_fetchs_write [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_an_eviction_landing_mid_fetch_discards_that_fetchs_write tests/client/test_client_caching.py::test_read_resource_bypass_neither_serves_nor_disturbs_a_warm_entry [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_read_resource_bypass_neither_serves_nor_disturbs_a_warm_entry tests/client/test_client_caching.py::test_read_resource_refresh_refetches_and_restores [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_read_resource_refresh_refetches_and_restores tests/client/test_client_caching.py::test_a_closed_client_raises_on_every_cacheable_verb_instead_of_serving_the_cache [gw10] [ 9%] PASSED tests/client/test_client_caching.py::test_a_closed_client_raises_on_every_cacheable_verb_instead_of_serving_the_cache tests/client/test_client_extensions.py::test_mapping_extensions_get_the_migration_error tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial001.py] [gw43] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial002.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial001.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial002.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial003.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial004.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial005.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial001.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial002.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/opentelemetry/tutorial001.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/opentelemetry/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial001.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial002.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial001.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial002.py] [gw43] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial002.py] tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[malformed-supported] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[malformed-supported] tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[missing-supported] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[missing-supported] tests/client/test_probe.py::test_a_second_unsupported_version_after_the_corrective_retry_does_not_loop [gw13] [ 10%] PASSED tests/client/test_probe.py::test_a_second_unsupported_version_after_the_corrective_retry_does_not_loop tests/client/test_probe.py::test_handshake_unsupported_after_a_timed_out_probe_reprobes_and_adopts [gw13] [ 10%] PASSED tests/client/test_probe.py::test_handshake_unsupported_after_a_timed_out_probe_reprobes_and_adopts tests/client/test_probe.py::test_handshake_unsupported_without_a_mutual_version_reraises[disjoint] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_handshake_unsupported_without_a_mutual_version_reraises[disjoint] tests/client/test_probe.py::test_handshake_unsupported_without_a_mutual_version_reraises[no-data] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_handshake_unsupported_without_a_mutual_version_reraises[no-data] tests/client/test_probe.py::test_handshake_unsupported_reprobes_at_most_once [gw13] [ 10%] PASSED tests/client/test_probe.py::test_handshake_unsupported_reprobes_at_most_once tests/client/test_probe.py::test_any_other_handshake_error_propagates_unchanged [gw13] [ 10%] PASSED tests/client/test_probe.py::test_any_other_handshake_error_propagates_unchanged tests/client/test_probe.py::test_a_network_or_resource_error_from_the_probe_propagates_unchanged[httpx2-connect-error] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_a_network_or_resource_error_from_the_probe_propagates_unchanged[httpx2-connect-error] tests/client/test_probe.py::test_a_network_or_resource_error_from_the_probe_propagates_unchanged[anyio-closed-resource] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_a_network_or_resource_error_from_the_probe_propagates_unchanged[anyio-closed-resource] tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data0-expected0] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data0-expected0] tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data1-expected1] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data1-expected1] tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[None-None] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[None-None] tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data3-None] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data3-None] tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[not a dict-None] [gw13] [ 10%] PASSED tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[not a dict-None] tests/client/test_sampling_callback.py::test_sampling_callback [gw0] [ 10%] PASSED tests/cli/test_utils.py::test_get_npx_windows [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial003.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial004.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial001.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial002.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial003.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial004.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial001.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial002.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003_client.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003_client.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004_client.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004_client.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial005.py] [gw47] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial005.py] [gw5] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_no_offline_access_when_as_does_not_advertise tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[advertised-and-correct] [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[advertised-and-correct] tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-and-omitted] [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-and-omitted] tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-but-correct] [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-but-correct] tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[trailing-slash-issuer] [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[trailing-slash-issuer] tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[advertised-but-omitted] [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[advertised-but-omitted] tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[wrong-issuer] [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[wrong-issuer] tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[unexpected-when-not-advertised] [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[unexpected-when-not-advertised] tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[trailing-slash-not-normalized] [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[trailing-slash-not-normalized] tests/client/test_auth.py::test_validate_authorization_response_iss_without_metadata [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_without_metadata tests/client/test_auth.py::test_validate_metadata_issuer_accepts_match [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_metadata_issuer_accepts_match tests/client/test_auth.py::test_validate_metadata_issuer_rejects_mismatch [gw5] [ 10%] PASSED tests/client/test_auth.py::test_validate_metadata_issuer_rejects_mismatch tests/client/test_auth.py::test_union_scopes[disjoint-union-order] [gw5] [ 10%] PASSED tests/client/test_auth.py::test_union_scopes[disjoint-union-order] tests/client/test_auth.py::test_union_scopes[dedup] [gw5] [ 10%] PASSED tests/client/test_auth.py::test_union_scopes[dedup] [gw30] [ 10%] PASSED tests/docs/test_translations.py::test_glossary_of_the_wrong_shape_stops_translate_with_exit_2_but_never_breaks_stage[entry-string] tests/docs/test_translations.py::test_glossary_of_the_wrong_shape_stops_translate_with_exit_2_but_never_breaks_stage[keep-string] [gw11] [ 10%] PASSED tests/client/test_caching.py::test_evict_key_with_a_wedged_store_delete_returns_at_the_cleanup_bound [gw24] [ 11%] PASSED tests/client/test_stdio.py::test_invalid_utf8_flushed_by_a_dying_server_does_not_break_shutdown tests/client/test_stdio.py::test_a_kill_racing_a_pending_stdout_read_is_swallowed_during_shutdown [gw8] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_same_issuer tests/client/test_auth.py::test_credentials_match_issuer_different_issuer [gw8] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_different_issuer tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[current-has-root-slash] [gw8] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[current-has-root-slash] tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[recorded-has-root-slash] [gw8] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[recorded-has-root-slash] tests/client/test_auth.py::test_credentials_match_issuer_root_slash_tolerance_does_not_extend_to_other_paths [gw8] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_root_slash_tolerance_does_not_extend_to_other_paths tests/client/test_auth.py::test_credentials_match_issuer_no_recorded_issuer_is_left_alone [gw8] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_no_recorded_issuer_is_left_alone tests/client/test_auth.py::test_credentials_match_issuer_cimd_is_portable [gw8] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_cimd_is_portable tests/client/test_auth.py::test_credentials_match_issuer_url_shaped_dcr_id_is_not_portable [gw8] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_url_shaped_dcr_id_is_not_portable tests/client/test_auth.py::test_handle_token_response_backfills_omitted_scope_from_request [gw8] [ 11%] PASSED tests/client/test_auth.py::test_handle_token_response_backfills_omitted_scope_from_request tests/client/test_auth.py::test_handle_token_response_raises_on_non_2xx_with_body [gw8] [ 11%] PASSED tests/client/test_auth.py::test_handle_token_response_raises_on_non_2xx_with_body tests/client/test_auth.py::test_handle_refresh_response_carries_prior_scope_and_refresh_token_when_omitted [gw8] [ 11%] PASSED tests/client/test_auth.py::test_handle_refresh_response_carries_prior_scope_and_refresh_token_when_omitted tests/client/test_auth.py::test_handle_refresh_response_adopts_rotated_refresh_token_when_returned [gw8] [ 11%] PASSED tests/client/test_auth.py::test_handle_refresh_response_adopts_rotated_refresh_token_when_returned tests/client/test_auth.py::test_issuer_binding_evaluated_against_the_server_origin_when_prm_discovery_failed [gw8] [ 11%] PASSED tests/client/test_auth.py::test_issuer_binding_evaluated_against_the_server_origin_when_prm_discovery_failed tests/client/test_auth.py::test_legacy_fallback_metadata_naming_a_different_issuer_is_refused [gw8] [ 11%] PASSED tests/client/test_auth.py::test_legacy_fallback_metadata_naming_a_different_issuer_is_refused tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[401] [gw8] [ 11%] PASSED tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[401] tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[403-insufficient-scope] [gw24] [ 11%] PASSED tests/client/test_stdio.py::test_a_kill_racing_a_pending_stdout_read_is_swallowed_during_shutdown tests/client/test_stdio.py::test_a_mid_session_stdout_failure_is_logged_and_surfaces_as_clean_closure [gw38] [ 11%] PASSED tests/docs_src/test_middleware.py::test_middleware_observes_every_inbound_message [gw10] [ 11%] PASSED tests/client/test_client_extensions.py::test_mapping_extensions_get_the_migration_error tests/client/test_client_extensions.py::test_one_extension_claiming_a_tag_twice_reads_as_one_owner [gw10] [ 11%] PASSED tests/client/test_client_extensions.py::test_one_extension_claiming_a_tag_twice_reads_as_one_owner tests/client/test_client_extensions.py::test_bare_extension_instance_is_rejected_with_the_fix_named [gw10] [ 11%] PASSED tests/client/test_client_extensions.py::test_bare_extension_instance_is_rejected_with_the_fix_named tests/client/test_client_extensions.py::test_invalid_per_instance_identifier_raises_the_validators_error [gw10] [ 11%] PASSED tests/client/test_client_extensions.py::test_invalid_per_instance_identifier_raises_the_validators_error tests/client/test_client_extensions.py::test_duplicate_extension_identifiers_are_rejected_naming_the_identifier [gw10] [ 11%] PASSED tests/client/test_client_extensions.py::test_duplicate_extension_identifiers_are_rejected_naming_the_identifier tests/client/test_client_extensions.py::test_conflicting_claims_across_extensions_name_both_owners [gw10] [ 11%] PASSED tests/client/test_client_extensions.py::test_conflicting_claims_across_extensions_name_both_owners tests/client/test_client_extensions.py::test_conflicting_notification_bindings_name_both_owners tests/client/test_caching.py::test_a_refresh_purge_with_a_wedged_store_delete_returns_at_the_cleanup_bound [gw11] [ 11%] PASSED tests/client/test_caching.py::test_a_refresh_purge_with_a_wedged_store_delete_returns_at_the_cleanup_bound tests/client/test_caching.py::test_an_eviction_mid_set_with_a_wedged_store_delete_returns_at_the_cleanup_bound [gw11] [ 11%] PASSED tests/client/test_caching.py::test_an_eviction_mid_set_with_a_wedged_store_delete_returns_at_the_cleanup_bound tests/client/test_caching.py::test_a_raising_store_get_is_a_cache_miss tests/client/test_session.py::test_client_session_version_negotiation_failure [gw18] [ 11%] PASSED tests/client/test_session.py::test_client_session_version_negotiation_failure tests/client/test_session.py::test_client_capabilities_default [gw18] [ 11%] PASSED tests/client/test_session.py::test_client_capabilities_default tests/client/test_session.py::test_client_capabilities_with_custom_callbacks [gw18] [ 11%] PASSED tests/client/test_session.py::test_client_capabilities_with_custom_callbacks tests/client/test_session.py::test_client_capabilities_with_sampling_tools [gw18] [ 11%] PASSED tests/client/test_session.py::test_client_capabilities_with_sampling_tools tests/client/test_session.py::test_initialize_result [gw18] [ 11%] PASSED tests/client/test_session.py::test_initialize_result tests/client/test_session.py::test_client_tool_call_with_meta[None] [gw18] [ 11%] PASSED tests/client/test_session.py::test_client_tool_call_with_meta[None] tests/client/test_session.py::test_client_tool_call_with_meta[meta1] [gw18] [ 11%] PASSED tests/client/test_session.py::test_client_tool_call_with_meta[meta1] tests/client/test_session.py::test_receive_loop_answers_malformed_inbound_request_with_invalid_params [gw18] [ 11%] PASSED tests/client/test_session.py::test_receive_loop_answers_malformed_inbound_request_with_invalid_params tests/client/test_session.py::test_receive_loop_answers_unknown_request_method_with_method_not_found [gw18] [ 11%] PASSED tests/client/test_session.py::test_receive_loop_answers_unknown_request_method_with_method_not_found tests/client/test_session.py::test_receive_loop_drops_unknown_notification_method_without_response [gw18] [ 11%] PASSED tests/client/test_session.py::test_receive_loop_drops_unknown_notification_method_without_response tests/client/test_session.py::test_on_request_rejects_a_server_request_absent_at_the_negotiated_version [gw18] [ 11%] PASSED tests/client/test_session.py::test_on_request_rejects_a_server_request_absent_at_the_negotiated_version tests/client/test_session.py::test_on_request_validates_the_callback_result_against_the_surface_schema [gw18] [ 11%] PASSED tests/client/test_session.py::test_on_request_validates_the_callback_result_against_the_surface_schema tests/client/test_session.py::test_on_request_callback_returning_a_surface_invalid_result_is_internal_error [gw18] [ 11%] PASSED tests/client/test_session.py::test_on_request_callback_returning_a_surface_invalid_result_is_internal_error tests/client/test_session.py::test_on_notify_drops_a_server_notification_absent_at_the_negotiated_version [gw18] [ 11%] PASSED tests/client/test_session.py::test_on_notify_drops_a_server_notification_absent_at_the_negotiated_version tests/client/test_session.py::test_on_request_elicitation_with_loose_property_schema_reaches_the_callback [gw18] [ 11%] PASSED tests/client/test_session.py::test_on_request_elicitation_with_loose_property_schema_reaches_the_callback [gw1] [ 11%] PASSED tests/client/test_auth.py::TestOAuthFlow::test_build_protected_resource_discovery_urls tests/client/test_auth.py::TestOAuthFlow::test_create_oauth_metadata_request [gw1] [ 11%] PASSED tests/client/test_auth.py::TestOAuthFlow::test_create_oauth_metadata_request tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_legacy_fallback_when_no_prm [gw1] [ 11%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_legacy_fallback_when_no_prm tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_path_aware_when_auth_server_has_path [gw1] [ 11%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_path_aware_when_auth_server_has_path tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_no_path [gw1] [ 11%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_no_path tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_only_slash [gw1] [ 11%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_only_slash tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_order [gw1] [ 11%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_order tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_conditions [gw1] [ 11%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_conditions tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial004.py] [gw41] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial001.py] [gw41] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial002.py] [gw41] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial003.py] [gw41] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial004.py] [gw41] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial004.py] [gw10] [ 11%] PASSED tests/client/test_client_extensions.py::test_conflicting_notification_bindings_name_both_owners [gw6] [ 11%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error="insufficient_scope"-error-insufficient_scope] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope=read-scope-read] [gw6] [ 11%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope=read-scope-read] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata=https://api.example.com/.well-known/oauth-protected-resource-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] [gw6] [ 11%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata=https://api.example.com/.well-known/oauth-protected-resource-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error=invalid_token-error-invalid_token] [gw6] [ 11%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error=invalid_token-error-invalid_token] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope="admin:write resource:read", error="insufficient_scope"-scope-admin:write resource:read] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope="admin:write resource:read", error="insufficient_scope"-scope-admin:write resource:read] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", resource_metadata="https://api.example.com/.well-known/oauth-protected-resource", error="insufficient_scope"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", resource_metadata="https://api.example.com/.well-known/oauth-protected-resource", error="insufficient_scope"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope=basic-scope-basic] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope=basic-scope-basic] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="resource:read resource:write user_profile"-scope-resource:read resource:write user_profile] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="resource:read resource:write user_profile"-scope-resource:read resource:write user_profile] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/auth/metadata?version=1"-resource_metadata-https://api.example.com/auth/metadata?version=1] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/auth/metadata?version=1"-resource_metadata-https://api.example.com/auth/metadata?version=1] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[None-scope-no WWW-Authenticate header] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[None-scope-no WWW-Authenticate header] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[-scope-empty WWW-Authenticate header] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[-scope-empty WWW-Authenticate header] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", error="insufficient_scope"-scope-no scope parameter] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", error="insufficient_scope"-scope-no scope parameter] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", scope="read write"-resource_metadata-no resource_metadata parameter] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", scope="read write"-resource_metadata-no resource_metadata parameter] [gw2] [ 12%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[secret] [gw8] [ 12%] PASSED tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[403-insufficient-scope] tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[500] [gw8] [ 12%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[500] tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[503] [gw8] [ 12%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[503] tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[429] [gw8] [ 12%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[429] tests/client/test_auth.py::test_a_failing_resource_metadata_location_does_not_matter_when_another_one_answers [gw8] [ 12%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_location_does_not_matter_when_another_one_answers tests/client/test_auth.py::test_legacy_fallback_accepts_a_root_slash_issuer_for_a_server_url_in_any_spelling [gw8] [ 12%] PASSED tests/client/test_auth.py::test_legacy_fallback_accepts_a_root_slash_issuer_for_a_server_url_in_any_spelling tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-discovery-failed] [gw8] [ 12%] PASSED tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-discovery-failed] tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-metadata-without-registration-endpoint] [gw8] [ 12%] PASSED tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-metadata-without-registration-endpoint] tests/client/test_auth.py::test_issuer_is_stamped_when_same_origin_fallback_register_is_on_the_discovered_issuer [gw8] [ 12%] PASSED tests/client/test_auth.py::test_issuer_is_stamped_when_same_origin_fallback_register_is_on_the_discovered_issuer tests/client/test_caching.py::test_a_set_entry_round_trips_through_get[InMemoryResponseCacheStore] [gw8] [ 12%] PASSED tests/client/test_caching.py::test_a_set_entry_round_trips_through_get[InMemoryResponseCacheStore] tests/client/test_caching.py::test_get_misses_for_a_key_never_set[InMemoryResponseCacheStore] [gw8] [ 12%] PASSED tests/client/test_caching.py::test_get_misses_for_a_key_never_set[InMemoryResponseCacheStore] tests/client/test_caching.py::test_keys_differing_in_only_one_field_do_not_collide[InMemoryResponseCacheStore] [gw8] [ 12%] PASSED tests/client/test_caching.py::test_keys_differing_in_only_one_field_do_not_collide[InMemoryResponseCacheStore] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer scope=-scope-malformed scope parameter] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer scope=-scope-malformed scope parameter] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer resource_metadata=-resource_metadata-malformed resource_metadata parameter] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer resource_metadata=-resource_metadata-malformed resource_metadata parameter] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-True] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-True] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-metadata.json-True] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-metadata.json-True] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/path/to/client-True] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/path/to/client-True] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com:8443/client-True] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com:8443/client-True] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://example.com/client-False] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://example.com/client-False] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com-False] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com-False] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/-False] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/-False] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[None-False] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[None-False] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[-False] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[-False] tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://[::1/foo/-False] [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://[::1/foo/-False] tests/client/test_auth.py::TestCIMD::test_should_use_client_metadata_url_when_server_supports [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_should_use_client_metadata_url_when_server_supports tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_server_does_not_support [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_server_does_not_support tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_not_provided [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_a_non_cursor_error_on_a_continuation_does_not_evict tests/client/test_client_caching.py::test_bypass_neither_serves_nor_disturbs_a_warm_entry [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_bypass_neither_serves_nor_disturbs_a_warm_entry tests/client/test_client_caching.py::test_refresh_skips_the_read_and_stores_the_refetched_result [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_refresh_skips_the_read_and_stores_the_refetched_result tests/client/test_client_caching.py::test_refresh_storing_a_ttl_zero_result_purges_the_warm_entry [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_refresh_storing_a_ttl_zero_result_purges_the_warm_entry tests/client/test_client_caching.py::test_a_list_call_carrying_meta_is_fetched_and_replaces_the_warm_entry [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_a_list_call_carrying_meta_is_fetched_and_replaces_the_warm_entry tests/client/test_client_caching.py::test_a_read_resource_carrying_meta_is_fetched_and_replaces_the_warm_entry [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_a_read_resource_carrying_meta_is_fetched_and_replaces_the_warm_entry tests/client/test_client_caching.py::test_cache_mode_is_inert_when_caching_is_disabled [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_cache_mode_is_inert_when_caching_is_disabled tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[request_state] [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[request_state] tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[input_responses] [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[input_responses] tests/client/test_client_caching.py::test_a_terminal_read_reached_through_driver_rounds_is_never_cached [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_a_terminal_read_reached_through_driver_rounds_is_never_cached tests/client/test_client_caching.py::test_a_refresh_that_resolves_to_input_required_purges_the_warm_entry [gw12] [ 12%] PASSED tests/client/test_client_caching.py::test_a_refresh_that_resolves_to_input_required_purges_the_warm_entry tests/client/test_client_caching.py::test_a_listing_served_from_a_shared_store_rebuilds_output_schemas [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_not_provided tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_no_metadata [gw6] [ 12%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_no_metadata tests/docs_src/test_middleware.py::test_the_result_passes_through_unchanged [gw38] [ 12%] PASSED tests/docs_src/test_middleware.py::test_the_result_passes_through_unchanged tests/docs_src/test_middleware.py::test_a_notification_has_no_request_id [gw38] [ 12%] PASSED tests/docs_src/test_middleware.py::test_a_notification_has_no_request_id tests/docs_src/test_middleware.py::test_raising_before_call_next_refuses_the_message [gw38] [ 12%] PASSED tests/docs_src/test_middleware.py::test_raising_before_call_next_refuses_the_message tests/docs_src/test_middleware.py::test_an_unhandled_method_raises_through_the_middleware [gw38] [ 12%] PASSED tests/docs_src/test_middleware.py::test_an_unhandled_method_raises_through_the_middleware tests/docs_src/test_middleware.py::test_initialize_cannot_be_replaced_only_wrapped [gw38] [ 12%] PASSED tests/docs_src/test_middleware.py::test_initialize_cannot_be_replaced_only_wrapped tests/docs_src/test_middleware.py::test_a_tool_call_over_the_cap_is_refused_while_the_earlier_calls_still_run [gw38] [ 12%] PASSED tests/docs_src/test_middleware.py::test_a_tool_call_over_the_cap_is_refused_while_the_earlier_calls_still_run tests/docs_src/test_middleware.py::test_other_requests_are_answered_with_the_cap_reached [gw38] [ 12%] PASSED tests/docs_src/test_middleware.py::test_other_requests_are_answered_with_the_cap_reached tests/docs_src/test_middleware.py::test_a_refused_call_is_accepted_once_a_running_call_finishes [gw38] [ 12%] PASSED tests/docs_src/test_middleware.py::test_a_refused_call_is_accepted_once_a_running_call_finishes tests/docs_src/test_middleware.py::test_a_tool_call_that_raises_gives_its_slot_back [gw38] [ 12%] PASSED tests/docs_src/test_middleware.py::test_a_tool_call_that_raises_gives_its_slot_back tests/docs_src/test_middleware.py::test_a_cancelled_tool_call_gives_its_slot_back [gw38] [ 12%] PASSED tests/docs_src/test_middleware.py::test_a_cancelled_tool_call_gives_its_slot_back tests/docs_src/test_middleware.py::test_answering_with_an_error_result_returns_it_to_the_caller_instead_of_raising [gw38] [ 13%] PASSED tests/docs_src/test_middleware.py::test_answering_with_an_error_result_returns_it_to_the_caller_instead_of_raising tests/docs_src/test_middleware.py::test_calls_made_one_after_another_never_reach_the_cap [gw38] [ 13%] PASSED tests/docs_src/test_middleware.py::test_calls_made_one_after_another_never_reach_the_cap tests/docs_src/test_mrtr.py::test_first_call_returns_an_input_required_result [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_first_call_returns_an_input_required_result tests/docs_src/test_mrtr.py::test_the_auto_loop_drives_the_call_to_completion [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_the_auto_loop_drives_the_call_to_completion tests/docs_src/test_mrtr.py::test_the_auto_loop_without_a_callback_raises_mcp_error [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_the_auto_loop_without_a_callback_raises_mcp_error tests/docs_src/test_mrtr.py::test_retry_with_input_responses_and_request_state_completes_the_call [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_retry_with_input_responses_and_request_state_completes_the_call tests/docs_src/test_mrtr.py::test_the_manual_loop_drives_the_call_to_completion [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_the_manual_loop_drives_the_call_to_completion tests/docs_src/test_mrtr.py::test_the_in_memory_client_negotiates_2026_07_28 [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_the_in_memory_client_negotiates_2026_07_28 tests/docs_src/test_mrtr.py::test_a_pre_2026_session_has_nowhere_to_put_the_result [gw27] [ 13%] PASSED tests/client/test_transport_stream_cleanup.py::test_sse_client_closes_all_streams_on_http_error [gw26] [ 13%] PASSED tests/client/test_streamable_http.py::test_a_superseded_posts_late_real_response_cannot_answer_the_successor tests/client/test_streamable_http.py::test_a_202_to_a_request_resolves_the_waiter_with_an_error [gw26] [ 13%] PASSED tests/client/test_streamable_http.py::test_a_202_to_a_request_resolves_the_waiter_with_an_error tests/client/test_streamable_http.py::test_exhausted_reconnection_attempts_resolve_the_request_with_an_error [gw4] [ 13%] XFAIL tests/client/test_auth.py::test_build_metadata[simple-url] tests/client/test_auth.py::test_build_metadata[with-trailing-slash] [gw4] [ 13%] PASSED tests/client/test_auth.py::test_build_metadata[with-trailing-slash] tests/client/test_auth.py::test_build_metadata[with-path-param] [gw4] [ 13%] PASSED tests/client/test_auth.py::test_build_metadata[with-path-param] tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_no_prm_falls_back_to_root_oauth_discovery [gw4] [ 13%] PASSED tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_no_prm_falls_back_to_root_oauth_discovery tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_with_different_prm_and_root_urls [gw4] [ 13%] PASSED tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_with_different_prm_and_root_urls tests/client/test_auth.py::TestSEP985Discovery::test_path_based_fallback_when_no_www_authenticate [gw4] [ 13%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_path_based_fallback_when_no_www_authenticate tests/client/test_auth.py::TestSEP985Discovery::test_root_based_fallback_after_path_based_404 [gw4] [ 13%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_root_based_fallback_after_path_based_404 tests/client/test_auth.py::TestSEP985Discovery::test_www_authenticate_takes_priority_over_well_known [gw4] [ 13%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_www_authenticate_takes_priority_over_well_known tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="read write"-scope-read write] [gw4] [ 13%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="read write"-scope-read write] [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_a_pre_2026_session_has_nowhere_to_put_the_result tests/docs_src/test_mrtr.py::test_fulfil_refuses_a_request_it_cannot_answer [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_fulfil_refuses_a_request_it_cannot_answer tests/docs_src/test_mrtr.py::test_a_prompt_returns_an_input_required_result_on_the_first_round tests/client/transports/test_memory.py::test_with_server [gw27] [ 13%] PASSED tests/client/transports/test_memory.py::test_with_server tests/client/transports/test_memory.py::test_with_mcpserver [gw27] [ 13%] PASSED tests/client/transports/test_memory.py::test_with_mcpserver tests/client/transports/test_memory.py::test_server_is_running [gw27] [ 13%] PASSED tests/client/transports/test_memory.py::test_server_is_running tests/client/transports/test_memory.py::test_list_tools [gw27] [ 13%] PASSED tests/client/transports/test_memory.py::test_list_tools tests/client/transports/test_memory.py::test_call_tool tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[jwt] [gw2] [ 13%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[jwt] tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[secret] [gw2] [ 13%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[secret] tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[jwt] [gw11] [ 13%] PASSED tests/client/test_caching.py::test_a_raising_store_get_is_a_cache_miss [gw20] [ 13%] PASSED tests/client/test_session.py::test_dispatcher_keyword_runs_over_direct_dispatch tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32603] [gw16] [ 13%] PASSED tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32603] tests/client/test_client.py::test_modern_list_tools_drops_tools_with_invalid_x_mcp_header_but_legacy_does_not [gw16] [ 13%] PASSED tests/client/test_client.py::test_modern_list_tools_drops_tools_with_invalid_x_mcp_header_but_legacy_does_not tests/client/test_client.py::test_a_complete_listing_prunes_per_tool_state_for_tools_it_no_longer_contains tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-value] [gw11] [ 13%] PASSED tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-value] tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-entry] tests/client/test_session.py::test_direct_dispatch_roots_list_reaches_callback_with_synthesized_request_id [gw20] [ 13%] PASSED tests/client/test_session.py::test_direct_dispatch_roots_list_reaches_callback_with_synthesized_request_id tests/client/test_session.py::test_raising_notification_callbacks_over_direct_dispatch_cost_only_that_delivery [gw20] [ 13%] PASSED tests/client/test_session.py::test_raising_notification_callbacks_over_direct_dispatch_cost_only_that_delivery tests/client/test_session.py::test_dispatcher_keyword_send_request_before_enter_raises_runtimeerror [gw20] [ 13%] PASSED tests/client/test_session.py::test_dispatcher_keyword_send_request_before_enter_raises_runtimeerror tests/client/test_session.py::test_dispatcher_keyword_send_request_after_exit_raises_connection_closed [gw20] [ 13%] PASSED tests/client/test_session.py::test_dispatcher_keyword_send_request_after_exit_raises_connection_closed tests/client/test_session.py::test_dispatcher_keyword_request_timeout_bounds_wait_for_never_run_peer [gw20] [ 13%] PASSED tests/client/test_session.py::test_dispatcher_keyword_request_timeout_bounds_wait_for_never_run_peer tests/client/test_session.py::test_adopt_raises_when_no_mutual_modern_version_is_supported [gw20] [ 13%] PASSED tests/client/test_session.py::test_adopt_raises_when_no_mutual_modern_version_is_supported tests/client/test_session.py::test_initialize_opts_out_of_cancel_on_abandon_while_other_requests_leave_it_unset [gw20] [ 13%] PASSED tests/client/test_session.py::test_initialize_opts_out_of_cancel_on_abandon_while_other_requests_leave_it_unset tests/client/test_session.py::test_modern_stamp_leaves_cancel_on_abandon_at_the_dispatcher_default [gw20] [ 13%] PASSED tests/client/test_session.py::test_modern_stamp_leaves_cancel_on_abandon_at_the_dispatcher_default tests/client/test_session.py::test_constructor_rejects_streams_and_dispatcher_together [gw20] [ 13%] PASSED tests/client/test_session.py::test_constructor_rejects_streams_and_dispatcher_together tests/client/test_session.py::test_constructor_requires_both_streams_without_dispatcher [gw20] [ 13%] PASSED tests/client/test_session.py::test_constructor_requires_both_streams_without_dispatcher tests/client/test_session.py::test_aenter_cancelled_while_dispatcher_starts_unwinds_cleanly [gw20] [ 13%] PASSED tests/client/test_session.py::test_aenter_cancelled_while_dispatcher_starts_unwinds_cleanly tests/client/test_session.py::test_send_notification_after_close_is_dropped_silently [gw20] [ 13%] PASSED tests/client/test_session.py::test_send_notification_after_close_is_dropped_silently tests/client/test_session.py::test_initialize_is_idempotent_and_returns_the_cached_result [gw20] [ 13%] PASSED tests/client/test_session.py::test_initialize_is_idempotent_and_returns_the_cached_result tests/client/test_session.py::test_discover_adopts_the_returned_result_and_installs_the_modern_stamp [gw20] [ 13%] PASSED tests/client/test_session.py::test_discover_adopts_the_returned_result_and_installs_the_modern_stamp tests/client/test_session.py::test_log_level_opt_in_is_stamped_on_modern_requests_and_overridable_per_call [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_a_prompt_returns_an_input_required_result_on_the_first_round tests/docs_src/test_mrtr.py::test_the_prompt_auto_loop_returns_the_final_messages [gw2] [ 13%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[jwt] tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[secret] [gw20] [ 13%] PASSED tests/client/test_session.py::test_log_level_opt_in_is_stamped_on_modern_requests_and_overridable_per_call tests/client/test_session.py::test_discover_retries_once_on_unsupported_version_then_adopts [gw20] [ 13%] PASSED tests/client/test_session.py::test_discover_retries_once_on_unsupported_version_then_adopts tests/client/test_session.py::test_discover_raises_when_retry_intersection_is_empty [gw20] [ 13%] PASSED tests/client/test_session.py::test_discover_raises_when_retry_intersection_is_empty tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32601] [gw20] [ 13%] PASSED tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32601] tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32001] [gw20] [ 13%] PASSED tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32001] tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32603] [gw20] [ 13%] PASSED tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32603] [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_the_prompt_auto_loop_returns_the_final_messages tests/docs_src/test_mrtr.py::test_a_custom_codec_round_trips_what_it_sealed [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_a_custom_codec_round_trips_what_it_sealed tests/docs_src/test_mrtr.py::test_a_custom_codec_raises_invalid_request_state_for_any_bad_token [gw38] [ 13%] PASSED tests/docs_src/test_mrtr.py::test_a_custom_codec_raises_invalid_request_state_for_any_bad_token tests/docs_src/test_mrtr.py::test_a_custom_codec_rejects_every_alias_of_a_minted_token [gw11] [ 13%] PASSED tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-entry] tests/client/test_caching.py::test_a_raising_opposite_arm_delete_aborts_the_write [gw38] [ 14%] PASSED tests/docs_src/test_mrtr.py::test_a_custom_codec_rejects_every_alias_of_a_minted_token tests/docs_src/test_oauth_clients.py::test_in_memory_storage_satisfies_the_token_storage_protocol [gw26] [ 14%] PASSED tests/client/test_streamable_http.py::test_exhausted_reconnection_attempts_resolve_the_request_with_an_error tests/client/test_streamable_http.py::test_resolving_an_abandoned_request_after_the_reader_closed_is_contained [gw38] [ 14%] PASSED tests/docs_src/test_oauth_clients.py::test_in_memory_storage_satisfies_the_token_storage_protocol tests/client/test_caching.py::test_a_private_scoped_entry_under_the_public_arm_is_not_served [gw7] [ 14%] PASSED tests/client/test_caching.py::test_a_private_scoped_entry_under_the_public_arm_is_not_served tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006_client.py] [gw30] [ 14%] PASSED tests/docs/test_translations.py::test_glossary_of_the_wrong_shape_stops_translate_with_exit_2_but_never_breaks_stage[keep-string] tests/client/test_auth.py::test_union_scopes[no-previous] tests/docs/test_translations.py::test_glossary_of_the_wrong_shape_stops_translate_with_exit_2_but_never_breaks_stage[avoid-string] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006_client.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007.py] tests/client/test_session.py::test_send_request_validates_the_server_result_against_the_surface_schema [gw2] [ 14%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[secret] [gw5] [ 14%] PASSED tests/client/test_auth.py::test_union_scopes[no-previous] tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[jwt] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial001.py] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007.py] [gw18] [ 14%] PASSED tests/client/test_session.py::test_send_request_validates_the_server_result_against_the_surface_schema tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007_client.py] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007_client.py] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial002.py] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial002.py] [gw46] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial002.py] [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial002.py] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001_client.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial003.py] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial003.py] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001_client.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial004.py] [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial004.py] tests/client/test_session.py::test_a_2026_result_type_tag_from_a_legacy_server_never_reaches_the_result[call_tool-body0] [gw11] [ 14%] PASSED tests/client/test_caching.py::test_a_raising_opposite_arm_delete_aborts_the_write tests/client/test_caching.py::test_a_failed_opposite_arm_delete_degrades_the_key_to_a_full_miss tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial001.py] [gw46] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial003.py] [gw46] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial004.py] [gw26] [ 14%] PASSED tests/client/test_streamable_http.py::test_resolving_an_abandoned_request_after_the_reader_closed_is_contained tests/client/test_streamable_http.py::test_trailing_slash_redirect_within_origin_is_followed_by_the_transport [gw31] [ 14%] PASSED tests/docs_src/test_cancellation.py::test_abandoning_the_call_runs_the_shielded_cleanup_to_the_end[legacy] tests/docs_src/test_cancellation.py::test_abandoning_the_call_over_streamable_http_runs_the_cleanup_too[2026-07-28] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial002.py] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial005.py] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial006.py] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial002.py] [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial005.py] [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial006.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial003.py] [gw46] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial005.py] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial006.py] [gw46] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/protocol_versions/tutorial001.py] [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial006.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial007.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial006.py] [gw46] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial006.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial007.py] [gw46] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial007.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial008.py] [gw2] [ 14%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[jwt] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/protocol_versions/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/protocol_versions/tutorial002.py] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/protocol_versions/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/protocol_versions/tutorial003.py] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/protocol_versions/tutorial003.py] [gw26] [ 14%] PASSED tests/client/test_streamable_http.py::test_trailing_slash_redirect_within_origin_is_followed_by_the_transport tests/client/test_streamable_http.py::test_redirect_to_another_origin_fails_that_call_and_keeps_the_session [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial007.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial008.py] [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial008.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial009.py] [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial009.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/protocol_versions/tutorial004.py] [gw46] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial008.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/uri_templates/tutorial001.py] tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/.well-known/oauth-protected-resource"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] [gw4] [ 14%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/.well-known/oauth-protected-resource"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/completions/tutorial002.py] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/protocol_versions/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/real_host/tutorial001.py] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial004.py] [gw46] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/uri_templates/tutorial001.py] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial001.py] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial002.py] [gw7] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/uri_templates/tutorial002.py] [gw4] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/completions/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/completions/tutorial003.py] [gw5] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/real_host/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/resources/tutorial001.py] [gw46] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/uri_templates/tutorial002.py] [gw24] [ 14%] PASSED tests/client/test_stdio.py::test_a_mid_session_stdout_failure_is_logged_and_surfaces_as_clean_closure tests/client/test_stdio.py::test_a_failing_stdout_close_still_closes_the_transport_streams tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/uri_templates/tutorial003.py] [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial002.py] [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial003.py] [gw18] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial004_anyio.py] [gw4] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/completions/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/context/tutorial001.py] [gw11] [ 15%] PASSED tests/client/test_caching.py::test_a_failed_opposite_arm_delete_degrades_the_key_to_a_full_miss tests/client/test_caching.py::test_a_raising_store_set_caches_nothing_and_does_not_raise [gw5] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/resources/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/resources/tutorial002.py] [gw5] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/resources/tutorial002.py] [gw46] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/uri_templates/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/uri_templates/tutorial004.py] tests/cli/test_utils.py::test_get_npx_returns_none_when_npx_missing [gw7] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/identity_assertion/tutorial001.py] [gw7] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/identity_assertion/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/identity_assertion/tutorial002.py] [gw7] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/identity_assertion/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/resources/tutorial003.py] [gw46] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/uri_templates/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/uri_templates/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/index/tutorial001.py] [gw0] [ 15%] PASSED tests/cli/test_utils.py::test_get_npx_returns_none_when_npx_missing [gw5] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/resources/tutorial003.py] [gw4] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/context/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/context/tutorial002.py] [gw4] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/context/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/context/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/run/tutorial001.py] [gw18] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial004_anyio.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial004_asyncio.py] [gw18] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial004_asyncio.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial004_trio.py] [gw46] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/uri_templates/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/whats_new/tutorial001.py] [gw7] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/index/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial001.py] [gw5] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/run/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/run/tutorial002.py] [gw46] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/whats_new/tutorial001.py] [gw7] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/apps/tutorial001.py] [gw25] [ 15%] PASSED tests/client/test_subscriptions.py::test_an_open_stream_outlives_the_session_read_timeout tests/client/test_subscriptions.py::test_a_duplicate_ack_does_not_overwrite_the_honored_filter [gw18] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial004_trio.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial005.py] [gw4] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/context/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/dependencies/tutorial001.py] [gw4] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/dependencies/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/dependencies/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial001_client.py] tests/client/test_auth.py::TestRegistrationResponse::test_registration_error_names_an_unfollowed_redirect [gw18] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial006.py] [gw5] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/run/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/run/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial006.py] [gw0] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial006.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial006_client.py] [gw0] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial006_client.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial007.py] [gw46] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/apps/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/apps/tutorial001_client.py] [gw46] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/apps/tutorial001_client.py] [gw18] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial006.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial007.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/apps/tutorial002.py] [gw3] [ 15%] PASSED tests/client/test_auth.py::TestRegistrationResponse::test_registration_error_names_an_unfollowed_redirect tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial001.py] [gw25] [ 15%] PASSED tests/client/test_subscriptions.py::test_a_duplicate_ack_does_not_overwrite_the_honored_filter tests/client/test_subscriptions.py::test_a_non_event_frame_with_the_subscription_id_is_teed_not_delivered [gw7] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial001_client.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial002.py] [gw7] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial003.py] [gw5] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/run/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/sampling_and_roots/tutorial001.py] [gw5] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/sampling_and_roots/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/sampling_and_roots/tutorial002.py] [gw4] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/dependencies/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/dependencies/tutorial003.py] [gw4] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/dependencies/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/dependencies/tutorial004.py] [gw0] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial007.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial007_client.py] [gw0] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial007_client.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/first_steps/tutorial001.py] [gw0] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/first_steps/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/first_steps/tutorial001_client.py] [gw5] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/sampling_and_roots/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/session_groups/tutorial001.py] [gw18] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/subscriptions/tutorial007.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/testing/tutorial001.py] [gw18] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/testing/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/tools/tutorial001.py] [gw46] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/apps/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/apps/tutorial003.py] [gw46] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/apps/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial001.py] [gw11] [ 15%] PASSED tests/client/test_caching.py::test_a_raising_store_set_caches_nothing_and_does_not_raise tests/client/test_caching.py::test_a_failed_set_purges_the_pre_existing_own_arm_entry [gw0] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/first_steps/tutorial001_client.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/handling_errors/tutorial001.py] [gw5] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/session_groups/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/session_groups/tutorial002.py] [gw4] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/dependencies/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/deploy/tutorial001.py] [gw4] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/deploy/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/deploy/tutorial002.py] [gw5] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/session_groups/tutorial002.py] [gw46] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/session_groups/tutorial003.py] [gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial002.py] [gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial003.py] [gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial004.py] [gw18] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/tools/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/tools/tutorial002.py] [gw18] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/tools/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/tools/tutorial003.py] [gw18] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/tools/tutorial003.py] [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial005.py] [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/handling_errors/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/handling_errors/tutorial002.py] [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/handling_errors/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/handling_errors/tutorial003.py] [gw4] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/deploy/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/deploy/tutorial003.py] [gw4] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/deploy/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/deploy/tutorial004.py] [gw25] [ 16%] PASSED tests/client/test_subscriptions.py::test_a_non_event_frame_with_the_subscription_id_is_teed_not_delivered tests/client/test_subscriptions.py::test_session_teardown_unblocks_a_sibling_consumer_with_subscription_lost [gw25] [ 16%] PASSED tests/client/test_subscriptions.py::test_session_teardown_unblocks_a_sibling_consumer_with_subscription_lost tests/client/test_subscriptions.py::test_server_cancel_before_the_ack_raises_subscription_lost_from_enter [gw25] [ 16%] PASSED tests/client/test_subscriptions.py::test_server_cancel_before_the_ack_raises_subscription_lost_from_enter tests/client/test_subscriptions.py::test_listen_on_an_exited_session_raises_and_leaks_no_route [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/handling_errors/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/handling_errors/tutorial004.py] [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial005.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial006.py] [gw5] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/session_groups/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/session_groups/tutorial004.py] [gw5] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/session_groups/tutorial004.py] [gw46] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial003.py] [gw46] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial004.py] [gw46] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial005.py] [gw4] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/deploy/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/elicitation/tutorial001.py] [gw4] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/elicitation/tutorial001.py] [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/handling_errors/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/header_parameters/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/tools/tutorial004.py] [gw18] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/tools/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/tools/tutorial005.py] [gw18] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/tools/tutorial005.py] [gw46] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial005.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial006.py] [gw7] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lifespan/tutorial001.py] [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/header_parameters/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/header_parameters/tutorial002.py] [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial006.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial007.py] [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lowlevel/tutorial007.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/media/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/elicitation/tutorial002.py] [gw4] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/elicitation/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/elicitation/tutorial003.py] [gw46] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/asgi/tutorial006.py] [gw7] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lifespan/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lifespan/tutorial002.py] [gw7] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lifespan/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/logging/tutorial001.py] [gw7] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/logging/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial001.py] [gw7] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial001.py] [gw25] [ 16%] PASSED tests/client/test_subscriptions.py::test_listen_on_an_exited_session_raises_and_leaks_no_route tests/client/test_subscriptions.py::test_listen_on_a_never_entered_session_raises_runtime_error [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/header_parameters/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/header_parameters/tutorial003.py] [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/media/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/media/tutorial002.py] [gw25] [ 16%] PASSED tests/client/test_subscriptions.py::test_listen_on_a_never_entered_session_raises_runtime_error tests/client/test_subscriptions.py::test_a_retained_handle_after_exit_does_not_serve_stale_events [gw4] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/elicitation/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/elicitation/tutorial004.py] [gw11] [ 16%] PASSED tests/client/test_caching.py::test_a_failed_set_purges_the_pre_existing_own_arm_entry [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/media/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/media/tutorial003.py] [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/header_parameters/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/identity_assertion/tutorial001.py] [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/media/tutorial003.py] tests/client/test_input_required.py::test_single_round_dispatches_then_retries_to_terminal_result tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/media/tutorial004.py] [gw4] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/elicitation/tutorial004.py] [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/identity_assertion/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/identity_assertion/tutorial002.py] [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/media/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/media/tutorial005.py] [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/media/tutorial005.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial001.py] tests/client/test_caching.py::test_eviction_with_a_raising_delete_still_bumps_the_generation [gw4] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/middleware/tutorial001.py] [gw14] [ 16%] PASSED tests/client/test_input_required.py::test_single_round_dispatches_then_retries_to_terminal_result tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/pagination/tutorial002.py] [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/identity_assertion/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/index/tutorial001.py] [gw14] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/pagination/tutorial002.py] [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/middleware/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial002.py] [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/index/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/legacy_clients/tutorial001.py] [gw37] [ 16%] PASSED tests/docs_src/test_extensions.py::test_contributed_tool_is_listed_and_callable tests/docs_src/test_extensions.py::test_declaring_client_gets_the_vendor_method_result tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/middleware/tutorial002.py] [gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/legacy_clients/tutorial001.py] [gw4] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial003.py] [gw4] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/legacy_clients/tutorial001_client.py] [gw19] [ 16%] PASSED tests/client/test_session.py::test_call_tool_accepts_a_null_structured_content_the_output_schema_permits tests/client/test_session.py::test_call_tool_rejects_a_null_structured_content_the_output_schema_forbids [gw19] [ 16%] PASSED tests/client/test_session.py::test_call_tool_rejects_a_null_structured_content_the_output_schema_forbids tests/client/test_session.py::test_call_tool_reports_an_absent_structured_content_as_missing_even_when_null_is_permitted [gw19] [ 16%] PASSED tests/client/test_session.py::test_call_tool_reports_an_absent_structured_content_as_missing_even_when_null_is_permitted [gw21] [ 16%] PASSED tests/client/test_session.py::test_a_2026_result_type_tag_from_a_legacy_server_never_reaches_the_result[call_tool-body0] [gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/middleware/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/progress/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial003_client.py] [gw4] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial003_client.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/mrtr/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/authorization/tutorial002.py] [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/progress/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/progress/tutorial002.py] [gw0] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/legacy_clients/tutorial001_client.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/legacy_clients/tutorial002.py] [gw15] [ 17%] PASSED tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[none] tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[empty] [gw0] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/legacy_clients/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial004.py] [gw4] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial004.py] [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/progress/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial001.py] [gw3] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/mrtr/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/mrtr/tutorial002.py] tests/client/test_session.py::test_session_call_tool_returns_input_required_result_when_opted_in [gw19] [ 17%] PASSED tests/client/test_session.py::test_session_call_tool_returns_input_required_result_when_opted_in tests/client/test_session.py::test_call_tool_threads_input_responses_and_request_state_into_params [gw37] [ 17%] PASSED tests/docs_src/test_extensions.py::test_declaring_client_gets_the_vendor_method_result tests/docs_src/test_extensions.py::test_vendor_method_rejects_a_non_declaring_client_with_32021 [gw37] [ 17%] PASSED tests/docs_src/test_extensions.py::test_vendor_method_rejects_a_non_declaring_client_with_32021 tests/docs_src/test_extensions.py::test_version_pinned_method_is_not_found_on_a_legacy_connection tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/legacy_clients/tutorial003.py] [gw0] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/legacy_clients/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lifespan/tutorial001.py] [gw36] [ 17%] PASSED tests/docs_src/test_lifespan.py::test_lifespan_object_reaches_the_tool tests/docs_src/test_lifespan.py::test_context_parameter_never_reaches_the_input_schema [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial002.py] [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial002.py] [gw37] [ 17%] PASSED tests/docs_src/test_extensions.py::test_version_pinned_method_is_not_found_on_a_legacy_connection tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial004_client.py] [gw4] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial004_client.py] [gw0] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lifespan/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lifespan/tutorial002.py] [gw3] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/mrtr/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/mrtr/tutorial003.py] [gw3] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/mrtr/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/mrtr/tutorial004.py] tests/docs_src/test_extensions.py::test_interceptor_observes_the_call_and_passes_the_result_through [gw11] [ 17%] PASSED tests/client/test_caching.py::test_eviction_with_a_raising_delete_still_bumps_the_generation tests/client/test_caching.py::test_store_failures_warn_once_per_burst tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial003.py] [gw36] [ 17%] PASSED tests/docs_src/test_lifespan.py::test_context_parameter_never_reaches_the_input_schema tests/docs_src/test_lifespan.py::test_startup_runs_before_the_first_request_and_shutdown_after_the_last [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/authorization/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/caching/tutorial001.py] [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial003.py] [gw3] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/mrtr/tutorial004.py] [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/caching/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/caching/tutorial002.py] [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/caching/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/caching/tutorial003.py] [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/caching/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/cancellation/tutorial001.py] [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/cancellation/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/cancellation/tutorial002.py] [gw15] [ 17%] PASSED tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[empty] tests/client/test_client_extensions.py::test_claimed_result_resolves_transparently_to_the_resolvers_result [gw0] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/lifespan/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial004.py] [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial005.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/mrtr/tutorial005.py] [gw3] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/mrtr/tutorial005.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/oauth_clients/tutorial001.py] [gw36] [ 17%] PASSED tests/docs_src/test_lifespan.py::test_startup_runs_before_the_first_request_and_shutdown_after_the_last tests/docs_src/test_lifespan.py::test_bare_context_reaches_the_lifespan_object_in_resources_and_prompts [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial005.py] [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/cancellation/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial001.py] [gw3] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/oauth_clients/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial006.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/oauth_clients/tutorial002.py] [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial001_client.py] [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/prompts/tutorial006.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/protocol_versions/tutorial001.py] [gw15] [ 17%] PASSED tests/client/test_client_extensions.py::test_claimed_result_resolves_transparently_to_the_resolvers_result [gw3] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/oauth_clients/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/opentelemetry/tutorial001.py] [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial001_client.py] tests/client/test_client_extensions.py::test_claimed_shape_routes_to_its_owning_extensions_resolver [gw32] [ 17%] PASSED tests/docs_src/test_context.py::test_every_request_gets_its_own_context tests/docs_src/test_context.py::test_a_tool_reads_the_servers_own_resource tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial002.py] [gw3] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/opentelemetry/tutorial001.py] [gw30] [ 17%] PASSED tests/docs/test_translations.py::test_glossary_of_the_wrong_shape_stops_translate_with_exit_2_but_never_breaks_stage[avoid-string] tests/docs/test_translations.py::test_translate_writes_pages_with_provenance_and_a_second_run_makes_no_calls [gw19] [ 17%] PASSED tests/client/test_session.py::test_call_tool_threads_input_responses_and_request_state_into_params [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/protocol_versions/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/protocol_versions/tutorial002.py] [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial002.py] [gw47] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/tools/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial003.py] [gw28] [ 17%] PASSED tests/docs_src/test_apps.py::test_one_tool_two_answers tests/docs_src/test_apps.py::test_capability_advertised_under_server_extensions [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/protocol_versions/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/protocol_versions/tutorial003.py] [gw47] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/tools/tutorial002.py] [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/tools/tutorial003.py] tests/client/test_session.py::test_session_call_tool_raises_on_input_required_without_opt_in [gw19] [ 17%] PASSED tests/client/test_session.py::test_session_call_tool_raises_on_input_required_without_opt_in tests/client/test_session.py::test_session_get_prompt_returns_input_required_result_when_opted_in [gw14] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/protocol_versions/tutorial003.py] [gw32] [ 17%] PASSED tests/docs_src/test_context.py::test_a_tool_reads_the_servers_own_resource tests/docs_src/test_context.py::test_a_context_only_tool_takes_no_arguments [gw28] [ 17%] PASSED tests/docs_src/test_apps.py::test_capability_advertised_under_server_extensions tests/docs_src/test_apps.py::test_csp_permissions_domain_and_border_ride_the_resource_meta [gw26] [ 17%] PASSED tests/client/test_streamable_http.py::test_redirect_to_another_origin_fails_that_call_and_keeps_the_session tests/client/test_streamable_http.py::test_redirected_notification_is_dropped_and_the_next_message_still_goes_out [gw21] [ 17%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial005.py] [gw21] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial005.py] [gw47] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/tools/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/tools/tutorial004.py] [gw47] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/tools/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/tools/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial008.py] [gw36] [ 18%] PASSED tests/docs_src/test_lifespan.py::test_bare_context_reaches_the_lifespan_object_in_resources_and_prompts tests/docs_src/test_lifespan.py::test_parameterized_context_reaches_the_lifespan_object_in_resources_and_prompts tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/protocol_versions/tutorial004.py] [gw14] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/protocol_versions/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/real_host/tutorial001.py] [gw14] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/real_host/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/resources/tutorial001.py] [gw19] [ 18%] PASSED tests/client/test_session.py::test_session_get_prompt_returns_input_required_result_when_opted_in tests/client/test_session.py::test_session_read_resource_returns_input_required_result_when_opted_in [gw44] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial008.py] [gw32] [ 18%] PASSED tests/docs_src/test_context.py::test_a_context_only_tool_takes_no_arguments tests/docs_src/test_context.py::test_register_a_tool_at_runtime_and_notify_the_client [gw47] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/tools/tutorial005.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial006.py] [gw21] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial006.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial007.py] [gw16] [ 18%] PASSED tests/client/test_client.py::test_a_complete_listing_prunes_per_tool_state_for_tools_it_no_longer_contains tests/client/test_client.py::test_a_complete_listing_prunes_output_schemas_on_a_legacy_session_too [gw16] [ 18%] PASSED tests/client/test_client.py::test_a_complete_listing_prunes_output_schemas_on_a_legacy_session_too tests/client/test_client.py::test_a_listing_with_a_next_cursor_prunes_no_per_tool_state [gw47] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial002.py] tests/docs_src/test_structured_output.py::test_dataclass_produces_the_same_schema [gw28] [ 18%] PASSED tests/docs_src/test_apps.py::test_csp_permissions_domain_and_border_ride_the_resource_meta tests/docs_src/test_apps.py::test_an_app_only_tool_is_still_listed_and_callable [gw22] [ 18%] PASSED tests/client/test_session_promotions.py::test_validate_tool_result_passes_a_conforming_result tests/client/test_session_promotions.py::test_validate_tool_result_raises_on_schema_mismatch [gw22] [ 18%] PASSED tests/client/test_session_promotions.py::test_validate_tool_result_raises_on_schema_mismatch tests/client/test_session_promotions.py::test_validate_tool_result_raises_on_an_unusable_output_schema [gw35] [ 18%] PASSED tests/docs_src/test_header_parameters.py::test_a_legacy_http_connection_ignores_the_annotation [gw21] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client/tutorial007.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_callbacks/tutorial001.py] [gw21] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_callbacks/tutorial001.py] [gw14] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/resources/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/resources/tutorial002.py] [gw14] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/resources/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/resources/tutorial003.py] [gw14] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/resources/tutorial003.py] [gw15] [ 18%] PASSED tests/client/test_client_extensions.py::test_claimed_shape_routes_to_its_owning_extensions_resolver tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/run/tutorial001.py] [gw14] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/run/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/run/tutorial002.py] [gw14] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/run/tutorial002.py] [gw22] [ 18%] PASSED tests/client/test_session_promotions.py::test_validate_tool_result_raises_on_an_unusable_output_schema tests/client/test_session_promotions.py::test_validate_tool_result_compiles_the_output_schema_once_per_tool [gw34] [ 18%] PASSED tests/docs_src/test_deploy.py::test_a_shared_key_and_name_let_any_worker_finish_a_round_trip tests/docs_src/test_deploy.py::test_a_shared_key_is_not_enough_without_a_shared_name tests/client/test_client_extensions.py::test_resolver_product_gets_the_direct_paths_output_schema_revalidation [gw15] [ 18%] PASSED tests/client/test_client_extensions.py::test_resolver_product_gets_the_direct_paths_output_schema_revalidation tests/client/test_client_extensions.py::test_resolver_error_result_is_returned_not_raised [gw15] [ 18%] PASSED tests/client/test_client_extensions.py::test_resolver_error_result_is_returned_not_raised tests/client/test_client_extensions.py::test_resolver_receives_the_calls_claim_context [gw47] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial003.py] [gw47] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial004.py] [gw47] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial005.py] [gw47] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial005.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial006.py] [gw47] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial006.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial007.py] [gw11] [ 18%] PASSED tests/client/test_caching.py::test_store_failures_warn_once_per_burst tests/client/test_caching.py::test_a_set_only_store_failure_warns_once_across_write_cycles tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_callbacks/tutorial002.py] [gw19] [ 18%] PASSED tests/client/test_session.py::test_session_read_resource_returns_input_required_result_when_opted_in tests/client/test_session.py::test_a_late_ack_for_a_closed_driver_listen_reaches_message_handler [gw19] [ 18%] PASSED tests/client/test_session.py::test_a_late_ack_for_a_closed_driver_listen_reaches_message_handler tests/client/test_session.py::test_a_graceful_result_does_not_outrun_the_events_that_preceded_it [gw19] [ 18%] PASSED tests/client/test_session.py::test_a_graceful_result_does_not_outrun_the_events_that_preceded_it tests/client/test_session.py::test_intercept_settles_only_the_named_listen_route_on_cancelled [gw19] [ 18%] PASSED tests/client/test_session.py::test_intercept_settles_only_the_named_listen_route_on_cancelled tests/client/test_session.py::test_intercept_ignores_frames_without_a_route_or_with_broken_meta [gw19] [ 18%] PASSED tests/client/test_session.py::test_intercept_ignores_frames_without_a_route_or_with_broken_meta tests/client/test_session.py::test_intercept_consumes_acks_for_live_routes_and_leaves_malformed_ones [gw19] [ 18%] PASSED tests/client/test_session.py::test_intercept_consumes_acks_for_live_routes_and_leaves_malformed_ones tests/client/test_session_claims.py::test_duplicate_claim_tag_across_extensions_rejected [gw42] [ 18%] PASSED tests/docs_src/test_session_groups.py::test_call_tool_routes_to_the_owning_server tests/docs_src/test_session_groups.py::test_disconnect_removes_every_component_of_that_server [gw32] [ 18%] PASSED tests/docs_src/test_context.py::test_register_a_tool_at_runtime_and_notify_the_client tests/docs_src/test_dependencies.py::test_the_resolver_fills_the_parameter_from_the_tools_own_argument [gw40] [ 18%] PASSED tests/docs_src/test_opentelemetry.py::test_a_plain_server_is_traced_with_no_extra_code tests/docs_src/test_opentelemetry.py::test_client_and_server_share_one_trace tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/run/tutorial003.py] [gw14] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/run/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/sampling_and_roots/tutorial001.py] [gw14] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/sampling_and_roots/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/sampling_and_roots/tutorial002.py] [gw14] [ 18%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/sampling_and_roots/tutorial002.py] tests/docs_src/test_header_parameters.py::test_a_connection_that_is_not_http_ignores_the_annotation [gw35] [ 18%] PASSED tests/docs_src/test_header_parameters.py::test_a_connection_that_is_not_http_ignores_the_annotation tests/docs_src/test_header_parameters.py::test_int_and_bool_arguments_can_be_marked [gw35] [ 18%] PASSED tests/docs_src/test_header_parameters.py::test_int_and_bool_arguments_can_be_marked tests/docs_src/test_header_parameters.py::test_any_other_type_is_refused_when_the_tool_is_registered [gw15] [ 18%] PASSED tests/client/test_client_extensions.py::test_resolver_receives_the_calls_claim_context tests/client/test_client_extensions.py::test_resolver_exception_propagates_untouched [gw37] [ 18%] PASSED tests/docs_src/test_extensions.py::test_interceptor_observes_the_call_and_passes_the_result_through tests/docs_src/test_extensions.py::test_declaring_client_receives_the_redeemed_result_not_the_claimed_shape [gw37] [ 18%] PASSED tests/docs_src/test_extensions.py::test_declaring_client_receives_the_redeemed_result_not_the_claimed_shape tests/docs_src/test_extensions.py::test_a_client_without_the_extension_is_refused_by_the_gate [gw37] [ 18%] PASSED tests/docs_src/test_extensions.py::test_a_client_without_the_extension_is_refused_by_the_gate tests/docs_src/test_extensions.py::test_session_tier_allow_claimed_returns_the_raw_shape [gw22] [ 18%] PASSED tests/client/test_session_promotions.py::test_validate_tool_result_compiles_the_output_schema_once_per_tool tests/client/test_session_promotions.py::test_validate_tool_result_keeps_the_validator_across_a_relisting_of_the_same_schema [gw22] [ 18%] PASSED tests/client/test_session_promotions.py::test_validate_tool_result_keeps_the_validator_across_a_relisting_of_the_same_schema tests/client/test_session_promotions.py::test_validate_tool_result_recompiles_when_the_server_changes_the_schema [gw16] [ 18%] PASSED tests/client/test_client.py::test_a_listing_with_a_next_cursor_prunes_no_per_tool_state tests/client/test_client.py::test_a_cursor_page_fetch_prunes_no_per_tool_state [gw16] [ 18%] PASSED tests/client/test_client.py::test_a_cursor_page_fetch_prunes_no_per_tool_state tests/client/test_client.py::test_client_rejects_handshake_era_mode_at_construction [gw16] [ 18%] PASSED tests/client/test_client.py::test_client_rejects_handshake_era_mode_at_construction tests/client/test_client.py::test_call_tool_auto_loop_dispatches_elicitation_then_returns_final_result [gw16] [ 19%] PASSED tests/client/test_client.py::test_call_tool_auto_loop_dispatches_elicitation_then_returns_final_result tests/client/test_client.py::test_call_tool_auto_loop_dispatches_sampling_then_returns_final_result [gw28] [ 19%] PASSED tests/docs_src/test_apps.py::test_an_app_only_tool_is_still_listed_and_callable tests/docs_src/test_apps.py::test_a_file_resource_is_served_with_the_app_mime_type_filled_in [gw42] [ 19%] PASSED tests/docs_src/test_session_groups.py::test_disconnect_removes_every_component_of_that_server tests/docs_src/test_shape.py::test_private_mcp_import_detector [gw42] [ 19%] PASSED tests/docs_src/test_shape.py::test_private_mcp_import_detector tests/docs_src/test_shape.py::test_retired_name_detector [gw42] [ 19%] PASSED tests/docs_src/test_shape.py::test_retired_name_detector [gw37] [ 19%] PASSED tests/docs_src/test_extensions.py::test_session_tier_allow_claimed_returns_the_raw_shape tests/docs_src/test_extensions.py::test_name_param_request_round_trips_with_no_client_registration [gw36] [ 19%] PASSED tests/docs_src/test_lifespan.py::test_parameterized_context_reaches_the_lifespan_object_in_resources_and_prompts tests/docs_src/test_lifespan.py::test_default_lifespan_yields_an_empty_dict [gw36] [ 19%] PASSED tests/docs_src/test_lifespan.py::test_default_lifespan_yields_an_empty_dict tests/docs_src/test_logging.py::test_the_tool_logs_through_the_standard_library [gw36] [ 19%] PASSED tests/docs_src/test_logging.py::test_the_tool_logs_through_the_standard_library tests/docs_src/test_logging.py::test_the_log_line_never_reaches_the_client [gw35] [ 19%] PASSED tests/docs_src/test_header_parameters.py::test_any_other_type_is_refused_when_the_tool_is_registered tests/docs_src/test_header_parameters.py::test_a_plain_optional_argument_is_refused_and_the_spelled_out_schema_registers [gw19] [ 19%] PASSED tests/client/test_session_claims.py::test_duplicate_claim_tag_across_extensions_rejected tests/client/test_session_claims.py::test_claims_keyed_to_unadvertised_extension_rejected [gw19] [ 19%] PASSED tests/client/test_session_claims.py::test_claims_keyed_to_unadvertised_extension_rejected tests/client/test_session_claims.py::test_empty_claim_sequence_rejected [gw19] [ 19%] PASSED tests/client/test_session_claims.py::test_empty_claim_sequence_rejected tests/client/test_session_claims.py::test_empty_settings_count_as_an_advertised_extension [gw19] [ 19%] PASSED tests/client/test_session_claims.py::test_empty_settings_count_as_an_advertised_extension tests/client/test_session_claims.py::test_without_claims_the_call_tool_adapter_is_the_module_constant tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001.py] [gw42] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001_client.py] [gw47] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial007.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial008.py] [gw47] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/troubleshooting/tutorial008.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/uri_templates/tutorial001.py] [gw47] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/uri_templates/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/uri_templates/tutorial002.py] [gw47] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/uri_templates/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/uri_templates/tutorial003.py] [gw47] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/uri_templates/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/uri_templates/tutorial004.py] [gw47] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/uri_templates/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/uri_templates/tutorial005.py] [gw23] [ 19%] PASSED tests/client/test_session_concurrency.py::test_concurrent_tool_calls_resolve_out_of_order_to_their_own_callers tests/client/test_session_concurrency.py::test_overlapping_sampling_requests_are_serviced_concurrently_by_the_client [gw26] [ 19%] PASSED tests/client/test_streamable_http.py::test_redirected_notification_is_dropped_and_the_next_message_still_goes_out tests/client/test_streamable_http.py::test_get_stream_gives_up_without_retrying_when_the_endpoint_redirects_elsewhere [gw21] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_callbacks/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_callbacks/tutorial003.py] [gw21] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_callbacks/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_callbacks/tutorial004.py] [gw21] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_callbacks/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_transports/tutorial001.py] [gw21] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_transports/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_transports/tutorial002.py] [gw22] [ 19%] PASSED tests/client/test_session_promotions.py::test_validate_tool_result_recompiles_when_the_server_changes_the_schema tests/client/test_stdio.py::test_messages_split_and_packed_across_chunks_are_reframed [gw22] [ 19%] PASSED tests/client/test_stdio.py::test_messages_split_and_packed_across_chunks_are_reframed tests/client/test_stdio.py::test_each_outgoing_message_is_written_as_exactly_one_line [gw37] [ 19%] PASSED tests/docs_src/test_extensions.py::test_name_param_request_round_trips_with_no_client_registration tests/docs_src/test_first_steps.py::test_each_decorator_registers_one_primitive [gw32] [ 19%] PASSED tests/docs_src/test_dependencies.py::test_the_resolver_fills_the_parameter_from_the_tools_own_argument tests/docs_src/test_dependencies.py::test_the_resolved_parameter_is_invisible_to_the_model [gw32] [ 19%] PASSED tests/docs_src/test_dependencies.py::test_the_resolved_parameter_is_invisible_to_the_model tests/docs_src/test_dependencies.py::test_a_client_supplied_value_for_a_resolved_parameter_is_ignored [gw32] [ 19%] PASSED tests/docs_src/test_dependencies.py::test_a_client_supplied_value_for_a_resolved_parameter_is_ignored tests/docs_src/test_dependencies.py::test_a_resolver_can_depend_on_another_resolver [gw47] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/uri_templates/tutorial005.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/whats_new/tutorial001.py] [gw47] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/whats_new/tutorial001.py] [gw21] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_transports/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_transports/tutorial003.py] [gw21] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_transports/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_transports/tutorial004.py] [gw21] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_transports/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_transports/tutorial005.py] [gw21] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/client_transports/tutorial005.py] [gw19] [ 19%] PASSED tests/client/test_session_claims.py::test_without_claims_the_call_tool_adapter_is_the_module_constant tests/client/test_session_claims.py::test_modern_adopt_activates_claims_and_routes_claimed_results[None] [gw19] [ 19%] PASSED tests/client/test_session_claims.py::test_modern_adopt_activates_claims_and_routes_claimed_results[None] tests/client/test_session_claims.py::test_modern_adopt_activates_claims_and_routes_claimed_results[protocol_versions1] [gw42] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001_client.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial002.py] [gw42] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial003.py] [gw42] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial001.py] [gw15] [ 19%] PASSED tests/client/test_client_extensions.py::test_resolver_exception_propagates_untouched tests/client/test_client_extensions.py::test_unclaimed_result_flows_through_unchanged_with_extensions_present [gw15] [ 19%] PASSED tests/client/test_client_extensions.py::test_unclaimed_result_flows_through_unchanged_with_extensions_present tests/client/test_client_extensions.py::test_input_required_then_plain_result_keeps_the_auto_loop_working [gw40] [ 19%] PASSED tests/docs_src/test_opentelemetry.py::test_client_and_server_share_one_trace tests/docs_src/test_pagination.py::test_mcpserver_never_pages [gw35] [ 19%] PASSED tests/docs_src/test_header_parameters.py::test_a_plain_optional_argument_is_refused_and_the_spelled_out_schema_registers [gw29] [ 19%] PASSED tests/docs_src/test_client.py::test_raise_exceptions_is_a_constructor_flag [gw36] [ 19%] PASSED tests/docs_src/test_logging.py::test_the_log_line_never_reaches_the_client tests/docs_src/test_logging.py::test_log_level_configures_the_root_logger [gw36] [ 19%] PASSED tests/docs_src/test_logging.py::test_log_level_configures_the_root_logger tests/docs_src/test_logging.py::test_an_existing_logging_configuration_wins [gw36] [ 19%] PASSED tests/docs_src/test_logging.py::test_an_existing_logging_configuration_wins tests/docs_src/test_lowlevel.py::test_the_input_schema_on_the_wire_is_the_dict_you_wrote [gw16] [ 19%] PASSED tests/client/test_client.py::test_call_tool_auto_loop_dispatches_sampling_then_returns_final_result tests/client/test_client.py::test_call_tool_auto_loop_dispatches_list_roots_then_returns_final_result [gw37] [ 19%] PASSED tests/docs_src/test_first_steps.py::test_each_decorator_registers_one_primitive tests/docs_src/test_first_steps.py::test_call_the_tool [gw25] [ 19%] PASSED tests/client/test_subscriptions.py::test_a_retained_handle_after_exit_does_not_serve_stale_events tests/client/test_subscriptions.py::test_a_stray_ack_outside_the_driver_namespace_still_reaches_message_handler [gw25] [ 19%] PASSED tests/client/test_subscriptions.py::test_a_stray_ack_outside_the_driver_namespace_still_reaches_message_handler tests/client/test_subscriptions.py::test_a_bare_string_for_resource_subscriptions_is_rejected [gw26] [ 19%] PASSED tests/client/test_streamable_http.py::test_get_stream_gives_up_without_retrying_when_the_endpoint_redirects_elsewhere tests/client/test_streamable_http.py::test_resumption_redirected_elsewhere_resolves_that_request_with_an_error [gw28] [ 19%] PASSED tests/docs_src/test_apps.py::test_a_file_resource_is_served_with_the_app_mime_type_filled_in tests/docs_src/test_asgi.py::test_the_server_behind_the_app_is_unchanged [gw42] [ 19%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial002.py] [gw42] [ 20%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial003.py] tests/docs_src/test_shape.py::test_every_example_is_included_by_a_page [gw16] [ 20%] PASSED tests/client/test_client.py::test_call_tool_auto_loop_dispatches_list_roots_then_returns_final_result tests/client/test_client.py::test_call_tool_auto_loop_round_trips_evolving_request_state_across_three_rounds [gw32] [ 20%] PASSED tests/docs_src/test_dependencies.py::test_a_resolver_can_depend_on_another_resolver tests/docs_src/test_dependencies.py::test_a_shared_dependency_runs_once_per_call [gw23] [ 20%] PASSED tests/client/test_session_concurrency.py::test_overlapping_sampling_requests_are_serviced_concurrently_by_the_client tests/client/test_session_group.py::test_client_session_group_init tests/docs_src/test_header_parameters.py::test_the_low_level_server_serves_an_invalid_annotation_and_a_2026_client_leaves_the_tool_out [gw37] [ 20%] PASSED tests/docs_src/test_first_steps.py::test_call_the_tool tests/docs_src/test_first_steps.py::test_templated_resource_is_a_template_not_a_resource [gw19] [ 20%] PASSED tests/client/test_session_claims.py::test_modern_adopt_activates_claims_and_routes_claimed_results[protocol_versions1] tests/client/test_session_claims.py::test_legacy_adopt_clears_active_claims tests/docs_src/test_client_callbacks.py::test_the_callback_answers_the_servers_question [gw36] [ 20%] PASSED tests/docs_src/test_lowlevel.py::test_the_input_schema_on_the_wire_is_the_dict_you_wrote tests/docs_src/test_lowlevel.py::test_the_client_does_not_care_which_server_class_it_connects_to [gw36] [ 20%] PASSED tests/docs_src/test_lowlevel.py::test_the_client_does_not_care_which_server_class_it_connects_to tests/docs_src/test_lowlevel.py::test_the_last_line_is_an_asgi_app_uvicorn_can_serve [gw36] [ 20%] PASSED tests/docs_src/test_lowlevel.py::test_the_last_line_is_an_asgi_app_uvicorn_can_serve tests/docs_src/test_lowlevel.py::test_only_the_handlers_you_passed_become_capabilities [gw9] [ 20%] PASSED tests/client/test_client.py::test_client_call_tool tests/client/test_client.py::test_read_resource [gw9] [ 20%] PASSED tests/client/test_client.py::test_read_resource tests/client/test_client.py::test_read_resource_error_propagates [gw9] [ 20%] PASSED tests/client/test_client.py::test_read_resource_error_propagates tests/client/test_client.py::test_raise_exceptions_propagates_handler_error_on_modern_inproc_path [gw34] [ 20%] PASSED tests/docs_src/test_deploy.py::test_a_shared_key_is_not_enough_without_a_shared_name tests/docs_src/test_deploy.py::test_one_bus_carries_a_publish_on_one_replica_to_a_stream_on_another [gw23] [ 20%] PASSED tests/client/test_session_group.py::test_client_session_group_init tests/client/test_session_group.py::test_client_session_group_component_properties [gw23] [ 20%] PASSED tests/client/test_session_group.py::test_client_session_group_component_properties [gw15] [ 20%] PASSED tests/client/test_client_extensions.py::test_input_required_then_plain_result_keeps_the_auto_loop_working tests/client/test_client_extensions.py::test_input_required_then_claimed_result_on_retry_resolves_transparently [gw19] [ 20%] PASSED tests/client/test_session_claims.py::test_legacy_adopt_clears_active_claims tests/client/test_session_claims.py::test_modern_readopt_after_legacy_reactivates_claims [gw47] [ 20%] PASSED tests/docs_src/test_shape.py::test_every_example_is_included_by_a_page tests/docs_src/test_shape.py::test_every_included_path_exists tests/client/test_session_group.py::test_client_session_group_call_tool [gw28] [ 20%] PASSED tests/docs_src/test_asgi.py::test_the_server_behind_the_app_is_unchanged tests/docs_src/test_asgi.py::test_a_request_before_the_session_manager_runs_is_rejected [gw28] [ 20%] PASSED tests/docs_src/test_asgi.py::test_a_request_before_the_session_manager_runs_is_rejected tests/docs_src/test_asgi.py::test_mounting_at_the_root_keeps_the_default_path [gw36] [ 20%] PASSED tests/docs_src/test_lowlevel.py::test_only_the_handlers_you_passed_become_capabilities tests/docs_src/test_lowlevel.py::test_arguments_are_not_validated_against_your_schema [gw33] [ 20%] PASSED tests/docs_src/test_protocol_versions.py::test_version_pin_sends_nothing_and_knows_nothing tests/docs_src/test_protocol_versions.py::test_handshake_era_version_is_not_a_valid_pin [gw33] [ 20%] PASSED tests/docs_src/test_protocol_versions.py::test_handshake_era_version_is_not_a_valid_pin tests/docs_src/test_protocol_versions.py::test_prior_discover_round_trips [gw33] [ 20%] PASSED tests/docs_src/test_protocol_versions.py::test_prior_discover_round_trips tests/docs_src/test_protocol_versions.py::test_discover_result_survives_json [gw33] [ 20%] PASSED tests/docs_src/test_protocol_versions.py::test_discover_result_survives_json [gw29] [ 20%] PASSED tests/docs_src/test_client_callbacks.py::test_the_callback_answers_the_servers_question tests/docs_src/test_client_callbacks.py::test_the_callback_receives_the_servers_question_as_form_params [gw37] [ 20%] PASSED tests/docs_src/test_first_steps.py::test_templated_resource_is_a_template_not_a_resource tests/docs_src/test_first_steps.py::test_read_the_resource_template [gw32] [ 20%] PASSED tests/docs_src/test_dependencies.py::test_a_shared_dependency_runs_once_per_call tests/docs_src/test_dependencies.py::test_an_in_stock_order_asks_no_question[legacy] [gw32] [ 20%] PASSED tests/docs_src/test_dependencies.py::test_an_in_stock_order_asks_no_question[legacy] tests/docs_src/test_dependencies.py::test_an_in_stock_order_asks_no_question[auto] [gw32] [ 20%] PASSED tests/docs_src/test_dependencies.py::test_an_in_stock_order_asks_no_question[auto] tests/docs_src/test_dependencies.py::test_an_out_of_stock_order_asks_and_honours_the_answer[True-Backordered 'Neuromancer'; it ships in 2-3 weeks.-legacy] [gw11] [ 20%] PASSED tests/client/test_caching.py::test_a_set_only_store_failure_warns_once_across_write_cycles tests/client/test_caching.py::test_an_eviction_between_capture_and_write_discards_the_write [gw11] [ 20%] PASSED tests/client/test_caching.py::test_an_eviction_between_capture_and_write_discards_the_write tests/client/test_caching.py::test_recapturing_a_registered_key_returns_its_current_generation [gw28] [ 20%] PASSED tests/docs_src/test_asgi.py::test_mounting_at_the_root_keeps_the_default_path tests/docs_src/test_asgi.py::test_a_root_mount_swallows_routes_listed_after_it [gw9] [ 20%] PASSED tests/client/test_client.py::test_raise_exceptions_propagates_handler_error_on_modern_inproc_path tests/client/test_client.py::test_raise_exceptions_false_sanitizes_handler_error_on_modern_inproc_path [gw25] [ 20%] PASSED tests/client/test_subscriptions.py::test_a_bare_string_for_resource_subscriptions_is_rejected tests/client/test_subscriptions.py::test_the_route_admits_only_honored_events_and_only_while_live [gw25] [ 20%] PASSED tests/client/test_subscriptions.py::test_the_route_admits_only_honored_events_and_only_while_live tests/client/test_subscriptions.py::test_a_peer_flooding_distinct_uris_costs_the_subscription_not_client_memory [gw25] [ 20%] PASSED tests/client/test_subscriptions.py::test_a_peer_flooding_distinct_uris_costs_the_subscription_not_client_memory tests/client/test_subscriptions.py::test_a_cancelled_on_event_barrier_does_not_lose_the_event [gw25] [ 20%] PASSED tests/client/test_subscriptions.py::test_a_cancelled_on_event_barrier_does_not_lose_the_event tests/client/test_subscriptions.py::test_events_outside_the_honored_filter_are_never_delivered [gw34] [ 20%] PASSED tests/docs_src/test_deploy.py::test_one_bus_carries_a_publish_on_one_replica_to_a_stream_on_another tests/docs_src/test_deprecated.py::test_create_message_warns_and_then_raises_on_a_modern_connection [gw34] [ 20%] PASSED tests/docs_src/test_deprecated.py::test_create_message_warns_and_then_raises_on_a_modern_connection tests/docs_src/test_deprecated.py::test_a_deprecated_feature_still_works_on_a_legacy_session [gw37] [ 20%] PASSED tests/docs_src/test_first_steps.py::test_read_the_resource_template tests/docs_src/test_first_steps.py::test_get_the_prompt [gw26] [ 20%] PASSED tests/client/test_streamable_http.py::test_resumption_redirected_elsewhere_resolves_that_request_with_an_error tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_is_explained_and_the_https_form_suggested [gw11] [ 20%] PASSED tests/client/test_caching.py::test_recapturing_a_registered_key_returns_its_current_generation tests/client/test_caching.py::test_the_generation_map_drops_the_oldest_key_at_its_cap [gw11] [ 20%] PASSED tests/client/test_caching.py::test_the_generation_map_drops_the_oldest_key_at_its_cap [gw28] [ 20%] PASSED tests/docs_src/test_asgi.py::test_a_root_mount_swallows_routes_listed_after_it tests/docs_src/test_asgi.py::test_the_host_lifespan_enters_the_session_manager [gw42] [ 20%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial003.py] [gw40] [ 20%] PASSED tests/docs_src/test_pagination.py::test_mcpserver_never_pages [gw25] [ 20%] PASSED tests/client/test_subscriptions.py::test_events_outside_the_honored_filter_are_never_delivered tests/client/test_subscriptions.py::test_the_on_event_barrier_completes_before_each_event_is_returned [gw16] [ 20%] PASSED tests/client/test_client.py::test_call_tool_auto_loop_round_trips_evolving_request_state_across_three_rounds tests/client/test_client.py::test_call_tool_auto_loop_raises_mcp_error_when_no_callback_registered [gw16] [ 20%] PASSED tests/client/test_client.py::test_call_tool_auto_loop_raises_mcp_error_when_no_callback_registered tests/client/test_client.py::test_get_prompt_auto_loop_resolves_input_required_via_callbacks [gw15] [ 20%] PASSED tests/client/test_client_extensions.py::test_input_required_then_claimed_result_on_retry_resolves_transparently tests/client/test_client_extensions.py::test_notification_bindings_fold_into_the_session tests/docs_src/test_pagination.py::test_first_page_has_ten_resources_and_a_cursor [gw40] [ 20%] PASSED tests/docs_src/test_pagination.py::test_first_page_has_ten_resources_and_a_cursor tests/docs_src/test_pagination.py::test_the_cursor_resumes_where_the_last_page_stopped [gw40] [ 20%] PASSED tests/docs_src/test_pagination.py::test_the_cursor_resumes_where_the_last_page_stopped tests/docs_src/test_pagination.py::test_the_last_page_carries_no_cursor [gw40] [ 20%] PASSED tests/docs_src/test_pagination.py::test_the_last_page_carries_no_cursor tests/docs_src/test_pagination.py::test_the_client_loop_collects_all_one_hundred_in_order [gw40] [ 20%] PASSED tests/docs_src/test_pagination.py::test_the_client_loop_collects_all_one_hundred_in_order tests/docs_src/test_pagination.py::test_the_client_loop_runs_once_against_a_server_that_does_not_page [gw19] [ 20%] PASSED tests/client/test_session_claims.py::test_modern_readopt_after_legacy_reactivates_claims tests/client/test_session_claims.py::test_legacy_initialize_ad_drops_claim_bearing_identifiers [gw19] [ 20%] PASSED tests/client/test_session_claims.py::test_legacy_initialize_ad_drops_claim_bearing_identifiers tests/client/test_session_claims.py::test_legacy_ad_omits_extensions_entirely_when_every_identifier_drops [gw19] [ 20%] PASSED tests/client/test_session_claims.py::test_legacy_ad_omits_extensions_entirely_when_every_identifier_drops tests/client/test_session_claims.py::test_modern_adopt_ad_includes_active_claim_identifiers tests/client/test_caching.py::test_a_refresh_resolving_uncacheable_purges_the_warm_entry [gw11] [ 20%] PASSED tests/client/test_caching.py::test_a_refresh_resolving_uncacheable_purges_the_warm_entry tests/client/test_caching.py::test_evict_key_on_an_unregistered_key_still_deletes_both_arms [gw11] [ 21%] PASSED tests/client/test_caching.py::test_evict_key_on_an_unregistered_key_still_deletes_both_arms tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[tools-list-changed] [gw47] [ 21%] PASSED tests/docs_src/test_shape.py::test_every_included_path_exists tests/docs_src/test_structured_output.py::test_scalar_return_is_wrapped tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial004.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial004.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial005.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial005.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial006.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial006.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial001.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial002.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial001.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial002.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial002.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial003.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial003.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial001.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial001.py] tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial002.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial002.py] tests/docs_src/test_protocol_versions.py::test_prior_discover_is_ignored_unless_mode_is_a_pin [gw33] [ 21%] PASSED tests/docs_src/test_protocol_versions.py::test_prior_discover_is_ignored_unless_mode_is_a_pin tests/docs_src/test_real_host.py::test_the_host_sees_exactly_what_the_decorators_registered [gw33] [ 21%] PASSED tests/docs_src/test_real_host.py::test_the_host_sees_exactly_what_the_decorators_registered tests/docs_src/test_real_host.py::test_a_tool_call_round_trips_the_way_a_host_drives_it [gw33] [ 21%] PASSED tests/docs_src/test_real_host.py::test_a_tool_call_round_trips_the_way_a_host_drives_it tests/docs_src/test_real_host.py::test_the_resource_a_host_can_attach_to_context [gw40] [ 21%] PASSED tests/docs_src/test_pagination.py::test_the_client_loop_runs_once_against_a_server_that_does_not_page tests/docs_src/test_pagination.py::test_an_invented_cursor_is_an_error [gw37] [ 21%] PASSED tests/docs_src/test_first_steps.py::test_get_the_prompt [gw25] [ 21%] PASSED tests/client/test_subscriptions.py::test_the_on_event_barrier_completes_before_each_event_is_returned tests/client/test_subscriptions.py::test_client_listen_installs_the_cache_eviction_barrier_exactly_when_a_cache_exists [gw25] [ 21%] PASSED tests/client/test_subscriptions.py::test_client_listen_installs_the_cache_eviction_barrier_exactly_when_a_cache_exists tests/client/test_subscriptions.py::test_the_cache_eviction_barrier_maps_events_and_contains_store_faults [gw28] [ 21%] PASSED tests/docs_src/test_asgi.py::test_the_host_lifespan_enters_the_session_manager tests/docs_src/test_asgi.py::test_two_servers_get_two_mounts [gw28] [ 21%] PASSED tests/docs_src/test_asgi.py::test_two_servers_get_two_mounts tests/docs_src/test_asgi.py::test_one_lifespan_starts_both_session_managers [gw35] [ 21%] PASSED tests/docs_src/test_header_parameters.py::test_the_low_level_server_serves_an_invalid_annotation_and_a_2026_client_leaves_the_tool_out tests/docs_src/test_header_parameters.py::test_a_call_runs_the_list_handler_unless_the_server_looks_schemas_up_by_name[tutorial002] [gw26] [ 21%] PASSED tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_is_explained_and_the_https_form_suggested tests/client/test_streamable_http.py::test_unfollowed_redirect_location_is_named_without_its_query_string tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001.py] [gw42] [ 21%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001.py] [gw19] [ 21%] PASSED tests/client/test_session_claims.py::test_modern_adopt_ad_includes_active_claim_identifiers tests/client/test_session_claims.py::test_discover_probe_ad_includes_claim_identifiers_at_the_probe_version [gw19] [ 21%] PASSED tests/client/test_session_claims.py::test_discover_probe_ad_includes_claim_identifiers_at_the_probe_version tests/client/test_session_claims.py::test_discover_probe_ad_drops_claim_identifiers_at_a_legacy_probe_version [gw19] [ 21%] PASSED tests/client/test_session_claims.py::test_discover_probe_ad_drops_claim_identifiers_at_a_legacy_probe_version tests/client/test_session_claims.py::test_claim_tagged_core_cannot_hijack_core_parsing [gw23] [ 21%] PASSED tests/client/test_session_group.py::test_client_session_group_call_tool tests/docs_src/test_first_steps.py::test_the_three_primitive_capabilities_are_always_declared [gw37] [ 21%] PASSED tests/docs_src/test_first_steps.py::test_the_three_primitive_capabilities_are_always_declared tests/docs_src/test_handling_errors.py::test_tool_error_becomes_a_tool_error_the_model_reads [gw37] [ 21%] PASSED tests/docs_src/test_handling_errors.py::test_tool_error_becomes_a_tool_error_the_model_reads [gw32] [ 21%] PASSED tests/docs_src/test_dependencies.py::test_an_out_of_stock_order_asks_and_honours_the_answer[True-Backordered 'Neuromancer'; it ships in 2-3 weeks.-legacy] tests/docs_src/test_dependencies.py::test_an_out_of_stock_order_asks_and_honours_the_answer[True-Backordered 'Neuromancer'; it ships in 2-3 weeks.-auto] [gw32] [ 21%] PASSED tests/docs_src/test_dependencies.py::test_an_out_of_stock_order_asks_and_honours_the_answer[True-Backordered 'Neuromancer'; it ships in 2-3 weeks.-auto] tests/docs_src/test_dependencies.py::test_an_out_of_stock_order_asks_and_honours_the_answer[False-No order placed.-legacy] [gw32] [ 21%] PASSED tests/docs_src/test_dependencies.py::test_an_out_of_stock_order_asks_and_honours_the_answer[False-No order placed.-legacy] tests/docs_src/test_dependencies.py::test_an_out_of_stock_order_asks_and_honours_the_answer[False-No order placed.-auto] [gw17] [ 21%] PASSED tests/client/test_logging_callback.py::test_logging_callback tests/client/test_notification_response.py::test_non_compliant_notification_response [gw17] [ 21%] PASSED tests/client/test_notification_response.py::test_non_compliant_notification_response tests/client/test_notification_response.py::test_unexpected_content_type_sends_jsonrpc_error [gw9] [ 21%] PASSED tests/client/test_client.py::test_raise_exceptions_false_sanitizes_handler_error_on_modern_inproc_path tests/client/test_client.py::test_modern_inproc_path_refuses_server_initiated_requests [gw9] [ 21%] PASSED tests/client/test_client.py::test_modern_inproc_path_refuses_server_initiated_requests tests/client/test_client.py::test_get_prompt [gw34] [ 21%] PASSED tests/docs_src/test_deprecated.py::test_a_deprecated_feature_still_works_on_a_legacy_session tests/docs_src/test_deprecated.py::test_send_ping_still_carries_the_deprecation_warning [gw34] [ 21%] PASSED tests/docs_src/test_deprecated.py::test_send_ping_still_carries_the_deprecation_warning tests/docs_src/test_deprecated.py::test_mcp_deprecation_warning_is_a_user_warning [gw34] [ 21%] PASSED tests/docs_src/test_deprecated.py::test_mcp_deprecation_warning_is_a_user_warning tests/docs_src/test_deprecated.py::test_error_filter_turns_the_deprecated_call_into_the_documented_tool_error [gw11] [ 21%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[tools-list-changed] tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[prompts-list-changed] [gw11] [ 21%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[prompts-list-changed] tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resources-list-changed] [gw11] [ 21%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resources-list-changed] tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resource-updated] [gw11] [ 21%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resource-updated] [gw29] [ 21%] PASSED tests/docs_src/test_client_callbacks.py::test_the_callback_receives_the_servers_question_as_form_params tests/docs_src/test_client_callbacks.py::test_returning_error_data_refuses_the_request_and_fails_the_call [gw29] [ 21%] PASSED tests/docs_src/test_client_callbacks.py::test_returning_error_data_refuses_the_request_and_fails_the_call tests/docs_src/test_client_callbacks.py::test_without_the_callback_the_servers_request_is_refused [gw29] [ 21%] PASSED tests/docs_src/test_client_callbacks.py::test_without_the_callback_the_servers_request_is_refused tests/docs_src/test_client_callbacks.py::test_registering_the_callback_declares_the_capability [gw35] [ 21%] PASSED tests/docs_src/test_header_parameters.py::test_a_call_runs_the_list_handler_unless_the_server_looks_schemas_up_by_name[tutorial002] tests/docs_src/test_header_parameters.py::test_a_call_runs_the_list_handler_unless_the_server_looks_schemas_up_by_name[tutorial003] [gw26] [ 21%] PASSED tests/client/test_streamable_http.py::test_unfollowed_redirect_location_is_named_without_its_query_string tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_elsewhere_never_suggests_the_http_url [gw33] [ 21%] PASSED tests/docs_src/test_real_host.py::test_the_resource_a_host_can_attach_to_context tests/docs_src/test_resources.py::test_function_becomes_a_listed_resource [gw33] [ 21%] PASSED tests/docs_src/test_resources.py::test_function_becomes_a_listed_resource tests/docs_src/test_resources.py::test_read_returns_the_return_value_as_text [gw33] [ 21%] PASSED tests/docs_src/test_resources.py::test_read_returns_the_return_value_as_text [gw9] [ 21%] PASSED tests/client/test_client.py::test_get_prompt tests/client/test_client.py::test_client_session_property_before_enter tests/client/test_session_group.py::test_client_session_group_call_tool_forwards_allow_input_required [gw23] [ 21%] PASSED tests/client/test_session_group.py::test_client_session_group_call_tool_forwards_allow_input_required tests/client/test_session_group.py::test_client_session_group_connect_to_server [gw23] [ 21%] PASSED tests/client/test_session_group.py::test_client_session_group_connect_to_server tests/client/test_session_group.py::test_client_session_group_connect_to_server_with_name_hook [gw23] [ 21%] PASSED tests/client/test_session_group.py::test_client_session_group_connect_to_server_with_name_hook tests/client/test_session_group.py::test_client_session_group_disconnect_from_server [gw15] [ 21%] PASSED tests/client/test_client_extensions.py::test_notification_bindings_fold_into_the_session tests/client/test_extension.py::test_claim_with_literal_discriminated_model_constructs [gw24] [ 21%] PASSED tests/client/test_stdio.py::test_a_failing_stdout_close_still_closes_the_transport_streams tests/client/test_stdio.py::test_a_process_surviving_the_kill_escalation_is_logged_and_abandoned [gw32] [ 21%] PASSED tests/docs_src/test_dependencies.py::test_an_out_of_stock_order_asks_and_honours_the_answer[False-No order placed.-auto] tests/docs_src/test_dependencies.py::test_declining_an_unwrapped_dependency_aborts_the_call[legacy] [gw19] [ 22%] PASSED tests/client/test_session_claims.py::test_claim_tagged_core_cannot_hijack_core_parsing [gw16] [ 22%] PASSED tests/client/test_client.py::test_get_prompt_auto_loop_resolves_input_required_via_callbacks tests/client/test_client.py::test_read_resource_auto_loop_resolves_input_required_via_callbacks [gw16] [ 22%] PASSED tests/client/test_client.py::test_read_resource_auto_loop_resolves_input_required_via_callbacks tests/client/test_client_caching.py::test_an_explicit_target_id_overrides_both_url_and_in_process_identity [gw16] [ 22%] PASSED tests/client/test_client_caching.py::test_an_explicit_target_id_overrides_both_url_and_in_process_identity tests/client/test_client_caching.py::test_userinfo_variants_of_a_server_url_share_one_cache_identity [gw16] [ 22%] PASSED tests/client/test_client_caching.py::test_userinfo_variants_of_a_server_url_share_one_cache_identity [gw9] [ 22%] PASSED tests/client/test_client.py::test_client_session_property_before_enter tests/client/test_client.py::test_client_reentry_raises_runtime_error [gw31] [ 22%] PASSED tests/docs_src/test_cancellation.py::test_abandoning_the_call_over_streamable_http_runs_the_cleanup_too[2026-07-28] tests/docs_src/test_cancellation.py::test_abandoning_the_call_over_streamable_http_runs_the_cleanup_too[legacy] [gw36] [ 22%] PASSED tests/docs_src/test_lowlevel.py::test_arguments_are_not_validated_against_your_schema tests/docs_src/test_lowlevel.py::test_one_handler_routes_every_tool [gw36] [ 22%] PASSED tests/docs_src/test_lowlevel.py::test_one_handler_routes_every_tool tests/docs_src/test_lowlevel.py::test_an_unknown_tool_name_becomes_a_protocol_error_not_a_tool_error [gw36] [ 22%] PASSED tests/docs_src/test_lowlevel.py::test_an_unknown_tool_name_becomes_a_protocol_error_not_a_tool_error tests/docs_src/test_lowlevel.py::test_output_schema_and_structured_content_are_both_yours_to_build [gw36] [ 22%] PASSED tests/docs_src/test_lowlevel.py::test_output_schema_and_structured_content_are_both_yours_to_build tests/docs_src/test_lowlevel.py::test_the_client_checks_the_schema_you_promised [gw13] [ 22%] PASSED tests/client/test_sampling_callback.py::test_sampling_callback tests/client/test_sampling_callback.py::test_create_message_backwards_compat_single_content [gw28] [ 22%] PASSED tests/docs_src/test_asgi.py::test_one_lifespan_starts_both_session_managers tests/docs_src/test_asgi.py::test_cors_exposes_the_session_id_header [gw28] [ 22%] PASSED tests/docs_src/test_asgi.py::test_cors_exposes_the_session_id_header tests/docs_src/test_asgi.py::test_custom_route_lands_next_to_the_mcp_endpoint [gw28] [ 22%] PASSED tests/docs_src/test_asgi.py::test_custom_route_lands_next_to_the_mcp_endpoint tests/docs_src/test_asgi.py::test_the_health_check_answers_outside_the_protocol [gw28] [ 22%] PASSED tests/docs_src/test_asgi.py::test_the_health_check_answers_outside_the_protocol tests/docs_src/test_resources.py::test_template_is_listed_separately_from_resources [gw33] [ 22%] PASSED tests/docs_src/test_resources.py::test_template_is_listed_separately_from_resources tests/docs_src/test_resources.py::test_reading_a_template_fills_the_placeholder [gw33] [ 22%] PASSED tests/docs_src/test_resources.py::test_reading_a_template_fills_the_placeholder tests/docs_src/test_resources.py::test_uri_params_must_match_function_params [gw40] [ 22%] PASSED tests/docs_src/test_pagination.py::test_an_invented_cursor_is_an_error tests/docs_src/test_progress.py::test_context_parameter_is_invisible_to_the_model [gw40] [ 22%] PASSED tests/docs_src/test_progress.py::test_context_parameter_is_invisible_to_the_model tests/docs_src/test_progress.py::test_each_report_becomes_one_callback_invocation_in_order [gw23] [ 22%] PASSED tests/client/test_session_group.py::test_client_session_group_disconnect_from_server tests/client/test_session_group.py::test_client_session_group_connect_to_server_duplicate_tool_raises_error [gw17] [ 22%] PASSED tests/client/test_notification_response.py::test_unexpected_content_type_sends_jsonrpc_error tests/client/test_notification_response.py::test_http_error_status_sends_jsonrpc_error [gw17] [ 22%] PASSED tests/client/test_notification_response.py::test_http_error_status_sends_jsonrpc_error tests/client/test_notification_response.py::test_http_error_on_notification_does_not_hang [gw35] [ 22%] PASSED tests/docs_src/test_header_parameters.py::test_a_call_runs_the_list_handler_unless_the_server_looks_schemas_up_by_name[tutorial003] tests/docs_src/test_header_parameters.py::test_the_schema_the_lookup_returns_is_the_one_the_header_is_checked_against [gw32] [ 22%] PASSED tests/docs_src/test_dependencies.py::test_declining_an_unwrapped_dependency_aborts_the_call[legacy] tests/docs_src/test_dependencies.py::test_declining_an_unwrapped_dependency_aborts_the_call[auto] [gw32] [ 22%] PASSED tests/docs_src/test_dependencies.py::test_declining_an_unwrapped_dependency_aborts_the_call[auto] tests/docs_src/test_dependencies.py::test_a_resolver_can_sample_the_clients_llm[legacy] tests/docs_src/test_handling_errors.py::test_tool_error_is_one_info_line [gw13] [ 22%] PASSED tests/client/test_sampling_callback.py::test_create_message_backwards_compat_single_content tests/client/test_sampling_callback.py::test_create_message_result_with_tools_type [gw13] [ 22%] PASSED tests/client/test_sampling_callback.py::test_create_message_result_with_tools_type tests/docs_src/test_asgi.py::test_the_default_app_is_localhost_only [gw34] [ 22%] PASSED tests/docs_src/test_deprecated.py::test_error_filter_turns_the_deprecated_call_into_the_documented_tool_error [gw40] [ 22%] PASSED tests/docs_src/test_progress.py::test_each_report_becomes_one_callback_invocation_in_order tests/docs_src/test_progress.py::test_over_a_wire_dispatcher_callbacks_race_the_result [gw29] [ 22%] PASSED tests/docs_src/test_client_callbacks.py::test_registering_the_callback_declares_the_capability tests/docs_src/test_client_callbacks.py::test_no_callbacks_means_no_capabilities [gw29] [ 22%] PASSED tests/docs_src/test_client_callbacks.py::test_no_callbacks_means_no_capabilities tests/docs_src/test_client_callbacks.py::test_each_callback_declares_its_own_capability [gw26] [ 22%] PASSED tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_elsewhere_never_suggests_the_http_url tests/client/test_subscriptions.py::test_listen_surfaces_the_honored_filter_and_subscription_id [gw26] [ 22%] PASSED tests/client/test_subscriptions.py::test_listen_surfaces_the_honored_filter_and_subscription_id tests/client/test_subscriptions.py::test_listen_delivers_all_four_typed_event_kinds [gw17] [ 22%] PASSED tests/client/test_notification_response.py::test_http_error_on_notification_does_not_hang tests/client/test_notification_response.py::test_invalid_json_response_sends_jsonrpc_error [gw33] [ 22%] PASSED tests/docs_src/test_resources.py::test_uri_params_must_match_function_params tests/docs_src/test_resources.py::test_mime_type_is_what_you_declare [gw33] [ 22%] PASSED tests/docs_src/test_resources.py::test_mime_type_is_what_you_declare tests/docs_src/test_resources.py::test_str_return_is_sent_as_is [gw33] [ 22%] PASSED tests/docs_src/test_resources.py::test_str_return_is_sent_as_is tests/docs_src/test_resources.py::test_dict_return_becomes_json_text [gw36] [ 22%] PASSED tests/docs_src/test_lowlevel.py::test_the_client_checks_the_schema_you_promised tests/docs_src/test_lowlevel.py::test_meta_reaches_the_client_application [gw36] [ 22%] PASSED tests/docs_src/test_lowlevel.py::test_meta_reaches_the_client_application [gw37] [ 22%] PASSED tests/docs_src/test_handling_errors.py::test_tool_error_is_one_info_line tests/docs_src/test_handling_errors.py::test_a_title_the_catalog_knows_is_an_ordinary_result [gw23] [ 22%] PASSED tests/client/test_session_group.py::test_client_session_group_connect_to_server_duplicate_tool_raises_error tests/client/test_session_group.py::test_client_session_group_disconnect_non_existent_server tests/docs_src/test_deprecated.py::test_filterwarnings_ignore_silences_the_whole_category [gw34] [ 22%] PASSED tests/docs_src/test_deprecated.py::test_filterwarnings_ignore_silences_the_whole_category tests/docs_src/test_elicitation.py::test_an_accepted_answer_resumes_the_tool [gw34] [ 22%] PASSED tests/docs_src/test_elicitation.py::test_an_accepted_answer_resumes_the_tool tests/docs_src/test_elicitation.py::test_an_alternative_that_is_also_full_is_asked_about_again tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[scheme-case] [gw16] [ 22%] PASSED tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[scheme-case] tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[empty-query] [gw16] [ 22%] PASSED tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[empty-query] tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[empty-fragment] [gw16] [ 22%] PASSED tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[empty-fragment] tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[tab-in-userinfo] [gw16] [ 22%] PASSED tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[tab-in-userinfo] tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[tab-in-path] [gw16] [ 22%] PASSED tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[tab-in-path] tests/client/test_client_caching.py::test_a_url_without_an_authority_passes_through_unchanged tests/docs_src/test_lowlevel.py::test_the_lifespan_object_reaches_every_handler_with_its_type [gw36] [ 22%] PASSED tests/docs_src/test_lowlevel.py::test_the_lifespan_object_reaches_every_handler_with_its_type tests/docs_src/test_lowlevel.py::test_add_request_handler_registers_a_method_the_constructor_does_not_know [gw15] [ 22%] PASSED tests/client/test_extension.py::test_claim_with_literal_discriminated_model_constructs [gw26] [ 22%] PASSED tests/client/test_subscriptions.py::test_listen_delivers_all_four_typed_event_kinds tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/session_groups/tutorial002.py] [gw26] [ 22%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/session_groups/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/session_groups/tutorial003.py] [gw26] [ 22%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/session_groups/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/session_groups/tutorial004.py] [gw26] [ 22%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/session_groups/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial001.py] [gw40] [ 22%] PASSED tests/docs_src/test_progress.py::test_over_a_wire_dispatcher_callbacks_race_the_result tests/docs_src/test_progress.py::test_without_a_callback_report_progress_is_a_no_op [gw40] [ 22%] PASSED tests/docs_src/test_progress.py::test_without_a_callback_report_progress_is_a_no_op tests/docs_src/test_progress.py::test_progress_callback_is_per_call_not_per_client [gw16] [ 22%] PASSED tests/client/test_client_caching.py::test_a_url_without_an_authority_passes_through_unchanged tests/client/test_client_caching.py::test_the_server_url_is_sha256_hashed_before_it_enters_key_material [gw16] [ 22%] PASSED tests/client/test_client_caching.py::test_the_server_url_is_sha256_hashed_before_it_enters_key_material [gw32] [ 23%] PASSED tests/docs_src/test_dependencies.py::test_a_resolver_can_sample_the_clients_llm[legacy] tests/docs_src/test_dependencies.py::test_a_resolver_can_sample_the_clients_llm[auto] [gw32] [ 23%] PASSED tests/docs_src/test_dependencies.py::test_a_resolver_can_sample_the_clients_llm[auto] [gw9] [ 23%] PASSED tests/client/test_client.py::test_client_reentry_raises_runtime_error tests/client/test_client.py::test_client_send_progress_notification [gw9] [ 23%] PASSED tests/client/test_client.py::test_client_send_progress_notification tests/client/test_client.py::test_client_subscribe_resource [gw9] [ 23%] PASSED tests/client/test_client.py::test_client_subscribe_resource tests/client/test_client.py::test_client_unsubscribe_resource [gw9] [ 23%] PASSED tests/client/test_client.py::test_client_unsubscribe_resource tests/client/test_client.py::test_client_set_logging_level [gw9] [ 23%] PASSED tests/client/test_client.py::test_client_set_logging_level tests/client/test_client.py::test_client_list_resources_with_params [gw33] [ 23%] PASSED tests/docs_src/test_resources.py::test_dict_return_becomes_json_text tests/docs_src/test_resources.py::test_bytes_return_becomes_a_blob [gw33] [ 23%] PASSED tests/docs_src/test_resources.py::test_bytes_return_becomes_a_blob tests/docs_src/test_run.py::test_the_run_call_is_guarded_so_importing_does_not_start_a_server [gw26] [ 23%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial002.py] [gw26] [ 23%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial003.py] [gw26] [ 23%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial004.py] [gw40] [ 23%] PASSED tests/docs_src/test_progress.py::test_progress_callback_is_per_call_not_per_client tests/docs_src/test_progress.py::test_omitting_total_reaches_the_callback_as_none [gw40] [ 23%] PASSED tests/docs_src/test_progress.py::test_omitting_total_reaches_the_callback_as_none [gw37] [ 23%] PASSED tests/docs_src/test_handling_errors.py::test_a_title_the_catalog_knows_is_an_ordinary_result tests/docs_src/test_handling_errors.py::test_a_bad_argument_never_reaches_the_function [gw37] [ 23%] PASSED tests/docs_src/test_handling_errors.py::test_a_bad_argument_never_reaches_the_function tests/docs_src/test_handling_errors.py::test_mcp_error_makes_the_call_itself_fail tests/docs_src/test_deploy.py::test_the_default_app_rejects_a_real_hostname_before_mcp_runs [gw34] [ 23%] PASSED tests/docs_src/test_elicitation.py::test_an_alternative_that_is_also_full_is_asked_about_again tests/docs_src/test_elicitation.py::test_the_client_receives_the_message_and_the_generated_schema [gw34] [ 23%] PASSED tests/docs_src/test_elicitation.py::test_the_client_receives_the_message_and_the_generated_schema tests/docs_src/test_elicitation.py::test_decline_and_cancel_are_ordinary_return_values [gw35] [ 23%] PASSED tests/docs_src/test_header_parameters.py::test_the_schema_the_lookup_returns_is_the_one_the_header_is_checked_against tests/docs_src/test_identity_assertion.py::test_the_provider_is_an_httpx_auth_but_not_an_oauth_client_provider [gw35] [ 23%] PASSED tests/docs_src/test_identity_assertion.py::test_the_provider_is_an_httpx_auth_but_not_an_oauth_client_provider tests/docs_src/test_identity_assertion.py::test_main_is_the_main_from_the_oauth_clients_page [gw9] [ 23%] PASSED tests/client/test_client.py::test_client_list_resources_with_params tests/client/test_client.py::test_client_list_resource_templates [gw26] [ 23%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial004.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial005.py] [gw26] [ 23%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial005.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial006.py] tests/client/test_client_caching.py::test_urls_differing_only_in_query_have_distinct_cache_identities [gw16] [ 23%] PASSED tests/client/test_client_caching.py::test_urls_differing_only_in_query_have_distinct_cache_identities tests/client/test_client_caching.py::test_two_clients_on_one_in_process_server_get_distinct_cache_identities [gw16] [ 23%] PASSED tests/client/test_client_caching.py::test_two_clients_on_one_in_process_server_get_distinct_cache_identities tests/client/test_client_caching.py::test_a_transport_object_gets_a_per_client_cache_identity [gw16] [ 23%] PASSED tests/client/test_client_caching.py::test_a_transport_object_gets_a_per_client_cache_identity tests/client/test_client_caching.py::test_a_custom_store_without_a_url_or_target_id_is_rejected[in-process] [gw17] [ 23%] PASSED tests/client/test_notification_response.py::test_invalid_json_response_sends_jsonrpc_error tests/client/test_notification_response.py::test_client_surfaces_jsonrpc_error_from_non_2xx_body_with_correlated_id [gw17] [ 23%] PASSED tests/client/test_notification_response.py::test_client_surfaces_jsonrpc_error_from_non_2xx_body_with_correlated_id tests/client/test_notification_response.py::test_client_falls_back_to_generic_error_when_non_2xx_body_is_a_jsonrpc_result [gw16] [ 23%] PASSED tests/client/test_client_caching.py::test_a_custom_store_without_a_url_or_target_id_is_rejected[in-process] tests/client/test_extension.py::test_claim_accepts_modern_protocol_versions [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_accepts_modern_protocol_versions tests/client/test_extension.py::test_claim_rejects_core_result_type_vocabulary [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_rejects_core_result_type_vocabulary tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedCallToolResult] [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedCallToolResult] tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedInputRequiredResult] [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedInputRequiredResult] tests/client/test_extension.py::test_claim_rejects_model_without_result_type_field [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_rejects_model_without_result_type_field tests/client/test_extension.py::test_claim_rejects_plain_str_result_type_field [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_rejects_plain_str_result_type_field tests/client/test_extension.py::test_claim_rejects_mismatched_result_type_literal [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_rejects_mismatched_result_type_literal tests/client/test_extension.py::test_claim_rejects_model_not_subclassing_result [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_rejects_model_not_subclassing_result tests/client/test_extension.py::test_claim_rejects_model_aliasing_core_surface_fields [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_rejects_model_aliasing_core_surface_fields tests/client/test_extension.py::test_wire_keys_for_a_bare_field_is_just_its_name [gw15] [ 23%] PASSED tests/client/test_extension.py::test_wire_keys_for_a_bare_field_is_just_its_name tests/client/test_extension.py::test_claim_rejects_reserved_aliases_in_every_alias_form [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_rejects_reserved_aliases_in_every_alias_form tests/client/test_extension.py::test_claim_rejects_method_outside_the_closed_verb_set [gw15] [ 23%] PASSED tests/client/test_extension.py::test_claim_rejects_method_outside_the_closed_verb_set tests/client/test_extension.py::test_claim_rejects_empty_protocol_versions [gw17] [ 23%] PASSED tests/client/test_notification_response.py::test_client_falls_back_to_generic_error_when_non_2xx_body_is_a_jsonrpc_result tests/client/test_notification_response.py::test_client_falls_back_to_session_terminated_when_404_body_is_malformed_json [gw34] [ 23%] PASSED tests/docs_src/test_elicitation.py::test_decline_and_cancel_are_ordinary_return_values tests/docs_src/test_elicitation.py::test_a_tool_that_does_not_ask_needs_nothing_from_the_client [gw36] [ 23%] PASSED tests/docs_src/test_lowlevel.py::test_add_request_handler_registers_a_method_the_constructor_does_not_know [gw37] [ 23%] PASSED tests/docs_src/test_handling_errors.py::test_mcp_error_makes_the_call_itself_fail tests/docs_src/test_handling_errors.py::test_mcp_error_only_fires_on_the_raising_path [gw37] [ 23%] PASSED tests/docs_src/test_handling_errors.py::test_mcp_error_only_fires_on_the_raising_path tests/docs_src/test_handling_errors.py::test_any_other_exception_is_a_crash_the_model_sees_generically [gw23] [ 23%] PASSED tests/client/test_session_group.py::test_client_session_group_disconnect_non_existent_server [gw30] [ 23%] PASSED tests/docs/test_translations.py::test_translate_writes_pages_with_provenance_and_a_second_run_makes_no_calls tests/docs/test_translations.py::test_docs_translate_model_overrides_the_registry_model_for_the_run [gw32] [ 23%] PASSED tests/docs_src/test_deploy.py::test_the_default_app_rejects_a_real_hostname_before_mcp_runs tests/docs_src/test_deploy.py::test_the_allowlisted_app_serves_its_hostname_and_still_rejects_others [gw9] [ 23%] PASSED tests/client/test_client.py::test_client_list_resource_templates tests/client/test_client.py::test_list_prompts tests/docs_src/test_prompts.py::test_function_becomes_the_prompt [gw40] [ 23%] PASSED tests/docs_src/test_prompts.py::test_function_becomes_the_prompt tests/docs_src/test_prompts.py::test_returned_string_becomes_one_user_message [gw40] [ 23%] PASSED tests/docs_src/test_prompts.py::test_returned_string_becomes_one_user_message tests/docs_src/test_prompts.py::test_missing_required_argument_is_a_protocol_error tests/docs_src/test_lowlevel.py::test_a_custom_method_never_changes_the_advertised_capabilities [gw36] [ 23%] PASSED tests/docs_src/test_lowlevel.py::test_a_custom_method_never_changes_the_advertised_capabilities tests/docs_src/test_lowlevel.py::test_initialize_is_reserved [gw36] [ 23%] PASSED tests/docs_src/test_lowlevel.py::test_initialize_is_reserved tests/docs_src/test_media.py::test_image_return_becomes_an_image_content_block [gw36] [ 23%] PASSED tests/docs_src/test_media.py::test_image_return_becomes_an_image_content_block tests/docs_src/test_media.py::test_image_result_has_no_structured_content_and_no_output_schema [gw36] [ 23%] PASSED tests/docs_src/test_media.py::test_image_result_has_no_structured_content_and_no_output_schema tests/docs_src/test_media.py::test_audio_return_becomes_an_audio_content_block [gw34] [ 23%] PASSED tests/docs_src/test_elicitation.py::test_a_tool_that_does_not_ask_needs_nothing_from_the_client tests/docs_src/test_elicitation.py::test_an_answer_that_does_not_match_the_schema_never_reaches_the_tool_code [gw29] [ 23%] PASSED tests/docs_src/test_client_callbacks.py::test_each_callback_declares_its_own_capability tests/docs_src/test_client_callbacks.py::test_the_modern_in_memory_path_has_no_back_channel [gw29] [ 23%] PASSED tests/docs_src/test_client_callbacks.py::test_the_modern_in_memory_path_has_no_back_channel tests/docs_src/test_client_callbacks.py::test_the_deprecated_callbacks_return_what_the_page_says [gw29] [ 23%] PASSED tests/docs_src/test_client_callbacks.py::test_the_deprecated_callbacks_return_what_the_page_says tests/docs_src/test_client_transports.py::test_the_in_memory_program_on_the_page_runs [gw29] [ 24%] PASSED tests/docs_src/test_client_transports.py::test_the_in_memory_program_on_the_page_runs tests/docs_src/test_client_transports.py::test_in_memory_client_talks_to_the_server_object [gw25] [ 24%] PASSED tests/client/test_subscriptions.py::test_the_cache_eviction_barrier_maps_events_and_contains_store_faults tests/client/test_subscriptions.py::test_a_raw_request_id_collision_fails_the_subscription_not_the_session [gw15] [ 24%] PASSED tests/client/test_extension.py::test_claim_rejects_empty_protocol_versions [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial006.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial007.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial007.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial008.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial008.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial009.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/structured_output/tutorial009.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial001.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial001.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial002.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial002.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial003.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial003.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial004_anyio.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial004_anyio.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial004_asyncio.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial004_asyncio.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial004_trio.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial004_trio.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial005.py] tests/client/test_session_group.py::test_client_session_group_establish_session_parameterized[server_params_instance0-stdio-mcp.client.session_group.mcp.stdio_client] [gw23] [ 24%] PASSED tests/client/test_session_group.py::test_client_session_group_establish_session_parameterized[server_params_instance0-stdio-mcp.client.session_group.mcp.stdio_client] tests/client/test_session_group.py::test_client_session_group_establish_session_parameterized[server_params_instance1-sse-mcp.client.session_group.sse_client] [gw23] [ 24%] PASSED tests/client/test_session_group.py::test_client_session_group_establish_session_parameterized[server_params_instance1-sse-mcp.client.session_group.sse_client] tests/client/test_session_group.py::test_client_session_group_establish_session_parameterized[server_params_instance2-streamablehttp-mcp.client.session_group.streamable_http_client] [gw33] [ 24%] PASSED tests/docs_src/test_run.py::test_the_run_call_is_guarded_so_importing_does_not_start_a_server tests/docs_src/test_run.py::test_the_transport_never_changes_what_the_server_is [gw33] [ 24%] PASSED tests/docs_src/test_run.py::test_the_transport_never_changes_what_the_server_is tests/docs_src/test_run.py::test_transport_options_are_not_constructor_options [gw33] [ 24%] PASSED tests/docs_src/test_run.py::test_transport_options_are_not_constructor_options tests/docs_src/test_run.py::test_settings_are_constructor_arguments_and_land_on_settings [gw33] [ 24%] PASSED tests/docs_src/test_run.py::test_settings_are_constructor_arguments_and_land_on_settings tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[legacy] [gw33] [ 24%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[legacy] tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[auto] [gw36] [ 24%] PASSED tests/docs_src/test_media.py::test_audio_return_becomes_an_audio_content_block tests/docs_src/test_media.py::test_in_memory_bytes_with_a_format_become_the_same_image_content_block [gw17] [ 24%] PASSED tests/client/test_notification_response.py::test_client_falls_back_to_session_terminated_when_404_body_is_malformed_json tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_basemodel [gw17] [ 24%] PASSED tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_basemodel tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_primitive [gw17] [ 24%] PASSED tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_primitive tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_dict_typed [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial005.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial006.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial006.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial007.py] [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/subscriptions/tutorial007.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/testing/tutorial001.py] [gw9] [ 24%] PASSED tests/client/test_client.py::test_list_prompts tests/client/test_extension.py::test_claim_rejects_non_modern_protocol_versions [gw15] [ 24%] PASSED tests/client/test_extension.py::test_claim_rejects_non_modern_protocol_versions tests/client/test_extension.py::test_result_claim_is_frozen [gw15] [ 24%] PASSED tests/client/test_extension.py::test_result_claim_is_frozen [gw35] [ 24%] PASSED tests/docs_src/test_identity_assertion.py::test_main_is_the_main_from_the_oauth_clients_page tests/docs_src/test_identity_assertion.py::test_a_client_secret_is_required [gw35] [ 24%] PASSED tests/docs_src/test_identity_assertion.py::test_a_client_secret_is_required tests/docs_src/test_identity_assertion.py::test_an_issuer_is_required [gw35] [ 24%] PASSED tests/docs_src/test_identity_assertion.py::test_an_issuer_is_required tests/docs_src/test_identity_assertion.py::test_the_id_jag_is_a_typed_jwt_carrying_the_claims_the_page_lists [gw35] [ 24%] PASSED tests/docs_src/test_identity_assertion.py::test_the_id_jag_is_a_typed_jwt_carrying_the_claims_the_page_lists tests/docs_src/test_identity_assertion.py::test_a_forged_assertion_is_rejected [gw35] [ 24%] PASSED tests/docs_src/test_identity_assertion.py::test_a_forged_assertion_is_rejected tests/docs_src/test_identity_assertion.py::test_an_assertion_for_another_audience_is_rejected [gw29] [ 24%] PASSED tests/docs_src/test_client_transports.py::test_in_memory_client_talks_to_the_server_object tests/docs_src/test_client_transports.py::test_constructing_a_client_does_not_connect_it [gw29] [ 24%] PASSED tests/docs_src/test_client_transports.py::test_constructing_a_client_does_not_connect_it tests/docs_src/test_client_transports.py::test_the_timeout_on_the_page_is_the_sdk_clients_and_a_client_without_one_has_five_seconds [gw36] [ 24%] PASSED tests/docs_src/test_media.py::test_in_memory_bytes_with_a_format_become_the_same_image_content_block tests/docs_src/test_media.py::test_path_file_is_read_when_the_result_is_built [gw36] [ 24%] PASSED tests/docs_src/test_media.py::test_path_file_is_read_when_the_result_is_built tests/client/test_client.py::test_complete_with_prompt_reference [gw9] [ 24%] PASSED tests/client/test_client.py::test_complete_with_prompt_reference tests/client/test_client.py::test_client_with_url_initializes_streamable_http_transport [gw9] [ 24%] PASSED tests/client/test_client.py::test_client_with_url_initializes_streamable_http_transport tests/client/test_client.py::test_client_uses_transport_directly [gw26] [ 24%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/testing/tutorial001.py] [gw28] [ 24%] PASSED tests/docs_src/test_asgi.py::test_the_default_app_is_localhost_only tests/docs_src/test_asgi.py::test_the_documented_browser_origin_works_end_to_end [gw28] [ 24%] PASSED tests/docs_src/test_asgi.py::test_the_documented_browser_origin_works_end_to_end tests/docs_src/test_authorization.py::test_the_in_memory_client_never_authenticates [gw22] [ 24%] PASSED tests/client/test_stdio.py::test_each_outgoing_message_is_written_as_exactly_one_line tests/client/test_stdio.py::test_invalid_json_from_the_server_surfaces_as_an_in_stream_exception [gw35] [ 24%] PASSED tests/docs_src/test_identity_assertion.py::test_an_assertion_for_another_audience_is_rejected tests/docs_src/test_identity_assertion.py::test_an_assertion_for_an_unknown_resource_is_rejected [gw35] [ 24%] PASSED tests/docs_src/test_identity_assertion.py::test_an_assertion_for_an_unknown_resource_is_rejected tests/docs_src/test_identity_assertion.py::test_a_replayed_assertion_is_rejected tests/client/test_scope_bug_1630.py::test_401_uses_www_auth_scope_not_resource_metadata_url [gw13] [ 24%] PASSED tests/client/test_scope_bug_1630.py::test_401_uses_www_auth_scope_not_resource_metadata_url tests/docs_src/test_troubleshooting.py::test_the_resolver_form_works_on_a_2026_connection [gw13] [ 24%] PASSED tests/docs_src/test_troubleshooting.py::test_the_resolver_form_works_on_a_2026_connection tests/docs_src/test_troubleshooting.py::test_the_resolver_form_without_a_callback_names_the_missing_capability [gw34] [ 24%] PASSED tests/docs_src/test_elicitation.py::test_an_answer_that_does_not_match_the_schema_never_reaches_the_tool_code tests/docs_src/test_elicitation.py::test_a_nested_model_is_rejected_before_anything_is_sent [gw33] [ 24%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[auto] tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[legacy] [gw23] [ 24%] PASSED tests/client/test_session_group.py::test_client_session_group_establish_session_parameterized[server_params_instance2-streamablehttp-mcp.client.session_group.streamable_http_client] tests/client/test_session_notification_bindings.py::test_duplicate_binding_method_rejected [gw32] [ 24%] PASSED tests/docs_src/test_deploy.py::test_the_allowlisted_app_serves_its_hostname_and_still_rejects_others tests/docs_src/test_deploy.py::test_a_retry_that_reaches_a_different_worker_is_rejected_by_default [gw35] [ 24%] PASSED tests/docs_src/test_identity_assertion.py::test_a_replayed_assertion_is_rejected tests/docs_src/test_identity_assertion.py::test_the_metadata_advertises_the_grant_type_and_the_id_jag_profile [gw40] [ 24%] PASSED tests/docs_src/test_prompts.py::test_missing_required_argument_is_a_protocol_error [gw37] [ 24%] PASSED tests/docs_src/test_handling_errors.py::test_any_other_exception_is_a_crash_the_model_sees_generically tests/docs_src/test_handling_errors.py::test_resource_not_found_error_maps_to_invalid_params [gw9] [ 24%] PASSED tests/client/test_client.py::test_client_uses_transport_directly tests/client/test_client.py::test_context_propagation [gw12] [ 24%] PASSED tests/client/test_client_caching.py::test_a_listing_served_from_a_shared_store_rebuilds_output_schemas tests/client/test_client_caching.py::test_validation_from_a_served_listing_rejects_missing_structured_content [gw12] [ 24%] PASSED tests/client/test_client_caching.py::test_validation_from_a_served_listing_rejects_missing_structured_content [gw23] [ 25%] PASSED tests/client/test_session_notification_bindings.py::test_duplicate_binding_method_rejected tests/client/test_session_notification_bindings.py::test_bound_vendor_notifications_are_delivered_in_order [gw35] [ 25%] PASSED tests/docs_src/test_identity_assertion.py::test_the_metadata_advertises_the_grant_type_and_the_id_jag_profile tests/docs_src/test_identity_assertion.py::test_the_whole_grant_is_one_token_request [gw28] [ 25%] PASSED tests/docs_src/test_authorization.py::test_the_in_memory_client_never_authenticates tests/docs_src/test_authorization.py::test_token_verifier_and_auth_settings_must_travel_together [gw28] [ 25%] PASSED tests/docs_src/test_authorization.py::test_token_verifier_and_auth_settings_must_travel_together [gw33] [ 25%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[legacy] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial003.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial004.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial005.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial006.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial006.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial007.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial007.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/media/tutorial001.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/media/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/media/tutorial002.py] [gw22] [ 25%] PASSED tests/client/test_stdio.py::test_invalid_json_from_the_server_surfaces_as_an_in_stream_exception tests/client/test_stdio.py::test_a_server_that_dies_before_responding_fails_initialize_with_connection_closed [gw22] [ 25%] PASSED tests/client/test_stdio.py::test_a_server_that_dies_before_responding_fails_initialize_with_connection_closed tests/client/test_stdio.py::test_a_server_that_exits_on_stdin_close_is_never_terminated [gw17] [ 25%] PASSED tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_dict_typed tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_missing_required [gw17] [ 25%] PASSED tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_missing_required tests/client/test_output_schema_validation.py::test_tool_not_listed_warning [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/media/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/media/tutorial003.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/media/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/media/tutorial004.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/media/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/media/tutorial005.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/media/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/middleware/tutorial001.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/middleware/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/middleware/tutorial002.py] [gw22] [ 25%] PASSED tests/client/test_stdio.py::test_a_server_that_exits_on_stdin_close_is_never_terminated [gw17] [ 25%] PASSED tests/client/test_output_schema_validation.py::test_tool_not_listed_warning tests/client/test_output_schema_validation.py::test_output_schema_ref_outside_the_document_is_rejected [gw32] [ 25%] PASSED tests/docs_src/test_deploy.py::test_a_retry_that_reaches_a_different_worker_is_rejected_by_default [gw37] [ 25%] PASSED tests/docs_src/test_handling_errors.py::test_resource_not_found_error_maps_to_invalid_params tests/docs_src/test_handling_errors.py::test_raise_exceptions_does_not_turn_a_tool_error_into_a_traceback [gw9] [ 25%] PASSED tests/client/test_client.py::test_context_propagation tests/client/test_client.py::test_client_auto_mode_probes_discover_then_adopts [gw23] [ 25%] PASSED tests/client/test_session_notification_bindings.py::test_bound_vendor_notifications_are_delivered_in_order tests/client/test_session_notification_bindings.py::test_binding_handler_may_do_session_io_without_deadlock [gw23] [ 25%] PASSED tests/client/test_session_notification_bindings.py::test_binding_handler_may_do_session_io_without_deadlock tests/client/test_session_notification_bindings.py::test_overflow_drops_oldest_event_with_a_warning tests/client/test_stdio.py::test_escalation_fires_once_and_only_after_the_grace_period tests/docs_src/test_authorization.py::test_the_app_grows_a_protected_resource_metadata_route [gw28] [ 25%] PASSED tests/docs_src/test_authorization.py::test_the_app_grows_a_protected_resource_metadata_route tests/docs_src/test_authorization.py::test_the_metadata_document_is_built_from_auth_settings [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/middleware/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial001.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial002.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial002.py] [gw34] [ 25%] PASSED tests/docs_src/test_elicitation.py::test_a_nested_model_is_rejected_before_anything_is_sent tests/docs_src/test_elicitation.py::test_a_literal_field_passes_the_gate_as_an_enum tests/client/auth/extensions/test_identity_assertion.py::test_on_401_exchanges_assertion_at_configured_issuer_and_retries tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial003.py] [gw13] [ 25%] PASSED tests/docs_src/test_troubleshooting.py::test_the_resolver_form_without_a_callback_names_the_missing_capability [gw28] [ 25%] PASSED tests/docs_src/test_authorization.py::test_the_metadata_document_is_built_from_auth_settings tests/docs_src/test_authorization.py::test_a_request_without_a_token_never_reaches_the_protocol [gw35] [ 25%] PASSED tests/docs_src/test_identity_assertion.py::test_the_whole_grant_is_one_token_request tests/docs_src/test_index.py::test_add_tool [gw9] [ 25%] PASSED tests/client/test_client.py::test_client_auto_mode_probes_discover_then_adopts [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial003.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial004.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial004.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial005.py] [gw2] [ 25%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_on_401_exchanges_assertion_at_configured_issuer_and_retries tests/docs_src/test_uri_templates.py::test_lowlevel_static_dispatch_lists_and_reads_by_exact_uri tests/client/test_client.py::test_client_auto_mode_negotiates_modern_over_a_stream_loop tests/docs_src/test_troubleshooting.py::test_a_legacy_ctx_elicit_without_a_callback_says_elicitation_not_supported [gw13] [ 25%] PASSED tests/docs_src/test_troubleshooting.py::test_a_legacy_ctx_elicit_without_a_callback_says_elicitation_not_supported tests/docs_src/test_troubleshooting.py::test_ctx_elicit_over_stateless_http_has_no_back_channel [gw13] [ 25%] PASSED tests/docs_src/test_troubleshooting.py::test_ctx_elicit_over_stateless_http_has_no_back_channel tests/docs_src/test_troubleshooting.py::test_a_request_state_the_server_did_not_mint_is_rejected [gw34] [ 25%] PASSED tests/docs_src/test_elicitation.py::test_a_literal_field_passes_the_gate_as_an_enum tests/docs_src/test_elicitation.py::test_url_mode_sends_a_url_and_gets_consent_back_not_data [gw28] [ 25%] PASSED tests/docs_src/test_authorization.py::test_a_request_without_a_token_never_reaches_the_protocol tests/docs_src/test_authorization.py::test_a_token_the_verifier_rejects_gets_the_same_401 [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial005.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/oauth_clients/tutorial001.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/oauth_clients/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/oauth_clients/tutorial002.py] [gw35] [ 25%] PASSED tests/docs_src/test_index.py::test_add_tool tests/docs_src/test_index.py::test_greeting_resource_template [gw28] [ 25%] PASSED tests/docs_src/test_authorization.py::test_a_token_the_verifier_rejects_gets_the_same_401 tests/docs_src/test_authorization.py::test_get_access_token_is_none_outside_an_authenticated_request [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/oauth_clients/tutorial002.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/opentelemetry/tutorial001.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/opentelemetry/tutorial001.py] [gw9] [ 25%] PASSED tests/client/test_client.py::test_client_auto_mode_negotiates_modern_over_a_stream_loop tests/client/test_client.py::test_client_pinned_modern_mode_works_over_a_stream_loop [gw13] [ 25%] PASSED tests/docs_src/test_troubleshooting.py::test_a_request_state_the_server_did_not_mint_is_rejected [gw29] [ 25%] PASSED tests/docs_src/test_client_transports.py::test_the_timeout_on_the_page_is_the_sdk_clients_and_a_client_without_one_has_five_seconds tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/pagination/tutorial001.py] [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/pagination/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/pagination/tutorial002.py] [gw2] [ 25%] PASSED tests/docs_src/test_uri_templates.py::test_lowlevel_static_dispatch_lists_and_reads_by_exact_uri tests/docs_src/test_troubleshooting.py::test_a_short_request_state_key_is_rejected_at_construction [gw13] [ 25%] PASSED tests/docs_src/test_troubleshooting.py::test_a_short_request_state_key_is_rejected_at_construction tests/docs_src/test_client_transports.py::test_stdio_parameters_go_straight_to_client [gw40] [ 25%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/pagination/tutorial002.py] [gw22] [ 25%] PASSED tests/client/test_stdio.py::test_escalation_fires_once_and_only_after_the_grace_period tests/client/test_stdio.py::test_a_server_dying_in_the_final_poll_interval_is_not_escalated tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/progress/tutorial001.py] tests/docs_src/test_uri_templates.py::test_lowlevel_unknown_uri_raises tests/docs_src/test_uri_templates.py::test_simple_expansion_maps_the_segment_to_the_argument [gw35] [ 25%] PASSED tests/docs_src/test_index.py::test_greeting_resource_template tests/docs_src/test_legacy_clients.py::test_one_resolve_tool_serves_a_legacy_and_a_modern_client_at_once [gw34] [ 25%] PASSED tests/docs_src/test_elicitation.py::test_url_mode_sends_a_url_and_gets_consent_back_not_data tests/docs_src/test_elicitation.py::test_a_declined_url_elicitation_is_an_ordinary_return_value [gw9] [ 26%] PASSED tests/client/test_client.py::test_client_pinned_modern_mode_works_over_a_stream_loop [gw40] [ 26%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/progress/tutorial001.py] [gw28] [ 26%] PASSED tests/docs_src/test_authorization.py::test_get_access_token_is_none_outside_an_authenticated_request tests/docs_src/test_authorization.py::test_get_access_token_is_the_callers_access_token [gw29] [ 26%] PASSED tests/docs_src/test_client_transports.py::test_stdio_parameters_go_straight_to_client [gw37] [ 26%] PASSED tests/docs_src/test_handling_errors.py::test_raise_exceptions_does_not_turn_a_tool_error_into_a_traceback tests/docs_src/test_handling_errors.py::test_a_title_the_template_knows_reads_normally tests/docs_src/test_client_transports.py::test_the_child_environment_is_an_allowlist tests/client/test_client.py::test_client_legacy_mode_still_handshakes_over_a_stream_loop [gw22] [ 26%] PASSED tests/client/test_stdio.py::test_a_server_dying_in_the_final_poll_interval_is_not_escalated tests/client/test_stdio.py::test_cancelling_the_client_still_runs_the_full_shutdown [gw29] [ 26%] PASSED tests/docs_src/test_client_transports.py::test_the_child_environment_is_an_allowlist tests/docs_src/test_completions.py::test_a_server_with_no_handler_has_no_completions_capability [gw17] [ 26%] PASSED tests/client/test_output_schema_validation.py::test_output_schema_ref_outside_the_document_is_rejected [gw24] [ 26%] PASSED tests/client/test_stdio.py::test_a_process_surviving_the_kill_escalation_is_logged_and_abandoned [gw9] [ 26%] PASSED tests/client/test_client.py::test_client_legacy_mode_still_handshakes_over_a_stream_loop tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial003.py] tests/docs_src/test_tools.py::test_call_returns_text_and_structured_content [gw34] [ 26%] PASSED tests/docs_src/test_elicitation.py::test_a_declined_url_elicitation_is_an_ordinary_return_value tests/client/test_stdio.py::test_an_eperm_group_that_dies_during_the_grace_period_is_not_sigkilled [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_simple_expansion_maps_the_segment_to_the_argument tests/docs_src/test_uri_templates.py::test_an_int_parameter_is_converted_from_the_uri_string tests/docs_src/test_elicitation.py::test_send_elicit_complete_notifies_the_client_with_the_same_id [gw39] [ 26%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial003.py] [gw37] [ 26%] PASSED tests/docs_src/test_handling_errors.py::test_a_title_the_template_knows_reads_normally tests/docs_src/test_handling_errors.py::test_a_bad_argument_is_an_info_line_not_a_crash [gw29] [ 26%] PASSED tests/docs_src/test_completions.py::test_a_server_with_no_handler_has_no_completions_capability tests/examples/test_stories.py::test_story[prompts-server_lowlevel-in-memory-modern] tests/docs_src/test_completions.py::test_completing_without_a_handler_is_method_not_found [gw35] [ 26%] PASSED tests/docs_src/test_legacy_clients.py::test_one_resolve_tool_serves_a_legacy_and_a_modern_client_at_once [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_an_int_parameter_is_converted_from_the_uri_string [gw23] [ 26%] PASSED tests/client/test_session_notification_bindings.py::test_overflow_drops_oldest_event_with_a_warning tests/docs_src/test_legacy_clients.py::test_neither_era_of_client_sees_the_resolved_parameter tests/docs_src/test_uri_templates.py::test_plus_keeps_the_slashes_in_the_captured_value tests/client/test_session_notification_bindings.py::test_invalid_params_are_warned_and_dropped_without_reaching_handler [gw17] [ 26%] PASSED tests/docs_src/test_tools.py::test_call_returns_text_and_structured_content tests/docs_src/test_tools.py::test_default_value_makes_the_argument_optional [gw28] [ 26%] PASSED tests/docs_src/test_authorization.py::test_get_access_token_is_the_callers_access_token [gw34] [ 26%] PASSED tests/docs_src/test_elicitation.py::test_send_elicit_complete_notifies_the_client_with_the_same_id tests/docs_src/test_caching.py::test_a_mapped_method_carries_the_configured_hint [gw29] [ 26%] PASSED tests/docs_src/test_completions.py::test_completing_without_a_handler_is_method_not_found tests/docs_src/test_completions.py::test_registering_the_handler_advertises_the_capability [gw35] [ 26%] PASSED tests/docs_src/test_legacy_clients.py::test_neither_era_of_client_sees_the_resolved_parameter tests/docs_src/test_legacy_clients.py::test_a_legacy_session_is_minted_in_process_and_a_stray_session_id_is_a_404 [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_plus_keeps_the_slashes_in_the_captured_value tests/docs_src/test_uri_templates.py::test_omitted_query_params_fall_through_to_function_defaults tests/docs_src/test_elicitation.py::test_the_docs_client_callback_handles_both_modes [gw17] [ 26%] PASSED tests/docs_src/test_tools.py::test_default_value_makes_the_argument_optional tests/docs_src/test_tools.py::test_field_constraints_land_in_the_schema [gw29] [ 26%] PASSED tests/docs_src/test_completions.py::test_registering_the_handler_advertises_the_capability [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_omitted_query_params_fall_through_to_function_defaults tests/docs_src/test_uri_templates.py::test_a_query_param_overrides_only_the_default_it_names tests/docs_src/test_completions.py::test_prompt_argument_completion_filters_on_the_typed_prefix [gw28] [ 26%] PASSED tests/docs_src/test_caching.py::test_a_mapped_method_carries_the_configured_hint [gw35] [ 26%] PASSED tests/docs_src/test_legacy_clients.py::test_a_legacy_session_is_minted_in_process_and_a_stray_session_id_is_a_404 tests/docs_src/test_legacy_clients.py::test_legacy_sessions_expire_and_are_capped_by_default [gw2] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_lowlevel_unknown_uri_raises tests/docs_src/test_uri_templates.py::test_uritemplate_match_returns_a_dict_or_none tests/docs_src/test_caching.py::test_a_hint_without_a_scope_stays_private [gw30] [ 26%] PASSED tests/docs/test_translations.py::test_docs_translate_model_overrides_the_registry_model_for_the_run [gw17] [ 26%] PASSED tests/docs_src/test_tools.py::test_field_constraints_land_in_the_schema tests/docs_src/test_tools.py::test_constraint_violation_is_an_error_the_model_can_read [gw35] [ 26%] PASSED tests/docs_src/test_legacy_clients.py::test_legacy_sessions_expire_and_are_capped_by_default tests/docs_src/test_legacy_clients.py::test_stateless_http_never_mints_a_session tests/docs/test_translations.py::test_translate_pages_retranslates_the_named_pages_from_scratch_even_when_a_translation_exists [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_a_query_param_overrides_only_the_default_it_names tests/docs_src/test_uri_templates.py::test_exploded_path_arrives_as_a_list_of_segments [gw29] [ 26%] PASSED tests/docs_src/test_completions.py::test_prompt_argument_completion_filters_on_the_typed_prefix [gw2] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_uritemplate_match_returns_a_dict_or_none tests/docs_src/test_uri_templates.py::test_lowlevel_match_routes_the_request_to_the_right_template [gw17] [ 26%] PASSED tests/docs_src/test_tools.py::test_constraint_violation_is_an_error_the_model_can_read tests/docs_src/test_tools.py::test_pydantic_model_parameter [gw39] [ 26%] PASSED tests/examples/test_stories.py::test_story[prompts-server_lowlevel-in-memory-modern] [gw28] [ 26%] PASSED tests/docs_src/test_caching.py::test_a_hint_without_a_scope_stays_private tests/docs_src/test_caching.py::test_an_unmapped_method_stays_immediately_stale_and_private tests/examples/test_stories.py::test_story[prompts-server_lowlevel-in-memory-legacy] [gw35] [ 26%] PASSED tests/docs_src/test_legacy_clients.py::test_stateless_http_never_mints_a_session tests/docs_src/test_legacy_clients.py::test_stateless_http_kills_the_legacy_back_channel_and_only_the_legacy_one [gw2] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_lowlevel_match_routes_the_request_to_the_right_template [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_exploded_path_arrives_as_a_list_of_segments tests/docs_src/test_uri_templates.py::test_two_adjacent_variables_are_rejected_at_parse_time tests/docs_src/test_uri_templates.py::test_lowlevel_handler_applies_the_safety_checks_itself [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_two_adjacent_variables_are_rejected_at_parse_time tests/docs_src/test_uri_templates.py::test_a_self_delimiting_operator_supplies_the_separator [gw17] [ 26%] PASSED tests/docs_src/test_tools.py::test_pydantic_model_parameter tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial001.py] [gw37] [ 26%] PASSED tests/docs_src/test_handling_errors.py::test_a_bad_argument_is_an_info_line_not_a_crash [gw28] [ 26%] PASSED tests/docs_src/test_caching.py::test_an_unmapped_method_stays_immediately_stale_and_private tests/docs_src/test_tools.py::test_title_and_annotations [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_a_self_delimiting_operator_supplies_the_separator tests/docs_src/test_uri_templates.py::test_a_second_multi_segment_variable_is_rejected_at_parse_time [gw41] [ 26%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial001.py] tests/docs_src/test_caching.py::test_a_non_cacheable_method_is_rejected_at_construction tests/docs_src/test_header_parameters.py::test_a_2026_http_client_sends_the_marked_argument_as_a_header_as_well[tutorial001] tests/examples/test_stories.py::test_story[dual_era-server_lowlevel-in-memory-in-body] [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_a_second_multi_segment_variable_is_rejected_at_parse_time [gw17] [ 26%] PASSED tests/docs_src/test_tools.py::test_title_and_annotations [gw28] [ 26%] PASSED tests/docs_src/test_caching.py::test_a_non_cacheable_method_is_rejected_at_construction tests/docs_src/test_troubleshooting.py::test_an_error_leaving_the_async_with_block_arrives_wrapped_in_an_exception_group tests/docs_src/test_uri_templates.py::test_a_query_parameter_without_a_python_default_is_rejected_at_decoration_time [gw23] [ 26%] PASSED tests/client/test_session_notification_bindings.py::test_invalid_params_are_warned_and_dropped_without_reaching_handler tests/client/test_session_notification_bindings.py::test_unbound_vendor_notification_keeps_the_debug_drop [gw39] [ 26%] PASSED tests/examples/test_stories.py::test_story[prompts-server_lowlevel-in-memory-legacy] tests/examples/test_stories.py::test_story[prompts-server_lowlevel-http-asgi-modern] [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_a_query_parameter_without_a_python_default_is_rejected_at_decoration_time tests/docs_src/test_uri_templates.py::test_traversal_is_rejected_before_the_handler_runs [gw24] [ 26%] PASSED tests/client/test_stdio.py::test_an_eperm_group_that_dies_during_the_grace_period_is_not_sigkilled [gw27] [ 26%] PASSED tests/client/transports/test_memory.py::test_call_tool tests/client/transports/test_memory.py::test_raise_exceptions tests/client/test_stdio.py::test_an_eperm_group_that_outlives_the_grace_period_is_still_sigkilled [gw17] [ 26%] PASSED tests/docs_src/test_troubleshooting.py::test_an_error_leaving_the_async_with_block_arrives_wrapped_in_an_exception_group tests/docs_src/test_shape.py::test_example_imports[docs_src/whats_new/tutorial001.py] tests/docs_src/test_troubleshooting.py::test_the_same_error_caught_inside_the_block_is_the_bare_mcp_error [gw13] [ 26%] PASSED tests/docs_src/test_uri_templates.py::test_traversal_is_rejected_before_the_handler_runs tests/docs_src/test_uri_templates.py::test_dotdot_is_a_component_check_not_a_substring_scan [gw45] [ 26%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/whats_new/tutorial001.py] [gw13] [ 27%] PASSED tests/docs_src/test_uri_templates.py::test_dotdot_is_a_component_check_not_a_substring_scan tests/docs_src/test_uri_templates.py::test_safe_join_serves_a_file_inside_the_base_directory tests/examples/test_stories.py::test_story[subscriptions-server_lowlevel-in-memory-modern] [gw17] [ 27%] PASSED tests/docs_src/test_troubleshooting.py::test_the_same_error_caught_inside_the_block_is_the_bare_mcp_error [gw35] [ 27%] PASSED tests/docs_src/test_legacy_clients.py::test_stateless_http_kills_the_legacy_back_channel_and_only_the_legacy_one tests/client/test_auth.py::TestOAuthFallback::test_handle_metadata_response_success tests/docs_src/test_legacy_clients.py::test_the_legacy_notification_verb_reaches_a_legacy_client tests/docs_src/test_troubleshooting.py::test_a_client_outside_its_async_with_refuses_every_call [gw23] [ 27%] PASSED tests/client/test_session_notification_bindings.py::test_unbound_vendor_notification_keeps_the_debug_drop tests/client/test_session_notification_bindings.py::test_core_known_method_never_reaches_binding_and_warns_once_at_adopt [gw37] [ 27%] PASSED tests/docs_src/test_header_parameters.py::test_a_2026_http_client_sends_the_marked_argument_as_a_header_as_well[tutorial001] tests/docs_src/test_header_parameters.py::test_a_2026_http_client_sends_the_marked_argument_as_a_header_as_well[tutorial002] [gw1] [ 27%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_handle_metadata_response_success [gw41] [ 27%] PASSED tests/examples/test_stories.py::test_story[dual_era-server_lowlevel-in-memory-in-body] tests/examples/test_stories.py::test_story[dual_era-server_lowlevel-http-asgi-in-body] [gw17] [ 27%] PASSED tests/docs_src/test_troubleshooting.py::test_a_client_outside_its_async_with_refuses_every_call tests/docs_src/test_troubleshooting.py::test_a_failing_tool_returns_is_error_true_instead_of_raising [gw25] [ 27%] PASSED tests/client/test_subscriptions.py::test_a_raw_request_id_collision_fails_the_subscription_not_the_session tests/client/test_transport_stream_cleanup.py::test_sse_client_closes_all_streams_on_connection_error tests/examples/test_stories.py::test_story[pagination-server-in-memory-modern] [gw27] [ 27%] PASSED tests/client/transports/test_memory.py::test_raise_exceptions tests/client/transports/test_memory.py::test_aexit_with_well_behaved_lifespan_runs_teardown_without_cancel [gw27] [ 27%] PASSED tests/client/transports/test_memory.py::test_aexit_with_well_behaved_lifespan_runs_teardown_without_cancel [gw35] [ 27%] PASSED tests/docs_src/test_legacy_clients.py::test_the_legacy_notification_verb_reaches_a_legacy_client [gw39] [ 27%] PASSED tests/examples/test_stories.py::test_story[prompts-server_lowlevel-http-asgi-modern] tests/client/transports/test_memory.py::test_aexit_with_blocking_lifespan_is_bounded [gw17] [ 27%] PASSED tests/docs_src/test_troubleshooting.py::test_a_failing_tool_returns_is_error_true_instead_of_raising tests/docs_src/test_troubleshooting.py::test_a_crashing_tool_is_the_bare_form_with_its_traceback_in_the_server_log tests/examples/test_stories.py::test_story[prompts-server_lowlevel-http-asgi-legacy] [gw2] [ 27%] PASSED tests/docs_src/test_uri_templates.py::test_lowlevel_handler_applies_the_safety_checks_itself tests/client/test_client_caching.py::test_a_cache_hit_listing_still_mirrors_x_mcp_headers_on_tools_call tests/docs_src/test_uri_templates.py::test_str_of_a_template_round_trips_to_the_original_string [gw45] [ 27%] PASSED tests/examples/test_stories.py::test_story[subscriptions-server_lowlevel-in-memory-modern] tests/examples/test_stories.py::test_story[subscriptions-server_lowlevel-http-asgi-modern] [gw2] [ 27%] PASSED tests/docs_src/test_uri_templates.py::test_str_of_a_template_round_trips_to_the_original_string tests/docs_src/test_whats_new.py::test_the_advertised_schema_is_the_literal_dict [gw37] [ 27%] PASSED tests/docs_src/test_header_parameters.py::test_a_2026_http_client_sends_the_marked_argument_as_a_header_as_well[tutorial002] tests/docs_src/test_header_parameters.py::test_a_call_whose_header_and_body_disagree_is_rejected [gw22] [ 27%] PASSED tests/client/test_stdio.py::test_cancelling_the_client_still_runs_the_full_shutdown tests/client/test_stdio.py::test_writing_after_the_server_dies_reports_clean_closure [gw22] [ 27%] PASSED tests/client/test_stdio.py::test_writing_after_the_server_dies_reports_clean_closure tests/client/test_stdio.py::test_exiting_with_an_unconsumed_server_message_does_not_raise [gw23] [ 27%] PASSED tests/client/test_session_notification_bindings.py::test_core_known_method_never_reaches_binding_and_warns_once_at_adopt [gw2] [ 27%] PASSED tests/docs_src/test_whats_new.py::test_the_advertised_schema_is_the_literal_dict tests/docs_src/test_whats_new.py::test_a_valid_call_answers [gw1] [ 27%] PASSED tests/examples/test_stories.py::test_story[pagination-server-in-memory-modern] tests/examples/test_stories.py::test_story[pagination-server-in-memory-legacy] tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial001.py] [gw12] [ 27%] PASSED tests/client/test_client_caching.py::test_a_cache_hit_listing_still_mirrors_x_mcp_headers_on_tools_call [gw43] [ 27%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial001.py] [gw41] [ 27%] PASSED tests/examples/test_stories.py::test_story[dual_era-server_lowlevel-http-asgi-in-body] [gw1] [ 27%] PASSED tests/examples/test_stories.py::test_story[pagination-server-in-memory-legacy] tests/client/test_client_extensions.py::test_declarations_are_read_exactly_once_at_construction tests/examples/test_stories.py::test_story[identity_assertion-server-http-asgi-modern] tests/examples/test_stories.py::test_story[streaming-server-in-memory-modern] [gw37] [ 27%] PASSED tests/docs_src/test_header_parameters.py::test_a_call_whose_header_and_body_disagree_is_rejected tests/examples/test_stories.py::test_main_signature_matches_manifest[parallel_calls] tests/examples/test_stories.py::test_story[pagination-server-http-asgi-modern] [gw2] [ 27%] PASSED tests/docs_src/test_whats_new.py::test_a_valid_call_answers tests/docs_src/test_whats_new.py::test_arguments_are_not_validated_and_a_handler_exception_is_sanitized [gw43] [ 27%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[parallel_calls] tests/examples/test_stories.py::test_main_signature_matches_manifest[prompts] [gw43] [ 27%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[prompts] tests/examples/test_stories.py::test_main_signature_matches_manifest[reconnect] [gw17] [ 27%] PASSED tests/docs_src/test_troubleshooting.py::test_a_crashing_tool_is_the_bare_form_with_its_traceback_in_the_server_log [gw1] [ 27%] PASSED tests/examples/test_stories.py::test_story[pagination-server-http-asgi-modern] tests/docs_src/test_troubleshooting.py::test_an_unknown_tool_is_the_same_kind_of_result tests/examples/test_stories.py::test_story[pagination-server-http-asgi-legacy] [gw43] [ 27%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[reconnect] [gw13] [ 27%] PASSED tests/docs_src/test_uri_templates.py::test_safe_join_serves_a_file_inside_the_base_directory tests/examples/test_stories.py::test_main_signature_matches_manifest[refund_desk] [gw45] [ 27%] PASSED tests/examples/test_stories.py::test_story[subscriptions-server_lowlevel-http-asgi-modern] [gw39] [ 27%] PASSED tests/examples/test_stories.py::test_story[prompts-server_lowlevel-http-asgi-legacy] tests/docs_src/test_uri_templates.py::test_a_missing_manual_is_resource_not_found [gw17] [ 27%] PASSED tests/docs_src/test_troubleshooting.py::test_an_unknown_tool_is_the_same_kind_of_result tests/examples/test_stories.py::test_story[schema_validators-server-in-memory-modern] tests/docs_src/test_troubleshooting.py::test_the_tool_decorator_without_parentheses_raises_at_import_time tests/examples/test_stories.py::test_story[resources-server-in-memory-modern] [gw17] [ 27%] PASSED tests/docs_src/test_troubleshooting.py::test_the_tool_decorator_without_parentheses_raises_at_import_time tests/docs_src/test_troubleshooting.py::test_an_invalid_x_mcp_header_annotation_raises_at_import_time [gw13] [ 27%] PASSED tests/docs_src/test_uri_templates.py::test_a_missing_manual_is_resource_not_found [gw43] [ 27%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[refund_desk] tests/examples/test_stories.py::test_main_signature_matches_manifest[resources] [gw43] [ 27%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[resources] tests/examples/test_stories.py::test_main_signature_matches_manifest[roots] tests/docs_src/test_uri_templates.py::test_safe_join_raises_when_the_resolved_path_escapes_the_base [gw13] [ 27%] PASSED tests/docs_src/test_uri_templates.py::test_safe_join_raises_when_the_resolved_path_escapes_the_base [gw43] [ 27%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[roots] tests/examples/test_stories.py::test_main_signature_matches_manifest[sampling] tests/docs_src/test_uri_templates.py::test_exempt_params_lets_an_absolute_path_through [gw31] [ 27%] PASSED tests/docs_src/test_cancellation.py::test_abandoning_the_call_over_streamable_http_runs_the_cleanup_too[legacy] tests/docs_src/test_cancellation.py::test_a_client_timeout_cancels_the_tool_the_same_way[auto] [gw12] [ 27%] PASSED tests/examples/test_stories.py::test_story[identity_assertion-server-http-asgi-modern] tests/examples/test_stories.py::test_story[identity_assertion-server-http-asgi-legacy] [gw17] [ 27%] PASSED tests/docs_src/test_troubleshooting.py::test_an_invalid_x_mcp_header_annotation_raises_at_import_time tests/docs_src/test_troubleshooting.py::test_a_duplicate_tool_name_keeps_the_first_and_drops_the_second tests/client/test_caching.py::test_swapped_params_key_and_partition_values_are_distinct_keys[InMemoryResponseCacheStore] [gw8] [ 27%] PASSED tests/client/test_caching.py::test_swapped_params_key_and_partition_values_are_distinct_keys[InMemoryResponseCacheStore] [gw43] [ 27%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[sampling] tests/examples/test_stories.py::test_main_signature_matches_manifest[schema_validators] tests/examples/test_story_shape.py::test_main_constructs_client_inline[schema_validators] [gw1] [ 27%] PASSED tests/examples/test_stories.py::test_story[pagination-server-http-asgi-legacy] [gw13] [ 27%] PASSED tests/docs_src/test_uri_templates.py::test_exempt_params_lets_an_absolute_path_through tests/examples/test_stories.py::test_story[pagination-server_lowlevel-in-memory-modern] [gw17] [ 27%] PASSED tests/docs_src/test_troubleshooting.py::test_a_duplicate_tool_name_keeps_the_first_and_drops_the_second [gw8] [ 27%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[schema_validators] tests/examples/test_story_shape.py::test_main_constructs_client_inline[serve_one] [gw43] [ 27%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[schema_validators] tests/examples/test_stories.py::test_main_signature_matches_manifest[serve_one] [gw2] [ 27%] PASSED tests/docs_src/test_whats_new.py::test_arguments_are_not_validated_and_a_handler_exception_is_sanitized tests/docs_src/test_whats_new.py::test_an_unknown_tool_is_a_deliberate_wire_error tests/docs_src/test_troubleshooting.py::test_a_duplicate_registration_logs_tool_already_exists [gw43] [ 27%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[serve_one] [gw8] [ 27%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[serve_one] tests/examples/test_story_shape.py::test_main_constructs_client_inline[sse_polling] [gw8] [ 27%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[sse_polling] tests/examples/test_story_shape.py::test_main_constructs_client_inline[standalone_get] tests/examples/test_stories.py::test_main_signature_matches_manifest[sse_polling] [gw1] [ 27%] PASSED tests/examples/test_stories.py::test_story[pagination-server_lowlevel-in-memory-modern] tests/examples/test_stories.py::test_story[pagination-server_lowlevel-in-memory-legacy] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[standalone_get] tests/examples/test_story_shape.py::test_main_constructs_client_inline[starlette_mount] [gw2] [ 28%] PASSED tests/docs_src/test_whats_new.py::test_an_unknown_tool_is_a_deliberate_wire_error tests/examples/test_stories.py::test_story[tools-server-in-memory-modern] [gw27] [ 28%] PASSED tests/client/transports/test_memory.py::test_aexit_with_blocking_lifespan_is_bounded [gw43] [ 28%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[sse_polling] tests/examples/test_stories.py::test_main_signature_matches_manifest[standalone_get] tests/docs/test_build_config.py::test_language_nav_titles_sections_from_the_recorded_page_titles_but_keeps_link_labels [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[starlette_mount] tests/examples/test_story_shape.py::test_main_constructs_client_inline[stateless_legacy] [gw1] [ 28%] PASSED tests/examples/test_stories.py::test_story[pagination-server_lowlevel-in-memory-legacy] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[stateless_legacy] tests/examples/test_stories.py::test_story[pagination-server_lowlevel-http-asgi-modern] tests/examples/test_story_shape.py::test_main_constructs_client_inline[stickynotes] [gw27] [ 28%] PASSED tests/docs/test_build_config.py::test_language_nav_titles_sections_from_the_recorded_page_titles_but_keeps_link_labels tests/docs/test_build_config.py::test_alternate_lists_english_then_each_language_as_code_labelled_links_relative_to_the_site_built [gw12] [ 28%] PASSED tests/examples/test_stories.py::test_story[identity_assertion-server-http-asgi-legacy] [gw17] [ 28%] PASSED tests/docs_src/test_troubleshooting.py::test_a_duplicate_registration_logs_tool_already_exists tests/docs_src/test_troubleshooting.py::test_the_default_streamable_http_app_answers_a_real_hostname_with_421 tests/client/test_auth.py::TestCIMD::test_create_client_info_from_metadata_url [gw24] [ 28%] PASSED tests/client/test_stdio.py::test_an_eperm_group_that_outlives_the_grace_period_is_still_sigkilled tests/client/test_stdio.py::test_the_grace_wait_reads_returncode_so_trio_can_reap_the_leaders_zombie[asyncio] [gw43] [ 28%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[standalone_get] tests/examples/test_stories.py::test_main_signature_matches_manifest[starlette_mount] [gw43] [ 28%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[starlette_mount] tests/examples/test_stories.py::test_main_signature_matches_manifest[stateless_legacy] tests/examples/test_stories.py::test_story[identity_assertion-server_lowlevel-http-asgi-modern] [gw6] [ 28%] PASSED tests/client/test_auth.py::TestCIMD::test_create_client_info_from_metadata_url tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[middleware] [gw27] [ 28%] PASSED tests/docs/test_build_config.py::test_alternate_lists_english_then_each_language_as_code_labelled_links_relative_to_the_site_built tests/docs/test_build_config.py::test_lang_config_builds_the_staged_tree_into_site_code_without_an_api_reference [gw43] [ 28%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[stateless_legacy] tests/examples/test_stories.py::test_main_signature_matches_manifest[stickynotes] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[stickynotes] tests/examples/test_story_shape.py::test_main_constructs_client_inline[streaming] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[streaming] tests/examples/test_story_shape.py::test_main_constructs_client_inline[subscriptions] [gw6] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[middleware] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[mrtr] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[subscriptions] [gw1] [ 28%] PASSED tests/examples/test_stories.py::test_story[pagination-server_lowlevel-http-asgi-modern] tests/examples/test_story_shape.py::test_main_constructs_client_inline[tools] [gw6] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[mrtr] tests/examples/test_stories.py::test_story[pagination-server_lowlevel-http-asgi-legacy] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[tools] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[apps] [gw43] [ 28%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[stickynotes] tests/examples/test_stories.py::test_main_signature_matches_manifest[streaming] [gw43] [ 28%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[streaming] [gw27] [ 28%] PASSED tests/docs/test_build_config.py::test_lang_config_builds_the_staged_tree_into_site_code_without_an_api_reference tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[oauth] tests/examples/test_stories.py::test_main_signature_matches_manifest[subscriptions] tests/docs/test_build_config.py::test_lang_config_for_a_language_not_in_the_registry_exits_with_a_message [gw6] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[oauth] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[oauth_client_credentials] [gw43] [ 28%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[subscriptions] tests/examples/test_stories.py::test_main_signature_matches_manifest[tools] [gw12] [ 28%] PASSED tests/examples/test_stories.py::test_story[identity_assertion-server_lowlevel-http-asgi-modern] tests/examples/test_stories.py::test_story[identity_assertion-server_lowlevel-http-asgi-legacy] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[apps] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[bearer_auth] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[bearer_auth] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[custom_methods] [gw6] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[oauth_client_credentials] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[pagination] [gw43] [ 28%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[tools] tests/examples/test_stories_smoke.py::test_story_main_runs_end_to_end[tools-stdio] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[custom_methods] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[dual_era] [gw27] [ 28%] PASSED tests/docs/test_build_config.py::test_lang_config_for_a_language_not_in_the_registry_exits_with_a_message [gw6] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[pagination] [gw43] [ 28%] SKIPPED tests/examples/test_stories_smoke.py::test_story_main_runs_end_to_end[tools-stdio] tests/examples/test_stories_smoke.py::test_story_main_runs_end_to_end[tools-http] [gw43] [ 28%] SKIPPED tests/examples/test_stories_smoke.py::test_story_main_runs_end_to_end[tools-http] tests/examples/test_stories_smoke.py::test_story_main_runs_end_to_end[bearer_auth-http] [gw43] [ 28%] SKIPPED tests/examples/test_stories_smoke.py::test_story_main_runs_end_to_end[bearer_auth-http] tests/examples/test_story_shape.py::test_main_constructs_client_inline[apps] tests/docs/test_translations.py::test_sections_tile_the_page_and_blank_lines_belong_to_the_heading_after_them [gw27] [ 28%] PASSED tests/docs/test_translations.py::test_sections_tile_the_page_and_blank_lines_belong_to_the_heading_after_them tests/docs/test_translations.py::test_provenance_front_matter_round_trips_and_keeps_all_digit_hashes_as_strings [gw27] [ 28%] PASSED tests/docs/test_translations.py::test_provenance_front_matter_round_trips_and_keeps_all_digit_hashes_as_strings tests/docs/test_translations.py::test_heading_ids_are_the_ones_the_site_renderer_produces tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[parallel_calls] [gw6] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[parallel_calls] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[prompts] [gw6] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[prompts] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[reconnect] [gw44] [ 28%] PASSED tests/docs_src/test_structured_output.py::test_dataclass_produces_the_same_schema tests/docs_src/test_structured_output.py::test_list_return_is_wrapped [gw1] [ 28%] PASSED tests/examples/test_stories.py::test_story[pagination-server_lowlevel-http-asgi-legacy] tests/examples/test_stories.py::test_story[error_handling-server-in-memory-modern] tests/docs_src/test_oauth_clients.py::test_storage_round_trips_tokens_and_client_info [gw38] [ 28%] PASSED tests/docs_src/test_oauth_clients.py::test_storage_round_trips_tokens_and_client_info tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[tools] [gw38] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[tools] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[apps] [gw43] [ 28%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[apps] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[dual_era] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[error_handling] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[error_handling] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[extensions] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[extensions] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[identity_assertion] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[identity_assertion] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[json_response] [gw6] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[reconnect] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[refund_desk] [gw38] [ 28%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[apps] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[bearer_auth] [gw12] [ 28%] PASSED tests/examples/test_stories.py::test_story[identity_assertion-server_lowlevel-http-asgi-legacy] [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[json_response] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[legacy_elicitation] [gw44] [ 28%] PASSED tests/docs_src/test_structured_output.py::test_list_return_is_wrapped [gw17] [ 28%] PASSED tests/docs_src/test_troubleshooting.py::test_the_default_streamable_http_app_answers_a_real_hostname_with_421 [gw8] [ 28%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[legacy_elicitation] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[legacy_routing] tests/docs_src/test_structured_output.py::test_dict_str_return_is_not_wrapped [gw38] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[bearer_auth] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[custom_methods] tests/client/test_session.py::test_discover_validates_the_response_shape_before_adopting tests/examples/test_stories.py::test_manifest_matches_filesystem [gw20] [ 29%] PASSED tests/client/test_session.py::test_discover_validates_the_response_shape_before_adopting [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[refund_desk] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[resources] [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[resources] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[roots] [gw8] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[legacy_routing] [gw12] [ 29%] PASSED tests/examples/test_stories.py::test_manifest_matches_filesystem tests/examples/test_stories.py::test_manifest_schema_valid [gw12] [ 29%] PASSED tests/examples/test_stories.py::test_manifest_schema_valid tests/examples/test_stories.py::test_main_signature_matches_manifest[apps] tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[unrelated] [gw11] [ 29%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[unrelated] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[resources] tests/docs_src/test_troubleshooting.py::test_an_allowlisted_hostname_connects_and_calls_a_tool tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[mrtr] [gw38] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[custom_methods] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[dual_era] [gw38] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[dual_era] [gw11] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[resources] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[roots] [gw12] [ 29%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[apps] tests/examples/test_stories.py::test_main_signature_matches_manifest[bearer_auth] [gw44] [ 29%] PASSED tests/docs_src/test_structured_output.py::test_dict_str_return_is_not_wrapped tests/docs_src/test_structured_output.py::test_return_value_is_validated_against_the_schema tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[error_handling] [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[roots] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[sampling] [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[sampling] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[schema_validators] [gw20] [ 29%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[mrtr] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[oauth] [gw12] [ 29%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[bearer_auth] [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[schema_validators] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[serve_one] [gw11] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[roots] [gw20] [ 29%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[oauth] [gw38] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[error_handling] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[extensions] tests/examples/test_stories.py::test_main_signature_matches_manifest[custom_methods] [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[serve_one] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[sse_polling] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[sampling] [gw17] [ 29%] PASSED tests/docs_src/test_troubleshooting.py::test_an_allowlisted_hostname_connects_and_calls_a_tool tests/docs_src/test_troubleshooting.py::test_a_mounted_app_without_a_lifespan_fails_on_the_first_request [gw17] [ 29%] PASSED tests/docs_src/test_troubleshooting.py::test_a_mounted_app_without_a_lifespan_fails_on_the_first_request tests/docs_src/test_troubleshooting.py::test_a_session_id_the_server_never_issued_gets_a_404_session_not_found tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[oauth_client_credentials] [gw20] [ 29%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[oauth_client_credentials] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[pagination] [gw20] [ 29%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[pagination] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[parallel_calls] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial002.py] [gw24] [ 29%] PASSED tests/client/test_stdio.py::test_the_grace_wait_reads_returncode_so_trio_can_reap_the_leaders_zombie[asyncio] tests/client/test_stdio.py::test_the_grace_wait_reads_returncode_so_trio_can_reap_the_leaders_zombie[trio] [gw17] [ 29%] PASSED tests/docs_src/test_troubleshooting.py::test_a_session_id_the_server_never_issued_gets_a_404_session_not_found tests/docs_src/test_troubleshooting.py::test_ctx_elicit_at_2026_has_no_back_channel [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[sse_polling] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[standalone_get] [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[standalone_get] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[starlette_mount] [gw12] [ 29%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[custom_methods] tests/examples/test_stories.py::test_main_signature_matches_manifest[dual_era] [gw12] [ 29%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[dual_era] tests/examples/test_stories.py::test_main_signature_matches_manifest[error_handling] [gw20] [ 29%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[parallel_calls] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[prompts] [gw38] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[extensions] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[identity_assertion] [gw38] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[identity_assertion] [gw17] [ 29%] PASSED tests/docs_src/test_troubleshooting.py::test_ctx_elicit_at_2026_has_no_back_channel tests/docs_src/test_troubleshooting.py::test_an_elicitation_callback_does_not_fix_ctx_elicit_at_2026 [gw22] [ 29%] PASSED tests/client/test_stdio.py::test_exiting_with_an_unconsumed_server_message_does_not_raise tests/client/test_stdio.py::test_spawn_failure_propagates_the_error_and_leaks_no_streams [gw7] [ 29%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lowlevel/tutorial002.py] tests/interaction/auth/test_as_handlers.py::test_a_mismatched_code_verifier_is_rejected_with_invalid_grant [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[starlette_mount] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[stateless_legacy] [gw12] [ 29%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[error_handling] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[json_response] [gw11] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[sampling] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[schema_validators] [gw11] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[schema_validators] [gw20] [ 29%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[prompts] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[reconnect] tests/examples/test_stories.py::test_main_signature_matches_manifest[extensions] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[serve_one] [gw39] [ 29%] PASSED tests/examples/test_stories.py::test_story[resources-server-in-memory-modern] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial001.py] [gw20] [ 29%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[reconnect] [gw38] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[json_response] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[legacy_elicitation] [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[stateless_legacy] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/authorization/tutorial001.py] [gw5] [ 29%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/structured_output/tutorial001.py] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[resources] tests/examples/test_stories.py::test_story[resources-server-in-memory-legacy] [gw17] [ 29%] PASSED tests/docs_src/test_troubleshooting.py::test_an_elicitation_callback_does_not_fix_ctx_elicit_at_2026 [gw7] [ 29%] PASSED tests/interaction/auth/test_as_handlers.py::test_a_mismatched_code_verifier_is_rejected_with_invalid_grant tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[stickynotes] tests/interaction/auth/test_as_handlers.py::test_reusing_an_authorization_code_is_rejected_with_invalid_grant [gw46] [ 29%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/authorization/tutorial001.py] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial001.py] tests/interaction/auth/test_discovery.py::test_as_metadata_with_a_mismatched_issuer_aborts_the_flow tests/interaction/auth/test_bearer.py::test_an_unrecognized_bearer_token_is_answered_401_invalid_token [gw20] [ 29%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[resources] [gw38] [ 29%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[legacy_elicitation] [gw12] [ 29%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[extensions] tests/examples/test_stories.py::test_main_signature_matches_manifest[identity_assertion] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[roots] [gw18] [ 29%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/troubleshooting/tutorial001.py] [gw12] [ 29%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[identity_assertion] tests/examples/test_stories.py::test_main_signature_matches_manifest[json_response] [gw20] [ 29%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[roots] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[sampling] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[legacy_routing] [gw6] [ 29%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[stickynotes] [gw5] [ 29%] PASSED tests/interaction/auth/test_bearer.py::test_an_unrecognized_bearer_token_is_answered_401_invalid_token tests/interaction/auth/test_lifecycle.py::test_client_credentials_provider_obtains_a_token_without_an_authorize_step tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[streaming] [gw12] [ 30%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[json_response] [gw11] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[serve_one] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[sse_polling] tests/interaction/auth/test_bearer.py::test_an_expired_token_is_answered_401 [gw20] [ 30%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[sampling] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[schema_validators] [gw38] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[legacy_routing] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[lifespan] [gw7] [ 30%] PASSED tests/interaction/auth/test_as_handlers.py::test_reusing_an_authorization_code_is_rejected_with_invalid_grant tests/interaction/auth/test_as_handlers.py::test_a_redirect_uri_differing_from_authorize_is_rejected_at_the_token_endpoint [gw44] [ 30%] PASSED tests/docs_src/test_structured_output.py::test_return_value_is_validated_against_the_schema [gw5] [ 30%] PASSED tests/interaction/auth/test_bearer.py::test_an_expired_token_is_answered_401 tests/interaction/auth/test_bearer.py::test_a_token_missing_a_required_scope_is_answered_403_insufficient_scope_without_a_scope_param [gw11] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[sse_polling] tests/examples/test_stories.py::test_main_signature_matches_manifest[legacy_elicitation] [gw12] [ 30%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[legacy_elicitation] tests/examples/test_stories.py::test_main_signature_matches_manifest[legacy_routing] [gw6] [ 30%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[streaming] tests/docs_src/test_structured_output.py::test_structured_output_false_opts_out [gw38] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[lifespan] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[middleware] [gw7] [ 30%] PASSED tests/interaction/auth/test_as_handlers.py::test_a_redirect_uri_differing_from_authorize_is_rejected_at_the_token_endpoint tests/interaction/auth/test_as_handlers.py::test_token_responses_carry_cache_control_no_store [gw27] [ 30%] PASSED tests/docs/test_translations.py::test_heading_ids_are_the_ones_the_site_renderer_produces tests/docs/test_translations.py::test_heading_the_source_scan_cannot_pin_makes_the_page_an_error [gw39] [ 30%] PASSED tests/examples/test_stories.py::test_story[resources-server-in-memory-legacy] tests/examples/test_stories.py::test_story[resources-server-http-asgi-modern] [gw5] [ 30%] PASSED tests/interaction/auth/test_bearer.py::test_a_token_missing_a_required_scope_is_answered_403_insufficient_scope_without_a_scope_param tests/interaction/auth/test_bearer.py::test_a_token_not_issued_for_this_resource_is_answered_401[tok-wrong-aud] [gw20] [ 30%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[schema_validators] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[sse_polling] [gw20] [ 30%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[sse_polling] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[standalone_get] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[standalone_get] [gw12] [ 30%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[legacy_routing] tests/examples/test_stories.py::test_main_signature_matches_manifest[lifespan] [gw44] [ 30%] PASSED tests/docs_src/test_structured_output.py::test_structured_output_false_opts_out tests/docs_src/test_structured_output.py::test_content_blocks_and_media_are_opted_out_of_structured_output [gw20] [ 30%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[standalone_get] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[stateless_legacy] [gw18] [ 30%] PASSED tests/interaction/auth/test_lifecycle.py::test_client_credentials_provider_obtains_a_token_without_an_authorize_step [gw12] [ 30%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[lifespan] [gw31] [ 30%] PASSED tests/docs_src/test_cancellation.py::test_a_client_timeout_cancels_the_tool_the_same_way[auto] tests/docs_src/test_cancellation.py::test_a_client_timeout_cancels_the_tool_the_same_way[legacy] [gw11] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[standalone_get] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[starlette_mount] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial005.py] [gw38] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[middleware] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[mrtr] [gw38] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[mrtr] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[oauth] [gw20] [ 30%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[stateless_legacy] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[stickynotes] [gw4] [ 30%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/extensions/tutorial005.py] tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[in-memory-2025-11-25] [gw7] [ 30%] PASSED tests/interaction/auth/test_as_handlers.py::test_token_responses_carry_cache_control_no_store tests/interaction/auth/test_as_handlers.py::test_registration_with_invalid_metadata_is_rejected_with_400 [gw7] [ 30%] PASSED tests/interaction/auth/test_as_handlers.py::test_registration_with_invalid_metadata_is_rejected_with_400 tests/interaction/auth/test_as_handlers.py::test_registration_response_echoes_the_registered_application_type[web] tests/interaction/auth/test_lifecycle.py::test_private_key_jwt_provider_authenticates_the_token_request_with_an_assertion tests/examples/test_stories.py::test_main_signature_matches_manifest[middleware] [gw12] [ 30%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[middleware] tests/examples/test_stories.py::test_main_signature_matches_manifest[mrtr] [gw38] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[oauth] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[oauth_client_credentials] [gw44] [ 30%] PASSED tests/docs_src/test_structured_output.py::test_content_blocks_and_media_are_opted_out_of_structured_output tests/docs_src/test_structured_output.py::test_class_without_type_hints_is_silently_unstructured [gw20] [ 30%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[stickynotes] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[streaming] [gw11] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[starlette_mount] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[stateless_legacy] [gw7] [ 30%] PASSED tests/interaction/auth/test_as_handlers.py::test_registration_response_echoes_the_registered_application_type[web] tests/interaction/auth/test_as_handlers.py::test_registration_response_echoes_the_registered_application_type[native] [gw39] [ 30%] PASSED tests/examples/test_stories.py::test_story[resources-server-http-asgi-modern] [gw20] [ 30%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[streaming] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[subscriptions] [gw20] [ 30%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[subscriptions] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[tools] tests/examples/test_stories.py::test_story[resources-server-http-asgi-legacy] [gw38] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[oauth_client_credentials] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[pagination] [gw12] [ 30%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[mrtr] tests/examples/test_stories.py::test_main_signature_matches_manifest[oauth] [gw12] [ 30%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[oauth] [gw4] [ 30%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[in-memory-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[sse-2025-11-25] [gw18] [ 30%] PASSED tests/interaction/auth/test_lifecycle.py::test_private_key_jwt_provider_authenticates_the_token_request_with_an_assertion tests/interaction/auth/test_lifecycle.py::test_registration_priority_prefers_preregistered_then_cimd_then_dcr[cimd_unsupported_falls_through_to_dcr] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/logging/tutorial001.py] [gw0] [ 30%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/logging/tutorial001.py] tests/interaction/lowlevel/test_cancellation.py::test_abandoning_one_call_leaves_a_concurrent_call_running[streamable-http-2026-07-28] [gw11] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[stateless_legacy] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[stickynotes] [gw38] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[pagination] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[parallel_calls] [gw7] [ 30%] PASSED tests/interaction/auth/test_as_handlers.py::test_registration_response_echoes_the_registered_application_type[native] tests/interaction/auth/test_as_handlers.py::test_authorize_with_an_unregistered_redirect_uri_is_rejected_directly [gw7] [ 30%] PASSED tests/interaction/auth/test_as_handlers.py::test_authorize_with_an_unregistered_redirect_uri_is_rejected_directly tests/interaction/auth/test_as_handlers.py::test_a_non_loopback_http_redirect_uri_is_accepted_at_registration [gw30] [ 30%] PASSED tests/docs/test_translations.py::test_translate_pages_retranslates_the_named_pages_from_scratch_even_when_a_translation_exists tests/docs/test_translations.py::test_outdated_page_retranslates_the_changed_section_and_carries_the_rest_forward [gw44] [ 30%] PASSED tests/docs_src/test_structured_output.py::test_class_without_type_hints_is_silently_unstructured tests/docs_src/test_structured_output.py::test_structured_output_true_makes_the_silence_an_error [gw44] [ 30%] PASSED tests/docs_src/test_structured_output.py::test_structured_output_true_makes_the_silence_an_error tests/docs_src/test_subscriptions.py::test_publishes_reach_the_stream_filtered_and_tagged [gw20] [ 30%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[tools] tests/examples/test_story_shape.py::test_scaffold_imports_no_story_module[_harness.py] tests/examples/test_stories.py::test_main_signature_matches_manifest[oauth_client_credentials] [gw38] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[parallel_calls] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[prompts] [gw7] [ 30%] PASSED tests/interaction/auth/test_as_handlers.py::test_a_non_loopback_http_redirect_uri_is_accepted_at_registration tests/interaction/auth/test_authorize_token.py::test_the_authorize_url_carries_s256_pkce_and_the_resource_indicator [gw12] [ 30%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[oauth_client_credentials] [gw20] [ 30%] PASSED tests/examples/test_story_shape.py::test_scaffold_imports_no_story_module[_harness.py] tests/examples/test_story_shape.py::test_scaffold_imports_no_story_module[_hosting.py] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/pagination/tutorial001.py] [gw4] [ 30%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[sse-2025-11-25] [gw34] [ 30%] PASSED tests/docs_src/test_elicitation.py::test_the_docs_client_callback_handles_both_modes [gw11] [ 30%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[stickynotes] [gw3] [ 31%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/pagination/tutorial001.py] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[streaming] tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[streamable-http-2025-11-25] [gw24] [ 31%] PASSED tests/client/test_stdio.py::test_the_grace_wait_reads_returncode_so_trio_can_reap_the_leaders_zombie[trio] tests/client/test_stdio.py::test_exiting_the_context_terminates_the_entire_process_tree [gw20] [ 31%] PASSED tests/examples/test_story_shape.py::test_scaffold_imports_no_story_module[_hosting.py] [gw38] [ 31%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[prompts] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[reconnect] [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_heading_the_source_scan_cannot_pin_makes_the_page_an_error tests/docs/test_translations.py::test_many_attribute_blocks_pin_the_last_id_only_when_they_end_the_heading [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_many_attribute_blocks_pin_the_last_id_only_when_they_end_the_heading tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[streamable-http-2025-11-25] [gw0] [ 31%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoning_one_call_leaves_a_concurrent_call_running[streamable-http-2026-07-28] tests/docs/test_translations.py::test_reimpose_restores_fences_pins_ids_and_leaves_reordered_links_where_the_translation_put_them [gw25] [ 31%] PASSED tests/client/test_transport_stream_cleanup.py::test_sse_client_closes_all_streams_on_connection_error tests/docs_src/test_elicitation.py::test_a_client_without_the_callback_cannot_be_asked tests/interaction/lowlevel/test_client_connect.py::test_legacy_mode_sends_initialize_and_never_probes_discover [gw38] [ 31%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[reconnect] tests/examples/test_stories.py::test_story[legacy_routing-server-http-asgi-in-body] [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_reimpose_restores_fences_pins_ids_and_leaves_reordered_links_where_the_translation_put_them tests/docs/test_translations.py::test_unwrap_ends_the_reply_with_exactly_the_trailing_newlines_of_the_english [gw18] [ 31%] PASSED tests/interaction/auth/test_lifecycle.py::test_registration_priority_prefers_preregistered_then_cimd_then_dcr[cimd_unsupported_falls_through_to_dcr] tests/interaction/auth/test_lifecycle.py::test_registration_priority_prefers_preregistered_then_cimd_then_dcr[preregistered_beats_cimd] [gw11] [ 31%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[streaming] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[subscriptions] [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_unwrap_ends_the_reply_with_exactly_the_trailing_newlines_of_the_english tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[heading-dropped] [gw34] [ 31%] PASSED tests/docs_src/test_elicitation.py::test_a_client_without_the_callback_cannot_be_asked [gw0] [ 31%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_legacy_mode_sends_initialize_and_never_probes_discover tests/docs_src/test_elicitation.py::test_resolver_asks_only_when_the_folder_is_not_empty [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[heading-dropped] tests/interaction/lowlevel/test_client_connect.py::test_pinned_mode_sends_no_connect_time_traffic tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[heading-level] [gw7] [ 31%] PASSED tests/interaction/auth/test_authorize_token.py::test_the_authorize_url_carries_s256_pkce_and_the_resource_indicator [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[heading-level] [gw39] [ 31%] PASSED tests/examples/test_stories.py::test_story[resources-server-http-asgi-legacy] tests/interaction/auth/test_authorize_token.py::test_the_code_verifier_on_the_token_request_hashes_to_the_code_challenge tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-added] [gw44] [ 31%] PASSED tests/docs_src/test_subscriptions.py::test_publishes_reach_the_stream_filtered_and_tagged [gw11] [ 31%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[subscriptions] tests/docs_src/test_subscriptions.py::test_publish_with_no_subscribers_is_a_no_op tests/examples/test_stories.py::test_story[resources-server_lowlevel-in-memory-modern] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[tools] [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-added] tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-moved-to-another-section] [gw0] [ 31%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_pinned_mode_sends_no_connect_time_traffic tests/interaction/lowlevel/test_client_connect.py::test_prior_discover_populates_state_with_zero_connect_time_traffic [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-moved-to-another-section] tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-unclosed] [gw11] [ 31%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[tools] [gw4] [ 31%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[streamable-http-2025-11-25] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[bearer_auth] [gw3] [ 31%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[streamable-http-2025-11-25] [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-unclosed] tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[target-mangled] tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[streamable-http-stateless-2025-11-25] [gw44] [ 31%] PASSED tests/docs_src/test_subscriptions.py::test_publish_with_no_subscribers_is_a_no_op [gw18] [ 31%] PASSED tests/interaction/auth/test_lifecycle.py::test_registration_priority_prefers_preregistered_then_cimd_then_dcr[preregistered_beats_cimd] [gw0] [ 31%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_prior_discover_populates_state_with_zero_connect_time_traffic tests/interaction/lowlevel/test_client_connect.py::test_auto_mode_probes_server_discover_and_adopts_the_result [gw34] [ 31%] PASSED tests/docs_src/test_elicitation.py::test_resolver_asks_only_when_the_folder_is_not_empty [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[target-mangled] tests/docs_src/test_subscriptions.py::test_lowlevel_composition_serves_the_same_stream [gw11] [ 31%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[bearer_auth] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[dual_era] tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[link-moved-to-another-section] tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[streamable-http-stateless-2025-11-25] tests/docs_src/test_elicitation.py::test_the_resolved_parameter_is_hidden_from_the_tool_schema [gw39] [ 31%] PASSED tests/examples/test_stories.py::test_story[resources-server_lowlevel-in-memory-modern] tests/examples/test_stories.py::test_story[resources-server_lowlevel-in-memory-legacy] [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[link-moved-to-another-section] tests/interaction/auth/test_login_time.py::test_auto_mode_negotiates_modern_when_the_login_far_outlasts_the_probe_deadline[trio-mockclock] [gw11] [ 31%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[dual_era] tests/docs/test_translations.py::test_validate_flags_code_spans_markers_banned_terms_and_abridgement tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[error_handling] [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_validate_flags_code_spans_markers_banned_terms_and_abridgement tests/docs/test_translations.py::test_validate_counts_list_items_and_table_rows_whatever_the_language_of_a_placeholder [gw11] [ 31%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[error_handling] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[identity_assertion] [gw7] [ 31%] PASSED tests/interaction/auth/test_authorize_token.py::test_the_code_verifier_on_the_token_request_hashes_to_the_code_challenge tests/interaction/auth/test_authorize_token.py::test_a_mismatched_state_on_the_callback_aborts_the_flow [gw44] [ 31%] PASSED tests/docs_src/test_subscriptions.py::test_lowlevel_composition_serves_the_same_stream tests/docs_src/test_subscriptions.py::test_follow_board_prints_the_refetched_board_and_the_new_tool_list [gw34] [ 31%] PASSED tests/docs_src/test_elicitation.py::test_the_resolved_parameter_is_hidden_from_the_tool_schema tests/docs_src/test_elicitation.py::test_the_tool_branches_on_every_elicitation_outcome[accept-content0-kept the folder] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/session_groups/tutorial001.py] [gw14] [ 31%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/session_groups/tutorial001.py] tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[in-memory-2026-07-28] [gw0] [ 31%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_auto_mode_probes_server_discover_and_adopts_the_result tests/interaction/lowlevel/test_client_connect.py::test_auto_mode_retries_discover_once_on_unsupported_protocol_version [gw27] [ 31%] PASSED tests/docs/test_translations.py::test_validate_counts_list_items_and_table_rows_whatever_the_language_of_a_placeholder [gw11] [ 31%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[identity_assertion] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[json_response] [gw39] [ 31%] PASSED tests/examples/test_stories.py::test_story[resources-server_lowlevel-in-memory-legacy] tests/examples/test_stories.py::test_story[resources-server_lowlevel-http-asgi-modern] [gw46] [ 31%] PASSED tests/interaction/auth/test_discovery.py::test_as_metadata_with_a_mismatched_issuer_aborts_the_flow tests/interaction/auth/test_flow.py::test_an_unauthenticated_request_is_challenged_then_the_full_oauth_flow_connects [gw18] [ 31%] PASSED tests/interaction/auth/test_login_time.py::test_auto_mode_negotiates_modern_when_the_login_far_outlasts_the_probe_deadline[trio-mockclock] tests/interaction/auth/test_login_time.py::test_auto_mode_falls_back_at_the_probe_deadline_when_the_server_never_answers_the_probe[trio-mockclock] [gw3] [ 31%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[in-memory-2026-07-28] [gw11] [ 31%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[json_response] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[legacy_elicitation] [gw14] [ 31%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[in-memory-2026-07-28] tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[streamable-http-2026-07-28] [gw5] [ 31%] PASSED tests/interaction/auth/test_bearer.py::test_a_token_not_issued_for_this_resource_is_answered_401[tok-wrong-aud] tests/interaction/auth/test_bearer.py::test_a_token_not_issued_for_this_resource_is_answered_401[tok-no-aud] [gw4] [ 31%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[in-memory-2026-07-28] [gw0] [ 31%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_auto_mode_retries_discover_once_on_unsupported_protocol_version tests/interaction/lowlevel/test_client_connect.py::test_auto_mode_propagates_a_network_error_from_discover_without_initializing tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/completions/tutorial001.py] [gw21] [ 31%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/completions/tutorial001.py] tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_cancel_returns_no_content[in-memory-2025-11-25] [gw3] [ 31%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[in-memory-2026-07-28] tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[streamable-http-2026-07-28] [gw11] [ 31%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[legacy_elicitation] [gw0] [ 31%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_auto_mode_propagates_a_network_error_from_discover_without_initializing tests/interaction/lowlevel/test_client_connect.py::test_auto_mode_falls_back_to_initialize_on_a_legacy_probe_rejection[method-not-found] [gw34] [ 32%] PASSED tests/docs_src/test_elicitation.py::test_the_tool_branches_on_every_elicitation_outcome[accept-content0-kept the folder] tests/docs_src/test_elicitation.py::test_the_tool_branches_on_every_elicitation_outcome[decline-None-declined: folder not deleted] [gw4] [ 32%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[in-memory-2026-07-28] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[legacy_routing] [gw11] [ 32%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[legacy_routing] [gw0] [ 32%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_auto_mode_falls_back_to_initialize_on_a_legacy_probe_rejection[method-not-found] tests/interaction/lowlevel/test_client_connect.py::test_auto_mode_falls_back_to_initialize_on_a_legacy_probe_rejection[invalid-request] [gw47] [ 32%] PASSED tests/docs_src/test_structured_output.py::test_scalar_return_is_wrapped tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[streamable-http-2026-07-28] tests/docs_src/test_structured_output.py::test_basemodel_is_the_schema [gw47] [ 32%] PASSED tests/docs_src/test_structured_output.py::test_basemodel_is_the_schema [gw3] [ 32%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[streamable-http-2026-07-28] [gw18] [ 32%] PASSED tests/interaction/auth/test_login_time.py::test_auto_mode_falls_back_at_the_probe_deadline_when_the_server_never_answers_the_probe[trio-mockclock] [gw39] [ 32%] PASSED tests/examples/test_stories.py::test_story[resources-server_lowlevel-http-asgi-modern] tests/interaction/auth/test_login_time.py::test_the_probe_deadline_resumes_after_the_login_with_the_budget_that_was_left[trio-mockclock] tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[in-memory-2025-11-25] tests/examples/test_stories.py::test_story[resources-server_lowlevel-http-asgi-legacy] [gw0] [ 32%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_auto_mode_falls_back_to_initialize_on_a_legacy_probe_rejection[invalid-request] [gw21] [ 32%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_cancel_returns_no_content[in-memory-2025-11-25] tests/interaction/lowlevel/test_client_connect.py::test_every_request_on_a_modern_session_carries_the_three_key_meta_envelope[in-memory-2026-07-28] tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_cancel_returns_no_content[sse-2025-11-25] [gw34] [ 32%] PASSED tests/docs_src/test_elicitation.py::test_the_tool_branches_on_every_elicitation_outcome[decline-None-declined: folder not deleted] tests/docs_src/test_elicitation.py::test_the_tool_branches_on_every_elicitation_outcome[cancel-None-cancelled: folder not deleted] [gw3] [ 32%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[in-memory-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[sse-2025-11-25] [gw0] [ 32%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_every_request_on_a_modern_session_carries_the_three_key_meta_envelope[in-memory-2026-07-28] tests/interaction/lowlevel/test_client_connect.py::test_every_request_on_a_modern_session_carries_the_three_key_meta_envelope[streamable-http-2026-07-28] tests/docs_src/test_structured_output.py::test_typeddict_produces_the_same_schema [gw46] [ 32%] PASSED tests/interaction/auth/test_flow.py::test_an_unauthenticated_request_is_challenged_then_the_full_oauth_flow_connects tests/interaction/auth/test_flow.py::test_the_access_token_reaches_the_tool_handler_via_get_access_token [gw5] [ 32%] PASSED tests/interaction/auth/test_bearer.py::test_a_token_not_issued_for_this_resource_is_answered_401[tok-no-aud] tests/interaction/auth/test_bearer.py::test_a_token_for_another_resource_is_served_when_validate_token_resource_is_off [gw4] [ 32%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_cancellation_for_unknown_request_is_ignored[streamable-http-2026-07-28] tests/interaction/lowlevel/test_cancellation.py::test_abandoned_server_request_cancels_the_client_callback[in-memory-2025-11-25] [gw5] [ 32%] PASSED tests/interaction/auth/test_bearer.py::test_a_token_for_another_resource_is_served_when_validate_token_resource_is_off tests/interaction/auth/test_bearer.py::test_a_token_issued_for_this_resource_is_served [gw0] [ 32%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_every_request_on_a_modern_session_carries_the_three_key_meta_envelope[streamable-http-2026-07-28] tests/client/test_session_claims.py::test_unknown_result_type_fails_validation_with_and_without_claims[True] tests/interaction/lowlevel/test_client_connect.py::test_http_protocol_version_header_matches_meta_protocol_version_on_every_post [gw21] [ 32%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_cancel_returns_no_content[sse-2025-11-25] [gw47] [ 32%] PASSED tests/docs_src/test_structured_output.py::test_typeddict_produces_the_same_schema [gw34] [ 32%] PASSED tests/docs_src/test_elicitation.py::test_the_tool_branches_on_every_elicitation_outcome[cancel-None-cancelled: folder not deleted] tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_cancel_returns_no_content[streamable-http-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_for_an_unknown_id_is_received_without_error[sse-2025-11-25] tests/docs_src/test_extensions.py::test_using_an_extension_advertises_its_capability [gw5] [ 32%] PASSED tests/interaction/auth/test_bearer.py::test_a_token_issued_for_this_resource_is_served [gw19] [ 32%] PASSED tests/client/test_session_claims.py::test_unknown_result_type_fails_validation_with_and_without_claims[True] [gw3] [ 32%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[sse-2025-11-25] [gw0] [ 32%] PASSED tests/interaction/lowlevel/test_client_connect.py::test_http_protocol_version_header_matches_meta_protocol_version_on_every_post tests/interaction/auth/test_bearer.py::test_an_access_token_in_the_query_string_is_not_accepted tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[in-memory-2025-11-25] [gw4] [ 32%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoned_server_request_cancels_the_client_callback[in-memory-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_instructions[in-memory-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_abandoned_server_request_cancels_the_client_callback[sse-2025-11-25] [gw18] [ 32%] PASSED tests/interaction/auth/test_login_time.py::test_the_probe_deadline_resumes_after_the_login_with_the_budget_that_was_left[trio-mockclock] [gw34] [ 32%] PASSED tests/docs_src/test_extensions.py::test_using_an_extension_advertises_its_capability tests/interaction/auth/test_login_time.py::test_a_read_timeout_shorter_than_the_login_does_not_fail_the_challenged_request[auto-trio-mockclock] tests/docs_src/test_extensions.py::test_a_prefixless_identifier_fails_at_class_definition [gw46] [ 32%] PASSED tests/interaction/auth/test_flow.py::test_the_access_token_reaches_the_tool_handler_via_get_access_token [gw34] [ 32%] PASSED tests/docs_src/test_extensions.py::test_a_prefixless_identifier_fails_at_class_definition [gw0] [ 32%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[in-memory-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[sse-2025-11-25] [gw5] [ 32%] PASSED tests/interaction/auth/test_bearer.py::test_an_access_token_in_the_query_string_is_not_accepted tests/interaction/auth/test_discovery.py::test_prm_discovery_uses_the_resource_metadata_url_from_www_authenticate tests/interaction/auth/test_flow.py::test_a_preregistered_client_skips_registration [gw39] [ 32%] PASSED tests/examples/test_stories.py::test_story[resources-server_lowlevel-http-asgi-legacy] tests/examples/test_stories.py::test_story[lifespan-server-in-memory-modern] tests/docs_src/test_deploy.py::test_a_refund_the_human_declined_is_not_issued [gw47] [ 32%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_for_an_unknown_id_is_received_without_error[sse-2025-11-25] [gw21] [ 32%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_cancel_returns_no_content[streamable-http-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_notification_carries_the_elicited_id_back_to_the_client[in-memory-2025-11-25] [gw19] [ 32%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_instructions[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_for_an_unknown_id_is_received_without_error[streamable-http-2025-11-25] tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001_client.py] tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_instructions[sse-2025-11-25] [gw31] [ 32%] PASSED tests/docs_src/test_cancellation.py::test_a_client_timeout_cancels_the_tool_the_same_way[legacy] [gw0] [ 32%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[sse-2025-11-25] [gw42] [ 32%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001_client.py] [gw18] [ 32%] PASSED tests/interaction/auth/test_login_time.py::test_a_read_timeout_shorter_than_the_login_does_not_fail_the_challenged_request[auto-trio-mockclock] tests/docs_src/test_cancellation.py::test_check_cancelled_stops_a_def_tool_at_its_next_check[auto] tests/interaction/auth/test_login_time.py::test_a_read_timeout_shorter_than_the_login_does_not_fail_the_challenged_request[legacy-trio-mockclock] tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[streamable-http-2025-11-25] [gw21] [ 32%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_notification_carries_the_elicited_id_back_to_the_client[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_notification_carries_the_elicited_id_back_to_the_client[sse-2025-11-25] [gw32] [ 32%] PASSED tests/docs_src/test_deploy.py::test_a_refund_the_human_declined_is_not_issued [gw3] [ 32%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[streamable-http-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[streamable-http-stateless-2025-11-25] [gw46] [ 32%] PASSED tests/interaction/auth/test_flow.py::test_a_preregistered_client_skips_registration tests/interaction/auth/test_flow.py::test_the_dcr_request_carries_the_client_metadata tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[streamable-http-2026-07-28] tests/interaction/lowlevel/test_initialize.py::test_unsupported_server_protocol_version_fails_initialization [gw4] [ 32%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoned_server_request_cancels_the_client_callback[sse-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_abandoned_server_request_cancels_the_client_callback[streamable-http-2025-11-25] tests/docs_src/test_media.py::test_raw_data_without_a_format_falls_back_to_a_default_mime_type [gw36] [ 32%] PASSED tests/docs_src/test_media.py::test_raw_data_without_a_format_falls_back_to_a_default_mime_type [gw32] [ 32%] PASSED tests/interaction/lowlevel/test_initialize.py::test_unsupported_server_protocol_version_fails_initialization [gw47] [ 32%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_for_an_unknown_id_is_received_without_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_an_older_supported_protocol_version_from_the_server_is_accepted tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[streamable-http-2026-07-28] tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_for_an_unknown_id_is_received_without_error[streamable-http-stateless-2025-11-25] [gw0] [ 32%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[streamable-http-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[streamable-http-stateless-2025-11-25] [gw3] [ 32%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[streamable-http-stateless-2025-11-25] [gw32] [ 32%] PASSED tests/interaction/lowlevel/test_initialize.py::test_an_older_supported_protocol_version_from_the_server_is_accepted [gw5] [ 32%] PASSED tests/interaction/auth/test_discovery.py::test_prm_discovery_uses_the_resource_metadata_url_from_www_authenticate tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[in-memory-2026-07-28] [gw19] [ 32%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_instructions[sse-2025-11-25] [gw21] [ 32%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_notification_carries_the_elicited_id_back_to_the_client[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_notification_carries_the_elicited_id_back_to_the_client[streamable-http-2025-11-25] tests/interaction/auth/test_discovery.py::test_prm_discovery_falls_back_from_path_well_known_to_root_on_404 [gw42] [ 32%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[streamable-http-2026-07-28] tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_instructions[streamable-http-2025-11-25] tests/docs_src/test_header_parameters.py::test_a_client_that_has_not_listed_the_tool_is_rejected_then_lists_and_resends_once tests/interaction/lowlevel/test_list_changed.py::test_tool_list_changed_notification[in-memory-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[in-memory-2025-11-25] [gw36] [ 32%] PASSED tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[streamable-http-2026-07-28] [gw46] [ 32%] PASSED tests/interaction/auth/test_flow.py::test_the_dcr_request_carries_the_client_metadata tests/interaction/auth/test_flow.py::test_shimmed_app_serves_overrides_404s_and_otherwise_forwards_to_the_wrapped_app [gw3] [ 32%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[in-memory-2026-07-28] tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[streamable-http-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[in-memory-2025-11-25] [gw18] [ 33%] PASSED tests/interaction/auth/test_login_time.py::test_a_read_timeout_shorter_than_the_login_does_not_fail_the_challenged_request[legacy-trio-mockclock] [gw4] [ 33%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoned_server_request_cancels_the_client_callback[streamable-http-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_a_response_for_an_unknown_request_id_is_ignored tests/client/test_client_caching.py::test_a_custom_store_without_a_url_or_target_id_is_rejected[transport] [gw32] [ 33%] PASSED tests/interaction/lowlevel/test_list_changed.py::test_tool_list_changed_notification[in-memory-2025-11-25] tests/interaction/auth/test_login_time.py::test_a_read_timeout_shorter_than_the_login_does_not_fail_the_challenged_request[2026-07-28-trio-mockclock] [gw0] [ 33%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[in-memory-2026-07-28] [gw16] [ 33%] PASSED tests/client/test_client_caching.py::test_a_custom_store_without_a_url_or_target_id_is_rejected[transport] tests/interaction/lowlevel/test_list_changed.py::test_tool_list_changed_notification[sse-2025-11-25] [gw4] [ 33%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_a_response_for_an_unknown_request_id_is_ignored tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[sse-2025-11-25] [gw47] [ 33%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_for_an_unknown_id_is_received_without_error[streamable-http-stateless-2025-11-25] [gw42] [ 33%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[in-memory-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_timed_out_initialize_sends_no_cancellation [gw46] [ 33%] PASSED tests/interaction/auth/test_flow.py::test_shimmed_app_serves_overrides_404s_and_otherwise_forwards_to_the_wrapped_app tests/interaction/auth/test_identity_assertion.py::test_identity_assertion_obtains_a_token_and_authorizes_the_request tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_a_mode_less_elicitation_request_is_treated_as_form_mode [gw0] [ 33%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[in-memory-2026-07-28] tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[streamable-http-2026-07-28] [gw4] [ 33%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_timed_out_initialize_sends_no_cancellation tests/interaction/lowlevel/test_cancellation.py::test_abandoning_a_call_stops_the_server_handler[in-memory-2025-11-25] [gw37] [ 33%] PASSED tests/docs_src/test_header_parameters.py::test_a_client_that_has_not_listed_the_tool_is_rejected_then_lists_and_resends_once [gw7] [ 33%] PASSED tests/interaction/auth/test_authorize_token.py::test_a_mismatched_state_on_the_callback_aborts_the_flow [gw36] [ 33%] PASSED tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[in-memory-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[sse-2025-11-25] tests/interaction/auth/test_authorize_token.py::test_a_mismatched_iss_on_the_callback_aborts_the_flow tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[in-memory-2025-11-25] [gw47] [ 33%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_a_mode_less_elicitation_request_is_treated_as_form_mode tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[in-memory-2025-11-25] [gw21] [ 33%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_notification_carries_the_elicited_id_back_to_the_client[streamable-http-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_url_elicitation_required_error_carries_pending_elicitations[in-memory-2025-11-25] [gw3] [ 33%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_receives_context_arguments[streamable-http-2026-07-28] tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[in-memory-2025-11-25] [gw30] [ 33%] PASSED tests/docs/test_translations.py::test_outdated_page_retranslates_the_changed_section_and_carries_the_rest_forward [gw18] [ 33%] PASSED tests/interaction/auth/test_login_time.py::test_a_read_timeout_shorter_than_the_login_does_not_fail_the_challenged_request[2026-07-28-trio-mockclock] [gw0] [ 33%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_prompt_argument[streamable-http-2026-07-28] tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[in-memory-2025-11-25] [gw4] [ 33%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoning_a_call_stops_the_server_handler[in-memory-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_abandoning_a_call_stops_the_server_handler[sse-2025-11-25] tests/interaction/auth/test_login_time.py::test_an_authorization_server_that_hangs_still_times_the_request_out[/register-0-5.0-trio-mockclock] tests/docs/test_translations.py::test_banned_rendering_is_a_finding_in_a_retranslated_section_but_not_in_a_carried_one [gw5] [ 33%] PASSED tests/interaction/auth/test_discovery.py::test_prm_discovery_falls_back_from_path_well_known_to_root_on_404 [gw21] [ 33%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_url_elicitation_required_error_carries_pending_elicitations[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_url_elicitation_required_error_carries_pending_elicitations[sse-2025-11-25] [gw19] [ 33%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_instructions[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_instructions[streamable-http-stateless-2025-11-25] [gw0] [ 33%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[in-memory-2025-11-25] [gw37] [ 33%] PASSED tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[in-memory-2025-11-25] [gw3] [ 33%] PASSED tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[in-memory-2025-11-25] [gw36] [ 33%] PASSED tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[sse-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[streamable-http-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[sse-2025-11-25] tests/interaction/auth/test_discovery.py::test_when_every_prm_probe_fails_the_client_discovers_as_metadata_at_the_server_origin tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[sse-2025-11-25] [gw22] [ 33%] PASSED tests/client/test_stdio.py::test_spawn_failure_propagates_the_error_and_leaks_no_streams tests/client/test_stdio.py::test_a_command_that_cannot_be_execed_raises_enoent [gw47] [ 33%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[in-memory-2025-11-25] tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[sse-2025-11-25] [gw32] [ 33%] PASSED tests/interaction/lowlevel/test_list_changed.py::test_tool_list_changed_notification[sse-2025-11-25] tests/interaction/lowlevel/test_list_changed.py::test_tool_list_changed_notification[streamable-http-2025-11-25] [gw46] [ 33%] PASSED tests/interaction/auth/test_identity_assertion.py::test_identity_assertion_obtains_a_token_and_authorizes_the_request tests/interaction/auth/test_identity_assertion.py::test_configured_scope_is_sent_regardless_of_server_advertised_scopes [gw42] [ 33%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[sse-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[streamable-http-2025-11-25] [gw18] [ 33%] PASSED tests/interaction/auth/test_login_time.py::test_an_authorization_server_that_hangs_still_times_the_request_out[/register-0-5.0-trio-mockclock] tests/interaction/auth/test_login_time.py::test_an_authorization_server_that_hangs_still_times_the_request_out[/token-1-3605.0-trio-mockclock] [gw21] [ 33%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_url_elicitation_required_error_carries_pending_elicitations[sse-2025-11-25] [gw4] [ 33%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoning_a_call_stops_the_server_handler[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_url_elicitation_required_error_carries_pending_elicitations[streamable-http-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_abandoning_a_call_stops_the_server_handler[streamable-http-2025-11-25] [gw19] [ 33%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_instructions[streamable-http-stateless-2025-11-25] [gw3] [ 33%] PASSED tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[sse-2025-11-25] tests/docs_src/test_completions.py::test_empty_value_returns_every_suggestion tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_capabilities_reflect_registered_handlers[in-memory-2025-11-25] [gw46] [ 33%] PASSED tests/interaction/auth/test_identity_assertion.py::test_configured_scope_is_sent_regardless_of_server_advertised_scopes [gw47] [ 33%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[sse-2025-11-25] [gw32] [ 33%] PASSED tests/interaction/lowlevel/test_list_changed.py::test_tool_list_changed_notification[streamable-http-2025-11-25] tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[auto] [gw36] [ 33%] PASSED tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[streamable-http-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[streamable-http-2025-11-25] tests/client/test_session_notification_bindings.py::test_handler_exception_is_contained_and_later_events_deliver tests/interaction/auth/test_identity_assertion.py::test_assertion_callback_receives_issuer_audience_and_resource [gw18] [ 33%] PASSED tests/interaction/auth/test_login_time.py::test_an_authorization_server_that_hangs_still_times_the_request_out[/token-1-3605.0-trio-mockclock] tests/interaction/auth/test_login_time.py::test_cancelling_the_caller_mid_login_abandons_the_login[trio-mockclock] tests/interaction/lowlevel/test_list_changed.py::test_resource_list_changed_notification[in-memory-2025-11-25] [gw29] [ 33%] PASSED tests/docs_src/test_completions.py::test_empty_value_returns_every_suggestion tests/interaction/lowlevel/test_progress.py::test_progress_token_visible_to_handler[sse-2025-11-25] [gw19] [ 33%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_capabilities_reflect_registered_handlers[in-memory-2025-11-25] [gw37] [ 33%] PASSED tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[sse-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_capabilities_reflect_registered_handlers[sse-2025-11-25] [gw5] [ 33%] PASSED tests/interaction/auth/test_discovery.py::test_when_every_prm_probe_fails_the_client_discovers_as_metadata_at_the_server_origin tests/interaction/auth/test_discovery.py::test_a_400_from_the_registration_endpoint_surfaces_as_a_registration_error [gw32] [ 33%] PASSED tests/interaction/lowlevel/test_list_changed.py::test_resource_list_changed_notification[in-memory-2025-11-25] tests/interaction/lowlevel/test_list_changed.py::test_resource_list_changed_notification[sse-2025-11-25] [gw21] [ 33%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_url_elicitation_required_error_carries_pending_elicitations[streamable-http-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_url_elicitation_required_error_carries_pending_elicitations[streamable-http-stateless-2025-11-25] [gw31] [ 33%] PASSED tests/docs_src/test_cancellation.py::test_check_cancelled_stops_a_def_tool_at_its_next_check[auto] tests/docs_src/test_cancellation.py::test_check_cancelled_stops_a_def_tool_at_its_next_check[legacy] [gw33] [ 33%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[auto] [gw42] [ 33%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[streamable-http-2025-11-25] tests/docs_src/test_caching.py::test_the_handler_value_wins_over_the_map_per_field tests/interaction/lowlevel/test_progress.py::test_progress_sent_after_the_response_is_not_delivered_to_the_callback[in-memory-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[streamable-http-stateless-2025-11-25] [gw18] [ 33%] PASSED tests/interaction/auth/test_login_time.py::test_cancelling_the_caller_mid_login_abandons_the_login[trio-mockclock] [gw36] [ 33%] PASSED tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[streamable-http-stateless-2025-11-25] tests/interaction/auth/test_login_time.py::test_a_login_suspends_only_the_timeout_of_the_request_that_was_challenged[trio-mockclock] [gw3] [ 33%] PASSED tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[streamable-http-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[in-memory-2026-07-28] [gw28] [ 33%] PASSED tests/docs_src/test_caching.py::test_the_handler_value_wins_over_the_map_per_field [gw46] [ 33%] PASSED tests/interaction/auth/test_identity_assertion.py::test_assertion_callback_receives_issuer_audience_and_resource [gw7] [ 33%] PASSED tests/interaction/auth/test_authorize_token.py::test_a_mismatched_iss_on_the_callback_aborts_the_flow tests/interaction/auth/test_identity_assertion.py::test_unexpected_issuer_aborts_before_sending_credentials tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[streamable-http-stateless-2025-11-25] tests/interaction/auth/test_authorize_token.py::test_the_authorization_code_token_request_carries_grant_type_code_redirect_and_resource [gw29] [ 33%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_token_visible_to_handler[sse-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[streamable-http-2026-07-28] [gw21] [ 34%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_url_elicitation_required_error_carries_pending_elicitations[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_schema_with_every_primitive_and_enum_type_reaches_the_callback_as_sent[in-memory-2025-11-25] [gw19] [ 34%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_capabilities_reflect_registered_handlers[sse-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_capabilities_reflect_registered_handlers[streamable-http-2025-11-25] [gw36] [ 34%] PASSED tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[in-memory-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[streamable-http-2026-07-28] [gw47] [ 34%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[streamable-http-2025-11-25] tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[streamable-http-stateless-2025-11-25] [gw32] [ 34%] PASSED tests/interaction/lowlevel/test_list_changed.py::test_resource_list_changed_notification[sse-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_progress_token_visible_to_handler[streamable-http-2025-11-25] [gw37] [ 34%] PASSED tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[streamable-http-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_list_changed.py::test_resource_list_changed_notification[streamable-http-2025-11-25] [gw46] [ 34%] PASSED tests/interaction/auth/test_identity_assertion.py::test_unexpected_issuer_aborts_before_sending_credentials [gw33] [ 34%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_sent_after_the_response_is_not_delivered_to_the_callback[in-memory-2025-11-25] tests/interaction/auth/test_identity_assertion.py::test_identity_assertion_is_rejected_when_disabled_on_the_server tests/interaction/lowlevel/test_progress.py::test_progress_sent_after_the_response_is_not_delivered_to_the_callback[sse-2025-11-25] [gw21] [ 34%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_schema_with_every_primitive_and_enum_type_reaches_the_callback_as_sent[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_schema_with_every_primitive_and_enum_type_reaches_the_callback_as_sent[sse-2025-11-25] [gw28] [ 34%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[streamable-http-2026-07-28] [gw36] [ 34%] PASSED tests/interaction/lowlevel/test_pagination.py::test_next_cursor_round_trips_through_the_client[streamable-http-2026-07-28] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[in-memory-2025-11-25] [gw19] [ 34%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_capabilities_reflect_registered_handlers[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_capabilities_reflect_registered_handlers[streamable-http-stateless-2025-11-25] [gw18] [ 34%] PASSED tests/interaction/auth/test_login_time.py::test_a_login_suspends_only_the_timeout_of_the_request_that_was_challenged[trio-mockclock] tests/interaction/lowlevel/test_cancellation.py::test_cancellation_stops_in_flight_handler[in-memory-2025-11-25] [gw41] [ 34%] PASSED tests/examples/test_stories.py::test_story[streaming-server-in-memory-modern] tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[in-memory-2025-11-25] [gw42] [ 34%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[in-memory-2026-07-28] [gw23] [ 34%] PASSED tests/client/test_session_notification_bindings.py::test_handler_exception_is_contained_and_later_events_deliver tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[in-memory-2026-07-28] [gw29] [ 34%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_token_visible_to_handler[streamable-http-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_progress_token_visible_to_handler[streamable-http-stateless-2025-11-25] tests/examples/test_stories.py::test_story[streaming-server-in-memory-legacy] [gw37] [ 34%] PASSED tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[in-memory-2026-07-28] [gw36] [ 34%] PASSED tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[in-memory-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[sse-2025-11-25] [gw28] [ 34%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[in-memory-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[sse-2025-11-25] [gw18] [ 34%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_cancellation_stops_in_flight_handler[in-memory-2025-11-25] [gw7] [ 34%] PASSED tests/interaction/auth/test_authorize_token.py::test_the_authorization_code_token_request_carries_grant_type_code_redirect_and_resource [gw32] [ 34%] PASSED tests/interaction/lowlevel/test_list_changed.py::test_resource_list_changed_notification[streamable-http-2025-11-25] tests/interaction/lowlevel/test_list_changed.py::test_prompt_list_changed_notification[in-memory-2025-11-25] [gw37] [ 34%] PASSED tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[in-memory-2026-07-28] [gw46] [ 34%] PASSED tests/interaction/auth/test_identity_assertion.py::test_identity_assertion_is_rejected_when_disabled_on_the_server tests/interaction/auth/test_identity_assertion.py::test_a_rejected_assertion_aborts_the_flow [gw21] [ 34%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_schema_with_every_primitive_and_enum_type_reaches_the_callback_as_sent[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_schema_with_every_primitive_and_enum_type_reaches_the_callback_as_sent[streamable-http-2025-11-25] [gw19] [ 34%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_capabilities_reflect_registered_handlers[streamable-http-stateless-2025-11-25] [gw5] [ 34%] PASSED tests/interaction/auth/test_discovery.py::test_a_400_from_the_registration_endpoint_surfaces_as_a_registration_error [gw33] [ 34%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_sent_after_the_response_is_not_delivered_to_the_callback[sse-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_progress_sent_after_the_response_is_not_delivered_to_the_callback[streamable-http-2025-11-25] tests/interaction/auth/test_authorize_token.py::test_every_mcp_request_after_auth_carries_the_bearer_header_and_never_a_query_token [gw46] [ 34%] PASSED tests/interaction/auth/test_identity_assertion.py::test_a_rejected_assertion_aborts_the_flow tests/interaction/auth/test_identity_assertion.py::test_metadata_advertises_jwt_bearer_grant_and_id_jag_profile [gw23] [ 34%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[in-memory-2026-07-28] [gw42] [ 34%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[in-memory-2026-07-28] tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[streamable-http-2026-07-28] [gw47] [ 34%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[in-memory-2026-07-28] [gw47] [ 34%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[in-memory-2026-07-28] tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[streamable-http-2026-07-28] tests/interaction/lowlevel/test_cancellation.py::test_cancellation_stops_in_flight_handler[sse-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[streamable-http-2026-07-28] [gw46] [ 34%] PASSED tests/interaction/auth/test_identity_assertion.py::test_metadata_advertises_jwt_bearer_grant_and_id_jag_profile [gw32] [ 34%] PASSED tests/interaction/lowlevel/test_list_changed.py::test_prompt_list_changed_notification[in-memory-2025-11-25] tests/interaction/lowlevel/test_list_changed.py::test_prompt_list_changed_notification[sse-2025-11-25] tests/interaction/auth/test_lifecycle.py::test_an_expired_access_token_is_transparently_refreshed_before_the_next_request [gw36] [ 34%] PASSED tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[sse-2025-11-25] [gw28] [ 34%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[sse-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[streamable-http-2026-07-28] [gw37] [ 34%] PASSED tests/interaction/lowlevel/test_pagination.py::test_an_unrecognized_pagination_cursor_is_rejected_with_invalid_params[streamable-http-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[in-memory-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_minimal_server_advertises_no_capabilities[in-memory-2025-11-25] [gw19] [ 34%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_minimal_server_advertises_no_capabilities[in-memory-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_minimal_server_advertises_no_capabilities[sse-2025-11-25] [gw47] [ 34%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_resource_link_returned_by_a_tool_can_be_followed_with_read[streamable-http-2026-07-28] [gw23] [ 34%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[streamable-http-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[streamable-http-2025-11-25] [gw3] [ 34%] PASSED tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[in-memory-2026-07-28] [gw3] [ 34%] PASSED tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[in-memory-2026-07-28] tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[streamable-http-2026-07-28] [gw3] [ 34%] PASSED tests/interaction/lowlevel/test_completion.py::test_completion_against_an_unknown_ref_is_rejected_with_invalid_params[streamable-http-2026-07-28] tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[in-memory-2025-11-25] [gw3] [ 34%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[in-memory-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[sse-2025-11-25] [gw29] [ 34%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_token_visible_to_handler[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[in-memory-2025-11-25] [gw29] [ 34%] PASSED tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[in-memory-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[sse-2025-11-25] [gw41] [ 34%] PASSED tests/examples/test_stories.py::test_story[streaming-server-in-memory-legacy] tests/examples/test_stories.py::test_story[streaming-server-http-asgi-modern] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[in-memory-2025-11-25] [gw18] [ 34%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_cancellation_stops_in_flight_handler[sse-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_cancellation_stops_in_flight_handler[streamable-http-2025-11-25] [gw42] [ 34%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_at_every_severity_level[streamable-http-2026-07-28] tests/interaction/lowlevel/test_logging.py::test_log_delivery_follows_the_per_request_log_level[in-memory-2026-07-28] [gw42] [ 34%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_delivery_follows_the_per_request_log_level[in-memory-2026-07-28] tests/interaction/lowlevel/test_logging.py::test_log_delivery_follows_the_per_request_log_level[streamable-http-2026-07-28] [gw7] [ 34%] PASSED tests/interaction/auth/test_authorize_token.py::test_every_mcp_request_after_auth_carries_the_bearer_header_and_never_a_query_token tests/interaction/auth/test_authorize_token.py::test_a_client_with_a_secret_authenticates_the_token_request_with_http_basic [gw3] [ 34%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[sse-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[streamable-http-2025-11-25] tests/interaction/lowlevel/test_flows.py::test_a_tool_handler_chains_form_elicitations_feeding_each_answer_forward[in-memory-2025-11-25] [gw23] [ 34%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[in-memory-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[sse-2025-11-25] [gw21] [ 34%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_schema_with_every_primitive_and_enum_type_reaches_the_callback_as_sent[streamable-http-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_with_a_nested_schema_is_forwarded_unchanged[in-memory-2025-11-25] [gw21] [ 34%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_with_a_nested_schema_is_forwarded_unchanged[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_with_a_nested_schema_is_forwarded_unchanged[sse-2025-11-25] [gw47] [ 34%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_tool_handler_chains_form_elicitations_feeding_each_answer_forward[in-memory-2025-11-25] [gw28] [ 34%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_flows.py::test_a_tool_handler_chains_form_elicitations_feeding_each_answer_forward[sse-2025-11-25] [gw19] [ 35%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_minimal_server_advertises_no_capabilities[sse-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_minimal_server_advertises_no_capabilities[streamable-http-2025-11-25] [gw33] [ 35%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_sent_after_the_response_is_not_delivered_to_the_callback[streamable-http-2025-11-25] [gw37] [ 35%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[in-memory-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[sse-2025-11-25] [gw32] [ 35%] PASSED tests/interaction/lowlevel/test_list_changed.py::test_prompt_list_changed_notification[sse-2025-11-25] tests/interaction/lowlevel/test_list_changed.py::test_prompt_list_changed_notification[streamable-http-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[in-memory-2025-11-25] [gw33] [ 35%] PASSED tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[in-memory-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[sse-2025-11-25] [gw29] [ 35%] PASSED tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[sse-2025-11-25] [gw36] [ 35%] PASSED tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[streamable-http-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[streamable-http-stateless-2025-11-25] [gw46] [ 35%] PASSED tests/interaction/auth/test_lifecycle.py::test_an_expired_access_token_is_transparently_refreshed_before_the_next_request tests/interaction/auth/test_lifecycle.py::test_a_refreshed_access_token_is_still_accepted_when_the_server_validates_token_resource [gw28] [ 35%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[streamable-http-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[in-memory-2026-07-28] [gw37] [ 35%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[sse-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[streamable-http-2025-11-25] tests/client/test_client.py::test_client_auto_mode_recovers_from_a_timed_out_probe_over_a_stream_loop [gw3] [ 35%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[streamable-http-2025-11-25] tests/interaction/auth/test_discovery.py::test_a_registration_response_with_substituted_metadata_completes_the_flow [gw5] [ 35%] PASSED tests/interaction/auth/test_discovery.py::test_a_registration_response_with_substituted_metadata_completes_the_flow tests/interaction/auth/test_discovery.py::test_a_registration_assigning_unusable_credentials_surfaces_as_a_registration_error[unimplemented] [gw19] [ 35%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_minimal_server_advertises_no_capabilities[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_minimal_server_advertises_no_capabilities[streamable-http-stateless-2025-11-25] [gw41] [ 35%] PASSED tests/examples/test_stories.py::test_story[streaming-server-http-asgi-modern] tests/examples/test_stories.py::test_story[streaming-server-http-asgi-legacy] [gw33] [ 35%] PASSED tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[sse-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[streamable-http-2025-11-25] [gw47] [ 35%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_tool_handler_chains_form_elicitations_feeding_each_answer_forward[sse-2025-11-25] tests/interaction/lowlevel/test_flows.py::test_a_tool_handler_chains_form_elicitations_feeding_each_answer_forward[streamable-http-2025-11-25] [gw23] [ 35%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[sse-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[streamable-http-2025-11-25] tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/tools/tutorial001.py] [gw26] [ 35%] PASSED tests/docs_src/test_shape.py::test_example_avoids_retired_api[docs_src/tools/tutorial001.py] [gw32] [ 35%] PASSED tests/interaction/lowlevel/test_list_changed.py::test_prompt_list_changed_notification[streamable-http-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_set_logging_level_reaches_handler[in-memory-2025-11-25] [gw42] [ 35%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_delivery_follows_the_per_request_log_level[streamable-http-2026-07-28] tests/interaction/lowlevel/test_logging.py::test_a_request_with_an_unrecognized_log_level_is_rejected[in-memory-2026-07-28] [gw42] [ 35%] PASSED tests/interaction/lowlevel/test_logging.py::test_a_request_with_an_unrecognized_log_level_is_rejected[in-memory-2026-07-28] [gw28] [ 35%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[in-memory-2026-07-28] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[streamable-http-2026-07-28] [gw28] [ 35%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_unknown_name_is_protocol_error[streamable-http-2026-07-28] [gw29] [ 35%] PASSED tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[streamable-http-2025-11-25] [gw36] [ 35%] PASSED tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[streamable-http-stateless-2025-11-25] [gw14] [ 35%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[streamable-http-2026-07-28] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_accepted_content_returns_to_handler[in-memory-2025-11-25] [gw21] [ 35%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_with_a_nested_schema_is_forwarded_unchanged[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_with_a_nested_schema_is_forwarded_unchanged[streamable-http-2025-11-25] [gw32] [ 35%] PASSED tests/interaction/lowlevel/test_logging.py::test_set_logging_level_reaches_handler[in-memory-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_set_logging_level_reaches_handler[sse-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[in-memory-2026-07-28] [gw22] [ 35%] PASSED tests/client/test_stdio.py::test_a_command_that_cannot_be_execed_raises_enoent tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_a_request_with_an_unrecognized_log_level_is_rejected[streamable-http-2026-07-28] [gw42] [ 35%] PASSED tests/interaction/lowlevel/test_logging.py::test_a_request_with_an_unrecognized_log_level_is_rejected[streamable-http-2026-07-28] tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[in-memory-2025-11-25] [gw23] [ 35%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[streamable-http-2025-11-25] [gw19] [ 35%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_minimal_server_advertises_no_capabilities[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_info[in-memory-2025-11-25] [gw37] [ 35%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[streamable-http-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[streamable-http-stateless-2025-11-25] [gw36] [ 35%] PASSED tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[in-memory-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[streamable-http-2026-07-28] [gw14] [ 35%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_accepted_content_returns_to_handler[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_accepted_content_returns_to_handler[sse-2025-11-25] tests/client/test_stdio.py::test_cancellation_during_windows_command_resolution_returns_before_resolution_finishes tests/interaction/lowlevel/test_resources.py::test_subscribe_resource_delivers_uri_to_handler[sse-2025-11-25] tests/interaction/lowlevel/test_meta.py::test_request_meta_reaches_handler[in-memory-2025-11-25] [gw19] [ 35%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_info[in-memory-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_info[sse-2025-11-25] [gw7] [ 35%] PASSED tests/interaction/auth/test_authorize_token.py::test_a_client_with_a_secret_authenticates_the_token_request_with_http_basic tests/interaction/auth/test_authorize_token.py::test_the_registered_auth_method_is_used_regardless_of_as_metadata_advertised_methods [gw33] [ 35%] PASSED tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[streamable-http-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[streamable-http-stateless-2025-11-25] [gw22] [ 35%] PASSED tests/client/test_stdio.py::test_cancellation_during_windows_command_resolution_returns_before_resolution_finishes tests/client/test_stdio.py::test_cancellation_during_spawn_leaks_no_streams [gw5] [ 35%] PASSED tests/interaction/auth/test_discovery.py::test_a_registration_assigning_unusable_credentials_surfaces_as_a_registration_error[unimplemented] tests/interaction/auth/test_discovery.py::test_a_registration_assigning_unusable_credentials_surfaces_as_a_registration_error[unsignable] [gw46] [ 35%] PASSED tests/interaction/auth/test_lifecycle.py::test_a_refreshed_access_token_is_still_accepted_when_the_server_validates_token_resource tests/interaction/auth/test_lifecycle.py::test_a_403_insufficient_scope_triggers_one_reauthorize_with_the_challenged_scope [gw26] [ 35%] PASSED tests/interaction/lowlevel/test_resources.py::test_subscribe_resource_delivers_uri_to_handler[sse-2025-11-25] [gw32] [ 35%] PASSED tests/interaction/lowlevel/test_logging.py::test_set_logging_level_reaches_handler[sse-2025-11-25] [gw47] [ 35%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_tool_handler_chains_form_elicitations_feeding_each_answer_forward[streamable-http-2025-11-25] tests/interaction/lowlevel/test_flows.py::test_a_tool_rejected_with_url_elicitation_required_succeeds_on_retry_after_completion[in-memory-2025-11-25] [gw42] [ 35%] PASSED tests/interaction/lowlevel/test_meta.py::test_request_meta_reaches_handler[in-memory-2025-11-25] tests/interaction/lowlevel/test_meta.py::test_request_meta_reaches_handler[sse-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_set_logging_level_reaches_handler[streamable-http-2025-11-25] [gw36] [ 35%] PASSED tests/interaction/lowlevel/test_pagination.py::test_paginating_until_next_cursor_is_absent_yields_every_page[streamable-http-2026-07-28] tests/interaction/lowlevel/test_resources.py::test_subscribe_resource_delivers_uri_to_handler[streamable-http-2025-11-25] [gw21] [ 35%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_with_a_nested_schema_is_forwarded_unchanged[streamable-http-2025-11-25] [gw23] [ 35%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[streamable-http-stateless-2025-11-25] [gw28] [ 35%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[in-memory-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[sse-2025-11-25] [gw28] [ 35%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[sse-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[in-memory-2026-07-28] [gw47] [ 35%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_tool_rejected_with_url_elicitation_required_succeeds_on_retry_after_completion[in-memory-2025-11-25] tests/interaction/lowlevel/test_flows.py::test_a_tool_rejected_with_url_elicitation_required_succeeds_on_retry_after_completion[sse-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_accepted_elicitation_content_that_violates_the_schema_reaches_the_handler_unchanged[in-memory-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[streamable-http-2025-11-25] tests/client/test_extension.py::test_notification_binding_constructs [gw29] [ 35%] PASSED tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[streamable-http-stateless-2025-11-25] [gw23] [ 35%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[in-memory-2026-07-28] tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[in-memory-2026-07-28] [gw14] [ 35%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_accepted_content_returns_to_handler[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_accepted_content_returns_to_handler[streamable-http-2025-11-25] [gw36] [ 35%] PASSED tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[in-memory-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[sse-2025-11-25] [gw41] [ 35%] PASSED tests/examples/test_stories.py::test_story[streaming-server-http-asgi-legacy] [gw37] [ 35%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[streamable-http-2026-07-28] [gw7] [ 35%] PASSED tests/interaction/auth/test_authorize_token.py::test_the_registered_auth_method_is_used_regardless_of_as_metadata_advertised_methods tests/interaction/auth/test_authorize_token.py::test_scope_is_selected_from_the_www_authenticate_challenge_over_prm_metadata tests/examples/test_stories.py::test_story[streaming-server_lowlevel-in-memory-modern] tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[in-memory-2026-07-28] [gw15] [ 35%] PASSED tests/client/test_extension.py::test_notification_binding_constructs tests/interaction/lowlevel/test_roots.py::test_list_roots_empty[streamable-http-2025-11-25] [gw46] [ 36%] PASSED tests/interaction/auth/test_lifecycle.py::test_a_403_insufficient_scope_triggers_one_reauthorize_with_the_challenged_scope [gw19] [ 36%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_info[sse-2025-11-25] [gw33] [ 36%] PASSED tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[in-memory-2026-07-28] tests/interaction/auth/test_lifecycle.py::test_a_403_step_up_re_authorizes_with_the_union_of_prior_and_challenged_scopes tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_info[streamable-http-2025-11-25] [gw21] [ 36%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_accepted_elicitation_content_that_violates_the_schema_reaches_the_handler_unchanged[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_accepted_elicitation_content_that_violates_the_schema_reaches_the_handler_unchanged[sse-2025-11-25] [gw29] [ 36%] PASSED tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[in-memory-2026-07-28] tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[streamable-http-2026-07-28] [gw23] [ 36%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_multiple_messages_preserve_roles_and_order[streamable-http-2026-07-28] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[in-memory-2025-11-25] [gw30] [ 36%] PASSED tests/docs/test_translations.py::test_banned_rendering_is_a_finding_in_a_retranslated_section_but_not_in_a_carried_one [gw32] [ 36%] PASSED tests/interaction/lowlevel/test_logging.py::test_set_logging_level_reaches_handler[streamable-http-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_set_logging_level_reaches_handler[streamable-http-stateless-2025-11-25] [gw37] [ 36%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[in-memory-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[streamable-http-2026-07-28] [gw28] [ 36%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[streamable-http-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[streamable-http-stateless-2025-11-25] [gw41] [ 36%] PASSED tests/examples/test_stories.py::test_story[streaming-server_lowlevel-in-memory-modern] tests/examples/test_stories.py::test_story[streaming-server_lowlevel-in-memory-legacy] tests/docs/test_translations.py::test_link_dropped_in_a_carried_section_costs_no_repair_turn_and_the_stored_section_is_kept [gw33] [ 36%] PASSED tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[in-memory-2026-07-28] tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[streamable-http-2026-07-28] [gw26] [ 36%] PASSED tests/interaction/lowlevel/test_resources.py::test_subscribe_resource_delivers_uri_to_handler[streamable-http-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_subscribe_resource_delivers_uri_to_handler[streamable-http-stateless-2025-11-25] [gw23] [ 36%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[in-memory-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[sse-2025-11-25] [gw42] [ 36%] PASSED tests/interaction/lowlevel/test_meta.py::test_request_meta_reaches_handler[sse-2025-11-25] tests/interaction/lowlevel/test_meta.py::test_request_meta_reaches_handler[streamable-http-2025-11-25] [gw4] [ 36%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoning_a_call_stops_the_server_handler[streamable-http-2025-11-25] [gw36] [ 36%] PASSED tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[sse-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[streamable-http-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_abandoning_a_call_stops_the_server_handler[in-memory-2026-07-28] [gw47] [ 36%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_tool_rejected_with_url_elicitation_required_succeeds_on_retry_after_completion[sse-2025-11-25] tests/interaction/lowlevel/test_flows.py::test_a_tool_rejected_with_url_elicitation_required_succeeds_on_retry_after_completion[streamable-http-2025-11-25] [gw14] [ 36%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_accepted_content_returns_to_handler[streamable-http-2025-11-25] [gw29] [ 36%] PASSED tests/interaction/lowlevel/test_progress.py::test_no_progress_callback_means_no_token[streamable-http-2026-07-28] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_decline_returns_no_content[in-memory-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_client_progress_notification_reaches_server_handler[in-memory-2025-11-25] [gw41] [ 36%] PASSED tests/examples/test_stories.py::test_story[streaming-server_lowlevel-in-memory-legacy] tests/examples/test_stories.py::test_story[streaming-server_lowlevel-http-asgi-modern] [gw31] [ 36%] PASSED tests/docs_src/test_cancellation.py::test_check_cancelled_stops_a_def_tool_at_its_next_check[legacy] tests/docs_src/test_cancellation.py::test_a_def_tool_nobody_cancels_indexes_every_book_and_cleans_up [gw37] [ 36%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resources_list_supports_cursor_pagination[streamable-http-2026-07-28] [gw28] [ 36%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[in-memory-2026-07-28] [gw33] [ 36%] PASSED tests/interaction/lowlevel/test_progress.py::test_non_increasing_progress_values_are_forwarded_unchanged[streamable-http-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[in-memory-2025-11-25] [gw32] [ 36%] PASSED tests/interaction/lowlevel/test_logging.py::test_set_logging_level_reaches_handler[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[in-memory-2025-11-25] [gw4] [ 36%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoning_a_call_stops_the_server_handler[in-memory-2026-07-28] tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[in-memory-2025-11-25] [gw10] [ 36%] PASSED tests/client/test_client_extensions.py::test_declarations_are_read_exactly_once_at_construction tests/examples/test_story_shape.py::test_main_constructs_client_inline[custom_methods] [gw14] [ 36%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_decline_returns_no_content[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_decline_returns_no_content[sse-2025-11-25] [gw46] [ 36%] PASSED tests/interaction/auth/test_lifecycle.py::test_a_403_step_up_re_authorizes_with_the_union_of_prior_and_challenged_scopes tests/interaction/auth/test_lifecycle.py::test_credentials_bound_to_a_different_issuer_are_discarded_and_the_client_re_registers [gw37] [ 36%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[in-memory-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[sse-2025-11-25] [gw29] [ 36%] PASSED tests/interaction/lowlevel/test_progress.py::test_client_progress_notification_reaches_server_handler[in-memory-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_client_progress_notification_reaches_server_handler[sse-2025-11-25] [gw33] [ 36%] PASSED tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[in-memory-2025-11-25] [gw9] [ 36%] PASSED tests/client/test_client.py::test_client_auto_mode_recovers_from_a_timed_out_probe_over_a_stream_loop tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[in-memory-2025-11-25] [gw28] [ 36%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[in-memory-2026-07-28] tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[streamable-http-2026-07-28] tests/interaction/lowlevel/test_cancellation.py::test_abandoning_a_call_stops_the_server_handler[streamable-http-2026-07-28] [gw10] [ 36%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[custom_methods] tests/examples/test_story_shape.py::test_main_constructs_client_inline[dual_era] [gw21] [ 36%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_accepted_elicitation_content_that_violates_the_schema_reaches_the_handler_unchanged[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_accepted_elicitation_content_that_violates_the_schema_reaches_the_handler_unchanged[streamable-http-2025-11-25] [gw23] [ 36%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[sse-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[streamable-http-2025-11-25] [gw32] [ 36%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[in-memory-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[sse-2025-11-25] [gw26] [ 36%] PASSED tests/interaction/lowlevel/test_resources.py::test_subscribe_resource_delivers_uri_to_handler[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_subscribe_without_a_subscribe_handler_is_method_not_found[in-memory-2025-11-25] [gw26] [ 36%] PASSED tests/interaction/lowlevel/test_resources.py::test_subscribe_without_a_subscribe_handler_is_method_not_found[in-memory-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_subscribe_without_a_subscribe_handler_is_method_not_found[sse-2025-11-25] [gw5] [ 36%] PASSED tests/interaction/auth/test_discovery.py::test_a_registration_assigning_unusable_credentials_surfaces_as_a_registration_error[unsignable] tests/interaction/auth/test_discovery.py::test_a_registration_assigning_unusable_credentials_surfaces_as_a_registration_error[secret-not-issued] [gw36] [ 36%] PASSED tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[streamable-http-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[streamable-http-stateless-2025-11-25] [gw15] [ 36%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_empty[streamable-http-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_list_roots_without_callback_is_error[in-memory-2025-11-25] [gw15] [ 36%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_without_callback_is_error[in-memory-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_list_roots_without_callback_is_error[sse-2025-11-25] [gw29] [ 36%] PASSED tests/interaction/lowlevel/test_progress.py::test_client_progress_notification_reaches_server_handler[sse-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_client_progress_notification_reaches_server_handler[streamable-http-2025-11-25] [gw19] [ 36%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_info[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_capabilities[in-memory-2025-11-25] [gw19] [ 36%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_capabilities[in-memory-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_capabilities[sse-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[sse-2025-11-25] [gw23] [ 36%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[streamable-http-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[streamable-http-stateless-2025-11-25] [gw37] [ 36%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[sse-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[streamable-http-2025-11-25] [gw28] [ 36%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resources_returns_registered_resources[streamable-http-2026-07-28] tests/interaction/lowlevel/test_resources.py::test_read_resource_text[in-memory-2025-11-25] [gw28] [ 36%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_text[in-memory-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_read_resource_text[sse-2025-11-25] [gw14] [ 36%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_decline_returns_no_content[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_decline_returns_no_content[streamable-http-2025-11-25] [gw10] [ 36%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[dual_era] tests/examples/test_story_shape.py::test_main_constructs_client_inline[error_handling] [gw10] [ 36%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[error_handling] tests/examples/test_story_shape.py::test_main_constructs_client_inline[extensions] [gw10] [ 36%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[extensions] tests/docs_src/test_extensions.py::test_extension_settings_advertised_under_capabilities [gw41] [ 36%] PASSED tests/examples/test_stories.py::test_story[streaming-server_lowlevel-http-asgi-modern] tests/examples/test_stories.py::test_story[streaming-server_lowlevel-http-asgi-legacy] [gw7] [ 36%] PASSED tests/interaction/auth/test_authorize_token.py::test_scope_is_selected_from_the_www_authenticate_challenge_over_prm_metadata tests/interaction/auth/test_authorize_token.py::test_pkce_is_still_sent_when_as_metadata_omits_code_challenge_methods_supported [gw42] [ 36%] PASSED tests/interaction/lowlevel/test_meta.py::test_request_meta_reaches_handler[streamable-http-2025-11-25] tests/interaction/lowlevel/test_meta.py::test_request_meta_reaches_handler[streamable-http-stateless-2025-11-25] [gw29] [ 37%] PASSED tests/interaction/lowlevel/test_progress.py::test_client_progress_notification_reaches_server_handler[streamable-http-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_client_progress_notification_reaches_server_handler[streamable-http-stateless-2025-11-25] [gw47] [ 37%] PASSED tests/interaction/lowlevel/test_flows.py::test_a_tool_rejected_with_url_elicitation_required_succeeds_on_retry_after_completion[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_server_info[in-memory-2025-11-25] [gw47] [ 37%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_server_info[in-memory-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_server_info[sse-2025-11-25] [gw32] [ 37%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[sse-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[streamable-http-2025-11-25] [gw34] [ 37%] PASSED tests/docs_src/test_extensions.py::test_extension_settings_advertised_under_capabilities [gw4] [ 37%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoning_a_call_stops_the_server_handler[streamable-http-2026-07-28] tests/interaction/lowlevel/test_cancellation.py::test_abandoning_one_call_leaves_a_concurrent_call_running[in-memory-2025-11-25] [gw4] [ 37%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoning_one_call_leaves_a_concurrent_call_running[in-memory-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_abandoning_one_call_leaves_a_concurrent_call_running[sse-2025-11-25] tests/examples/test_story_shape.py::test_main_constructs_client_inline[identity_assertion] tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_image_content_reaches_callback[streamable-http-2025-11-25] [gw10] [ 37%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[identity_assertion] [gw21] [ 37%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_accepted_elicitation_content_that_violates_the_schema_reaches_the_handler_unchanged[streamable-http-2025-11-25] [gw23] [ 37%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[in-memory-2026-07-28] [gw36] [ 37%] PASSED tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[in-memory-2026-07-28] tests/examples/test_story_shape.py::test_main_constructs_client_inline[json_response] [gw26] [ 37%] PASSED tests/interaction/lowlevel/test_resources.py::test_subscribe_without_a_subscribe_handler_is_method_not_found[sse-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_subscribe_without_a_subscribe_handler_is_method_not_found[streamable-http-2025-11-25] [gw42] [ 37%] PASSED tests/interaction/lowlevel/test_meta.py::test_request_meta_reaches_handler[streamable-http-stateless-2025-11-25] [gw9] [ 37%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[in-memory-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[sse-2025-11-25] [gw10] [ 37%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[json_response] [gw28] [ 37%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_text[sse-2025-11-25] [gw33] [ 37%] PASSED tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[sse-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[streamable-http-2025-11-25] [gw7] [ 37%] PASSED tests/interaction/auth/test_authorize_token.py::test_pkce_is_still_sent_when_as_metadata_omits_code_challenge_methods_supported tests/interaction/auth/test_authorize_token.py::test_an_authorize_error_on_the_callback_aborts_the_flow_before_the_token_request [gw23] [ 37%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[in-memory-2026-07-28] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[streamable-http-2026-07-28] tests/interaction/lowlevel/test_resources.py::test_read_resource_text[streamable-http-2025-11-25] [gw15] [ 37%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_without_callback_is_error[sse-2025-11-25] [gw37] [ 37%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[streamable-http-2025-11-25] [gw46] [ 37%] PASSED tests/interaction/auth/test_lifecycle.py::test_credentials_bound_to_a_different_issuer_are_discarded_and_the_client_re_registers tests/interaction/auth/test_lifecycle.py::test_a_second_401_after_a_completed_oauth_flow_surfaces_without_looping tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[streamable-http-stateless-2025-11-25] [gw36] [ 37%] PASSED tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[in-memory-2026-07-28] [gw29] [ 37%] PASSED tests/interaction/lowlevel/test_progress.py::test_client_progress_notification_reaches_server_handler[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[in-memory-2025-11-25] [gw47] [ 37%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_server_info[sse-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_server_info[streamable-http-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_list_roots_without_callback_is_error[streamable-http-2025-11-25] [gw32] [ 37%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[streamable-http-2025-11-25] tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[streamable-http-stateless-2025-11-25] [gw14] [ 37%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_decline_returns_no_content[streamable-http-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_cancel_returns_no_content[in-memory-2025-11-25] [gw46] [ 37%] PASSED tests/interaction/auth/test_lifecycle.py::test_a_second_401_after_a_completed_oauth_flow_surfaces_without_looping tests/interaction/auth/test_lifecycle.py::test_cimd_is_selected_when_the_as_advertises_support_and_a_metadata_url_is_supplied tests/examples/test_story_shape.py::test_main_constructs_client_inline[legacy_elicitation] [gw10] [ 37%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[legacy_elicitation] tests/examples/test_story_shape.py::test_main_constructs_client_inline[legacy_routing] tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[in-memory-2025-11-25] [gw42] [ 37%] PASSED tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[in-memory-2025-11-25] tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[sse-2025-11-25] [gw10] [ 37%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[legacy_routing] [gw9] [ 37%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[sse-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[streamable-http-2025-11-25] [gw19] [ 37%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_capabilities[sse-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_capabilities[streamable-http-2025-11-25] [gw23] [ 37%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_without_arguments_returns_the_messages[streamable-http-2026-07-28] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[in-memory-2025-11-25] [gw4] [ 37%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoning_one_call_leaves_a_concurrent_call_running[sse-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_abandoning_one_call_leaves_a_concurrent_call_running[streamable-http-2025-11-25] [gw5] [ 37%] PASSED tests/interaction/auth/test_discovery.py::test_a_registration_assigning_unusable_credentials_surfaces_as_a_registration_error[secret-not-issued] tests/interaction/auth/test_discovery.py::test_prm_with_a_mismatched_resource_aborts_the_flow_before_authorize [gw29] [ 37%] PASSED tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[in-memory-2025-11-25] [gw26] [ 37%] PASSED tests/interaction/lowlevel/test_resources.py::test_subscribe_without_a_subscribe_handler_is_method_not_found[streamable-http-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_subscribe_without_a_subscribe_handler_is_method_not_found[streamable-http-stateless-2025-11-25] [gw33] [ 37%] PASSED tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[streamable-http-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[streamable-http-stateless-2025-11-25] [gw18] [ 37%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_cancellation_stops_in_flight_handler[streamable-http-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_session_serves_requests_after_cancellation[in-memory-2025-11-25] [gw28] [ 37%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_text[streamable-http-2025-11-25] [gw14] [ 37%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_cancel_returns_no_content[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_cancel_returns_no_content[sse-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_read_resource_text[streamable-http-stateless-2025-11-25] tests/examples/test_story_shape.py::test_main_constructs_client_inline[lifespan] [gw34] [ 37%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_image_content_reaches_callback[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_image_content_returns_to_handler[in-memory-2025-11-25] [gw37] [ 37%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[streamable-http-stateless-2025-11-25] [gw47] [ 37%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_server_info[streamable-http-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[sse-2025-11-25] [gw32] [ 37%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[streamable-http-stateless-2025-11-25] [gw10] [ 37%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[lifespan] tests/examples/test_story_shape.py::test_main_constructs_client_inline[middleware] [gw23] [ 37%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[in-memory-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[sse-2025-11-25] [gw26] [ 37%] PASSED tests/interaction/lowlevel/test_resources.py::test_subscribe_without_a_subscribe_handler_is_method_not_found[streamable-http-stateless-2025-11-25] [gw15] [ 37%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_without_callback_is_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_list_roots_callback_error_surfaces_to_the_handler[in-memory-2025-11-25] [gw9] [ 37%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[streamable-http-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[streamable-http-stateless-2025-11-25] [gw28] [ 37%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_text[streamable-http-stateless-2025-11-25] [gw41] [ 37%] PASSED tests/examples/test_stories.py::test_story[streaming-server_lowlevel-http-asgi-legacy] tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[in-memory-2026-07-28] [gw37] [ 37%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[in-memory-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[streamable-http-2026-07-28] [gw46] [ 37%] PASSED tests/interaction/auth/test_lifecycle.py::test_cimd_is_selected_when_the_as_advertises_support_and_a_metadata_url_is_supplied tests/examples/test_stories.py::test_story[mrtr-server-in-memory-modern] [gw18] [ 37%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_session_serves_requests_after_cancellation[in-memory-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_session_serves_requests_after_cancellation[sse-2025-11-25] [gw29] [ 37%] PASSED tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[sse-2025-11-25] [gw7] [ 37%] PASSED tests/interaction/auth/test_authorize_token.py::test_an_authorize_error_on_the_callback_aborts_the_flow_before_the_token_request [gw10] [ 37%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[middleware] tests/examples/test_story_shape.py::test_main_constructs_client_inline[mrtr] [gw10] [ 38%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[mrtr] tests/interaction/lowlevel/test_resources.py::test_read_resource_text[in-memory-2026-07-28] [gw28] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_text[in-memory-2026-07-28] [gw14] [ 38%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_cancel_returns_no_content[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_cancel_returns_no_content[streamable-http-2025-11-25] [gw15] [ 38%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_callback_error_surfaces_to_the_handler[in-memory-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[streamable-http-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_list_roots_callback_error_surfaces_to_the_handler[sse-2025-11-25] tests/examples/test_story_shape.py::test_main_constructs_client_inline[oauth] [gw37] [ 38%] PASSED tests/interaction/lowlevel/test_pagination.py::test_resource_templates_list_supports_cursor_pagination[streamable-http-2026-07-28] [gw34] [ 38%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_image_content_returns_to_handler[in-memory-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_image_content_returns_to_handler[sse-2025-11-25] [gw23] [ 38%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[sse-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[streamable-http-2025-11-25] [gw10] [ 38%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[oauth] tests/interaction/lowlevel/test_resources.py::test_unsubscribe_resource_delivers_uri_to_handler[in-memory-2025-11-25] [gw26] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_unsubscribe_resource_delivers_uri_to_handler[in-memory-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_unsubscribe_resource_delivers_uri_to_handler[sse-2025-11-25] [gw19] [ 38%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_server_sees_client_capabilities[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_request_before_initialization_is_rejected tests/examples/test_story_shape.py::test_main_constructs_client_inline[oauth_client_credentials] [gw9] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[streamable-http-stateless-2025-11-25] [gw33] [ 38%] PASSED tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[in-memory-2026-07-28] [gw33] [ 38%] PASSED tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[in-memory-2026-07-28] tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[streamable-http-2026-07-28] [gw33] [ 38%] PASSED tests/interaction/lowlevel/test_prompts.py::test_list_prompts_returns_registered_prompts[streamable-http-2026-07-28] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[in-memory-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[in-memory-2026-07-28] [gw2] [ 38%] PASSED tests/examples/test_stories.py::test_story[tools-server-in-memory-modern] [gw19] [ 38%] PASSED tests/interaction/lowlevel/test_initialize.py::test_request_before_initialization_is_rejected [gw10] [ 38%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[oauth_client_credentials] tests/examples/test_story_shape.py::test_main_constructs_client_inline[pagination] tests/examples/test_stories.py::test_story[tools-server-in-memory-legacy] [gw44] [ 38%] PASSED tests/docs_src/test_subscriptions.py::test_follow_board_prints_the_refetched_board_and_the_new_tool_list [gw34] [ 38%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_image_content_returns_to_handler[sse-2025-11-25] [gw14] [ 38%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_cancel_returns_no_content[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_image_content_returns_to_handler[streamable-http-2025-11-25] tests/docs_src/test_subscriptions.py::test_the_asyncio_watcher_runs_beside_the_main_flow [gw26] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_unsubscribe_resource_delivers_uri_to_handler[sse-2025-11-25] [gw10] [ 38%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[pagination] [gw9] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[in-memory-2026-07-28] tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[streamable-http-2026-07-28] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_without_callback_is_error[in-memory-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_unsubscribe_resource_delivers_uri_to_handler[streamable-http-2025-11-25] [gw5] [ 38%] PASSED tests/interaction/auth/test_discovery.py::test_prm_with_a_mismatched_resource_aborts_the_flow_before_authorize tests/interaction/auth/test_discovery.py::test_as_metadata_discovery_falls_back_through_the_spec_endpoint_order[root-issuer] [gw33] [ 38%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[in-memory-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[sse-2025-11-25] tests/examples/test_story_shape.py::test_main_constructs_client_inline[parallel_calls] [gw18] [ 38%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_session_serves_requests_after_cancellation[sse-2025-11-25] [gw15] [ 38%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_callback_error_surfaces_to_the_handler[sse-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_list_roots_callback_error_surfaces_to_the_handler[streamable-http-2025-11-25] [gw23] [ 38%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[streamable-http-2025-11-25] [gw29] [ 38%] PASSED tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[streamable-http-2025-11-25] [gw10] [ 38%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[parallel_calls] tests/examples/test_story_shape.py::test_main_constructs_client_inline[prompts] [gw14] [ 38%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_without_callback_is_error[in-memory-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[streamable-http-stateless-2025-11-25] [gw10] [ 38%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[prompts] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_without_callback_is_error[sse-2025-11-25] [gw9] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_binary[streamable-http-2026-07-28] tests/examples/test_story_shape.py::test_main_constructs_client_inline[reconnect] [gw2] [ 38%] PASSED tests/examples/test_stories.py::test_story[tools-server-in-memory-legacy] tests/docs_src/test_legacy_clients.py::test_calling_both_notification_verbs_is_safe_on_both_eras tests/examples/test_stories.py::test_story[tools-server-http-asgi-modern] tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[in-memory-2025-11-25] [gw10] [ 38%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[reconnect] tests/examples/test_story_shape.py::test_main_constructs_client_inline[refund_desk] [gw26] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_unsubscribe_resource_delivers_uri_to_handler[streamable-http-2025-11-25] [gw33] [ 38%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[sse-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_unsubscribe_resource_delivers_uri_to_handler[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[streamable-http-2025-11-25] [gw10] [ 38%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[refund_desk] [gw9] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[in-memory-2025-11-25] tests/examples/test_story_shape.py::test_main_constructs_client_inline[resources] [gw44] [ 38%] PASSED tests/docs_src/test_subscriptions.py::test_the_asyncio_watcher_runs_beside_the_main_flow [gw16] [ 38%] PASSED tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[sse-2025-11-25] [gw30] [ 38%] PASSED tests/docs/test_translations.py::test_link_dropped_in_a_carried_section_costs_no_repair_turn_and_the_stored_section_is_kept [gw23] [ 38%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[streamable-http-stateless-2025-11-25] tests/docs_src/test_subscriptions.py::test_the_trio_watcher_runs_beside_the_main_flow[trio] tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[sse-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[streamable-http-2025-11-25] [gw5] [ 38%] PASSED tests/interaction/auth/test_discovery.py::test_as_metadata_discovery_falls_back_through_the_spec_endpoint_order[root-issuer] tests/interaction/auth/test_discovery.py::test_as_metadata_discovery_falls_back_through_the_spec_endpoint_order[path-issuer] [gw10] [ 38%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[resources] tests/examples/test_story_shape.py::test_main_constructs_client_inline[roots] tests/docs/test_translations.py::test_removed_english_section_is_reassembled_with_no_client_but_an_edited_one_needs_credentials_first [gw35] [ 38%] PASSED tests/docs_src/test_legacy_clients.py::test_calling_both_notification_verbs_is_safe_on_both_eras tests/interaction/lowlevel/test_sampling.py::test_a_client_with_a_sampling_callback_declares_the_sampling_capability[streamable-http-2025-11-25] [gw10] [ 38%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[roots] [gw34] [ 38%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_image_content_returns_to_handler[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_callback_error[in-memory-2025-11-25] [gw15] [ 38%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_callback_error_surfaces_to_the_handler[streamable-http-2025-11-25] [gw26] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_unsubscribe_resource_delivers_uri_to_handler[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_roots_list_changed_reaches_server_handler[in-memory-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_resource_updated_notification_reaches_client[in-memory-2025-11-25] [gw15] [ 38%] PASSED tests/interaction/lowlevel/test_roots.py::test_roots_list_changed_reaches_server_handler[in-memory-2025-11-25] [gw29] [ 38%] PASSED tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[streamable-http-stateless-2025-11-25] [gw34] [ 38%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_callback_error[in-memory-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_roots_list_changed_reaches_server_handler[sse-2025-11-25] [gw2] [ 38%] PASSED tests/examples/test_stories.py::test_story[tools-server-http-asgi-modern] [gw33] [ 38%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[streamable-http-2025-11-25] [gw14] [ 38%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_without_callback_is_error[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_without_callback_is_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_callback_error[sse-2025-11-25] tests/examples/test_stories.py::test_story[tools-server-http-asgi-legacy] [gw9] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[sse-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[in-memory-2026-07-28] [gw26] [ 38%] PASSED tests/interaction/lowlevel/test_resources.py::test_resource_updated_notification_reaches_client[in-memory-2025-11-25] [gw29] [ 38%] PASSED tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[in-memory-2026-07-28] tests/interaction/lowlevel/test_resources.py::test_resource_updated_notification_reaches_client[sse-2025-11-25] [gw16] [ 38%] PASSED tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[streamable-http-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[streamable-http-stateless-2025-11-25] tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/progress/tutorial002.py] [gw40] [ 39%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/progress/tutorial002.py] tests/interaction/lowlevel/test_subscriptions.py::test_a_stream_dropped_after_the_ack_raises_subscription_lost[in-memory-2026-07-28] [gw41] [ 39%] PASSED tests/examples/test_stories.py::test_story[mrtr-server-in-memory-modern] tests/examples/test_stories.py::test_story[mrtr-server-http-asgi-modern] [gw15] [ 39%] PASSED tests/interaction/lowlevel/test_roots.py::test_roots_list_changed_reaches_server_handler[sse-2025-11-25] [gw40] [ 39%] PASSED tests/interaction/lowlevel/test_subscriptions.py::test_a_stream_dropped_after_the_ack_raises_subscription_lost[in-memory-2026-07-28] tests/interaction/lowlevel/test_roots.py::test_roots_list_changed_reaches_server_handler[streamable-http-2025-11-25] [gw5] [ 39%] PASSED tests/interaction/auth/test_discovery.py::test_as_metadata_discovery_falls_back_through_the_spec_endpoint_order[path-issuer] tests/interaction/lowlevel/test_subscriptions.py::test_a_stream_dropped_after_the_ack_raises_subscription_lost[streamable-http-2026-07-28] [gw44] [ 39%] PASSED tests/docs_src/test_subscriptions.py::test_the_trio_watcher_runs_beside_the_main_flow[trio] tests/docs_src/test_subscriptions.py::test_the_anyio_watcher_runs_beside_the_main_flow [gw35] [ 39%] PASSED tests/interaction/lowlevel/test_sampling.py::test_a_client_with_a_sampling_callback_declares_the_sampling_capability[streamable-http-2025-11-25] tests/interaction/auth/test_discovery.py::test_the_prm_endpoint_serves_the_resource_url_and_at_least_one_authorization_server tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_audio_content_reaches_callback[in-memory-2025-11-25] [gw5] [ 39%] PASSED tests/interaction/auth/test_discovery.py::test_the_prm_endpoint_serves_the_resource_url_and_at_least_one_authorization_server [gw14] [ 39%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_form_without_callback_is_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_delivers_url_and_returns_accept_without_content[in-memory-2025-11-25] [gw9] [ 39%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[streamable-http-stateless-2025-11-25] [gw34] [ 39%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_callback_error[sse-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_callback_error[streamable-http-2025-11-25] [gw45] [ 39%] PASSED tests/examples/test_stories.py::test_story[schema_validators-server-in-memory-modern] tests/examples/test_stories.py::test_story[schema_validators-server-in-memory-legacy] [gw14] [ 39%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_delivers_url_and_returns_accept_without_content[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_delivers_url_and_returns_accept_without_content[sse-2025-11-25] [gw26] [ 39%] PASSED tests/interaction/lowlevel/test_resources.py::test_resource_updated_notification_reaches_client[sse-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_resource_updated_notification_reaches_client[streamable-http-2025-11-25] [gw40] [ 39%] PASSED tests/interaction/lowlevel/test_subscriptions.py::test_a_stream_dropped_after_the_ack_raises_subscription_lost[streamable-http-2026-07-28] tests/interaction/lowlevel/test_subscriptions.py::test_the_subscription_id_is_the_listen_request_id_the_server_saw[in-memory-2026-07-28] [gw15] [ 39%] PASSED tests/interaction/lowlevel/test_roots.py::test_roots_list_changed_reaches_server_handler[streamable-http-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_roots_list_changed_reaches_server_handler[streamable-http-stateless-2025-11-25] [gw35] [ 39%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_audio_content_reaches_callback[in-memory-2025-11-25] [gw16] [ 39%] PASSED tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[in-memory-2026-07-28] [gw16] [ 39%] PASSED tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[in-memory-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[streamable-http-2026-07-28] tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_audio_content_reaches_callback[sse-2025-11-25] tests/docs_src/test_uri_templates.py::test_server_wide_resource_security_relaxes_every_resource [gw40] [ 39%] PASSED tests/interaction/lowlevel/test_subscriptions.py::test_the_subscription_id_is_the_listen_request_id_the_server_saw[in-memory-2026-07-28] [gw2] [ 39%] PASSED tests/examples/test_stories.py::test_story[tools-server-http-asgi-legacy] [gw9] [ 39%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[in-memory-2026-07-28] tests/interaction/lowlevel/test_subscriptions.py::test_the_subscription_id_is_the_listen_request_id_the_server_saw[streamable-http-2026-07-28] tests/examples/test_stories.py::test_story[tools-server_lowlevel-in-memory-modern] [gw44] [ 39%] PASSED tests/docs_src/test_subscriptions.py::test_the_anyio_watcher_runs_beside_the_main_flow [gw13] [ 39%] PASSED tests/docs_src/test_uri_templates.py::test_server_wide_resource_security_relaxes_every_resource tests/docs_src/test_subscriptions.py::test_the_follower_re_listens_after_the_stream_ends[trio-mockclock] [gw9] [ 39%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[in-memory-2026-07-28] [gw14] [ 39%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_delivers_url_and_returns_accept_without_content[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_delivers_url_and_returns_accept_without_content[streamable-http-2025-11-25] [gw15] [ 39%] PASSED tests/interaction/lowlevel/test_roots.py::test_roots_list_changed_reaches_server_handler[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_round_trip[in-memory-2025-11-25] [gw2] [ 39%] PASSED tests/examples/test_stories.py::test_story[tools-server_lowlevel-in-memory-modern] [gw40] [ 39%] PASSED tests/interaction/lowlevel/test_subscriptions.py::test_the_subscription_id_is_the_listen_request_id_the_server_saw[streamable-http-2026-07-28] tests/interaction/lowlevel/test_subscriptions.py::test_concurrent_listen_streams_each_receive_their_own_ack[in-memory-2026-07-28] tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[streamable-http-2026-07-28] [gw16] [ 39%] PASSED tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[streamable-http-2026-07-28] tests/interaction/lowlevel/test_ping.py::test_client_ping_returns_empty_result[in-memory-2025-11-25] tests/examples/test_stories.py::test_story[tools-server_lowlevel-in-memory-legacy] [gw26] [ 39%] PASSED tests/interaction/lowlevel/test_resources.py::test_resource_updated_notification_reaches_client[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[in-memory-2026-07-28] [gw13] [ 39%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[in-memory-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[streamable-http-2026-07-28] [gw45] [ 39%] PASSED tests/examples/test_stories.py::test_story[schema_validators-server-in-memory-legacy] [gw35] [ 39%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_audio_content_reaches_callback[sse-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_audio_content_reaches_callback[streamable-http-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_list_roots_round_trip[in-memory-2025-11-25] tests/examples/test_stories.py::test_story[schema_validators-server-http-asgi-modern] [gw24] [ 39%] PASSED tests/client/test_stdio.py::test_exiting_the_context_terminates_the_entire_process_tree tests/client/test_stdio.py::test_tree_kill_reaches_children_after_the_leader_has_already_exited [gw34] [ 39%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_callback_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_without_callback_is_error[in-memory-2025-11-25] [gw40] [ 39%] PASSED tests/interaction/lowlevel/test_subscriptions.py::test_concurrent_listen_streams_each_receive_their_own_ack[in-memory-2026-07-28] [gw9] [ 39%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_unknown_uri_is_protocol_error[streamable-http-2026-07-28] tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[in-memory-2025-11-25] [gw16] [ 39%] PASSED tests/interaction/lowlevel/test_ping.py::test_client_ping_returns_empty_result[in-memory-2025-11-25] tests/interaction/lowlevel/test_ping.py::test_client_ping_returns_empty_result[sse-2025-11-25] tests/interaction/lowlevel/test_subscriptions.py::test_concurrent_listen_streams_each_receive_their_own_ack[streamable-http-2026-07-28] [gw34] [ 39%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_without_callback_is_error[in-memory-2025-11-25] [gw1] [ 39%] PASSED tests/examples/test_stories.py::test_story[error_handling-server-in-memory-modern] [gw44] [ 39%] PASSED tests/docs_src/test_subscriptions.py::test_the_follower_re_listens_after_the_stream_ends[trio-mockclock] tests/interaction/lowlevel/test_sampling.py::test_create_message_without_callback_is_error[sse-2025-11-25] [gw15] [ 39%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_round_trip[in-memory-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_round_trip[sse-2025-11-25] tests/docs_src/test_subscriptions.py::test_the_middleware_refuses_a_listen_the_caller_could_not_read tests/examples/test_stories.py::test_story[error_handling-server-in-memory-legacy] [gw2] [ 39%] PASSED tests/examples/test_stories.py::test_story[tools-server_lowlevel-in-memory-legacy] [gw13] [ 39%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[in-memory-2025-11-25] tests/examples/test_stories.py::test_story[tools-server_lowlevel-http-asgi-modern] [gw9] [ 39%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[in-memory-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[sse-2025-11-25] [gw26] [ 39%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_round_trip[in-memory-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_list_roots_round_trip[sse-2025-11-25] [gw4] [ 39%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoning_one_call_leaves_a_concurrent_call_running[streamable-http-2025-11-25] [gw44] [ 39%] PASSED tests/docs_src/test_subscriptions.py::test_the_middleware_refuses_a_listen_the_caller_could_not_read [gw13] [ 39%] PASSED tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[in-memory-2025-11-25] [gw14] [ 39%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_delivers_url_and_returns_accept_without_content[streamable-http-2025-11-25] [gw40] [ 39%] PASSED tests/interaction/lowlevel/test_subscriptions.py::test_concurrent_listen_streams_each_receive_their_own_ack[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[sse-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_decline_returns_no_content[in-memory-2025-11-25] tests/docs_src/test_troubleshooting.py::test_ctx_elicit_on_a_legacy_connection_works [gw16] [ 39%] PASSED tests/interaction/lowlevel/test_ping.py::test_client_ping_returns_empty_result[sse-2025-11-25] tests/docs_src/test_subscriptions.py::test_a_publish_on_another_replica_never_reaches_the_stream tests/interaction/lowlevel/test_ping.py::test_client_ping_returns_empty_result[streamable-http-2025-11-25] [gw9] [ 39%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[sse-2025-11-25] tests/interaction/lowlevel/test_timeouts.py::test_request_timeout_fails_the_pending_call tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[streamable-http-2025-11-25] [gw41] [ 39%] PASSED tests/examples/test_stories.py::test_story[mrtr-server-http-asgi-modern] tests/examples/test_stories.py::test_story[mrtr-server_lowlevel-in-memory-modern] [gw2] [ 39%] PASSED tests/examples/test_stories.py::test_story[tools-server_lowlevel-http-asgi-modern] tests/examples/test_stories.py::test_story[tools-server_lowlevel-http-asgi-legacy] [gw35] [ 39%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_audio_content_reaches_callback[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_audio_content_returns_to_handler[in-memory-2025-11-25] [gw14] [ 39%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_decline_returns_no_content[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_decline_returns_no_content[sse-2025-11-25] [gw1] [ 39%] PASSED tests/examples/test_stories.py::test_story[error_handling-server-in-memory-legacy] [gw34] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_without_callback_is_error[sse-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_without_callback_is_error[streamable-http-2025-11-25] [gw40] [ 40%] PASSED tests/interaction/lowlevel/test_timeouts.py::test_request_timeout_fails_the_pending_call [gw15] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_round_trip[sse-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_round_trip[streamable-http-2025-11-25] [gw26] [ 40%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_round_trip[sse-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_list_roots_round_trip[streamable-http-2025-11-25] tests/interaction/lowlevel/test_timeouts.py::test_server_request_timeout_sends_cancellation_to_the_client [gw17] [ 40%] PASSED tests/docs_src/test_troubleshooting.py::test_ctx_elicit_on_a_legacy_connection_works tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[in-memory-2026-07-28] tests/examples/test_stories.py::test_story[error_handling-server-http-asgi-modern] [gw35] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_audio_content_returns_to_handler[in-memory-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_audio_content_returns_to_handler[sse-2025-11-25] [gw17] [ 40%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[in-memory-2026-07-28] [gw9] [ 40%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[streamable-http-2025-11-25] tests/examples/test_story_shape.py::test_main_constructs_client_inline[bearer_auth] [gw13] [ 40%] PASSED tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[sse-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[streamable-http-2026-07-28] tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[streamable-http-stateless-2025-11-25] [gw44] [ 40%] PASSED tests/docs_src/test_subscriptions.py::test_a_publish_on_another_replica_never_reaches_the_stream [gw16] [ 40%] PASSED tests/interaction/lowlevel/test_ping.py::test_client_ping_returns_empty_result[streamable-http-2025-11-25] tests/docs_src/test_subscriptions.py::test_a_server_with_subscriptions_off_advertises_nothing_and_refuses_listen [gw45] [ 40%] PASSED tests/examples/test_stories.py::test_story[schema_validators-server-http-asgi-modern] tests/interaction/lowlevel/test_ping.py::test_client_ping_returns_empty_result[streamable-http-stateless-2025-11-25] [gw40] [ 40%] PASSED tests/interaction/lowlevel/test_timeouts.py::test_server_request_timeout_sends_cancellation_to_the_client [gw14] [ 40%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_decline_returns_no_content[sse-2025-11-25] [gw43] [ 40%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[bearer_auth] tests/examples/test_stories.py::test_story[schema_validators-server-http-asgi-legacy] tests/interaction/lowlevel/test_timeouts.py::test_session_serves_requests_after_timeout tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[lifespan] [gw17] [ 40%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[in-memory-2025-11-25] [gw2] [ 40%] PASSED tests/examples/test_stories.py::test_story[tools-server_lowlevel-http-asgi-legacy] tests/examples/test_stories.py::test_story[prompts-server-in-memory-modern] tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[in-memory-2026-07-28] [gw41] [ 40%] PASSED tests/examples/test_stories.py::test_story[mrtr-server_lowlevel-in-memory-modern] [gw8] [ 40%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[lifespan] tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[in-memory-2025-11-25] tests/examples/test_stories.py::test_story[mrtr-server_lowlevel-http-asgi-modern] [gw26] [ 40%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_round_trip[streamable-http-2025-11-25] tests/interaction/lowlevel/test_roots.py::test_list_roots_empty[in-memory-2025-11-25] [gw35] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_audio_content_returns_to_handler[sse-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_audio_content_returns_to_handler[streamable-http-2025-11-25] [gw34] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_without_callback_is_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_tools_is_rejected_for_unsupporting_client[in-memory-2025-11-25] [gw9] [ 40%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[in-memory-2026-07-28] [gw44] [ 40%] PASSED tests/docs_src/test_subscriptions.py::test_a_server_with_subscriptions_off_advertises_nothing_and_refuses_listen [gw17] [ 40%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[in-memory-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[sse-2025-11-25] [gw15] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_round_trip[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_params_reach_callback[in-memory-2025-11-25] tests/docs_src/test_subscriptions.py::test_a_publishing_handler_runs_unchanged_with_subscriptions_off [gw1] [ 40%] PASSED tests/examples/test_stories.py::test_story[error_handling-server-http-asgi-modern] tests/examples/test_stories.py::test_story[error_handling-server-http-asgi-legacy] [gw40] [ 40%] PASSED tests/interaction/lowlevel/test_timeouts.py::test_session_serves_requests_after_timeout [gw26] [ 40%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_empty[in-memory-2025-11-25] tests/interaction/lowlevel/test_timeouts.py::test_session_level_timeout_applies_to_every_request[trio-mockclock] [gw9] [ 40%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[in-memory-2026-07-28] [gw16] [ 40%] PASSED tests/interaction/lowlevel/test_ping.py::test_client_ping_returns_empty_result[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[streamable-http-2026-07-28] [gw15] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_params_reach_callback[in-memory-2025-11-25] tests/interaction/lowlevel/test_ping.py::test_server_ping_returns_empty_result[in-memory-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_params_reach_callback[sse-2025-11-25] [gw34] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_tools_is_rejected_for_unsupporting_client[in-memory-2025-11-25] [gw13] [ 40%] PASSED tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_tools_is_rejected_for_unsupporting_client[sse-2025-11-25] [gw25] [ 40%] PASSED tests/examples/test_stories.py::test_story[legacy_routing-server-http-asgi-in-body] [gw2] [ 40%] PASSED tests/examples/test_stories.py::test_story[prompts-server-in-memory-modern] tests/examples/test_stories.py::test_story[legacy_routing-server_lowlevel-http-asgi-in-body] tests/examples/test_stories.py::test_story[prompts-server-in-memory-legacy] [gw44] [ 40%] PASSED tests/docs_src/test_subscriptions.py::test_a_publishing_handler_runs_unchanged_with_subscriptions_off [gw16] [ 40%] PASSED tests/interaction/lowlevel/test_ping.py::test_server_ping_returns_empty_result[in-memory-2025-11-25] [gw9] [ 40%] PASSED tests/interaction/lowlevel/test_resources.py::test_list_resource_templates_returns_registered_templates[streamable-http-2026-07-28] [gw40] [ 40%] PASSED tests/interaction/lowlevel/test_timeouts.py::test_session_level_timeout_applies_to_every_request[trio-mockclock] tests/interaction/lowlevel/test_ping.py::test_server_ping_returns_empty_result[sse-2025-11-25] tests/docs_src/test_subscriptions.py::test_subscriptions_off_changes_nothing_for_an_earlier_protocol_version tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[in-memory-2025-11-25] tests/docs/test_translations.py::test_glossary_of_the_wrong_shape_stops_translate_with_exit_2_but_never_breaks_stage[key] [gw17] [ 40%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[sse-2025-11-25] [gw35] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_result_with_audio_content_returns_to_handler[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[streamable-http-2025-11-25] tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[subscriptions] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_list_valued_message_content_reaches_callback[in-memory-2025-11-25] [gw40] [ 40%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[in-memory-2025-11-25] [gw15] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_params_reach_callback[sse-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[sse-2025-11-25] [gw13] [ 40%] PASSED tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[streamable-http-stateless-2025-11-25] [gw35] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_list_valued_message_content_reaches_callback[in-memory-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_list_valued_message_content_reaches_callback[sse-2025-11-25] tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[refund_desk] tests/interaction/lowlevel/test_sampling.py::test_create_message_params_reach_callback[streamable-http-2025-11-25] [gw44] [ 40%] PASSED tests/docs_src/test_subscriptions.py::test_subscriptions_off_changes_nothing_for_an_earlier_protocol_version tests/docs_src/test_testing.py::test_call_add_tool [gw16] [ 40%] PASSED tests/interaction/lowlevel/test_ping.py::test_server_ping_returns_empty_result[sse-2025-11-25] [gw39] [ 40%] PASSED tests/examples/test_stories.py::test_story[lifespan-server-in-memory-modern] [gw6] [ 40%] PASSED tests/examples/test_story_shape.py::test_client_harness_imports_within_allowlist[subscriptions] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_missing_required_argument_is_an_error[in-memory-2025-11-25] tests/interaction/lowlevel/test_ping.py::test_server_ping_returns_empty_result[streamable-http-2025-11-25] [gw17] [ 40%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[streamable-http-2025-11-25] tests/examples/test_stories.py::test_story[lifespan-server-in-memory-legacy] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[streamable-http-stateless-2025-11-25] [gw2] [ 40%] PASSED tests/examples/test_stories.py::test_story[prompts-server-in-memory-legacy] tests/examples/test_stories.py::test_story[prompts-server-http-asgi-modern] [gw41] [ 40%] PASSED tests/examples/test_stories.py::test_story[mrtr-server_lowlevel-http-asgi-modern] tests/examples/test_stories.py::test_story[legacy_elicitation-server-in-memory-legacy] tests/interaction/auth/test_as_handlers.py::test_authorize_without_a_code_challenge_is_rejected_with_invalid_request [gw38] [ 40%] PASSED tests/examples/test_story_shape.py::test_story_files_import_no_private_mcp_module[refund_desk] tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[streamable-http-2025-11-25] [gw1] [ 40%] PASSED tests/examples/test_stories.py::test_story[error_handling-server-http-asgi-legacy] tests/examples/test_stories.py::test_story[error_handling-server_lowlevel-in-memory-modern] [gw40] [ 40%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[sse-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[streamable-http-2025-11-25] [gw22] [ 40%] PASSED tests/client/test_stdio.py::test_cancellation_during_spawn_leaks_no_streams tests/client/test_stdio.py::test_a_non_oserror_spawn_failure_propagates_and_leaks_no_streams tests/examples/test_stories.py::test_main_signature_matches_manifest[pagination] [gw12] [ 40%] PASSED tests/examples/test_stories.py::test_main_signature_matches_manifest[pagination] tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[streamable-http-stateless-2025-11-25] [gw35] [ 40%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_list_valued_message_content_reaches_callback[sse-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_list_valued_message_content_reaches_callback[streamable-http-2025-11-25] [gw25] [ 41%] PASSED tests/examples/test_stories.py::test_story[legacy_routing-server_lowlevel-http-asgi-in-body] tests/examples/test_stories.py::test_story[starlette_mount-server-http-asgi-modern] [gw15] [ 41%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_params_reach_callback[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_image_content_reaches_callback[in-memory-2025-11-25] [gw44] [ 41%] PASSED tests/docs_src/test_testing.py::test_call_add_tool [gw34] [ 41%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_tools_is_rejected_for_unsupporting_client[sse-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_tools_is_rejected_for_unsupporting_client[streamable-http-2025-11-25] [gw34] [ 41%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_tools_is_rejected_for_unsupporting_client[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mixed_tool_result_content_is_rejected[in-memory-2025-11-25] [gw20] [ 41%] PASSED tests/interaction/auth/test_as_handlers.py::test_authorize_without_a_code_challenge_is_rejected_with_invalid_request tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[sse-2025-11-25] [gw1] [ 41%] PASSED tests/examples/test_stories.py::test_story[error_handling-server_lowlevel-in-memory-modern] tests/examples/test_stories.py::test_story[error_handling-server_lowlevel-in-memory-legacy] [gw45] [ 41%] PASSED tests/examples/test_stories.py::test_story[schema_validators-server-http-asgi-legacy] tests/examples/test_stories.py::test_story[schema_validators-server_lowlevel-in-memory-modern] tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[in-memory-2026-07-28] [gw13] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[in-memory-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[streamable-http-2026-07-28] [gw13] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_tools_list_preserves_arbitrary_input_schema_keywords[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[in-memory-2025-11-25] [gw39] [ 41%] PASSED tests/examples/test_stories.py::test_story[lifespan-server-in-memory-legacy] tests/examples/test_stories.py::test_story[lifespan-server-http-asgi-modern] [gw16] [ 41%] PASSED tests/interaction/lowlevel/test_ping.py::test_server_ping_returns_empty_result[streamable-http-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[in-memory-2025-11-25] [gw15] [ 41%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_image_content_reaches_callback[in-memory-2025-11-25] [gw2] [ 41%] PASSED tests/examples/test_stories.py::test_story[prompts-server-http-asgi-modern] tests/examples/test_stories.py::test_story[prompts-server-http-asgi-legacy] [gw17] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[in-memory-2026-07-28] [gw13] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[in-memory-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[sse-2025-11-25] tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[lifespan] [gw45] [ 41%] PASSED tests/examples/test_stories.py::test_story[schema_validators-server_lowlevel-in-memory-modern] tests/examples/test_stories.py::test_story[schema_validators-server_lowlevel-in-memory-legacy] [gw38] [ 41%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[streamable-http-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[streamable-http-stateless-2025-11-25] [gw1] [ 41%] PASSED tests/examples/test_stories.py::test_story[error_handling-server_lowlevel-in-memory-legacy] tests/examples/test_stories.py::test_story[error_handling-server_lowlevel-http-asgi-modern] [gw34] [ 41%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mixed_tool_result_content_is_rejected[in-memory-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mixed_tool_result_content_is_rejected[sse-2025-11-25] [gw40] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[streamable-http-stateless-2025-11-25] [gw11] [ 41%] PASSED tests/examples/test_story_shape.py::test_server_lowlevel_imports_no_mcpserver_tier[lifespan] [gw35] [ 41%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_list_valued_message_content_reaches_callback[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mismatched_tool_use_and_result_ids_is_rejected[in-memory-2025-11-25] [gw35] [ 41%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mismatched_tool_use_and_result_ids_is_rejected[in-memory-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mismatched_tool_use_and_result_ids_is_rejected[sse-2025-11-25] [gw13] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[sse-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[streamable-http-2025-11-25] [gw40] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[in-memory-2026-07-28] [gw40] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[in-memory-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[streamable-http-2026-07-28] [gw17] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[in-memory-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[streamable-http-2026-07-28] [gw17] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[in-memory-2025-11-25] [gw1] [ 41%] PASSED tests/examples/test_stories.py::test_story[error_handling-server_lowlevel-http-asgi-modern] [gw41] [ 41%] PASSED tests/examples/test_stories.py::test_story[legacy_elicitation-server-in-memory-legacy] tests/examples/test_stories.py::test_story[legacy_elicitation-server-http-asgi-legacy] [gw34] [ 41%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mixed_tool_result_content_is_rejected[sse-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mixed_tool_result_content_is_rejected[streamable-http-2025-11-25] [gw39] [ 41%] PASSED tests/examples/test_stories.py::test_story[lifespan-server-http-asgi-modern] tests/examples/test_stories.py::test_story[lifespan-server-http-asgi-legacy] [gw25] [ 41%] PASSED tests/examples/test_stories.py::test_story[starlette_mount-server-http-asgi-modern] tests/examples/test_stories.py::test_story[starlette_mount-server-http-asgi-legacy] [gw16] [ 41%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[in-memory-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[in-memory-2025-11-25] tests/examples/test_stories.py::test_story[error_handling-server_lowlevel-http-asgi-legacy] [gw20] [ 41%] PASSED tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[sse-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[streamable-http-2025-11-25] [gw2] [ 41%] PASSED tests/examples/test_stories.py::test_story[prompts-server-http-asgi-legacy] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[in-memory-2026-07-28] [gw17] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[in-memory-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[sse-2025-11-25] [gw12] [ 41%] PASSED tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[in-memory-2026-07-28] tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[sse-2025-11-25] [gw16] [ 41%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[sse-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[streamable-http-2025-11-25] [gw45] [ 41%] PASSED tests/examples/test_stories.py::test_story[schema_validators-server_lowlevel-in-memory-legacy] tests/examples/test_stories.py::test_story[schema_validators-server_lowlevel-http-asgi-modern] [gw45] [ 41%] PASSED tests/examples/test_stories.py::test_story[schema_validators-server_lowlevel-http-asgi-modern] tests/examples/test_stories.py::test_story[schema_validators-server_lowlevel-http-asgi-legacy] [gw13] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[streamable-http-stateless-2025-11-25] [gw2] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[in-memory-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[streamable-http-2026-07-28] [gw38] [ 41%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[in-memory-2026-07-28] [gw38] [ 41%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[in-memory-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[streamable-http-2026-07-28] [gw40] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_returns_text_content[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[in-memory-2025-11-25] [gw25] [ 41%] PASSED tests/examples/test_stories.py::test_story[starlette_mount-server-http-asgi-legacy] [gw16] [ 41%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[streamable-http-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[streamable-http-stateless-2025-11-25] tests/examples/test_stories.py::test_story[sse_polling-server-http-asgi-legacy] [gw35] [ 41%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mismatched_tool_use_and_result_ids_is_rejected[sse-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mismatched_tool_use_and_result_ids_is_rejected[streamable-http-2025-11-25] [gw40] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[in-memory-2025-11-25] [gw20] [ 41%] PASSED tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[streamable-http-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[streamable-http-stateless-2025-11-25] [gw13] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[streamable-http-stateless-2025-11-25] [gw2] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[in-memory-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[in-memory-2025-11-25] [gw34] [ 41%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mixed_tool_result_content_is_rejected[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_a_client_with_a_sampling_callback_declares_the_sampling_capability[in-memory-2025-11-25] [gw41] [ 41%] PASSED tests/examples/test_stories.py::test_story[legacy_elicitation-server-http-asgi-legacy] [gw13] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[in-memory-2026-07-28] tests/examples/test_stories.py::test_story[legacy_elicitation-server_lowlevel-in-memory-legacy] tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[streamable-http-2026-07-28] [gw38] [ 41%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[streamable-http-2026-07-28] [gw2] [ 41%] PASSED tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[in-memory-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[in-memory-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[sse-2025-11-25] [gw12] [ 42%] PASSED tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[in-memory-2026-07-28] [gw42] [ 42%] PASSED tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[sse-2025-11-25] [gw16] [ 42%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[streamable-http-2025-11-25] [gw17] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[sse-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[streamable-http-2026-07-28] [gw45] [ 42%] PASSED tests/examples/test_stories.py::test_story[schema_validators-server_lowlevel-http-asgi-legacy] tests/examples/test_stories.py::test_story[middleware-server-in-memory-modern] tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[in-memory-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[streamable-http-2025-11-25] [gw34] [ 42%] PASSED tests/interaction/lowlevel/test_sampling.py::test_a_client_with_a_sampling_callback_declares_the_sampling_capability[in-memory-2025-11-25] [gw38] [ 42%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[in-memory-2025-11-25] [gw1] [ 42%] PASSED tests/examples/test_stories.py::test_story[error_handling-server_lowlevel-http-asgi-legacy] [gw20] [ 42%] PASSED tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[in-memory-2026-07-28] [gw13] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_optional_fields_round_trip[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[in-memory-2025-11-25] [gw39] [ 42%] PASSED tests/examples/test_stories.py::test_story[lifespan-server-http-asgi-legacy] tests/examples/test_stories.py::test_story[lifespan-server_lowlevel-in-memory-modern] [gw16] [ 42%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[in-memory-2026-07-28] tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[streamable-http-2026-07-28] tests/interaction/auth/test_bearer.py::test_a_request_with_no_authorization_header_is_challenged_with_resource_metadata tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[sse-2025-11-25] [gw35] [ 42%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_with_mismatched_tool_use_and_result_ids_is_rejected[streamable-http-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_array_content_result_for_a_tool_free_request_surfaces_as_a_validation_error[in-memory-2025-11-25] tests/examples/test_stories.py::test_story[serve_one-server-in-memory-modern] [gw45] [ 42%] PASSED tests/examples/test_stories.py::test_story[middleware-server-in-memory-modern] tests/examples/test_stories.py::test_story[middleware-server-in-memory-legacy] [gw13] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[in-memory-2025-11-25] [gw20] [ 42%] PASSED tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[in-memory-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[streamable-http-2026-07-28] [gw7] [ 42%] PASSED tests/interaction/auth/test_bearer.py::test_a_request_with_no_authorization_header_is_challenged_with_resource_metadata tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[streamable-http-2026-07-28] [gw24] [ 42%] PASSED tests/client/test_stdio.py::test_tree_kill_reaches_children_after_the_leader_has_already_exited tests/client/test_stdio.py::test_terminating_an_already_exited_process_is_a_no_op [gw45] [ 42%] PASSED tests/examples/test_stories.py::test_story[middleware-server-in-memory-legacy] tests/examples/test_stories.py::test_story[middleware-server-http-asgi-modern] tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[sse-2025-11-25] [gw1] [ 42%] PASSED tests/examples/test_stories.py::test_story[serve_one-server-in-memory-modern] tests/examples/test_stories.py::test_story[serve_one-server-in-memory-legacy] [gw41] [ 42%] PASSED tests/examples/test_stories.py::test_story[legacy_elicitation-server_lowlevel-in-memory-legacy] tests/examples/test_stories.py::test_story[legacy_elicitation-server_lowlevel-http-asgi-legacy] [gw2] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[sse-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[streamable-http-2025-11-25] [gw16] [ 42%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_during_tool_call_reaches_callback_in_order[streamable-http-2026-07-28] [gw38] [ 42%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[sse-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[streamable-http-2025-11-25] [gw39] [ 42%] PASSED tests/examples/test_stories.py::test_story[lifespan-server_lowlevel-in-memory-modern] tests/examples/test_stories.py::test_story[lifespan-server_lowlevel-in-memory-legacy] [gw39] [ 42%] PASSED tests/examples/test_stories.py::test_story[lifespan-server_lowlevel-in-memory-legacy] tests/examples/test_stories.py::test_story[lifespan-server_lowlevel-http-asgi-modern] [gw20] [ 42%] PASSED tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[streamable-http-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[in-memory-2025-11-25] [gw35] [ 42%] PASSED tests/interaction/lowlevel/test_sampling.py::test_array_content_result_for_a_tool_free_request_surfaces_as_a_validation_error[in-memory-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_array_content_result_for_a_tool_free_request_surfaces_as_a_validation_error[sse-2025-11-25] [gw13] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[sse-2025-11-25] [gw1] [ 42%] PASSED tests/examples/test_stories.py::test_story[serve_one-server-in-memory-legacy] tests/examples/test_stories.py::test_story[stateless_legacy-server-http-asgi-in-body] [gw17] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[streamable-http-2025-11-25] [gw45] [ 42%] PASSED tests/examples/test_stories.py::test_story[middleware-server-http-asgi-modern] [gw42] [ 42%] PASSED tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[streamable-http-2025-11-25] tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[streamable-http-stateless-2025-11-25] [gw12] [ 42%] PASSED tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[streamable-http-2026-07-28] tests/examples/test_stories.py::test_story[middleware-server-http-asgi-legacy] tests/interaction/mcpserver/test_resources.py::test_read_static_resource[in-memory-2025-11-25] tests/docs_src/test_tools.py::test_signature_becomes_the_schema [gw38] [ 42%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[streamable-http-2025-11-25] [gw39] [ 42%] PASSED tests/examples/test_stories.py::test_story[lifespan-server_lowlevel-http-asgi-modern] [gw2] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[streamable-http-stateless-2025-11-25] [gw35] [ 42%] PASSED tests/interaction/lowlevel/test_sampling.py::test_array_content_result_for_a_tool_free_request_surfaces_as_a_validation_error[sse-2025-11-25] tests/interaction/lowlevel/test_sampling.py::test_array_content_result_for_a_tool_free_request_surfaces_as_a_validation_error[streamable-http-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[streamable-http-stateless-2025-11-25] tests/examples/test_stories.py::test_story[lifespan-server_lowlevel-http-asgi-legacy] [gw41] [ 42%] PASSED tests/examples/test_stories.py::test_story[legacy_elicitation-server_lowlevel-http-asgi-legacy] [gw44] [ 42%] PASSED tests/docs_src/test_tools.py::test_signature_becomes_the_schema [gw42] [ 42%] PASSED tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[streamable-http-stateless-2025-11-25] tests/examples/test_stories.py::test_story[refund_desk-server-in-memory-modern] tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[in-memory-2026-07-28] [gw12] [ 42%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_static_resource[in-memory-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_read_static_resource[sse-2025-11-25] tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[sse-2025-11-25] [gw45] [ 42%] PASSED tests/examples/test_stories.py::test_story[middleware-server-http-asgi-legacy] [gw20] [ 42%] PASSED tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[in-memory-2025-11-25] [gw2] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[streamable-http-stateless-2025-11-25] tests/examples/test_stories.py::test_story[parallel_calls-server-in-memory-modern] tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[in-memory-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[sse-2025-11-25] [gw13] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[streamable-http-2025-11-25] [gw38] [ 42%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[in-memory-2026-07-28] [gw7] [ 42%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[streamable-http-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[in-memory-2025-11-25] tests/interaction/lowlevel/test_cancellation.py::test_session_serves_requests_after_cancellation[streamable-http-2025-11-25] [gw25] [ 42%] PASSED tests/examples/test_stories.py::test_story[sse_polling-server-http-asgi-legacy] [gw2] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[in-memory-2026-07-28] tests/examples/test_stories.py::test_story[sse_polling-server_lowlevel-http-asgi-legacy] [gw35] [ 42%] PASSED tests/interaction/lowlevel/test_sampling.py::test_array_content_result_for_a_tool_free_request_surfaces_as_a_validation_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[streamable-http-2026-07-28] [gw38] [ 42%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[in-memory-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[streamable-http-2026-07-28] [gw44] [ 42%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[in-memory-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[streamable-http-2026-07-28] [gw17] [ 42%] PASSED tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[in-memory-2026-07-28] [gw39] [ 42%] PASSED tests/examples/test_stories.py::test_story[lifespan-server_lowlevel-http-asgi-legacy] tests/examples/test_stories.py::test_story[dual_era-server-in-memory-in-body] tests/interaction/lowlevel/test_subscriptions.py::test_a_graceful_server_close_ends_iteration_after_buffered_events[in-memory-2026-07-28] [gw35] [ 42%] PASSED tests/interaction/lowlevel/test_subscriptions.py::test_a_graceful_server_close_ends_iteration_after_buffered_events[in-memory-2026-07-28] [gw45] [ 42%] PASSED tests/examples/test_stories.py::test_story[parallel_calls-server-in-memory-modern] [gw0] [ 42%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_resource_template_variable[sse-2025-11-25] [gw7] [ 42%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[in-memory-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[sse-2025-11-25] tests/examples/test_stories.py::test_story[parallel_calls-server-in-memory-legacy] [gw12] [ 43%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_static_resource[sse-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_read_static_resource[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[streamable-http-2025-11-25] [gw17] [ 43%] PASSED tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[in-memory-2026-07-28] [gw38] [ 43%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_unknown_uri_is_error[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[streamable-http-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[in-memory-2025-11-25] [gw2] [ 43%] PASSED tests/interaction/lowlevel/test_tools.py::test_is_error_result_bypasses_client_output_schema_validation[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[in-memory-2025-11-25] [gw1] [ 43%] PASSED tests/examples/test_stories.py::test_story[stateless_legacy-server-http-asgi-in-body] tests/examples/test_stories.py::test_story[stateless_legacy-server_lowlevel-http-asgi-in-body] tests/interaction/lowlevel/test_cancellation.py::test_abandoning_one_call_leaves_a_concurrent_call_running[in-memory-2026-07-28] [gw6] [ 43%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_missing_required_argument_is_an_error[in-memory-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_missing_required_argument_is_an_error[sse-2025-11-25] [gw39] [ 43%] PASSED tests/examples/test_stories.py::test_story[dual_era-server-in-memory-in-body] tests/interaction/auth/test_discovery.py::test_as_metadata_advertises_authorize_token_registration_and_s256 tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[streamable-http-stateless-2025-11-25] tests/examples/test_stories.py::test_story[dual_era-server-http-asgi-in-body] [gw2] [ 43%] PASSED tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[in-memory-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[sse-2025-11-25] [gw4] [ 43%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_abandoning_one_call_leaves_a_concurrent_call_running[in-memory-2026-07-28] [gw44] [ 43%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[streamable-http-2026-07-28] tests/interaction/test_coverage.py::test_compute_cells_with_no_requirements_yields_full_grid [gw5] [ 43%] PASSED tests/interaction/auth/test_discovery.py::test_as_metadata_advertises_authorize_token_registration_and_s256 [gw45] [ 43%] PASSED tests/examples/test_stories.py::test_story[parallel_calls-server-in-memory-legacy] tests/examples/test_stories.py::test_story[parallel_calls-server_lowlevel-in-memory-modern] tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[in-memory-2025-11-25] [gw18] [ 43%] PASSED tests/interaction/lowlevel/test_cancellation.py::test_session_serves_requests_after_cancellation[streamable-http-2025-11-25] [gw24] [ 43%] PASSED tests/client/test_stdio.py::test_terminating_an_already_exited_process_is_a_no_op tests/interaction/transports/test_client_transport_http.py::test_accept_headers_cover_the_response_representations_the_transport_handles [gw7] [ 43%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[sse-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[streamable-http-2025-11-25] tests/interaction/test_coverage.py::test_spec_versions_are_known_and_include_latest [gw4] [ 43%] PASSED tests/interaction/test_coverage.py::test_compute_cells_with_no_requirements_yields_full_grid tests/interaction/test_coverage.py::test_compute_cells_intersects_stacked_version_ranges tests/client/test_stdio.py::test_escalation_kills_a_process_that_ignores_sigterm [gw27] [ 43%] PASSED tests/docs/test_translations.py::test_glossary_of_the_wrong_shape_stops_translate_with_exit_2_but_never_breaks_stage[key] tests/interaction/mcpserver/test_extensions.py::test_legacy_ad_omits_claim_bearing_identifiers_but_keeps_claim_less_ones[streamable-http-2025-11-25] [gw17] [ 43%] PASSED tests/interaction/lowlevel/test_tools.py::test_concurrent_tool_calls_complete_independently[streamable-http-2026-07-28] [gw18] [ 43%] PASSED tests/interaction/test_coverage.py::test_spec_versions_are_known_and_include_latest tests/interaction/test_coverage.py::test_spec_base_urls_are_pinned_to_their_revision [gw20] [ 43%] PASSED tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[sse-2025-11-25] [gw4] [ 43%] PASSED tests/interaction/test_coverage.py::test_compute_cells_intersects_stacked_version_ranges tests/interaction/test_coverage.py::test_compute_cells_drops_era_locked_transport_outside_its_versions [gw45] [ 43%] PASSED tests/examples/test_stories.py::test_story[parallel_calls-server_lowlevel-in-memory-modern] tests/examples/test_stories.py::test_story[parallel_calls-server_lowlevel-in-memory-legacy] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[in-memory-2025-11-25] [gw12] [ 43%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_static_resource[streamable-http-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[streamable-http-2025-11-25] [gw4] [ 43%] PASSED tests/interaction/test_coverage.py::test_compute_cells_drops_era_locked_transport_outside_its_versions tests/interaction/test_coverage.py::test_compute_cells_honours_arm_exclusion_from_any_stacked_requirement [gw3] [ 43%] PASSED tests/interaction/lowlevel/test_completion.py::test_complete_without_handler_is_method_not_found[streamable-http-stateless-2025-11-25] [gw18] [ 43%] PASSED tests/interaction/test_coverage.py::test_spec_base_urls_are_pinned_to_their_revision tests/interaction/test_coverage.py::test_connectable_transports_match_connect_factories [gw18] [ 43%] PASSED tests/interaction/test_coverage.py::test_connectable_transports_match_connect_factories [gw4] [ 43%] PASSED tests/interaction/test_coverage.py::test_compute_cells_honours_arm_exclusion_from_any_stacked_requirement tests/interaction/test_coverage.py::test_compute_cells_wildcard_arm_exclusion_drops_every_cell tests/interaction/test_coverage.py::test_supersession_links_are_symmetric_and_versioned tests/interaction/mcpserver/test_resources.py::test_read_static_resource[streamable-http-stateless-2025-11-25] tests/interaction/transports/test_hosting_http.py::test_unsupported_protocol_version_rejection_body_contains_the_sniffed_literal [gw25] [ 43%] PASSED tests/examples/test_stories.py::test_story[sse_polling-server_lowlevel-http-asgi-legacy] tests/examples/test_stories.py::test_story[standalone_get-server-http-asgi-legacy] [gw17] [ 43%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[in-memory-2025-11-25] [gw18] [ 43%] PASSED tests/interaction/test_coverage.py::test_supersession_links_are_symmetric_and_versioned [gw4] [ 43%] PASSED tests/interaction/test_coverage.py::test_compute_cells_wildcard_arm_exclusion_drops_every_cell [gw41] [ 43%] PASSED tests/examples/test_stories.py::test_story[refund_desk-server-in-memory-modern] [gw44] [ 43%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[in-memory-2025-11-25] tests/interaction/test_coverage.py::test_removed_entry_has_disposition tests/interaction/test_coverage.py::test_compute_cells_marks_known_failure_as_strict_xfail [gw4] [ 43%] PASSED tests/interaction/test_coverage.py::test_compute_cells_marks_known_failure_as_strict_xfail [gw45] [ 43%] PASSED tests/examples/test_stories.py::test_story[parallel_calls-server_lowlevel-in-memory-legacy] tests/examples/test_stories.py::test_story[roots-server-in-memory-legacy] [gw3] [ 43%] PASSED tests/interaction/transports/test_hosting_http.py::test_unsupported_protocol_version_rejection_body_contains_the_sniffed_literal tests/interaction/transports/test_hosting_http.py::test_json_response_mode_answers_with_application_json_not_sse [gw38] [ 43%] PASSED tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[in-memory-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[sse-2025-11-25] [gw30] [ 43%] PASSED tests/docs/test_translations.py::test_removed_english_section_is_reassembled_with_no_client_but_an_edited_one_needs_credentials_first tests/docs/test_translations.py::test_a_failing_page_does_not_stop_the_run_and_the_exit_code_is_1 [gw2] [ 43%] PASSED tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[sse-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[sse-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[sse-2025-11-25] tests/examples/test_stories.py::test_story[refund_desk-server-in-memory-legacy] [gw7] [ 43%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[streamable-http-2025-11-25] [gw18] [ 43%] PASSED tests/interaction/test_coverage.py::test_removed_entry_has_disposition tests/interaction/test_coverage.py::test_transport_restriction_has_note [gw18] [ 43%] PASSED tests/interaction/test_coverage.py::test_transport_restriction_has_note tests/interaction/test_coverage.py::test_every_arm_exclusion_targets_a_reachable_cell [gw18] [ 43%] PASSED tests/interaction/test_coverage.py::test_every_arm_exclusion_targets_a_reachable_cell [gw5] [ 43%] PASSED tests/interaction/transports/test_client_transport_http.py::test_accept_headers_cover_the_response_representations_the_transport_handles tests/interaction/transports/test_client_transport_http.py::test_closing_the_client_sends_delete_and_does_not_reconnect [gw39] [ 43%] PASSED tests/examples/test_stories.py::test_story[dual_era-server-http-asgi-in-body] tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[streamable-http-stateless-2025-11-25] [gw2] [ 43%] PASSED tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[streamable-http-stateless-2025-11-25] tests/interaction/test_coverage.py::test_compute_cells_wildcard_known_failure_marks_every_cell [gw4] [ 43%] PASSED tests/interaction/test_coverage.py::test_compute_cells_wildcard_known_failure_marks_every_cell tests/interaction/test_coverage.py::test_compute_cells_ignores_transports_field [gw4] [ 43%] PASSED tests/interaction/test_coverage.py::test_compute_cells_ignores_transports_field tests/interaction/test_coverage.py::test_cell_id_omits_version_when_single_spec_version [gw4] [ 43%] PASSED tests/interaction/test_coverage.py::test_cell_id_omits_version_when_single_spec_version tests/interaction/test_coverage.py::test_every_known_failure_targets_a_reachable_cell [gw1] [ 43%] PASSED tests/examples/test_stories.py::test_story[stateless_legacy-server_lowlevel-http-asgi-in-body] tests/examples/test_stories.py::test_story[json_response-server-http-asgi-modern] [gw12] [ 43%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_static_resource[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_read_static_resource[in-memory-2026-07-28] tests/interaction/test_coverage.py::test_cell_id_appends_version_when_multiple_spec_versions [gw18] [ 43%] PASSED tests/interaction/test_coverage.py::test_every_known_failure_targets_a_reachable_cell tests/interaction/test_coverage.py::test_unknown_requirement_id_is_rejected [gw45] [ 43%] PASSED tests/examples/test_stories.py::test_story[roots-server-in-memory-legacy] tests/examples/test_stories.py::test_story[roots-server-http-asgi-legacy] tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[streamable-http-stateless-2025-11-25] [gw4] [ 43%] PASSED tests/interaction/test_coverage.py::test_cell_id_appends_version_when_multiple_spec_versions [gw3] [ 43%] PASSED tests/interaction/transports/test_hosting_http.py::test_json_response_mode_answers_with_application_json_not_sse tests/interaction/transports/test_hosting_http.py::test_notification_post_returns_202_with_no_body [gw27] [ 43%] PASSED tests/interaction/mcpserver/test_extensions.py::test_legacy_ad_omits_claim_bearing_identifiers_but_keeps_claim_less_ones[streamable-http-2025-11-25] [gw18] [ 43%] PASSED tests/interaction/test_coverage.py::test_unknown_requirement_id_is_rejected tests/interaction/transports/test_bridge.py::test_response_chunks_arrive_as_the_application_sends_them [gw5] [ 43%] PASSED tests/interaction/transports/test_client_transport_http.py::test_closing_the_client_sends_delete_and_does_not_reconnect [gw6] [ 44%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_missing_required_argument_is_an_error[sse-2025-11-25] tests/interaction/transports/test_client_transport_http.py::test_concurrent_tool_calls_each_open_a_post_stream_and_receive_their_own_response tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_missing_required_argument_is_an_error[streamable-http-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[in-memory-2025-11-25] [gw7] [ 44%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[streamable-http-stateless-2025-11-25] [gw12] [ 44%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_static_resource[in-memory-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_read_static_resource[streamable-http-2026-07-28] [gw17] [ 44%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[sse-2025-11-25] [gw20] [ 44%] PASSED tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[streamable-http-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[in-memory-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[streamable-http-2025-11-25] tests/interaction/test_coverage.py::test_invalid_requirement_source_is_rejected [gw18] [ 44%] PASSED tests/interaction/test_coverage.py::test_invalid_requirement_source_is_rejected tests/interaction/test_coverage.py::test_arm_exclusion_with_unknown_spec_version_is_rejected [gw38] [ 44%] PASSED tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[sse-2025-11-25] [gw25] [ 44%] PASSED tests/examples/test_stories.py::test_story[standalone_get-server-http-asgi-legacy] tests/examples/test_stories.py::test_story[standalone_get-server_lowlevel-http-asgi-legacy] [gw2] [ 44%] PASSED tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[in-memory-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[streamable-http-2025-11-25] [gw3] [ 44%] PASSED tests/interaction/transports/test_hosting_http.py::test_notification_post_returns_202_with_no_body tests/interaction/transports/test_hosting_http.py::test_a_second_standalone_get_stream_on_the_same_session_returns_409 [gw4] [ 44%] PASSED tests/interaction/transports/test_bridge.py::test_response_chunks_arrive_as_the_application_sends_them tests/interaction/transports/test_bridge.py::test_closing_the_response_delivers_a_disconnect_to_the_application [gw4] [ 44%] PASSED tests/interaction/transports/test_bridge.py::test_closing_the_response_delivers_a_disconnect_to_the_application [gw18] [ 44%] PASSED tests/interaction/test_coverage.py::test_arm_exclusion_with_unknown_spec_version_is_rejected tests/interaction/test_coverage.py::test_known_failure_with_empty_note_is_rejected [gw44] [ 44%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[sse-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[streamable-http-2025-11-25] [gw1] [ 44%] PASSED tests/examples/test_stories.py::test_story[json_response-server-http-asgi-modern] tests/examples/test_stories.py::test_story[json_response-server_lowlevel-http-asgi-modern] [gw2] [ 44%] PASSED tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[in-memory-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[streamable-http-2026-07-28] [gw18] [ 44%] PASSED tests/interaction/test_coverage.py::test_known_failure_with_empty_note_is_rejected tests/interaction/test_coverage.py::test_known_failure_with_unknown_spec_version_is_rejected [gw27] [ 44%] PASSED tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[in-memory-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[sse-2025-11-25] [gw7] [ 44%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[in-memory-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[streamable-http-2026-07-28] tests/interaction/transports/test_bridge.py::test_an_application_failure_before_the_response_starts_fails_the_request [gw4] [ 44%] PASSED tests/interaction/transports/test_bridge.py::test_an_application_failure_before_the_response_starts_fails_the_request tests/interaction/transports/test_bridge.py::test_disabling_cancel_on_close_lets_the_application_finish_after_disconnect [gw12] [ 44%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_static_resource[streamable-http-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[in-memory-2025-11-25] tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_for_an_unknown_id_is_received_without_error[in-memory-2025-11-25] [gw18] [ 44%] PASSED tests/interaction/test_coverage.py::test_known_failure_with_unknown_spec_version_is_rejected tests/interaction/test_coverage.py::test_known_failure_with_malformed_issue_is_rejected [gw3] [ 44%] PASSED tests/interaction/transports/test_hosting_http.py::test_a_second_standalone_get_stream_on_the_same_session_returns_409 tests/interaction/transports/test_hosting_http.py::test_messages_are_routed_to_exactly_one_stream [gw4] [ 44%] PASSED tests/interaction/transports/test_bridge.py::test_disabling_cancel_on_close_lets_the_application_finish_after_disconnect [gw18] [ 44%] PASSED tests/interaction/test_coverage.py::test_known_failure_with_malformed_issue_is_rejected tests/interaction/test_coverage.py::test_requirement_with_unknown_added_in_is_rejected [gw45] [ 44%] PASSED tests/examples/test_stories.py::test_story[roots-server-http-asgi-legacy] tests/examples/test_stories.py::test_story[roots-server_lowlevel-in-memory-legacy] [gw2] [ 44%] PASSED tests/interaction/lowlevel/test_tools.py::test_declared_output_schema_with_no_structured_content_is_rejected_by_the_client[streamable-http-2026-07-28] [gw18] [ 44%] PASSED tests/interaction/test_coverage.py::test_requirement_with_unknown_added_in_is_rejected [gw7] [ 44%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_tool_error_becomes_error_result[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[in-memory-2025-11-25] tests/interaction/transports/test_client_transport_http.py::test_the_client_uses_the_supplied_http_client_and_propagates_its_headers [gw17] [ 44%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[streamable-http-2025-11-25] [gw41] [ 44%] PASSED tests/examples/test_stories.py::test_story[refund_desk-server-in-memory-legacy] tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[in-memory-2025-11-25] tests/examples/test_stories.py::test_story[refund_desk-server-http-asgi-modern] [gw21] [ 44%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicitation_complete_for_an_unknown_id_is_received_without_error[in-memory-2025-11-25] tests/interaction/test_coverage.py::test_requirement_with_unknown_removed_in_is_rejected [gw18] [ 44%] PASSED tests/interaction/test_coverage.py::test_requirement_with_unknown_removed_in_is_rejected [gw5] [ 44%] PASSED tests/interaction/transports/test_client_transport_http.py::test_concurrent_tool_calls_each_open_a_post_stream_and_receive_their_own_response tests/interaction/transports/test_client_transport_http.py::test_client_tolerates_405_on_get_and_delete [gw12] [ 44%] PASSED tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[in-memory-2025-11-25] [gw25] [ 44%] PASSED tests/examples/test_stories.py::test_story[standalone_get-server_lowlevel-http-asgi-legacy] [gw45] [ 44%] PASSED tests/examples/test_stories.py::test_story[roots-server_lowlevel-in-memory-legacy] tests/interaction/transports/test_hosting_http_modern.py::test_modern_removed_method_is_method_not_found_at_http_404 tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[sse-2025-11-25] [gw1] [ 44%] PASSED tests/examples/test_stories.py::test_story[json_response-server_lowlevel-http-asgi-modern] tests/examples/test_stories.py::test_story[reconnect-server-http-asgi-in-body] tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[in-memory-2025-11-25] [gw7] [ 44%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[in-memory-2025-11-25] [gw2] [ 44%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[in-memory-2025-11-25] [gw27] [ 44%] PASSED tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[sse-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[sse-2025-11-25] tests/interaction/auth/test_lifecycle.py::test_a_failed_refresh_clears_stored_tokens_and_restarts_the_full_flow tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[sse-2025-11-25] [gw3] [ 44%] PASSED tests/interaction/transports/test_hosting_http.py::test_messages_are_routed_to_exactly_one_stream [gw21] [ 44%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_removed_method_is_method_not_found_at_http_404 tests/interaction/transports/test_hosting_http.py::test_origin_validation_rejects_disallowed_origins_when_enabled tests/interaction/transports/test_hosting_http_modern.py::test_modern_envelope_missing_required_meta_key_is_invalid_params_at_http_400 [gw38] [ 44%] PASSED tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[streamable-http-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_server_info[streamable-http-stateless-2025-11-25] [gw44] [ 44%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[streamable-http-stateless-2025-11-25] [gw4] [ 44%] PASSED tests/interaction/transports/test_client_transport_http.py::test_the_client_uses_the_supplied_http_client_and_propagates_its_headers [gw5] [ 44%] PASSED tests/interaction/transports/test_client_transport_http.py::test_client_tolerates_405_on_get_and_delete tests/interaction/transports/test_client_transport_http.py::test_a_completed_post_stream_is_not_reconnected [gw20] [ 44%] PASSED tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[in-memory-2026-07-28] tests/interaction/transports/test_client_transport_http.py::test_every_request_after_initialize_carries_the_issued_session_id [gw1] [ 44%] PASSED tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[in-memory-2025-11-25] [gw21] [ 44%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_envelope_missing_required_meta_key_is_invalid_params_at_http_400 tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[sse-2025-11-25] tests/interaction/transports/test_hosting_http_modern.py::test_modern_handler_raised_mcperror_maps_to_status_via_error_code_table tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[in-memory-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[streamable-http-2026-07-28] [gw32] [ 44%] PASSED tests/interaction/lowlevel/test_logging.py::test_log_messages_reach_logging_callback_in_order[in-memory-2026-07-28] [gw7] [ 44%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[sse-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[streamable-http-2025-11-25] [gw12] [ 44%] PASSED tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[sse-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[streamable-http-2025-11-25] [gw2] [ 44%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[sse-2025-11-25] tests/interaction/transports/test_streamable_http.py::test_cancelled_request_is_terminated_with_request_cancelled[sse-response] [gw21] [ 44%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_handler_raised_mcperror_maps_to_status_via_error_code_table tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[streamable-http-2025-11-25] tests/interaction/lowlevel/test_initialize.py::test_initialize_negotiates_protocol_version tests/interaction/transports/test_hosting_http_modern.py::test_pinned_client_stateless_tools_call_round_trips_against_the_modern_entry [gw47] [ 44%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_returns_server_info[streamable-http-stateless-2025-11-25] [gw25] [ 44%] PASSED tests/examples/test_stories.py::test_story[reconnect-server-http-asgi-in-body] [gw27] [ 44%] PASSED tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[streamable-http-2025-11-25] tests/examples/test_stories.py::test_story[reconnect-server_lowlevel-http-asgi-in-body] [gw19] [ 44%] PASSED tests/interaction/lowlevel/test_initialize.py::test_initialize_negotiates_protocol_version tests/interaction/transports/test_hosting_session.py::test_stateless_mode_never_issues_a_session_id [gw4] [ 45%] PASSED tests/interaction/transports/test_client_transport_http.py::test_every_request_after_initialize_carries_the_issued_session_id [gw5] [ 45%] PASSED tests/interaction/transports/test_client_transport_http.py::test_a_completed_post_stream_is_not_reconnected tests/interaction/transports/test_client_transport_http.py::test_a_404_mid_session_surfaces_as_a_session_terminated_error [gw30] [ 45%] PASSED tests/docs/test_translations.py::test_a_failing_page_does_not_stop_the_run_and_the_exit_code_is_1 tests/docs/test_translations.py::test_rejected_credentials_stop_the_run_with_exit_2 [gw6] [ 45%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_missing_required_argument_is_an_error[streamable-http-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_missing_required_argument_is_an_error[streamable-http-stateless-2025-11-25] tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_non_bearer_auth_header [gw44] [ 45%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[streamable-http-stateless-2025-11-25] [gw36] [ 45%] PASSED tests/interaction/lowlevel/test_pagination.py::test_the_client_follows_opaque_cursors_through_pages_of_varying_sizes[streamable-http-2026-07-28] [gw19] [ 45%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_non_bearer_auth_header tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_invalid_token tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[in-memory-2026-07-28] [gw1] [ 45%] PASSED tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[sse-2025-11-25] tests/issues/test_1574_resource_uri_validation.py::test_resource_contents_uri_json_roundtrip tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[streamable-http-2025-11-25] [gw22] [ 45%] PASSED tests/client/test_stdio.py::test_a_non_oserror_spawn_failure_propagates_and_leaks_no_streams [gw19] [ 45%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_invalid_token [gw7] [ 45%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[streamable-http-stateless-2025-11-25] tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_expired_token [gw19] [ 45%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_expired_token tests/client/test_stdio.py::test_a_message_sent_just_before_exit_is_flushed_to_the_server [gw32] [ 45%] PASSED tests/interaction/transports/test_streamable_http.py::test_cancelled_request_is_terminated_with_request_cancelled[sse-response] [gw36] [ 45%] PASSED tests/issues/test_1574_resource_uri_validation.py::test_resource_contents_uri_json_roundtrip tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_parameters [gw39] [ 45%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[streamable-http-stateless-2025-11-25] tests/issues/test_100_tool_listing.py::test_list_tools_returns_all_tools tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[in-memory-2026-07-28] tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_valid_token [gw19] [ 45%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_valid_token [gw22] [ 45%] PASSED tests/client/test_stdio.py::test_a_message_sent_just_before_exit_is_flushed_to_the_server [gw44] [ 45%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[in-memory-2026-07-28] [gw5] [ 45%] PASSED tests/interaction/transports/test_client_transport_http.py::test_a_404_mid_session_surfaces_as_a_session_terminated_error tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_token_without_expiry [gw2] [ 45%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[streamable-http-2025-11-25] [gw46] [ 45%] PASSED tests/interaction/auth/test_lifecycle.py::test_a_failed_refresh_clears_stored_tokens_and_restarts_the_full_flow tests/interaction/transports/test_hosting_http_modern.py::test_vendor_request_with_name_param_carries_mcp_name_on_the_wire tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[streamable-http-2026-07-28] tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[in-memory-2025-11-25] [gw36] [ 45%] PASSED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_parameters tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_parameters_and_space [gw36] [ 45%] PASSED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_parameters_and_space [gw19] [ 45%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_token_without_expiry tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_lowercase_bearer_prefix [gw19] [ 45%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_lowercase_bearer_prefix tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_mixed_case_bearer_prefix [gw19] [ 45%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_mixed_case_bearer_prefix [gw46] [ 45%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_vendor_request_with_name_param_carries_mcp_name_on_the_wire [gw47] [ 45%] PASSED tests/interaction/transports/test_hosting_session.py::test_stateless_mode_never_issues_a_session_id tests/interaction/transports/test_hosting_session.py::test_stateless_mode_serves_concurrent_clients_independently [gw25] [ 45%] PASSED tests/examples/test_stories.py::test_story[reconnect-server_lowlevel-http-asgi-in-body] tests/examples/test_stories.py::test_story[bearer_auth-server-http-asgi-modern] [gw20] [ 45%] PASSED tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[in-memory-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[streamable-http-2026-07-28] tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[in-memory-2026-07-28] tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_multiple_parameters [gw27] [ 45%] PASSED tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[in-memory-2026-07-28] tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_mixed_case_authorization_header [gw19] [ 45%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_mixed_case_authorization_header tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[None-https://other.example.com/mcp-True] tests/interaction/transports/test_client_transport_http.py::test_at_2026_abandoning_a_call_closes_its_stream_and_posts_nothing tests/client/test_stdio.py::test_a_failed_write_to_a_live_server_closes_the_read_stream_instead_of_hanging [gw37] [ 45%] PASSED tests/interaction/lowlevel/test_pagination.py::test_prompts_list_supports_cursor_pagination[in-memory-2025-11-25] tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://api.example.com/other-False] [gw42] [ 45%] PASSED tests/interaction/lowlevel/test_meta.py::test_result_meta_reaches_client[in-memory-2026-07-28] tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[POST-/revoke-application/x-www-form-urlencoded] [gw36] [ 45%] PASSED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_with_multiple_parameters tests/issues/test_1754_mime_type_parameters.py::test_mime_type_preserved_in_read_resource [gw27] [ 45%] PASSED tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[in-memory-2026-07-28] tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[streamable-http-2026-07-28] [gw7] [ 45%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[in-memory-2026-07-28] [gw12] [ 45%] PASSED tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[streamable-http-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[streamable-http-stateless-2025-11-25] [gw21] [ 45%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_pinned_client_stateless_tools_call_round_trips_against_the_modern_entry tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_mirrors_x_mcp_header_args_into_mcp_param_headers [gw38] [ 45%] PASSED tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[in-memory-2026-07-28] [gw1] [ 45%] PASSED tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[streamable-http-2025-11-25] tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[streamable-http-stateless-2025-11-25] tests/interaction/transports/test_hosting_resume.py::test_a_post_sse_stream_begins_with_a_priming_event_and_stamps_every_event [gw19] [ 45%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[None-https://other.example.com/mcp-True] tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[None-None-True] [gw19] [ 45%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[None-None-True] tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-None-False] [gw7] [ 45%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[in-memory-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[streamable-http-2026-07-28] [gw21] [ 45%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_mirrors_x_mcp_header_args_into_mcp_param_headers tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_re_lists_and_retries_a_call_rejected_for_an_unlisted_tool [gw44] [ 45%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_list_return_is_wrapped_in_result_key[streamable-http-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[in-memory-2025-11-25] [gw42] [ 45%] PASSED tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[POST-/revoke-application/x-www-form-urlencoded] tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[POST-/register-application/json] [gw5] [ 45%] PASSED tests/interaction/transports/test_client_transport_http.py::test_at_2026_abandoning_a_call_closes_its_stream_and_posts_nothing tests/interaction/transports/test_client_transport_http.py::test_at_2025_abandoning_a_call_posts_exactly_one_cancelled_frame [gw46] [ 45%] PASSED tests/interaction/transports/test_hosting_resume.py::test_a_post_sse_stream_begins_with_a_priming_event_and_stamps_every_event tests/interaction/transports/test_hosting_resume.py::test_the_priming_row_is_stored_before_any_handler_output_for_that_stream [gw25] [ 45%] PASSED tests/examples/test_stories.py::test_story[bearer_auth-server-http-asgi-modern] tests/examples/test_stories.py::test_story[bearer_auth-server-http-asgi-legacy] [gw6] [ 45%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_missing_required_argument_is_an_error[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_wrong_type_argument_is_rejected_before_the_function_runs[in-memory-2025-11-25] [gw44] [ 45%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[in-memory-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[sse-2025-11-25] [gw36] [ 45%] PASSED tests/issues/test_1754_mime_type_parameters.py::test_mime_type_preserved_in_read_resource tests/issues/test_176_progress_token.py::test_progress_token_zero_first_call [gw27] [ 45%] PASSED tests/interaction/mcpserver/test_prompts.py::test_list_prompts_derives_arguments_from_signature[streamable-http-2026-07-28] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[in-memory-2025-11-25] [gw31] [ 45%] PASSED tests/docs_src/test_cancellation.py::test_a_def_tool_nobody_cancels_indexes_every_book_and_cleans_up tests/docs_src/test_cancellation.py::test_a_def_tool_that_never_checks_runs_to_the_end [gw12] [ 45%] PASSED tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[in-memory-2026-07-28] [gw36] [ 45%] PASSED tests/issues/test_176_progress_token.py::test_progress_token_zero_first_call tests/issues/test_192_request_id.py::test_request_id_match [gw7] [ 45%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_unknown_name_returns_error_result[streamable-http-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[in-memory-2025-11-25] [gw42] [ 45%] PASSED tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[POST-/register-application/json] tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[POST-/authorize-application/x-www-form-urlencoded] [gw42] [ 46%] PASSED tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[POST-/authorize-application/x-www-form-urlencoded] [gw37] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://api.example.com/other-False] tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[OPTIONS-/token-application/x-www-form-urlencoded] [gw19] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-None-False] tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://other.example.com/mcp-False] [gw1] [ 46%] PASSED tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[streamable-http-stateless-2025-11-25] [gw21] [ 46%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_re_lists_and_retries_a_call_rejected_for_an_unlisted_tool tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_re_lists_and_retries_when_a_listed_tool_gains_a_header_annotation tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://api.example.com/mcp-True] [gw46] [ 46%] PASSED tests/interaction/transports/test_hosting_resume.py::test_the_priming_row_is_stored_before_any_handler_output_for_that_stream tests/interaction/transports/test_hosting_resume.py::test_get_with_last_event_id_replays_only_that_streams_missed_events tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[in-memory-2026-07-28] [gw12] [ 46%] PASSED tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[in-memory-2026-07-28] [gw19] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://api.example.com/mcp-True] tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://api.example.com/mcp/-True] [gw44] [ 46%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[sse-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[streamable-http-2025-11-25] tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[streamable-http-2026-07-28] [gw36] [ 46%] PASSED tests/issues/test_192_request_id.py::test_request_id_match tests/issues/test_342_base64_encoding.py::test_server_base64_encoding [gw42] [ 46%] PASSED tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[OPTIONS-/token-application/x-www-form-urlencoded] tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[OPTIONS-/revoke-application/x-www-form-urlencoded] [gw27] [ 46%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[in-memory-2025-11-25] [gw41] [ 46%] PASSED tests/examples/test_stories.py::test_story[refund_desk-server-http-asgi-modern] [gw19] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://api.example.com/mcp/-True] tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://API.EXAMPLE.COM:443/mcp-True] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[sse-2025-11-25] [gw30] [ 46%] PASSED tests/docs/test_translations.py::test_rejected_credentials_stop_the_run_with_exit_2 tests/docs/test_translations.py::test_jobs_keeps_that_many_pages_in_flight_and_publishes_each_before_starting_another [gw42] [ 46%] PASSED tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[OPTIONS-/revoke-application/x-www-form-urlencoded] tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[OPTIONS-/register-application/json] [gw20] [ 46%] PASSED tests/interaction/mcpserver/test_resources.py::test_registering_a_duplicate_resource_uri_warns_and_keeps_the_first[streamable-http-2026-07-28] tests/interaction/mcpserver/test_subscriptions.py::test_listen_surfaces_the_ack_and_iterates_typed_events[in-memory-2026-07-28] [gw1] [ 46%] PASSED tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[in-memory-2026-07-28] tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[streamable-http-2026-07-28] [gw19] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://API.EXAMPLE.COM:443/mcp-True] tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://api.example.com-False] [gw36] [ 46%] PASSED tests/issues/test_342_base64_encoding.py::test_server_base64_encoding tests/issues/test_552_windows_hang.py::test_initialize_succeeds_and_shutdown_returns_after_the_server_exits_mid_session [gw36] [ 46%] SKIPPED tests/issues/test_552_windows_hang.py::test_initialize_succeeds_and_shutdown_returns_after_the_server_exits_mid_session [gw42] [ 46%] PASSED tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[OPTIONS-/register-application/json] [gw38] [ 46%] PASSED tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[in-memory-2026-07-28] tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[streamable-http-2026-07-28] tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[HEAD-/authorize-application/x-www-form-urlencoded] tests/issues/test_973_url_decoding.py::test_template_matches_decodes_space [gw37] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://other.example.com/mcp-False] tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-api.example.com-False] tests/interaction/lowlevel/test_resources.py::test_read_resource_text[streamable-http-2026-07-28] [gw12] [ 46%] PASSED tests/interaction/mcpserver/test_resources.py::test_list_static_and_templated_resources[streamable-http-2026-07-28] [gw46] [ 46%] PASSED tests/interaction/transports/test_hosting_resume.py::test_get_with_last_event_id_replays_only_that_streams_missed_events tests/interaction/transports/test_hosting_resume.py::test_a_pre_2025_11_25_reconnect_replays_without_minting_a_priming_event [gw25] [ 46%] PASSED tests/examples/test_stories.py::test_story[bearer_auth-server-http-asgi-legacy] tests/examples/test_stories.py::test_story[bearer_auth-server_lowlevel-http-asgi-modern] [gw36] [ 46%] PASSED tests/issues/test_973_url_decoding.py::test_template_matches_decodes_space tests/issues/test_973_url_decoding.py::test_template_matches_decodes_accented_characters tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[in-memory-2025-11-25] [gw6] [ 46%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_wrong_type_argument_is_rejected_before_the_function_runs[in-memory-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_wrong_type_argument_is_rejected_before_the_function_runs[sse-2025-11-25] [gw21] [ 46%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_re_lists_and_retries_when_a_listed_tool_gains_a_header_annotation tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_raises_a_header_mismatch_that_survives_the_retry [gw44] [ 46%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[streamable-http-2026-07-28] [gw28] [ 46%] PASSED tests/interaction/lowlevel/test_resources.py::test_read_resource_text[streamable-http-2026-07-28] tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[streamable-http-stateless-2025-11-25] [gw42] [ 46%] PASSED tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[HEAD-/authorize-application/x-www-form-urlencoded] tests/server/auth/test_error_handling.py::test_request_body_within_the_limit_is_still_parsed [gw42] [ 46%] PASSED tests/server/auth/test_error_handling.py::test_request_body_within_the_limit_is_still_parsed tests/server/auth/test_error_handling.py::test_cors_preflight_is_still_answered [gw42] [ 46%] PASSED tests/server/auth/test_error_handling.py::test_cors_preflight_is_still_answered tests/server/auth/test_error_handling.py::test_oversized_cross_origin_request_gets_413_with_cors_headers tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[in-memory-2026-07-28] [gw36] [ 46%] PASSED tests/issues/test_973_url_decoding.py::test_template_matches_decodes_accented_characters [gw27] [ 46%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[sse-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[streamable-http-2025-11-25] [gw1] [ 46%] PASSED tests/interaction/mcpserver/test_context.py::test_context_read_resource_reads_registered_resource[streamable-http-2026-07-28] tests/interaction/mcpserver/test_context.py::test_set_logging_level_is_rejected_and_messages_are_never_filtered[in-memory-2025-11-25] tests/issues/test_973_url_decoding.py::test_template_matches_decodes_complex_phrase [gw12] [ 46%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[in-memory-2025-11-25] tests/server/auth/test_identity_assertion.py::test_identity_assertion_rejects_secretless_confidential_client [gw42] [ 46%] PASSED tests/server/auth/test_error_handling.py::test_oversized_cross_origin_request_gets_413_with_cors_headers [gw19] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://api.example.com-False] [gw23] [ 46%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_with_non_text_content_round_trips[in-memory-2026-07-28] [gw37] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-api.example.com-False] tests/server/auth/test_identity_assertion.py::test_build_metadata_advertises_id_jag_profile_when_enabled [gw25] [ 46%] PASSED tests/examples/test_stories.py::test_story[bearer_auth-server_lowlevel-http-asgi-modern] [gw36] [ 46%] PASSED tests/issues/test_973_url_decoding.py::test_template_matches_decodes_complex_phrase tests/issues/test_973_url_decoding.py::test_template_matches_preserves_plus_sign tests/server/lowlevel/test_server_discover.py::test_supported_versions_is_modern_set [gw28] [ 46%] PASSED tests/server/auth/test_identity_assertion.py::test_identity_assertion_rejects_secretless_confidential_client tests/server/auth/test_identity_assertion.py::test_malformed_request_missing_assertion_is_invalid_request [gw21] [ 46%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_raises_a_header_mismatch_that_survives_the_retry tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_user [gw37] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_user tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_non_authenticated_user [gw39] [ 46%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[in-memory-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[streamable-http-2026-07-28] [gw23] [ 46%] PASSED tests/server/lowlevel/test_server_discover.py::test_supported_versions_is_modern_set tests/server/lowlevel/test_server_discover.py::test_server_info_reflects_constructor_fields [gw28] [ 46%] PASSED tests/server/auth/test_identity_assertion.py::test_malformed_request_missing_assertion_is_invalid_request [gw1] [ 46%] PASSED tests/interaction/mcpserver/test_context.py::test_set_logging_level_is_rejected_and_messages_are_never_filtered[in-memory-2025-11-25] tests/interaction/mcpserver/test_context.py::test_set_logging_level_is_rejected_and_messages_are_never_filtered[sse-2025-11-25] tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_re_list_follows_cursors_only_as_far_as_the_page_listing_the_tool [gw42] [ 46%] PASSED tests/server/auth/test_identity_assertion.py::test_build_metadata_advertises_id_jag_profile_when_enabled tests/server/auth/test_identity_assertion.py::test_metadata_endpoint_lists_id_jag_profile [gw42] [ 46%] PASSED tests/server/auth/test_identity_assertion.py::test_metadata_endpoint_lists_id_jag_profile tests/server/auth/test_identity_assertion.py::test_identity_assertion_success [gw44] [ 46%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[in-memory-2026-07-28] [gw46] [ 46%] PASSED tests/interaction/transports/test_hosting_resume.py::test_a_pre_2025_11_25_reconnect_replays_without_minting_a_priming_event tests/interaction/transports/test_hosting_resume.py::test_an_unknown_last_event_id_yields_an_empty_replay_stream tests/server/auth/test_identity_assertion.py::test_client_without_the_grant_registered_is_rejected [gw37] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_non_authenticated_user tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_missing_required_scope [gw37] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_missing_required_scope tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_auth_credentials [gw37] [ 46%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_auth_credentials tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_has_required_scopes tests/examples/test_stories.py::test_story[bearer_auth-server_lowlevel-http-asgi-legacy] [gw33] [ 46%] PASSED tests/interaction/lowlevel/test_prompts.py::test_get_prompt_substitutes_arguments[streamable-http-stateless-2025-11-25] tests/server/auth/test_routes.py::test_validate_issuer_url_http_non_loopback_rejected [gw33] [ 47%] PASSED tests/server/auth/test_routes.py::test_validate_issuer_url_http_non_loopback_rejected tests/server/auth/test_routes.py::test_validate_issuer_url_http_127_prefix_domain_rejected [gw29] [ 47%] PASSED tests/interaction/lowlevel/test_progress.py::test_concurrent_requests_carry_distinct_progress_tokens[streamable-http-2026-07-28] tests/server/auth/test_protected_resource.py::test_route_consistency_consistent_paths_for_various_resources[https://example.com-/.well-known/oauth-protected-resource] [gw29] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_route_consistency_consistent_paths_for_various_resources[https://example.com-/.well-known/oauth-protected-resource] tests/server/auth/test_protected_resource.py::test_route_consistency_consistent_paths_for_various_resources[https://example.com/-/.well-known/oauth-protected-resource] [gw36] [ 47%] PASSED tests/issues/test_973_url_decoding.py::test_template_matches_preserves_plus_sign tests/server/auth/middleware/test_auth_context.py::test_auth_context_middleware_with_authenticated_user [gw36] [ 47%] PASSED tests/server/auth/middleware/test_auth_context.py::test_auth_context_middleware_with_authenticated_user tests/server/auth/middleware/test_auth_context.py::test_auth_context_middleware_with_no_user [gw37] [ 47%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_has_required_scopes tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_multiple_required_scopes [gw33] [ 47%] PASSED tests/server/auth/test_routes.py::test_validate_issuer_url_http_127_prefix_domain_rejected tests/server/auth/test_routes.py::test_validate_issuer_url_http_127_prefix_subdomain_rejected [gw42] [ 47%] PASSED tests/server/auth/test_identity_assertion.py::test_identity_assertion_success tests/server/auth/test_identity_assertion.py::test_identity_assertion_invalid_assertion [gw42] [ 47%] PASSED tests/server/auth/test_identity_assertion.py::test_identity_assertion_invalid_assertion tests/server/auth/test_identity_assertion.py::test_identity_assertion_rejected_when_disabled [gw42] [ 47%] PASSED tests/server/auth/test_identity_assertion.py::test_identity_assertion_rejected_when_disabled [gw33] [ 47%] PASSED tests/server/auth/test_routes.py::test_validate_issuer_url_http_127_prefix_subdomain_rejected tests/server/auth/test_routes.py::test_validate_issuer_url_fragment_rejected [gw33] [ 47%] PASSED tests/server/auth/test_routes.py::test_validate_issuer_url_fragment_rejected tests/server/auth/test_routes.py::test_validate_issuer_url_query_rejected [gw44] [ 47%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[in-memory-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[streamable-http-2026-07-28] [gw3] [ 47%] PASSED tests/interaction/transports/test_hosting_http.py::test_origin_validation_rejects_disallowed_origins_when_enabled tests/interaction/transports/test_hosting_http_modern.py::test_modern_tools_call_returns_result_type_complete_without_initialize [gw36] [ 47%] PASSED tests/server/auth/middleware/test_auth_context.py::test_auth_context_middleware_with_no_user [gw46] [ 47%] PASSED tests/interaction/transports/test_hosting_resume.py::test_an_unknown_last_event_id_yields_an_empty_replay_stream tests/interaction/transports/test_hosting_resume.py::test_dropping_the_connection_mid_request_does_not_cancel_the_handler [gw37] [ 47%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_multiple_required_scopes tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_required_scopes [gw37] [ 47%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestRequireAuthMiddleware::test_no_required_scopes tests/server/auth/middleware/test_bearer_auth.py::test_authorization_context_is_built_from_principal_components [gw37] [ 47%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_authorization_context_is_built_from_principal_components tests/server/auth/test_error_handling.py::test_registration_error_handling [gw37] [ 47%] PASSED tests/server/auth/test_error_handling.py::test_registration_error_handling tests/server/auth/test_error_handling.py::test_authorize_error_handling [gw28] [ 47%] PASSED tests/server/auth/test_identity_assertion.py::test_client_without_the_grant_registered_is_rejected [gw33] [ 47%] PASSED tests/server/auth/test_routes.py::test_validate_issuer_url_query_rejected tests/server/auth/test_routes.py::test_auth_settings_preserves_path_less_issuer [gw33] [ 47%] PASSED tests/server/auth/test_routes.py::test_auth_settings_preserves_path_less_issuer tests/server/auth/test_routes.py::test_build_metadata_serves_issuer_without_trailing_slash [gw1] [ 47%] PASSED tests/interaction/mcpserver/test_context.py::test_set_logging_level_is_rejected_and_messages_are_never_filtered[sse-2025-11-25] tests/interaction/mcpserver/test_context.py::test_set_logging_level_is_rejected_and_messages_are_never_filtered[streamable-http-2025-11-25] [gw21] [ 47%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_re_list_follows_cursors_only_as_far_as_the_page_listing_the_tool tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_re_list_gives_up_after_100_pages_of_a_listing_that_never_ends [gw29] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_route_consistency_consistent_paths_for_various_resources[https://example.com/-/.well-known/oauth-protected-resource] tests/server/auth/test_protected_resource.py::test_route_consistency_consistent_paths_for_various_resources[https://example.com/mcp-/.well-known/oauth-protected-resource/mcp] [gw29] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_route_consistency_consistent_paths_for_various_resources[https://example.com/mcp-/.well-known/oauth-protected-resource/mcp] tests/server/auth/test_provider.py::test_construct_redirect_uri_no_existing_params [gw29] [ 47%] PASSED tests/server/auth/test_provider.py::test_construct_redirect_uri_no_existing_params tests/server/auth/test_provider.py::test_construct_redirect_uri_with_existing_params [gw29] [ 47%] PASSED tests/server/auth/test_provider.py::test_construct_redirect_uri_with_existing_params tests/server/auth/test_provider.py::test_construct_redirect_uri_multiple_existing_params [gw25] [ 47%] PASSED tests/examples/test_stories.py::test_story[bearer_auth-server_lowlevel-http-asgi-legacy] tests/examples/test_stories.py::test_story[oauth-server-http-asgi-modern] [gw38] [ 47%] PASSED tests/interaction/mcpserver/test_resources.py::test_resource_function_that_raises_is_surfaced_as_a_jsonrpc_error[streamable-http-2026-07-28] [gw44] [ 47%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_invalid_arguments_become_error_result[streamable-http-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[in-memory-2025-11-25] tests/server/auth/test_identity_assertion.py::test_dcr_refuses_to_register_the_jwt_bearer_grant [gw28] [ 47%] PASSED tests/server/auth/test_identity_assertion.py::test_dcr_refuses_to_register_the_jwt_bearer_grant tests/server/auth/test_identity_assertion.py::test_default_provider_rejects_identity_assertion [gw28] [ 47%] PASSED tests/server/auth/test_identity_assertion.py::test_default_provider_rejects_identity_assertion tests/server/auth/test_protected_resource.py::test_metadata_endpoint_with_path [gw28] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_endpoint_with_path tests/server/auth/test_protected_resource.py::test_metadata_endpoint_root_path_returns_404 [gw28] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_endpoint_root_path_returns_404 tests/server/auth/test_protected_resource.py::test_metadata_endpoint_without_path [gw28] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_endpoint_without_path tests/server/auth/test_protected_resource.py::test_metadata_url_construction_url_without_path [gw28] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_url_construction_url_without_path tests/server/auth/test_protected_resource.py::test_metadata_url_construction_url_with_path_component [gw33] [ 47%] PASSED tests/server/auth/test_routes.py::test_build_metadata_serves_issuer_without_trailing_slash tests/server/auth/test_settings.py::test_validate_token_resource_requires_a_resource_server_url [gw33] [ 47%] PASSED tests/server/auth/test_settings.py::test_validate_token_resource_requires_a_resource_server_url tests/server/auth/test_settings.py::test_leaving_validate_token_resource_unset_warns_when_a_resource_server_url_is_configured [gw23] [ 47%] PASSED tests/server/lowlevel/test_server_discover.py::test_server_info_reflects_constructor_fields tests/server/lowlevel/test_server_discover.py::test_an_unversioned_server_reports_an_empty_version [gw23] [ 47%] PASSED tests/server/lowlevel/test_server_discover.py::test_an_unversioned_server_reports_an_empty_version tests/server/lowlevel/test_server_discover.py::test_instructions_threaded_through [gw23] [ 47%] PASSED tests/server/lowlevel/test_server_discover.py::test_instructions_threaded_through tests/server/lowlevel/test_server_discover.py::test_capabilities_derived_from_registered_handlers [gw23] [ 47%] PASSED tests/server/lowlevel/test_server_discover.py::test_capabilities_derived_from_registered_handlers tests/server/lowlevel/test_server_discover.py::test_discover_result_defaults_to_immediately_stale_private_cache [gw23] [ 47%] PASSED tests/server/lowlevel/test_server_discover.py::test_discover_result_defaults_to_immediately_stale_private_cache tests/server/lowlevel/test_server_discover.py::test_overridable_via_add_request_handler [gw23] [ 47%] PASSED tests/server/lowlevel/test_server_discover.py::test_overridable_via_add_request_handler tests/server/lowlevel/test_server_discover.py::test_modern_subscription_bits_derive_from_listen_serving [gw23] [ 47%] PASSED tests/server/lowlevel/test_server_discover.py::test_modern_subscription_bits_derive_from_listen_serving tests/server/lowlevel/test_server_discover.py::test_legacy_capability_derivation_ignores_listen [gw23] [ 47%] PASSED tests/server/lowlevel/test_server_discover.py::test_legacy_capability_derivation_ignores_listen tests/server/lowlevel/test_server_discover.py::test_unconfigured_experimental_is_omitted_from_both_initialize_and_discover [gw28] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_url_construction_url_with_path_component tests/server/auth/test_protected_resource.py::test_metadata_url_construction_url_with_trailing_slash_only [gw28] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_url_construction_url_with_trailing_slash_only tests/server/auth/test_protected_resource.py::test_metadata_url_construction_various_resource_configurations[https://example.com-https://example.com/.well-known/oauth-protected-resource] [gw37] [ 47%] PASSED tests/server/auth/test_error_handling.py::test_authorize_error_handling tests/server/auth/test_error_handling.py::test_token_error_handling_auth_code [gw37] [ 47%] PASSED tests/server/auth/test_error_handling.py::test_token_error_handling_auth_code tests/server/auth/test_error_handling.py::test_token_error_handling_refresh_token [gw27] [ 47%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[streamable-http-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[streamable-http-stateless-2025-11-25] [gw46] [ 47%] PASSED tests/interaction/transports/test_hosting_resume.py::test_dropping_the_connection_mid_request_does_not_cancel_the_handler tests/interaction/transports/test_hosting_resume.py::test_a_call_whose_stream_the_server_closes_is_resumed_by_the_client [gw3] [ 47%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_tools_call_returns_result_type_complete_without_initialize tests/interaction/transports/test_hosting_http_modern.py::test_modern_response_carries_no_session_id_header [gw3] [ 47%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_response_carries_no_session_id_header tests/interaction/transports/test_hosting_http_modern.py::test_modern_notification_post_is_acknowledged_202_and_a_posted_response_is_rejected[stateless-flag-json] [gw3] [ 47%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_notification_post_is_acknowledged_202_and_a_posted_response_is_rejected[stateless-flag-json] [gw28] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_url_construction_various_resource_configurations[https://example.com-https://example.com/.well-known/oauth-protected-resource] tests/server/auth/test_protected_resource.py::test_metadata_url_construction_various_resource_configurations[https://example.com/-https://example.com/.well-known/oauth-protected-resource] [gw28] [ 47%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_url_construction_various_resource_configurations[https://example.com/-https://example.com/.well-known/oauth-protected-resource] tests/server/auth/test_protected_resource.py::test_metadata_url_construction_various_resource_configurations[https://example.com/mcp-https://example.com/.well-known/oauth-protected-resource/mcp] [gw23] [ 48%] PASSED tests/server/lowlevel/test_server_discover.py::test_unconfigured_experimental_is_omitted_from_both_initialize_and_discover tests/server/lowlevel/test_server_listing.py::test_list_prompts_basic [gw27] [ 48%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[in-memory-2026-07-28] tests/interaction/transports/test_hosting_http_modern.py::test_modern_notification_post_is_acknowledged_202_and_a_posted_response_is_rejected[stateless-flag-sse] [gw29] [ 48%] PASSED tests/server/auth/test_provider.py::test_construct_redirect_uri_multiple_existing_params tests/server/auth/test_provider.py::test_construct_redirect_uri_with_none_values [gw29] [ 48%] PASSED tests/server/auth/test_provider.py::test_construct_redirect_uri_with_none_values tests/server/auth/test_provider.py::test_construct_redirect_uri_empty_params [gw29] [ 48%] PASSED tests/server/auth/test_provider.py::test_construct_redirect_uri_empty_params tests/server/auth/test_provider.py::test_construct_redirect_uri_duplicate_param_names [gw29] [ 48%] PASSED tests/server/auth/test_provider.py::test_construct_redirect_uri_duplicate_param_names tests/server/auth/test_provider.py::test_construct_redirect_uri_multivalued_existing_params [gw29] [ 48%] PASSED tests/server/auth/test_provider.py::test_construct_redirect_uri_multivalued_existing_params tests/server/auth/test_provider.py::test_construct_redirect_uri_encoded_values [gw6] [ 48%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_wrong_type_argument_is_rejected_before_the_function_runs[sse-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_wrong_type_argument_is_rejected_before_the_function_runs[streamable-http-2025-11-25] [gw37] [ 48%] PASSED tests/server/auth/test_error_handling.py::test_token_error_handling_refresh_token [gw28] [ 48%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_url_construction_various_resource_configurations[https://example.com/mcp-https://example.com/.well-known/oauth-protected-resource/mcp] tests/server/auth/test_protected_resource.py::test_metadata_url_construction_various_resource_configurations[http://localhost:8001/mcp-http://localhost:8001/.well-known/oauth-protected-resource/mcp] [gw28] [ 48%] PASSED tests/server/auth/test_protected_resource.py::test_metadata_url_construction_various_resource_configurations[http://localhost:8001/mcp-http://localhost:8001/.well-known/oauth-protected-resource/mcp] [gw29] [ 48%] PASSED tests/server/auth/test_provider.py::test_construct_redirect_uri_encoded_values tests/server/auth/test_provider.py::test_principal_components_composes_client_issuer_subject [gw3] [ 48%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_notification_post_is_acknowledged_202_and_a_posted_response_is_rejected[stateless-flag-sse] tests/interaction/transports/test_hosting_http_modern.py::test_modern_notification_post_is_acknowledged_202_and_a_posted_response_is_rejected[default-json] [gw8] [ 48%] PASSED tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[in-memory-2025-11-25] tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[sse-2025-11-25] [gw23] [ 48%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_prompts_basic [gw33] [ 48%] PASSED tests/server/auth/test_settings.py::test_leaving_validate_token_resource_unset_warns_when_a_resource_server_url_is_configured tests/server/auth/test_settings.py::test_an_explicit_choice_or_no_resource_server_url_does_not_warn[kwargs0] [gw33] [ 48%] PASSED tests/server/auth/test_settings.py::test_an_explicit_choice_or_no_resource_server_url_does_not_warn[kwargs0] tests/server/auth/test_settings.py::test_an_explicit_choice_or_no_resource_server_url_does_not_warn[kwargs1] [gw33] [ 48%] PASSED tests/server/auth/test_settings.py::test_an_explicit_choice_or_no_resource_server_url_does_not_warn[kwargs1] tests/server/lowlevel/test_helper_types.py::test_read_resource_contents_with_metadata [gw33] [ 48%] PASSED tests/server/lowlevel/test_helper_types.py::test_read_resource_contents_with_metadata tests/server/lowlevel/test_helper_types.py::test_read_resource_contents_without_metadata [gw29] [ 48%] PASSED tests/server/auth/test_provider.py::test_principal_components_composes_client_issuer_subject [gw1] [ 48%] PASSED tests/interaction/mcpserver/test_context.py::test_set_logging_level_is_rejected_and_messages_are_never_filtered[streamable-http-2025-11-25] tests/interaction/mcpserver/test_context.py::test_set_logging_level_is_rejected_and_messages_are_never_filtered[streamable-http-stateless-2025-11-25] tests/server/lowlevel/test_server_listing.py::test_list_resources_basic [gw33] [ 48%] PASSED tests/server/lowlevel/test_helper_types.py::test_read_resource_contents_without_metadata [gw27] [ 48%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[in-memory-2026-07-28] [gw3] [ 48%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_notification_post_is_acknowledged_202_and_a_posted_response_is_rejected[default-json] tests/server/lowlevel/test_helper_types.py::test_read_resource_contents_with_bytes [gw22] [ 48%] PASSED tests/client/test_stdio.py::test_a_failed_write_to_a_live_server_closes_the_read_stream_instead_of_hanging tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[streamable-http-2026-07-28] [gw23] [ 48%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_resources_basic [gw33] [ 48%] PASSED tests/server/lowlevel/test_helper_types.py::test_read_resource_contents_with_bytes tests/client/test_stdio.py::test_exit_completes_when_a_write_is_wedged_in_a_pipe_no_one_reads [gw8] [ 48%] PASSED tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[sse-2025-11-25] tests/server/lowlevel/test_server_listing.py::test_list_tools_basic tests/interaction/transports/test_hosting_http_modern.py::test_modern_notification_post_is_acknowledged_202_and_a_posted_response_is_rejected[default-sse] tests/server/auth/test_routes.py::test_validate_issuer_url_https_allowed [gw29] [ 48%] PASSED tests/server/auth/test_routes.py::test_validate_issuer_url_https_allowed tests/server/auth/test_routes.py::test_validate_issuer_url_http_localhost_allowed tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[streamable-http-2025-11-25] [gw29] [ 48%] PASSED tests/server/auth/test_routes.py::test_validate_issuer_url_http_localhost_allowed tests/server/auth/test_routes.py::test_validate_issuer_url_http_127_0_0_1_allowed [gw23] [ 48%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_tools_basic [gw3] [ 48%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_notification_post_is_acknowledged_202_and_a_posted_response_is_rejected[default-sse] [gw29] [ 48%] PASSED tests/server/auth/test_routes.py::test_validate_issuer_url_http_127_0_0_1_allowed tests/server/lowlevel/test_server_listing.py::test_list_prompts_empty tests/interaction/transports/test_hosting_http_modern.py::test_modern_initialize_is_method_not_found [gw25] [ 48%] PASSED tests/examples/test_stories.py::test_story[oauth-server-http-asgi-modern] tests/examples/test_stories.py::test_story[oauth-server-http-asgi-legacy] tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_decline_returns_no_content[streamable-http-2025-11-25] [gw1] [ 48%] PASSED tests/interaction/mcpserver/test_context.py::test_set_logging_level_is_rejected_and_messages_are_never_filtered[streamable-http-stateless-2025-11-25] [gw27] [ 48%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_renders_function_return[streamable-http-2026-07-28] [gw23] [ 48%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_prompts_empty tests/examples/test_stories.py::test_story[refund_desk-server-http-asgi-legacy] [gw3] [ 48%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_initialize_is_method_not_found tests/interaction/transports/test_hosting_http_modern.py::test_legacy_version_header_falls_through_and_unrecognised_header_routes_to_modern tests/interaction/mcpserver/test_extensions.py::test_claimed_result_is_finished_by_the_owning_extensions_resolver[in-memory-2026-07-28] tests/interaction/mcpserver/test_prompts.py::test_get_unknown_prompt_is_error[in-memory-2025-11-25] tests/examples/test_story_shape.py::test_main_constructs_client_inline[sampling] tests/interaction/lowlevel/test_roots.py::test_list_roots_empty[sse-2025-11-25] [gw10] [ 48%] PASSED tests/examples/test_story_shape.py::test_main_constructs_client_inline[sampling] [gw31] [ 48%] PASSED tests/docs_src/test_cancellation.py::test_a_def_tool_that_never_checks_runs_to_the_end [gw39] [ 48%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[streamable-http-2026-07-28] [gw6] [ 48%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_wrong_type_argument_is_rejected_before_the_function_runs[streamable-http-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_wrong_type_argument_is_rejected_before_the_function_runs[streamable-http-stateless-2025-11-25] [gw8] [ 48%] PASSED tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[streamable-http-2025-11-25] tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[streamable-http-stateless-2025-11-25] [gw3] [ 48%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_legacy_version_header_falls_through_and_unrecognised_header_routes_to_modern tests/interaction/transports/test_hosting_http_modern.py::test_modern_handler_exception_maps_to_internal_error_without_leaking_the_message tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[in-memory-2025-11-25] tests/docs_src/test_cancellation.py::test_prompt_and_resource_functions_are_cancelled_like_tools [gw14] [ 48%] PASSED tests/interaction/lowlevel/test_elicitation.py::test_elicit_url_decline_returns_no_content[streamable-http-2025-11-25] tests/server/lowlevel/test_server_listing.py::test_list_tools_empty [gw1] [ 48%] PASSED tests/interaction/mcpserver/test_extensions.py::test_claimed_result_is_finished_by_the_owning_extensions_resolver[in-memory-2026-07-28] tests/interaction/mcpserver/test_extensions.py::test_claimed_result_is_finished_by_the_owning_extensions_resolver[streamable-http-2026-07-28] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_secret_basic_authentication [gw11] [ 48%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[in-memory-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[sse-2025-11-25] [gw5] [ 48%] PASSED tests/interaction/transports/test_client_transport_http.py::test_at_2025_abandoning_a_call_posts_exactly_one_cancelled_frame tests/interaction/transports/test_flows.py::test_concurrent_clients_on_one_stateful_server_receive_only_their_own_notifications [gw44] [ 48%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[in-memory-2025-11-25] [gw14] [ 48%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_tools_empty [gw10] [ 48%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_secret_basic_authentication tests/server/lowlevel/test_server_pagination.py::test_list_prompts_pagination [gw39] [ 48%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[in-memory-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[sse-2025-11-25] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_wrong_auth_method_without_valid_credentials_fails [gw26] [ 48%] PASSED tests/interaction/lowlevel/test_roots.py::test_list_roots_empty[sse-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[sse-2025-11-25] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_scope [gw14] [ 48%] PASSED tests/server/lowlevel/test_server_pagination.py::test_list_prompts_pagination tests/interaction/lowlevel/test_resources.py::test_subscribe_resource_delivers_uri_to_handler[in-memory-2025-11-25] tests/server/lowlevel/test_server_pagination.py::test_list_resources_pagination [gw10] [ 48%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_wrong_auth_method_without_valid_credentials_fails tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_image_content_reaches_callback[sse-2025-11-25] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_without_header_fails [gw14] [ 48%] PASSED tests/server/lowlevel/test_server_pagination.py::test_list_resources_pagination tests/server/lowlevel/test_server_pagination.py::test_list_tools_pagination [gw9] [ 48%] PASSED tests/interaction/lowlevel/test_resources.py::test_subscribe_resource_delivers_uri_to_handler[in-memory-2025-11-25] [gw8] [ 48%] PASSED tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[in-memory-2026-07-28] tests/server/mcpserver/prompts/test_base.py::test_message_converts_image_and_audio_helpers_to_content_blocks[helper1-expected1] [gw11] [ 48%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[sse-2025-11-25] [gw10] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_without_header_fails [gw14] [ 49%] PASSED tests/server/lowlevel/test_server_pagination.py::test_list_tools_pagination [gw26] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_scope tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_basic_fn tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_metadata_endpoint tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[streamable-http-2025-11-25] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_invalid_base64_fails tests/interaction/lowlevel/test_sampling.py::test_a_client_with_a_sampling_callback_declares_the_sampling_capability[sse-2025-11-25] [gw9] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::test_message_converts_image_and_audio_helpers_to_content_blocks[helper1-expected1] tests/server/mcpserver/prompts/test_base.py::test_prompt_dict_result_accepts_image_helper_as_content [gw14] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_metadata_endpoint [gw26] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_basic_fn tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_async_fn tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_validation_error [gw1] [ 49%] PASSED tests/interaction/mcpserver/test_extensions.py::test_claimed_result_is_finished_by_the_owning_extensions_resolver[streamable-http-2026-07-28] tests/interaction/mcpserver/test_extensions.py::test_claimed_shape_fails_validation_for_a_client_without_the_extension[in-memory-2026-07-28] [gw10] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_invalid_base64_fails [gw8] [ 49%] PASSED tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[in-memory-2026-07-28] [gw30] [ 49%] PASSED tests/docs/test_translations.py::test_jobs_keeps_that_many_pages_in_flight_and_publishes_each_before_starting_another [gw27] [ 49%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_unknown_prompt_is_error[in-memory-2025-11-25] [gw3] [ 49%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_handler_exception_maps_to_internal_error_without_leaking_the_message tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[streamable-http-2026-07-28] [gw26] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_async_fn [gw39] [ 49%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[sse-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[streamable-http-2025-11-25] [gw9] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::test_prompt_dict_result_accepts_image_helper_as_content tests/server/mcpserver/prompts/test_base.py::test_prompt_return_annotation_is_not_run_through_tool_output_schema_derivation tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_with_args [gw14] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_validation_error tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_client_secret_returns_invalid_client [gw15] [ 49%] PASSED tests/interaction/lowlevel/test_sampling.py::test_create_message_request_with_image_content_reaches_callback[sse-2025-11-25] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_no_colon_fails tests/docs/test_translations.py::test_rejected_credentials_keep_a_page_that_lands_from_the_same_flight [gw34] [ 49%] PASSED tests/interaction/lowlevel/test_sampling.py::test_a_client_with_a_sampling_callback_declares_the_sampling_capability[sse-2025-11-25] [gw9] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::test_prompt_return_annotation_is_not_run_through_tool_output_schema_derivation [gw25] [ 49%] PASSED tests/examples/test_stories.py::test_story[oauth-server-http-asgi-legacy] tests/server/mcpserver/resources/test_file_resources.py::test_removed_is_binary_kwarg_is_rejected [gw22] [ 49%] PASSED tests/client/test_stdio.py::test_exit_completes_when_a_write_is_wedged_in_a_pipe_no_one_reads tests/client/test_stdio.py::test_undelivered_server_output_is_drained_at_shutdown_so_the_server_can_exit [gw10] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_no_colon_fails tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_client_id_mismatch_fails tests/server/mcpserver/prompts/test_base.py::test_bare_content_returned_from_a_prompt_becomes_user_messages[returned0-expected0] tests/examples/test_stories.py::test_story[oauth-server_lowlevel-http-asgi-modern] tests/interaction/mcpserver/test_prompts.py::test_get_unknown_prompt_is_error[sse-2025-11-25] tests/server/mcpserver/resources/test_file_resources.py::test_file_resource_creation [gw26] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_with_args tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_with_invalid_kwargs [gw1] [ 49%] PASSED tests/interaction/mcpserver/test_extensions.py::test_claimed_shape_fails_validation_for_a_client_without_the_extension[in-memory-2026-07-28] tests/interaction/mcpserver/test_extensions.py::test_claimed_shape_fails_validation_for_a_client_without_the_extension[streamable-http-2026-07-28] [gw14] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_client_secret_returns_invalid_client tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_auth_code [gw15] [ 49%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_file_resource_creation [gw26] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_with_invalid_kwargs tests/server/mcpserver/resources/test_file_resources.py::test_file_resource_str_path_conversion [gw34] [ 49%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_removed_is_binary_kwarg_is_rejected tests/server/mcpserver/resources/test_file_resources.py::test_unknown_encoding_is_rejected tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_message [gw10] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_basic_auth_client_id_mismatch_fails [gw9] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::test_bare_content_returned_from_a_prompt_becomes_user_messages[returned0-expected0] tests/server/mcpserver/prompts/test_base.py::test_bare_content_returned_from_a_prompt_becomes_user_messages[returned1-expected1] [gw14] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_auth_code tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_expired_auth_code [gw11] [ 49%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[streamable-http-stateless-2025-11-25] [gw8] [ 49%] PASSED tests/interaction/mcpserver/test_context.py::test_context_report_progress_sends_progress_notifications[streamable-http-2026-07-28] tests/interaction/mcpserver/test_context.py::test_context_exposes_request_id_and_client_info_to_a_tool[in-memory-2025-11-25] [gw34] [ 49%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_unknown_encoding_is_rejected tests/server/mcpserver/resources/test_file_resources.py::test_unknown_declared_charset_is_rejected [gw9] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::test_bare_content_returned_from_a_prompt_becomes_user_messages[returned1-expected1] [gw26] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_message tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_assistant_message [gw15] [ 49%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_file_resource_str_path_conversion tests/server/mcpserver/resources/test_file_resources.py::test_read_text_file [gw34] [ 49%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_unknown_declared_charset_is_rejected tests/server/mcpserver/resources/test_file_resources.py::test_multibyte_encoding_is_accepted tests/server/mcpserver/prompts/test_base.py::test_bare_content_returned_from_a_prompt_becomes_user_messages[returned2-expected2] tests/interaction/lowlevel/test_progress.py::test_progress_token_visible_to_handler[in-memory-2025-11-25] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_none_auth_method_public_client [gw10] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_none_auth_method_public_client tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_client_id [gw6] [ 49%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_a_wrong_type_argument_is_rejected_before_the_function_runs[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[in-memory-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[sse-2025-11-25] [gw34] [ 49%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_multibyte_encoding_is_accepted tests/server/mcpserver/resources/test_file_resources.py::test_non_text_codec_is_rejected [gw1] [ 49%] PASSED tests/interaction/mcpserver/test_extensions.py::test_claimed_shape_fails_validation_for_a_client_without_the_extension[streamable-http-2026-07-28] tests/interaction/mcpserver/test_extensions.py::test_per_request_ad_carries_settings_and_gates_the_claimed_substitution[in-memory-2026-07-28] [gw14] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_expired_auth_code tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_redirect_uri_mismatch[registered_client0] [gw8] [ 49%] PASSED tests/interaction/mcpserver/test_context.py::test_context_exposes_request_id_and_client_info_to_a_tool[in-memory-2025-11-25] tests/interaction/mcpserver/test_context.py::test_context_exposes_request_id_and_client_info_to_a_tool[sse-2025-11-25] [gw34] [ 49%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_non_text_codec_is_rejected [gw10] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_client_id [gw26] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_assistant_message tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_multiple_messages [gw26] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_multiple_messages tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_list_of_strings [gw15] [ 49%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_read_text_file tests/server/mcpserver/resources/test_file_resources.py::test_encoding_none_reads_bytes [gw15] [ 49%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_encoding_none_reads_bytes tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[text/plain] [gw9] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::test_bare_content_returned_from_a_prompt_becomes_user_messages[returned2-expected2] tests/server/mcpserver/prompts/test_base.py::test_prompt_returning_media_with_an_unreadable_file_fails_to_render [gw9] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::test_prompt_returning_media_with_an_unreadable_file_fails_to_render tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_add_prompt tests/server/mcpserver/resources/test_file_resources.py::test_json_file_is_served_as_text_by_default [gw14] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_redirect_uri_mismatch[registered_client0] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_code_verifier_mismatch [gw26] [ 49%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_list_of_strings tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_resource_content [gw6] [ 49%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[in-memory-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[sse-2025-11-25] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_client_id [gw10] [ 49%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_client_id tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_redirect_uri [gw9] [ 49%] PASSED tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_add_prompt tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_add_duplicate_prompt [gw1] [ 49%] PASSED tests/interaction/mcpserver/test_extensions.py::test_per_request_ad_carries_settings_and_gates_the_claimed_substitution[in-memory-2026-07-28] tests/interaction/mcpserver/test_extensions.py::test_per_request_ad_carries_settings_and_gates_the_claimed_substitution[streamable-http-2026-07-28] [gw15] [ 49%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[text/plain] tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[text/html] [gw15] [ 50%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[text/html] [gw9] [ 50%] PASSED tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_add_duplicate_prompt [gw26] [ 50%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_resource_content tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_mixed_content [gw26] [ 50%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_mixed_content tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_dict_with_resource [gw16] [ 50%] PASSED tests/interaction/lowlevel/test_progress.py::test_progress_token_visible_to_handler[in-memory-2025-11-25] [gw39] [ 50%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[streamable-http-stateless-2025-11-25] [gw40] [ 50%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[sse-2025-11-25] tests/server/mcpserver/resources/test_resource_manager.py::test_get_resource [gw40] [ 50%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_get_resource tests/server/mcpserver/resources/test_resource_manager.py::test_get_resource_from_template tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[application/json] [gw26] [ 50%] PASSED tests/server/mcpserver/prompts/test_base.py::TestRenderPrompt::test_fn_returns_dict_with_resource tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_error_handling [gw16] [ 50%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_error_handling tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_basemodel_conversion [gw16] [ 50%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_basemodel_conversion tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_custom_type_conversion [gw16] [ 50%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_custom_type_conversion tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_async_read_text [gw14] [ 50%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_code_verifier_mismatch tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_refresh_token [gw14] [ 50%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_refresh_token tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_disable_warn_on_duplicate_prompts [gw9] [ 50%] PASSED tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_disable_warn_on_duplicate_prompts tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_list_prompts tests/server/mcpserver/prompts/test_base.py::test_sync_fn_runs_in_worker_thread [gw25] [ 50%] PASSED tests/examples/test_stories.py::test_story[oauth-server_lowlevel-http-asgi-modern] tests/examples/test_stories.py::test_story[oauth-server_lowlevel-http-asgi-legacy] [gw16] [ 50%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_async_read_text tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_from_function [gw11] [ 50%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[in-memory-2026-07-28] [gw10] [ 50%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_redirect_uri tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_redirect_uri [gw15] [ 50%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[application/json] tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[application/xml] [gw15] [ 50%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[application/xml] [gw8] [ 50%] PASSED tests/interaction/mcpserver/test_context.py::test_context_exposes_request_id_and_client_info_to_a_tool[sse-2025-11-25] tests/interaction/mcpserver/test_context.py::test_context_exposes_request_id_and_client_info_to_a_tool[streamable-http-2025-11-25] [gw26] [ 50%] PASSED tests/server/mcpserver/prompts/test_base.py::test_sync_fn_runs_in_worker_thread tests/server/mcpserver/prompts/test_base.py::test_render_passes_input_required_result_through_unchanged [gw9] [ 50%] PASSED tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_list_prompts tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_render_prompt [gw40] [ 50%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_get_resource_from_template tests/server/mcpserver/resources/test_resource_manager.py::test_get_unknown_resource [gw40] [ 50%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_get_unknown_resource tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_expired_refresh_token [gw43] [ 50%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[in-memory-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[streamable-http-2026-07-28] tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[application/vnd.api+json] [gw39] [ 50%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[in-memory-2026-07-28] [gw10] [ 50%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_invalid_redirect_uri tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_redirect_uri_multiple_registered[registered_client0] [gw16] [ 50%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_from_function tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResourceMetadata::test_from_function_with_metadata [gw16] [ 50%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResourceMetadata::test_from_function_with_metadata tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResourceMetadata::test_from_function_without_metadata [gw16] [ 50%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResourceMetadata::test_from_function_without_metadata tests/server/mcpserver/resources/test_function_resources.py::test_sync_fn_runs_in_worker_thread [gw27] [ 50%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_unknown_prompt_is_error[sse-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_unknown_prompt_is_error[streamable-http-2025-11-25] [gw15] [ 50%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[application/vnd.api+json] tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[image/svg+xml] [gw30] [ 50%] PASSED tests/docs/test_translations.py::test_rejected_credentials_keep_a_page_that_lands_from_the_same_flight tests/docs/test_translations.py::test_rejected_credentials_with_pages_in_flight_start_no_further_page [gw11] [ 50%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[in-memory-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[streamable-http-2026-07-28] [gw26] [ 50%] PASSED tests/server/mcpserver/prompts/test_base.py::test_render_passes_input_required_result_through_unchanged [gw16] [ 50%] PASSED tests/server/mcpserver/resources/test_function_resources.py::test_sync_fn_runs_in_worker_thread [gw14] [ 50%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_expired_refresh_token [gw9] [ 50%] PASSED tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_render_prompt tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_render_prompt_with_args [gw9] [ 50%] PASSED tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_render_prompt_with_args tests/server/mcpserver/resources/test_resource_manager.py::test_list_resources [gw40] [ 50%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_list_resources tests/server/mcpserver/resources/test_resource_manager.py::test_add_template_with_metadata [gw15] [ 50%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_textual_mime_types_default_to_utf8_sig[image/svg+xml] tests/server/mcpserver/resources/test_file_resources.py::test_binary_mime_types_default_to_no_encoding[image/png] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_scope [gw6] [ 50%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[sse-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[streamable-http-2025-11-25] tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_render_unknown_prompt tests/server/mcpserver/resources/test_function_resources.py::test_sync_fn_does_not_block_event_loop [gw16] [ 50%] PASSED tests/server/mcpserver/resources/test_function_resources.py::test_sync_fn_does_not_block_event_loop tests/server/mcpserver/resources/test_function_resources.py::test_read_rejects_an_input_required_result_from_a_static_function [gw10] [ 50%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_redirect_uri_multiple_registered[registered_client0] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_unsupported_response_type [gw1] [ 50%] PASSED tests/interaction/mcpserver/test_extensions.py::test_per_request_ad_carries_settings_and_gates_the_claimed_substitution[streamable-http-2026-07-28] tests/interaction/mcpserver/test_extensions.py::test_legacy_ad_omits_claim_bearing_identifiers_but_keeps_claim_less_ones[in-memory-2025-11-25] [gw8] [ 50%] PASSED tests/interaction/mcpserver/test_context.py::test_context_exposes_request_id_and_client_info_to_a_tool[streamable-http-2025-11-25] tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[in-memory-2025-11-25] [gw39] [ 50%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[in-memory-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[streamable-http-2026-07-28] [gw40] [ 50%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_add_template_with_metadata tests/server/mcpserver/resources/test_resource_manager.py::test_add_template_without_metadata [gw16] [ 50%] PASSED tests/server/mcpserver/resources/test_function_resources.py::test_read_rejects_an_input_required_result_from_a_static_function [gw15] [ 50%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_binary_mime_types_default_to_no_encoding[image/png] tests/server/mcpserver/resources/test_file_resources.py::test_binary_mime_types_default_to_no_encoding[application/octet-stream] [gw47] [ 50%] PASSED tests/interaction/transports/test_hosting_session.py::test_stateless_mode_serves_concurrent_clients_independently tests/interaction/transports/test_legacy_wire.py::test_legacy_streamable_http_exchange_carries_no_modern_protocol_vocabulary [gw9] [ 50%] PASSED tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_render_unknown_prompt [gw10] [ 50%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_unsupported_response_type [gw44] [ 50%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[sse-2025-11-25] tests/server/mcpserver/resources/test_resource_manager.py::test_init_with_resources [gw43] [ 50%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[streamable-http-2026-07-28] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_response_type [gw14] [ 50%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_token_invalid_scope [gw15] [ 50%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_binary_mime_types_default_to_no_encoding[application/octet-stream] tests/interaction/lowlevel/test_wire.py::test_request_ids_are_unique_and_never_null tests/server/mcpserver/resources/test_file_resources.py::test_binary_mime_types_default_to_no_encoding[application/pdf] [gw16] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_init_with_resources [gw40] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_add_template_without_metadata tests/server/mcpserver/resources/test_resource_manager.py::test_add_resource [gw11] [ 51%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_returns_text_content[streamable-http-2026-07-28] [gw8] [ 51%] PASSED tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[in-memory-2025-11-25] tests/interaction/lowlevel/test_subscriptions.py::test_a_graceful_server_close_ends_iteration_after_buffered_events[streamable-http-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[in-memory-2025-11-25] tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[sse-2025-11-25] tests/server/mcpserver/resources/test_resource_template.py::test_matches_rfc6570_reserved_expansion [gw15] [ 51%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_binary_mime_types_default_to_no_encoding[application/pdf] [gw16] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_add_resource [gw10] [ 51%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_response_type tests/server/mcpserver/resources/test_file_resources.py::test_declared_charset_becomes_default_encoding[text/plain; charset=iso-8859-1] tests/server/mcpserver/resources/test_resource_manager.py::test_add_duplicate_resource [gw34] [ 51%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_json_file_is_served_as_text_by_default [gw40] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_rfc6570_reserved_expansion [gw15] [ 51%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_declared_charset_becomes_default_encoding[text/plain; charset=iso-8859-1] tests/server/mcpserver/resources/test_file_resources.py::test_utf8_bom_is_stripped_by_default [gw1] [ 51%] PASSED tests/interaction/mcpserver/test_extensions.py::test_legacy_ad_omits_claim_bearing_identifiers_but_keeps_claim_less_ones[in-memory-2025-11-25] [gw43] [ 51%] PASSED tests/interaction/lowlevel/test_wire.py::test_request_ids_are_unique_and_never_null [gw39] [ 51%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_is_error_result_skips_output_validation[streamable-http-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[in-memory-2025-11-25] [gw16] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_add_duplicate_resource tests/server/mcpserver/resources/test_resource_manager.py::test_warn_on_duplicate_resources tests/server/mcpserver/resources/test_resource_template.py::test_matches_rejects_encoded_slash_traversal [gw47] [ 51%] PASSED tests/interaction/transports/test_legacy_wire.py::test_legacy_streamable_http_exchange_carries_no_modern_protocol_vocabulary [gw6] [ 51%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[streamable-http-2025-11-25] tests/interaction/lowlevel/test_wire.py::test_notifications_are_never_answered [gw35] [ 51%] PASSED tests/interaction/lowlevel/test_subscriptions.py::test_a_graceful_server_close_ends_iteration_after_buffered_events[streamable-http-2026-07-28] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[streamable-http-stateless-2025-11-25] [gw16] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_warn_on_duplicate_resources tests/interaction/transports/test_sse.py::test_endpoint_event_names_the_message_endpoint_with_a_fresh_session_id [gw40] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_rejects_encoded_slash_traversal [gw11] [ 51%] PASSED tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[in-memory-2025-11-25] tests/server/mcpserver/resources/test_resource_template.py::test_matches_null_byte_check_can_be_disabled tests/server/mcpserver/resources/test_resource_template.py::test_matches_rejects_path_traversal_by_default tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[sse-2025-11-25] [gw43] [ 51%] PASSED tests/interaction/lowlevel/test_wire.py::test_notifications_are_never_answered tests/interaction/lowlevel/test_wire.py::test_recording_read_stream_ends_iteration_when_the_sender_closes [gw43] [ 51%] PASSED tests/interaction/lowlevel/test_wire.py::test_recording_read_stream_ends_iteration_when_the_sender_closes [gw35] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_null_byte_check_can_be_disabled [gw40] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_rejects_path_traversal_by_default tests/interaction/lowlevel/test_wire.py::test_exactly_one_initialized_notification_is_sent_after_the_handshake tests/server/mcpserver/resources/test_resource_template.py::test_security_rejection_does_not_fall_through_to_next_template [gw8] [ 51%] PASSED tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[sse-2025-11-25] tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[streamable-http-stateless-2025-11-25] tests/server/mcpserver/resources/test_resource_template.py::test_matches_rejects_path_traversal_in_reserved_var [gw47] [ 51%] PASSED tests/interaction/transports/test_sse.py::test_endpoint_event_names_the_message_endpoint_with_a_fresh_session_id tests/interaction/transports/test_sse.py::test_post_without_a_session_id_is_rejected [gw30] [ 51%] PASSED tests/docs/test_translations.py::test_rejected_credentials_with_pages_in_flight_start_no_further_page tests/docs/test_translations.py::test_translate_without_lang_works_through_every_language_with_that_languages_own_prompt [gw34] [ 51%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_utf8_bom_is_stripped_by_default tests/server/mcpserver/resources/test_file_resources.py::test_explicit_encoding_overrides_default [gw27] [ 51%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_unknown_prompt_is_error[streamable-http-2025-11-25] [gw43] [ 51%] PASSED tests/interaction/lowlevel/test_wire.py::test_exactly_one_initialized_notification_is_sent_after_the_handshake tests/interaction/lowlevel/test_wire.py::test_closing_the_transport_fails_in_flight_requests_with_connection_closed [gw35] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_security_rejection_does_not_fall_through_to_next_template tests/server/mcpserver/resources/test_resource_template.py::test_matches_explode_checks_each_segment [gw40] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_rejects_path_traversal_in_reserved_var tests/server/mcpserver/resources/test_resource_template.py::test_matches_rejects_absolute_path [gw25] [ 51%] PASSED tests/examples/test_stories.py::test_story[oauth-server_lowlevel-http-asgi-legacy] tests/examples/test_stories.py::test_story[oauth_client_credentials-server-http-asgi-modern] [gw43] [ 51%] PASSED tests/interaction/lowlevel/test_wire.py::test_closing_the_transport_fails_in_flight_requests_with_connection_closed tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[streamable-http-stateless-2025-11-25] [gw35] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_explode_checks_each_segment tests/interaction/lowlevel/test_wire.py::test_malformed_request_params_are_answered_with_invalid_params tests/server/mcpserver/resources/test_resource_template.py::test_matches_encoded_backslash_caught_by_traversal_check [gw40] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_rejects_absolute_path tests/server/mcpserver/resources/test_resource_template.py::test_matches_allows_dotdot_as_substring [gw6] [ 51%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[streamable-http-stateless-2025-11-25] [gw43] [ 51%] PASSED tests/interaction/lowlevel/test_wire.py::test_malformed_request_params_are_answered_with_invalid_params tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[in-memory-2026-07-28] tests/interaction/lowlevel/test_wire.py::test_set_level_with_an_unrecognized_value_is_answered_with_invalid_params [gw35] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_encoded_backslash_caught_by_traversal_check tests/server/mcpserver/resources/test_resource_template.py::test_matches_encoded_dots_caught_by_traversal_check [gw11] [ 51%] PASSED tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[sse-2025-11-25] [gw13] [ 51%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_multiple_content_block_types[streamable-http-stateless-2025-11-25] tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_custom_type_conversion [gw43] [ 51%] PASSED tests/interaction/lowlevel/test_wire.py::test_set_level_with_an_unrecognized_value_is_answered_with_invalid_params tests/interaction/lowlevel/test_wire.py::test_abandoning_a_call_on_a_modern_stream_wire_sends_one_cancelled_frame [gw40] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_allows_dotdot_as_substring tests/server/mcpserver/resources/test_resource_template.py::test_matches_exempt_params_skip_security [gw34] [ 51%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_explicit_encoding_overrides_default [gw35] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_encoded_dots_caught_by_traversal_check tests/server/mcpserver/resources/test_resource_template.py::test_matches_mixed_encoded_and_literal_slash [gw8] [ 51%] PASSED tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[streamable-http-2025-11-25] tests/server/mcpserver/resources/test_file_resources.py::test_relative_path_error tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[streamable-http-2025-11-25] tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[streamable-http-stateless-2025-11-25] [gw34] [ 51%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_relative_path_error tests/server/mcpserver/resources/test_file_resources.py::test_missing_file_error [gw40] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_exempt_params_skip_security [gw47] [ 51%] PASSED tests/interaction/transports/test_sse.py::test_post_without_a_session_id_is_rejected [gw35] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_mixed_encoded_and_literal_slash tests/server/mcpserver/resources/test_resource_template.py::test_matches_encoded_slash_without_traversal_allowed tests/server/mcpserver/resources/test_resource_template.py::test_matches_disabled_policy_allows_traversal tests/interaction/transports/test_sse.py::test_post_with_a_malformed_session_id_is_rejected [gw13] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_custom_type_conversion tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_with_annotations [gw34] [ 51%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_missing_file_error [gw35] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_encoded_slash_without_traversal_allowed tests/server/mcpserver/resources/test_file_resources.py::test_permission_error [gw6] [ 51%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[in-memory-2026-07-28] tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[streamable-http-2026-07-28] [gw39] [ 51%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[in-memory-2025-11-25] [gw43] [ 51%] PASSED tests/interaction/lowlevel/test_wire.py::test_abandoning_a_call_on_a_modern_stream_wire_sends_one_cancelled_frame tests/server/mcpserver/resources/test_resource_template.py::test_matches_escapes_template_literals [gw40] [ 51%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_disabled_policy_allows_traversal tests/interaction/mcpserver/test_completion.py::test_completion_capability_is_advertised_only_when_a_handler_is_registered[in-memory-2025-11-25] [gw34] [ 51%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_permission_error [gw17] [ 51%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_structured_content_violating_output_schema_is_rejected_by_the_client[streamable-http-stateless-2025-11-25] [gw13] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_with_annotations tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_without_annotations tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[sse-2025-11-25] tests/server/mcpserver/resources/test_resources.py::TestResourceValidation::test_resource_read_abstract tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_function_resource_creation tests/examples/test_stories.py::test_story[roots-server_lowlevel-http-asgi-legacy] [gw35] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_escapes_template_literals tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_template_creation [gw34] [ 52%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_function_resource_creation [gw25] [ 52%] PASSED tests/examples/test_stories.py::test_story[oauth_client_credentials-server-http-asgi-modern] tests/examples/test_stories.py::test_story[oauth_client_credentials-server-http-asgi-legacy] [gw13] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_without_annotations tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_annotations_in_mcpserver tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_read_text [gw34] [ 52%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_read_text [gw35] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_template_creation tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_template_matches tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[in-memory-2025-11-25] [gw43] [ 52%] PASSED tests/interaction/mcpserver/test_completion.py::test_completion_capability_is_advertised_only_when_a_handler_is_registered[in-memory-2025-11-25] tests/interaction/mcpserver/test_completion.py::test_completion_capability_is_advertised_only_when_a_handler_is_registered[sse-2025-11-25] tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_read_binary [gw8] [ 52%] PASSED tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[streamable-http-stateless-2025-11-25] [gw17] [ 52%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceValidation::test_resource_read_abstract tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[in-memory-2026-07-28] [gw6] [ 52%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_prompt_with_an_optional_argument_omitted_uses_the_default[streamable-http-2026-07-28] [gw47] [ 52%] PASSED tests/interaction/transports/test_sse.py::test_post_with_a_malformed_session_id_is_rejected tests/interaction/transports/test_sse.py::test_post_for_an_unknown_session_is_rejected tests/server/mcpserver/resources/test_resources.py::TestResourceAnnotations::test_resource_with_annotations tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[in-memory-2025-11-25] [gw34] [ 52%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_read_binary [gw35] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_template_matches tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_create_resource [gw13] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_annotations_in_mcpserver tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_created_resources_inherit_annotations [gw17] [ 52%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceAnnotations::test_resource_with_annotations tests/server/mcpserver/resources/test_resources.py::TestResourceAnnotations::test_resource_without_annotations [gw38] [ 52%] PASSED tests/interaction/mcpserver/test_resources.py::test_static_resource_function_raising_not_found_is_invalid_params[in-memory-2025-11-25] [gw11] [ 52%] PASSED tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[streamable-http-2025-11-25] [gw17] [ 52%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceAnnotations::test_resource_without_annotations [gw8] [ 52%] PASSED tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[in-memory-2026-07-28] tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[streamable-http-2026-07-28] tests/server/mcpserver/test_extension.py::test_plain_extension_leaves_the_tool_call_handler_bare tests/server/mcpserver/resources/test_resources.py::TestResourceAnnotations::test_resource_annotations_in_mcpserver [gw35] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_create_resource tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_template_error tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[streamable-http-stateless-2025-11-25] [gw13] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateAnnotations::test_template_created_resources_inherit_annotations tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateMetadata::test_template_from_function_with_metadata [gw38] [ 52%] PASSED tests/server/mcpserver/test_extension.py::test_plain_extension_leaves_the_tool_call_handler_bare tests/server/mcpserver/test_extension.py::test_overriding_extension_wraps_the_tool_call_handler tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[sse-2025-11-25] [gw43] [ 52%] PASSED tests/interaction/mcpserver/test_completion.py::test_completion_capability_is_advertised_only_when_a_handler_is_registered[sse-2025-11-25] [gw35] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_template_error [gw17] [ 52%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceAnnotations::test_resource_annotations_in_mcpserver tests/server/mcpserver/resources/test_resources.py::TestResourceAnnotations::test_resource_annotations_with_both_audiences tests/interaction/mcpserver/test_completion.py::test_completion_capability_is_advertised_only_when_a_handler_is_registered[streamable-http-2025-11-25] tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_async_text_resource [gw38] [ 52%] PASSED tests/server/mcpserver/test_extension.py::test_overriding_extension_wraps_the_tool_call_handler [gw47] [ 52%] PASSED tests/interaction/transports/test_sse.py::test_post_for_an_unknown_session_is_rejected tests/server/mcpserver/test_extension.py::test_default_interceptor_passes_through_alongside_an_overriding_one [gw17] [ 52%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceAnnotations::test_resource_annotations_with_both_audiences [gw13] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateMetadata::test_template_from_function_with_metadata tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateMetadata::test_template_created_resources_inherit_metadata tests/interaction/transports/test_stdio.py::test_stdio_server_writes_one_jsonrpc_message_per_line [gw45] [ 52%] PASSED tests/examples/test_stories.py::test_story[roots-server_lowlevel-http-asgi-legacy] tests/server/mcpserver/resources/test_resources.py::TestAnnotationsValidation::test_priority_validation [gw35] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_async_text_resource tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_async_binary_resource [gw17] [ 52%] PASSED tests/server/mcpserver/resources/test_resources.py::TestAnnotationsValidation::test_priority_validation tests/server/mcpserver/test_elicitation.py::test_elicitation_accept_returns_the_users_answer_to_the_tool tests/server/mcpserver/resources/test_resources.py::TestAnnotationsValidation::test_audience_validation [gw8] [ 52%] PASSED tests/interaction/mcpserver/test_context.py::test_report_progress_without_a_progress_token_sends_nothing[streamable-http-2026-07-28] tests/interaction/mcpserver/test_context.py::test_context_elicit_returns_typed_result[in-memory-2025-11-25] [gw13] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplateMetadata::test_template_created_resources_inherit_metadata [gw35] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_async_binary_resource [gw17] [ 52%] PASSED tests/server/mcpserver/resources/test_resources.py::TestAnnotationsValidation::test_audience_validation tests/server/mcpserver/resources/test_resource_template.py::test_sync_fn_runs_in_worker_thread tests/server/mcpserver/resources/test_resources.py::TestResourceMetadata::test_resource_with_metadata [gw25] [ 52%] PASSED tests/examples/test_stories.py::test_story[oauth_client_credentials-server-http-asgi-legacy] [gw2] [ 52%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_populates_the_output_schema_cache_via_an_implicit_tools_list[streamable-http-stateless-2025-11-25] [gw32] [ 52%] PASSED tests/issues/test_100_tool_listing.py::test_list_tools_returns_all_tools [gw17] [ 52%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceMetadata::test_resource_with_metadata tests/server/mcpserver/test_func_metadata.py::test_str_annotation_runtime_validation tests/server/mcpserver/resources/test_resources.py::TestResourceMetadata::test_resource_without_metadata tests/interaction/test_coverage.py::test_requirement_with_empty_version_range_is_rejected tests/examples/test_stories.py::test_story[oauth_client_credentials-server_lowlevel-http-asgi-modern] tests/issues/test_129_resource_templates.py::test_resource_templates [gw12] [ 52%] PASSED tests/interaction/mcpserver/test_resources.py::test_read_templated_resource[sse-2025-11-25] tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_blocks] [gw13] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_sync_fn_runs_in_worker_thread tests/server/mcpserver/resources/test_resource_template.py::test_create_resource_passes_input_required_result_through_unchanged [gw18] [ 52%] PASSED tests/interaction/test_coverage.py::test_requirement_with_empty_version_range_is_rejected tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_in_pipe_union_is_rejected [gw43] [ 52%] PASSED tests/interaction/mcpserver/test_completion.py::test_completion_capability_is_advertised_only_when_a_handler_is_registered[streamable-http-2025-11-25] tests/interaction/mcpserver/test_completion.py::test_completion_capability_is_advertised_only_when_a_handler_is_registered[streamable-http-stateless-2025-11-25] [gw6] [ 52%] PASSED tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[in-memory-2025-11-25] [gw8] [ 52%] PASSED tests/interaction/mcpserver/test_context.py::test_context_elicit_returns_typed_result[in-memory-2025-11-25] tests/interaction/mcpserver/test_context.py::test_context_elicit_returns_typed_result[sse-2025-11-25] [gw11] [ 52%] PASSED tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[in-memory-2026-07-28] [gw45] [ 52%] PASSED tests/server/mcpserver/test_elicitation.py::test_elicitation_accept_returns_the_users_answer_to_the_tool tests/server/mcpserver/test_elicitation.py::test_elicitation_decline_reaches_the_tool_without_content [gw18] [ 52%] PASSED tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_in_pipe_union_is_rejected tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[sse-2025-11-25] [gw39] [ 52%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[sse-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[streamable-http-2025-11-25] [gw13] [ 52%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_create_resource_passes_input_required_result_through_unchanged tests/server/mcpserver/resources/test_resource_template.py::test_template_return_annotation_is_not_run_through_tool_output_schema_derivation [gw17] [ 52%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceMetadata::test_resource_without_metadata tests/server/mcpserver/servers/test_file_server.py::test_list_resources [gw32] [ 52%] PASSED tests/issues/test_129_resource_templates.py::test_resource_templates tests/issues/test_1338_icons_and_metadata.py::test_icons_and_website_url tests/server/mcpserver/test_func_metadata.py::test_structured_output_with_field_descriptions [gw12] [ 52%] PASSED tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_blocks] tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_strings_and_images] [gw12] [ 52%] PASSED tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_strings_and_images] tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_audio_clips] [gw2] [ 52%] PASSED tests/server/mcpserver/test_func_metadata.py::test_str_annotation_runtime_validation tests/server/mcpserver/test_func_metadata.py::test_structured_output_requires_return_annotation [gw2] [ 52%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_requires_return_annotation tests/server/mcpserver/test_func_metadata.py::test_structured_output_basemodel [gw18] [ 52%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_with_field_descriptions tests/server/mcpserver/test_func_metadata.py::test_structured_output_nested_models [gw17] [ 53%] PASSED tests/server/mcpserver/servers/test_file_server.py::test_list_resources tests/server/mcpserver/servers/test_file_server.py::test_read_resource_dir [gw21] [ 53%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_re_list_gives_up_after_100_pages_of_a_listing_that_never_ends tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_raises_the_header_mismatch_when_the_re_list_fails [gw2] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_basemodel tests/server/mcpserver/test_func_metadata.py::test_structured_output_primitives [gw13] [ 53%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_template_return_annotation_is_not_run_through_tool_output_schema_derivation tests/server/mcpserver/resources/test_resources.py::TestResourceValidation::test_resource_uri_accepts_any_string [gw12] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_audio_clips] tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_described_blocks] tests/interaction/transports/test_client_transport_http.py::test_every_request_after_initialize_carries_the_negotiated_protocol_version [gw4] [ 53%] PASSED tests/interaction/transports/test_client_transport_http.py::test_every_request_after_initialize_carries_the_negotiated_protocol_version tests/server/mcpserver/test_func_metadata.py::test_call_tool_result_unioned_with_input_required_result_is_accepted [gw4] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_call_tool_result_unioned_with_input_required_result_is_accepted [gw25] [ 53%] PASSED tests/examples/test_stories.py::test_story[oauth_client_credentials-server_lowlevel-http-asgi-modern] [gw11] [ 53%] PASSED tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[in-memory-2026-07-28] [gw13] [ 53%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceValidation::test_resource_uri_accepts_any_string tests/server/mcpserver/resources/test_resources.py::TestResourceValidation::test_resource_name_from_uri [gw7] [ 53%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[in-memory-2025-11-25] [gw45] [ 53%] PASSED tests/server/mcpserver/test_elicitation.py::test_elicitation_decline_reaches_the_tool_without_content tests/server/mcpserver/test_elicitation.py::test_elicitation_schema_validation tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[streamable-http-2026-07-28] [gw13] [ 53%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceValidation::test_resource_name_from_uri [gw18] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_nested_models tests/server/mcpserver/test_func_metadata.py::test_structured_output_self_referential_model_gets_an_object_root tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[sse-2025-11-25] tests/server/mcpserver/test_func_metadata.py::test_basemodel_union_input_required_result_derives_model_schema [gw4] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_basemodel_union_input_required_result_derives_model_schema tests/server/mcpserver/test_func_metadata.py::test_call_tool_result_in_union_with_input_required_result_is_still_rejected [gw32] [ 53%] PASSED tests/issues/test_1338_icons_and_metadata.py::test_icons_and_website_url tests/issues/test_1338_icons_and_metadata.py::test_multiple_icons tests/server/mcpserver/resources/test_resources.py::TestResourceValidation::test_resource_name_validation [gw21] [ 53%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_raises_the_header_mismatch_when_the_re_list_fails tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_raises_the_header_mismatch_when_the_re_list_returns_a_malformed_page [gw43] [ 53%] PASSED tests/interaction/mcpserver/test_completion.py::test_completion_capability_is_advertised_only_when_a_handler_is_registered[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_context.py::test_context_logging_helpers_send_log_notifications[in-memory-2025-11-25] [gw4] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_call_tool_result_in_union_with_input_required_result_is_still_rejected [gw8] [ 53%] PASSED tests/interaction/mcpserver/test_context.py::test_context_elicit_returns_typed_result[sse-2025-11-25] [gw17] [ 53%] PASSED tests/server/mcpserver/servers/test_file_server.py::test_read_resource_dir tests/server/mcpserver/servers/test_file_server.py::test_read_resource_file [gw13] [ 53%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceValidation::test_resource_name_validation [gw18] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_self_referential_model_gets_an_object_root tests/server/mcpserver/test_func_metadata.py::test_structured_output_unserializable_type_error tests/server/mcpserver/test_func_metadata.py::test_union_of_only_input_required_subclasses_yields_no_output_schema [gw2] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_primitives tests/server/mcpserver/test_func_metadata.py::test_structured_output_generic_types [gw32] [ 53%] PASSED tests/issues/test_1338_icons_and_metadata.py::test_multiple_icons tests/issues/test_1338_icons_and_metadata.py::test_no_icons_or_website [gw12] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_described_blocks] tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_call_tool_result_annotated_with_blocks] [gw12] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_call_tool_result_annotated_with_blocks] tests/server/mcpserver/test_func_metadata.py::test_structured_output_true_overrides_the_content_block_rule [gw43] [ 53%] PASSED tests/interaction/mcpserver/test_context.py::test_context_logging_helpers_send_log_notifications[in-memory-2025-11-25] tests/interaction/mcpserver/test_context.py::test_context_logging_helpers_send_log_notifications[sse-2025-11-25] [gw4] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_union_of_only_input_required_subclasses_yields_no_output_schema [gw12] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_true_overrides_the_content_block_rule [gw32] [ 53%] PASSED tests/issues/test_1338_icons_and_metadata.py::test_no_icons_or_website tests/server/mcpserver/test_integration.py::test_basic_tools tests/server/mcpserver/test_func_metadata.py::test_content_blocks_as_model_fields_or_mapping_values_stay_structured[_returns_report] [gw45] [ 53%] PASSED tests/server/mcpserver/test_elicitation.py::test_elicitation_schema_validation tests/interaction/transports/test_hosting_http_modern.py::test_modern_server_discover_returns_capabilities_and_supported_versions tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_invalid_accept_headers tests/server/mcpserver/test_elicitation.py::test_elicitation_with_optional_fields [gw17] [ 53%] PASSED tests/server/mcpserver/servers/test_file_server.py::test_read_resource_file tests/server/mcpserver/servers/test_file_server.py::test_delete_file [gw21] [ 53%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_raises_the_header_mismatch_when_the_re_list_returns_a_malformed_page [gw18] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_unserializable_type_error tests/server/mcpserver/test_func_metadata.py::test_structured_output_aliases [gw2] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_generic_types tests/server/mcpserver/test_func_metadata.py::test_structured_output_dataclass tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_raises_the_header_mismatch_when_the_re_list_outlasts_the_read_timeout[trio-mockclock] [gw11] [ 53%] PASSED tests/interaction/mcpserver/test_tools.py::test_complex_parameter_types_are_validated_and_coerced_before_the_tool_runs[streamable-http-2026-07-28] [gw12] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_content_blocks_as_model_fields_or_mapping_values_stay_structured[_returns_report] [gw3] [ 53%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_server_discover_returns_capabilities_and_supported_versions tests/server/mcpserver/test_resolve.py::test_by_name_resolver_param_uses_aliased_tool_arg tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[in-memory-2025-11-25] tests/server/mcpserver/test_func_metadata.py::test_content_blocks_as_model_fields_or_mapping_values_stay_structured[_returns_blocks_by_key] [gw2] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_dataclass [gw18] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_aliases tests/server/mcpserver/test_func_metadata.py::test_structured_output_typeddict tests/server/mcpserver/test_func_metadata.py::test_basemodel_reserved_names [gw7] [ 53%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[sse-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[streamable-http-2025-11-25] [gw6] [ 53%] PASSED tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[sse-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[streamable-http-2025-11-25] [gw12] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_content_blocks_as_model_fields_or_mapping_values_stay_structured[_returns_blocks_by_key] [gw43] [ 53%] PASSED tests/interaction/mcpserver/test_context.py::test_context_logging_helpers_send_log_notifications[sse-2025-11-25] tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://api.example.com/mcp/child-False] [gw2] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_typeddict tests/server/mcpserver/test_func_metadata.py::test_structured_output_typeddict_qualifiers_and_metadata [gw39] [ 53%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[streamable-http-stateless-2025-11-25] [gw18] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_basemodel_reserved_names tests/server/mcpserver/test_func_metadata.py::test_basemodel_reserved_names_validation tests/interaction/mcpserver/test_context.py::test_context_logging_helpers_send_log_notifications[streamable-http-2025-11-25] tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_is_unstructured_and_not_converted [gw12] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_is_unstructured_and_not_converted tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_annotated_is_structured_and_converted [gw21] [ 53%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_raises_the_header_mismatch_when_the_re_list_outlasts_the_read_timeout[trio-mockclock] tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_bounds_the_whole_re_list_by_the_client_default_read_timeout[trio-mockclock] tests/interaction/mcpserver/test_prompts.py::test_get_unknown_prompt_is_error[streamable-http-stateless-2025-11-25] tests/examples/test_stories.py::test_story[oauth_client_credentials-server_lowlevel-http-asgi-legacy] [gw2] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_typeddict_qualifiers_and_metadata tests/server/mcpserver/test_func_metadata.py::test_func_metadata_built_by_hand_keeps_a_given_output_schema tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_no_auth_header [gw31] [ 53%] PASSED tests/docs_src/test_cancellation.py::test_prompt_and_resource_functions_are_cancelled_like_tools [gw12] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_annotated_is_structured_and_converted tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_annotated_unioned_with_input_required_result_is_equivalent_to_the_bare_annotated_form tests/docs_src/test_cancellation.py::test_two_http_options_keep_the_cancellation_from_the_handler[json_response-modern] [gw2] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_func_metadata_built_by_hand_keeps_a_given_output_schema [gw18] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_basemodel_reserved_names_validation tests/server/mcpserver/test_func_metadata.py::test_basemodel_reserved_names_with_json_preparsing [gw36] [ 53%] PASSED tests/server/auth/middleware/test_bearer_auth.py::TestBearerAuthBackend::test_no_auth_header tests/server/mcpserver/test_func_metadata.py::test_func_metadata_output_fields_are_read_live [gw18] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_basemodel_reserved_names_with_json_preparsing tests/server/mcpserver/test_resolve.py::test_a_resolver_fills_its_parameter_without_any_client_interaction tests/server/auth/test_identity_assertion.py::test_identity_assertion_rejects_public_client tests/server/mcpserver/test_func_metadata.py::test_disallowed_type_qualifier [gw12] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_annotated_unioned_with_input_required_result_is_equivalent_to_the_bare_annotated_form [gw2] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_func_metadata_output_fields_are_read_live tests/server/mcpserver/test_func_metadata.py::test_structured_output_typeddict_with_unresolvable_annotation_is_unstructured tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_annotated_is_structured_and_invalid [gw18] [ 53%] PASSED tests/server/mcpserver/test_func_metadata.py::test_disallowed_type_qualifier tests/server/mcpserver/test_func_metadata.py::test_preserves_pydantic_metadata [gw42] [ 54%] PASSED tests/server/auth/test_identity_assertion.py::test_identity_assertion_rejects_public_client tests/server/mcpserver/test_server.py::TestServer::test_dependencies [gw21] [ 54%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_bounds_the_whole_re_list_by_the_client_default_read_timeout[trio-mockclock] [gw17] [ 54%] PASSED tests/server/mcpserver/servers/test_file_server.py::test_delete_file [gw12] [ 54%] PASSED tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_annotated_is_structured_and_invalid tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_in_optional_is_rejected tests/interaction/transports/test_hosting_http_modern.py::test_legacy_client_raises_a_header_mismatch_error_without_re_listing_or_retrying [gw43] [ 54%] PASSED tests/interaction/mcpserver/test_context.py::test_context_logging_helpers_send_log_notifications[streamable-http-2025-11-25] [gw42] [ 54%] PASSED tests/server/mcpserver/test_server.py::TestServer::test_dependencies tests/server/mcpserver/test_server.py::TestServer::test_sse_app_returns_starlette_app [gw12] [ 54%] PASSED tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_in_optional_is_rejected [gw19] [ 54%] PASSED tests/server/auth/middleware/test_bearer_auth.py::test_backend_accepts_only_tokens_issued_for_its_resource[https://api.example.com/mcp-https://api.example.com/mcp/child-False] [gw25] [ 54%] PASSED tests/examples/test_stories.py::test_story[oauth_client_credentials-server_lowlevel-http-asgi-legacy] [gw7] [ 54%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[streamable-http-stateless-2025-11-25] [gw2] [ 54%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_typeddict_with_unresolvable_annotation_is_unstructured tests/server/mcpserver/test_func_metadata.py::test_structured_output_ordinary_class [gw42] [ 54%] PASSED tests/server/mcpserver/test_server.py::TestServer::test_sse_app_returns_starlette_app tests/server/mcpserver/test_server.py::TestServer::test_non_ascii_description tests/server/mcpserver/test_resolve.py::test_legacy_eliciting_tool_without_capability_is_a_protocol_error tests/server/mcpserver/test_resolve.py::test_wire_key_is_worker_stable_for_methods_and_callable_objects [gw36] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_a_resolver_fills_its_parameter_without_any_client_interaction [gw24] [ 54%] PASSED tests/client/test_stdio.py::test_escalation_kills_a_process_that_ignores_sigterm tests/client/test_stdio.py::test_a_graceful_exit_with_a_surviving_child_leaks_no_pipe_fds [gw45] [ 54%] PASSED tests/server/mcpserver/test_elicitation.py::test_elicitation_with_optional_fields [gw19] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_wire_key_is_worker_stable_for_methods_and_callable_objects tests/server/mcpserver/test_resolve.py::test_a_resolver_may_depend_on_another_resolvers_value [gw18] [ 54%] PASSED tests/server/mcpserver/test_func_metadata.py::test_preserves_pydantic_metadata tests/server/mcpserver/test_func_metadata.py::test_convert_result_passes_input_required_result_through_unchanged [gw18] [ 54%] PASSED tests/server/mcpserver/test_func_metadata.py::test_convert_result_passes_input_required_result_through_unchanged tests/server/mcpserver/test_resolve.py::test_declined_outcome_persists_in_request_state_and_is_not_reasked tests/server/mcpserver/test_elicitation.py::test_elicitation_with_default_values [gw2] [ 54%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_ordinary_class tests/server/mcpserver/test_func_metadata.py::test_unstructured_output_unannotated_class [gw2] [ 54%] PASSED tests/server/mcpserver/test_func_metadata.py::test_unstructured_output_unannotated_class [gw11] [ 54%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[in-memory-2025-11-25] tests/server/mcpserver/test_func_metadata.py::test_input_required_result_return_annotation_yields_no_output_schema tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[sse-2025-11-25] [gw18] [ 54%] PASSED tests/server/mcpserver/test_func_metadata.py::test_input_required_result_return_annotation_yields_no_output_schema [gw47] [ 54%] PASSED tests/interaction/transports/test_stdio.py::test_stdio_server_writes_one_jsonrpc_message_per_line [gw42] [ 54%] PASSED tests/server/mcpserver/test_server.py::TestServer::test_non_ascii_description tests/interaction/mcpserver/test_extensions.py::test_legacy_ad_omits_claim_bearing_identifiers_but_keeps_claim_less_ones[sse-2025-11-25] tests/interaction/transports/test_streamable_http.py::test_tool_call_over_streamable_http_with_json_responses tests/server/mcpserver/test_server.py::TestServer::test_add_tool_decorator tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[POST-/token-application/x-www-form-urlencoded] [gw25] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_legacy_eliciting_tool_without_capability_is_a_protocol_error tests/server/mcpserver/test_resolve.py::test_sample_tools_require_the_tools_subcapability[_ask_with_tools] [gw21] [ 54%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_legacy_client_raises_a_header_mismatch_error_without_re_listing_or_retrying [gw36] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_a_resolver_may_depend_on_another_resolvers_value tests/server/mcpserver/test_resolve.py::test_a_client_supplied_value_for_a_resolved_parameter_is_discarded [gw22] [ 54%] PASSED tests/client/test_stdio.py::test_undelivered_server_output_is_drained_at_shutdown_so_the_server_can_exit [gw27] [ 54%] PASSED tests/interaction/mcpserver/test_prompts.py::test_get_unknown_prompt_is_error[streamable-http-stateless-2025-11-25] tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[Union0] tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_stops_mirroring_after_a_re_list_drops_the_tool [gw30] [ 54%] PASSED tests/docs/test_translations.py::test_translate_without_lang_works_through_every_language_with_that_languages_own_prompt tests/client/test_stdio.py::test_shutdown_drains_stdout_first_so_a_wedged_writers_flush_can_complete [gw41] [ 54%] PASSED tests/examples/test_stories.py::test_story[refund_desk-server-http-asgi-legacy] [gw42] [ 54%] PASSED tests/server/mcpserver/test_server.py::TestServer::test_add_tool_decorator tests/server/mcpserver/test_server.py::TestServer::test_add_tool_decorator_incorrect_usage tests/docs/test_translations.py::test_repair_turn_feeds_the_findings_back_and_accepts_the_fixed_reply [gw7] [ 54%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_model_return_becomes_structured_content[streamable-http-stateless-2025-11-25] tests/server/mcpserver/test_parameter_descriptions.py::test_parameter_descriptions tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_missing_required_fields [gw0] [ 54%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[streamable-http-stateless-2025-11-25] [gw42] [ 54%] PASSED tests/server/mcpserver/test_server.py::TestServer::test_add_tool_decorator_incorrect_usage [gw37] [ 54%] PASSED tests/server/auth/test_error_handling.py::test_oversized_request_body_returns_413[POST-/token-application/x-www-form-urlencoded] [gw22] [ 54%] PASSED tests/client/test_stdio.py::test_shutdown_drains_stdout_first_so_a_wedged_writers_flush_can_complete tests/server/mcpserver/test_server.py::TestServerTools::test_remove_tool [gw45] [ 54%] PASSED tests/server/mcpserver/test_elicitation.py::test_elicitation_with_default_values tests/server/mcpserver/test_elicitation.py::test_elicitation_with_enum_titles [gw27] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[Union0] tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[Annotated] tests/client/test_stdio.py::test_cancellation_with_undelivered_backlog_still_drains_and_spares_the_server [gw41] [ 54%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_missing_required_fields tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_invalid_uri [gw39] [ 54%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[in-memory-2026-07-28] [gw7] [ 54%] PASSED tests/server/mcpserver/test_parameter_descriptions.py::test_parameter_descriptions tests/server/mcpserver/test_resolve.py::test_consumer_receives_result_union_and_branches tests/server/mcpserver/test_server.py::TestServer::test_add_resource_decorator [gw44] [ 54%] PASSED tests/interaction/mcpserver/test_tools.py::test_tool_with_output_schema_returning_mismatched_structured_content_is_an_error_result[streamable-http-2025-11-25] tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[[1, 2, 3]] [gw19] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_declined_outcome_persists_in_request_state_and_is_not_reasked tests/server/mcpserver/test_resolve.py::test_unknown_response_keys_and_ghost_state_entries_are_ignored [gw41] [ 54%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_invalid_uri [gw36] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_a_client_supplied_value_for_a_resolved_parameter_is_discarded [gw1] [ 54%] PASSED tests/interaction/mcpserver/test_extensions.py::test_legacy_ad_omits_claim_bearing_identifiers_but_keeps_claim_less_ones[sse-2025-11-25] tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_explicit_settings_not_overridden_streamable_http [gw27] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[Annotated] tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[Union1] [gw25] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_sample_tools_require_the_tools_subcapability[_ask_with_tools] tests/server/mcpserver/test_resolve.py::test_sample_tools_require_the_tools_subcapability[_ask_with_tool_choice] [gw37] [ 54%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_remove_tool tests/server/mcpserver/test_server.py::TestServerTools::test_remove_nonexistent_tool [gw44] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[[1, 2, 3]] tests/server/mcpserver/test_resolve.py::test_state_round_trips_accept_decline_cancel [gw44] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_state_round_trips_accept_decline_cancel tests/server/mcpserver/test_resolve.py::test_check_elicit_return_allows_one_arm_and_rejects_two [gw1] [ 54%] PASSED tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_explicit_settings_not_overridden_streamable_http tests/server/mcpserver/test_resolve.py::test_resolved_parameters_are_absent_from_the_advertised_tool_schema [gw42] [ 54%] PASSED tests/server/mcpserver/test_server.py::TestServer::test_add_resource_decorator tests/server/mcpserver/test_server.py::TestServer::test_add_resource_decorator_incorrect_usage [gw42] [ 54%] PASSED tests/server/mcpserver/test_server.py::TestServer::test_add_resource_decorator_incorrect_usage tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_127_0_0_1_sse tests/server/mcpserver/test_server.py::TestServerTools::test_add_tool [gw42] [ 54%] PASSED tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_127_0_0_1_sse [gw44] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_check_elicit_return_allows_one_arm_and_rejects_two tests/server/mcpserver/test_resolve.py::test_non_elicitation_response_raises tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_empty_redirect_uris [gw41] [ 54%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_empty_redirect_uris tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_authorize_form_post tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_127_0_0_1_streamable_http [gw27] [ 54%] PASSED tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[Union1] tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[IRRAlias] [gw37] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_remove_nonexistent_tool tests/server/mcpserver/test_server.py::TestServerTools::test_remove_tool_and_list [gw42] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_127_0_0_1_streamable_http tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_localhost_sse [gw25] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_sample_tools_require_the_tools_subcapability[_ask_with_tool_choice] tests/server/mcpserver/test_resolve.py::test_sample_with_tools_round_trips_with_declared_subcapability [gw7] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_consumer_receives_result_union_and_branches tests/server/lowlevel/test_server_discover.py::test_registered_by_default [gw33] [ 55%] PASSED tests/server/lowlevel/test_server_discover.py::test_registered_by_default tests/server/mcpserver/test_resolve.py::test_nested_resolver_sees_dependency_and_tool_args [gw41] [ 55%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_authorize_form_post tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_authorization_get [gw22] [ 55%] PASSED tests/client/test_stdio.py::test_cancellation_with_undelivered_backlog_still_drains_and_spares_the_server tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[streamable-http-2025-11-25] [gw47] [ 55%] PASSED tests/interaction/transports/test_streamable_http.py::test_tool_call_over_streamable_http_with_json_responses tests/interaction/transports/test_streamable_http.py::test_tool_calls_over_stateless_streamable_http [gw42] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_localhost_sse tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_ipv6_localhost_sse [gw44] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_non_elicitation_response_raises tests/server/mcpserver/test_resolve.py::test_direct_call_tool_with_non_eliciting_resolver [gw27] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[IRRAlias] tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[IRRAliasGeneric] tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_with_params [gw42] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_auto_enabled_for_ipv6_localhost_sse [gw36] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_resolved_parameters_are_absent_from_the_advertised_tool_schema tests/server/mcpserver/test_resolve.py::test_an_elicit_marker_asks_the_client_and_injects_the_accepted_answer[legacy] [gw27] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[IRRAliasGeneric] tests/server/mcpserver/test_resolve.py::test_unevaluable_alias_and_parameterized_generics_declare_no_arm [gw25] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_sample_with_tools_round_trips_with_declared_subcapability tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_not_auto_enabled_for_other_hosts_sse [gw42] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_not_auto_enabled_for_other_hosts_sse [gw19] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_unknown_response_keys_and_ghost_state_entries_are_ignored tests/server/mcpserver/test_resolve.py::test_forged_state_entry_failing_the_schema_is_reasked_not_an_error[non-dict-data] [gw27] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_unevaluable_alias_and_parameterized_generics_declare_no_arm [gw7] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_nested_resolver_sees_dependency_and_tool_args [gw44] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_direct_call_tool_with_non_eliciting_resolver tests/server/mcpserver/test_resolve.py::test_two_instances_of_one_method_do_not_collide [gw33] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_with_params tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_with_uri_params [gw33] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_with_uri_params tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_with_untyped_params [gw41] [ 55%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_authorization_get tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_revoke_invalid_token [gw41] [ 55%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_revoke_invalid_token tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_revoke_with_malformed_token [gw37] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_remove_tool_and_list tests/server/mcpserver/test_server.py::TestServerTools::test_remove_tool_and_call tests/server/mcpserver/test_resolve.py::test_resolver_runs_once_for_two_consumers tests/server/mcpserver/test_resolve.py::test_tool_returning_input_required_dynamically_with_resolvers_is_an_error [gw36] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_an_elicit_marker_asks_the_client_and_injects_the_accepted_answer[legacy] [gw11] [ 55%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[sse-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[streamable-http-2025-11-25] [gw45] [ 55%] PASSED tests/server/mcpserver/test_elicitation.py::test_elicitation_with_enum_titles [gw41] [ 55%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_revoke_with_malformed_token [gw44] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_two_instances_of_one_method_do_not_collide tests/server/mcpserver/test_resolve.py::test_non_serializable_sibling_resolver_does_not_break_rounds [gw1] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_add_tool tests/server/mcpserver/test_server.py::TestServerTools::test_list_tools tests/server/mcpserver/test_resolve.py::test_an_elicit_marker_asks_the_client_and_injects_the_accepted_answer[auto] tests/server/auth/test_protected_resource.py::test_route_consistency_route_path_matches_metadata_url tests/server/mcpserver/test_resolve.py::test_no_tool_use_answer_to_a_tools_request_is_accepted [gw25] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_no_tool_use_answer_to_a_tools_request_is_accepted tests/server/mcpserver/test_resolve.py::test_sample_outcome_persists_across_rounds tests/server/mcpserver/test_elicitation.py::test_elicitation_literal_field_renders_as_a_spec_enum_schema tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_disallowed_scopes [gw28] [ 55%] PASSED tests/server/auth/test_protected_resource.py::test_route_consistency_route_path_matches_metadata_url tests/server/mcpserver/test_server.py::TestContextInjection::test_context_injection [gw33] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_with_untyped_params tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_matching_params [gw22] [ 55%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[streamable-http-stateless-2025-11-25] [gw7] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_resolver_runs_once_for_two_consumers tests/server/mcpserver/test_resolve.py::test_sync_resolver [gw19] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_forged_state_entry_failing_the_schema_is_reasked_not_an_error[non-dict-data] tests/server/mcpserver/test_resolve.py::test_forged_state_entry_failing_the_schema_is_reasked_not_an_error[dict-failing-schema] [gw44] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_non_serializable_sibling_resolver_does_not_break_rounds [gw37] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_remove_tool_and_call [gw20] [ 55%] PASSED tests/interaction/mcpserver/test_subscriptions.py::test_listen_surfaces_the_ack_and_iterates_typed_events[in-memory-2026-07-28] tests/interaction/mcpserver/test_subscriptions.py::test_listen_surfaces_the_ack_and_iterates_typed_events[streamable-http-2026-07-28] tests/server/mcpserver/test_resolve.py::test_bare_elicit_dependency_restored_as_model [gw39] [ 55%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[in-memory-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[streamable-http-2026-07-28] tests/server/mcpserver/test_server.py::test_typeddict_tool_omitting_optional_keys_passes_client_validation [gw33] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_matching_params tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_mismatched_params [gw1] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_list_tools tests/server/mcpserver/test_server.py::TestServerTools::test_call_tool tests/server/lowlevel/test_server_listing.py::test_list_resources_empty [gw22] [ 55%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[streamable-http-stateless-2025-11-25] [gw41] [ 55%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_disallowed_scopes tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_default_scopes [gw41] [ 55%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_default_scopes tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_with_authorization_code_only [gw41] [ 55%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_with_authorization_code_only tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_missing_authorization_code [gw41] [ 55%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_missing_authorization_code [gw23] [ 55%] PASSED tests/server/lowlevel/test_server_listing.py::test_list_resources_empty [gw36] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_an_elicit_marker_asks_the_client_and_injects_the_accepted_answer[auto] tests/server/mcpserver/test_resolve.py::test_a_declined_elicitation_fails_the_call_for_a_plain_model_consumer[legacy] [gw7] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_sync_resolver tests/server/mcpserver/test_resolve.py::test_cycle_detection_raises_at_registration [gw45] [ 55%] PASSED tests/server/mcpserver/test_elicitation.py::test_elicitation_literal_field_renders_as_a_spec_enum_schema [gw19] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_forged_state_entry_failing_the_schema_is_reasked_not_an_error[dict-failing-schema] [gw33] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_mismatched_params tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_multiple_params tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_with_additional_grant_type [gw25] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_sample_outcome_persists_across_rounds tests/server/mcpserver/test_resolve.py::test_wrong_kind_response_for_sample_raises tests/server/mcpserver/test_extension.py::test_additive_extension_registers_its_tool_and_resource tests/server/mcpserver/test_resolve.py::test_schema_mismatched_fresh_answer_fails_the_call_without_pydantic_leakage[legacy] tests/server/mcpserver/test_server.py::TestServerPrompts::test_prompt_decorator_with_name tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[in-memory-2026-07-28] [gw22] [ 55%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[in-memory-2026-07-28] [gw28] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_context_injection tests/server/mcpserver/test_server.py::TestContextInjection::test_async_context [gw33] [ 55%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_multiple_params [gw44] [ 55%] PASSED tests/server/mcpserver/test_resolve.py::test_bare_elicit_dependency_restored_as_model tests/server/mcpserver/test_resolve.py::test_accept_with_no_content_is_an_error_not_a_cancel[legacy] [gw47] [ 56%] PASSED tests/interaction/transports/test_streamable_http.py::test_tool_calls_over_stateless_streamable_http tests/interaction/transports/test_streamable_http.py::test_stateless_streamable_http_rejects_server_initiated_requests [gw1] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_call_tool tests/server/mcpserver/test_server.py::TestServerTools::test_tool_exception_handling tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[streamable-http-2026-07-28] [gw7] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_cycle_detection_raises_at_registration tests/server/mcpserver/test_resolve.py::test_find_resolved_parameters_tolerates_unresolvable_hints tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_multiple_mismatched_params [gw41] [ 56%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_with_additional_grant_type tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_with_additional_response_types [gw41] [ 56%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_with_additional_response_types tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_response_types_without_code [gw37] [ 56%] PASSED tests/server/mcpserver/test_server.py::test_typeddict_tool_omitting_optional_keys_passes_client_validation tests/server/mcpserver/test_server.py::TestServerResources::test_init_with_resources [gw28] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_async_context tests/server/mcpserver/test_server.py::TestContextInjection::test_context_logging [gw19] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_schema_mismatched_fresh_answer_fails_the_call_without_pydantic_leakage[legacy] tests/server/mcpserver/test_resolve.py::test_schema_mismatched_fresh_answer_fails_the_call_without_pydantic_leakage[auto] [gw41] [ 56%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_response_types_without_code [gw25] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_wrong_kind_response_for_sample_raises [gw23] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_prompt_decorator_with_name tests/server/mcpserver/test_server.py::TestServerPrompts::test_prompt_decorator_with_description [gw44] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_accept_with_no_content_is_an_error_not_a_cancel[legacy] tests/server/mcpserver/test_resolve.py::test_accept_with_no_content_is_an_error_not_a_cancel[auto] [gw27] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_tool_returning_input_required_dynamically_with_resolvers_is_an_error tests/server/mcpserver/test_resolve.py::test_question_digest_pins_the_rendered_question [gw37] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerResources::test_init_with_resources tests/server/mcpserver/test_server.py::TestServerResources::test_text_resource tests/server/mcpserver/test_resolve.py::test_mixed_marker_arms_raise_at_registration [gw45] [ 56%] PASSED tests/server/mcpserver/test_extension.py::test_additive_extension_registers_its_tool_and_resource tests/server/mcpserver/test_extension.py::test_extension_settings_advertised_under_server_capabilities [gw7] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_find_resolved_parameters_tolerates_unresolvable_hints tests/server/mcpserver/test_resolve.py::test_elicitation_result_alias_resolves_under_postponed_annotations [gw7] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_elicitation_result_alias_resolves_under_postponed_annotations tests/server/mcpserver/test_resolve.py::test_unresolvable_resolver_param_raises_at_registration [gw22] [ 56%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_execution_error_is_returned_as_result[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[in-memory-2025-11-25] [gw22] [ 56%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[in-memory-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[sse-2025-11-25] [gw36] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_a_declined_elicitation_fails_the_call_for_a_plain_model_consumer[legacy] tests/server/mcpserver/test_resolve.py::test_a_declined_elicitation_fails_the_call_for_a_plain_model_consumer[auto] [gw27] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_question_digest_pins_the_rendered_question tests/server/mcpserver/test_resolve.py::test_state_round_trips_question_digests_at_v3 [gw33] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_multiple_mismatched_params tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_template_to_resource_conversion [gw33] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_template_to_resource_conversion tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_template_includes_mime_type [gw37] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerResources::test_text_resource [gw23] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_prompt_decorator_with_description tests/server/mcpserver/test_server.py::TestServerPrompts::test_prompt_decorator_error [gw20] [ 56%] PASSED tests/interaction/mcpserver/test_subscriptions.py::test_listen_surfaces_the_ack_and_iterates_typed_events[streamable-http-2026-07-28] tests/interaction/mcpserver/test_subscriptions.py::test_listen_on_a_pre_2026_connection_raises_the_typed_steer[in-memory-2025-11-25] [gw45] [ 56%] PASSED tests/server/mcpserver/test_extension.py::test_extension_settings_advertised_under_server_capabilities tests/server/mcpserver/test_extension.py::test_extension_settings_dropped_on_legacy_handshake [gw39] [ 56%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_duplicate_tool_name_warns_and_keeps_the_first[streamable-http-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[in-memory-2025-11-25] [gw27] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_state_round_trips_question_digests_at_v3 tests/server/mcpserver/test_resolve.py::test_restored_answer_with_matching_digest_completes_without_reasking [gw7] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_unresolvable_resolver_param_raises_at_registration tests/server/mcpserver/test_resolve.py::test_multiple_elicit_arms_raise_at_registration tests/server/mcpserver/test_server.py::TestServerResources::test_read_unknown_resource [gw28] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_context_logging tests/server/mcpserver/test_server.py::TestContextInjection::test_optional_context [gw30] [ 56%] PASSED tests/docs/test_translations.py::test_repair_turn_feeds_the_findings_back_and_accepts_the_fixed_reply tests/docs/test_translations.py::test_code_block_moved_into_another_section_is_repaired_not_published [gw25] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_mixed_marker_arms_raise_at_registration tests/server/mcpserver/test_resolve.py::test_marker_union_with_generic_alias_member_registers [gw25] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_marker_union_with_generic_alias_member_registers tests/server/mcpserver/test_resolve.py::test_decline_entry_for_a_sample_marker_is_invalid [gw25] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_decline_entry_for_a_sample_marker_is_invalid tests/server/mcpserver/test_resolve.py::test_bare_initialized_session_is_still_gated [gw45] [ 56%] PASSED tests/server/mcpserver/test_extension.py::test_extension_settings_dropped_on_legacy_handshake [gw19] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_schema_mismatched_fresh_answer_fails_the_call_without_pydantic_leakage[auto] tests/server/mcpserver/test_resolve.py::test_auto_driver_gives_up_when_the_chain_outlasts_its_round_budget [gw33] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceTemplates::test_resource_template_includes_mime_type tests/server/mcpserver/test_server.py::TestServerResourceMetadata::test_resource_decorator_with_metadata [gw23] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_prompt_decorator_error tests/server/mcpserver/test_server.py::TestServerPrompts::test_list_prompts [gw22] [ 56%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[sse-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[streamable-http-2025-11-25] tests/server/mcpserver/test_extension.py::test_duplicate_extension_identifier_raises [gw44] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_accept_with_no_content_is_an_error_not_a_cancel[auto] tests/server/mcpserver/test_resolve.py::test_independent_nested_deps_batch_into_one_round [gw47] [ 56%] PASSED tests/interaction/transports/test_streamable_http.py::test_stateless_streamable_http_rejects_server_initiated_requests [gw20] [ 56%] PASSED tests/interaction/mcpserver/test_subscriptions.py::test_listen_on_a_pre_2026_connection_raises_the_typed_steer[in-memory-2025-11-25] [gw37] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerResources::test_read_unknown_resource tests/server/mcpserver/test_server.py::TestServerResources::test_read_resource_error [gw7] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_multiple_elicit_arms_raise_at_registration tests/server/mcpserver/test_resolve.py::test_resolve_marker_inside_a_union_raises_at_registration [gw7] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_resolve_marker_inside_a_union_raises_at_registration tests/server/mcpserver/test_resolve.py::test_bare_elicitation_result_alias_wants_the_outcome_union [gw23] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_list_prompts [gw11] [ 56%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[streamable-http-stateless-2025-11-25] [gw1] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_exception_handling tests/server/mcpserver/test_server.py::TestServerTools::test_tool_error_handling [gw28] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_optional_context tests/server/mcpserver/test_server.py::TestContextInjection::test_context_resource_access [gw36] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_a_declined_elicitation_fails_the_call_for_a_plain_model_consumer[auto] tests/server/mcpserver/test_resolve.py::test_a_declined_elicitation_reaches_a_consumer_that_asked_for_the_outcome_union[legacy] [gw25] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_bare_initialized_session_is_still_gated tests/server/mcpserver/test_resolve.py::test_tool_choice_only_sample_validates_as_tools_mode[legacy] [gw45] [ 56%] PASSED tests/server/mcpserver/test_extension.py::test_duplicate_extension_identifier_raises tests/server/mcpserver/test_extension.py::test_extension_method_reachable_via_session_send_request [gw7] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_bare_elicitation_result_alias_wants_the_outcome_union tests/server/mcpserver/test_resolve.py::test_resolve_marker_on_return_annotation_is_ignored tests/interaction/transports/test_streamable_http.py::test_json_response_streamable_http_rejects_request_scoped_server_requests [gw44] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_independent_nested_deps_batch_into_one_round tests/server/mcpserver/test_resolve.py::test_deep_chain_keeps_early_answers_across_rounds tests/interaction/mcpserver/test_subscriptions.py::test_listen_on_a_pre_2026_connection_raises_the_typed_steer[sse-2025-11-25] [gw31] [ 56%] PASSED tests/docs_src/test_cancellation.py::test_two_http_options_keep_the_cancellation_from_the_handler[json_response-modern] tests/docs_src/test_cancellation.py::test_two_http_options_keep_the_cancellation_from_the_handler[stateless_http-legacy] [gw45] [ 56%] PASSED tests/server/mcpserver/test_extension.py::test_extension_method_reachable_via_session_send_request tests/server/mcpserver/test_extension.py::test_pass_through_interceptor_leaves_tool_result_unchanged tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt [gw7] [ 56%] PASSED tests/server/mcpserver/test_resolve.py::test_resolve_marker_on_return_annotation_is_ignored [gw33] [ 56%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceMetadata::test_resource_decorator_with_metadata tests/server/mcpserver/test_server.py::TestServerResourceMetadata::test_resource_template_decorator_with_metadata [gw33] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceMetadata::test_resource_template_decorator_with_metadata tests/server/mcpserver/test_server.py::TestServerResourceMetadata::test_read_resource_returns_meta [gw28] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_context_resource_access tests/server/mcpserver/test_server.py::TestContextInjection::test_resource_with_context [gw22] [ 57%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[streamable-http-stateless-2025-11-25] [gw27] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_restored_answer_with_matching_digest_completes_without_reasking tests/server/mcpserver/test_resolve.py::test_restored_entry_is_repersisted_with_its_question_digest_intact [gw23] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt [gw0] [ 57%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[in-memory-2026-07-28] [gw36] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_a_declined_elicitation_reaches_a_consumer_that_asked_for_the_outcome_union[legacy] tests/server/mcpserver/test_resolve.py::test_a_declined_elicitation_reaches_a_consumer_that_asked_for_the_outcome_union[auto] [gw21] [ 57%] PASSED tests/interaction/transports/test_hosting_http_modern.py::test_modern_client_stops_mirroring_after_a_re_list_drops_the_tool tests/server/mcpserver/test_resolve.py::test_reworded_question_drops_the_stored_answer_and_reasks [gw25] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_tool_choice_only_sample_validates_as_tools_mode[legacy] tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt_with_description tests/server/auth/test_routes.py::test_validate_issuer_url_http_ipv6_loopback_allowed [gw33] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerResourceMetadata::test_read_resource_returns_meta [gw20] [ 57%] PASSED tests/interaction/mcpserver/test_subscriptions.py::test_listen_on_a_pre_2026_connection_raises_the_typed_steer[sse-2025-11-25] [gw22] [ 57%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[streamable-http-stateless-2025-11-25] [gw29] [ 57%] PASSED tests/server/auth/test_routes.py::test_validate_issuer_url_http_ipv6_loopback_allowed tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[in-memory-2026-07-28] [gw28] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_resource_with_context tests/interaction/mcpserver/test_subscriptions.py::test_listen_on_a_pre_2026_connection_raises_the_typed_steer[streamable-http-2025-11-25] [gw45] [ 57%] PASSED tests/server/mcpserver/test_extension.py::test_pass_through_interceptor_leaves_tool_result_unchanged tests/server/mcpserver/test_server.py::TestContextInjection::test_resource_without_context [gw23] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt_with_description tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt_with_docstring_description tests/server/mcpserver/test_server.py::test_resource_query_param_without_default_rejected_at_decoration [gw47] [ 57%] PASSED tests/interaction/transports/test_streamable_http.py::test_json_response_streamable_http_rejects_request_scoped_server_requests tests/interaction/transports/test_streamable_http.py::test_json_response_streamable_http_delivers_only_unrelated_notifications [gw44] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_deep_chain_keeps_early_answers_across_rounds [gw22] [ 57%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[in-memory-2026-07-28] [gw27] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_restored_entry_is_repersisted_with_its_question_digest_intact tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[streamable-http-2026-07-28] [gw29] [ 57%] PASSED tests/server/mcpserver/test_server.py::test_resource_query_param_without_default_rejected_at_decoration tests/server/mcpserver/test_server.py::test_resource_path_param_without_default_accepted tests/server/mcpserver/test_resolve.py::test_decline_and_cancel_entries_carry_the_question_digest [gw23] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt_with_docstring_description tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt_with_resource [gw36] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_a_declined_elicitation_reaches_a_consumer_that_asked_for_the_outcome_union[auto] tests/server/mcpserver/test_resolve.py::test_factory_closures_get_distinct_wire_keys [gw28] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_resource_without_context tests/server/mcpserver/test_server.py::TestContextInjection::test_resource_context_custom_name tests/server/mcpserver/test_resolve.py::test_an_undeclared_capability_refuses_the_call_instead_of_asking[legacy] [gw19] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_auto_driver_gives_up_when_the_chain_outlasts_its_round_budget [gw22] [ 57%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_unknown_tool_is_protocol_error[streamable-http-2026-07-28] tests/interaction/lowlevel/test_tools.py::test_call_tool_uncaught_exception_becomes_error_response[in-memory-2025-11-25] tests/server/mcpserver/test_resolve.py::test_aliased_elicitation_model_round_trips_through_request_state [gw1] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_error_handling tests/server/mcpserver/test_server.py::TestServerTools::test_tool_error_details [gw29] [ 57%] PASSED tests/server/mcpserver/test_server.py::test_resource_path_param_without_default_accepted tests/server/mcpserver/test_server.py::test_resource_security_default_rejects_traversal [gw23] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt_with_resource [gw37] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerResources::test_read_resource_error tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_unknown_prompt [gw11] [ 57%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[streamable-http-stateless-2025-11-25] [gw28] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_resource_context_custom_name tests/server/mcpserver/test_server.py::TestServerResources::test_binary_resource [gw20] [ 57%] PASSED tests/interaction/mcpserver/test_subscriptions.py::test_listen_on_a_pre_2026_connection_raises_the_typed_steer[streamable-http-2025-11-25] tests/server/mcpserver/test_server.py::TestContextInjection::test_prompt_with_context [gw27] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_decline_and_cancel_entries_carry_the_question_digest tests/interaction/mcpserver/test_subscriptions.py::test_listen_on_a_pre_2026_connection_raises_the_typed_steer[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[streamable-http-2025-11-25] [gw36] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_an_undeclared_capability_refuses_the_call_instead_of_asking[legacy] tests/server/mcpserver/test_resolve.py::test_an_undeclared_capability_refuses_the_call_instead_of_asking[auto] [gw19] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_aliased_elicitation_model_round_trips_through_request_state [gw44] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_factory_closures_get_distinct_wire_keys [gw37] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerResources::test_binary_resource tests/server/mcpserver/test_resolve.py::test_divergent_validation_and_serialization_aliases_round_trip [gw29] [ 57%] PASSED tests/server/mcpserver/test_server.py::test_resource_security_default_rejects_traversal tests/server/mcpserver/test_server.py::test_resource_template_non_match_is_unknown_resource [gw28] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_prompt_with_context tests/server/mcpserver/test_server.py::TestContextInjection::test_prompt_without_context tests/server/mcpserver/test_server.py::TestServerResources::test_file_resource_text tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration [gw22] [ 57%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_uncaught_exception_becomes_error_response[in-memory-2025-11-25] [gw47] [ 57%] PASSED tests/interaction/transports/test_streamable_http.py::test_json_response_streamable_http_delivers_only_unrelated_notifications tests/interaction/lowlevel/test_tools.py::test_call_tool_uncaught_exception_becomes_error_response[sse-2025-11-25] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_pkce_challenge [gw36] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_an_undeclared_capability_refuses_the_call_instead_of_asking[auto] tests/interaction/transports/test_streamable_http.py::test_unrelated_server_messages_arrive_on_the_standalone_stream [gw28] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_prompt_without_context [gw14] [ 57%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration [gw29] [ 57%] PASSED tests/server/mcpserver/test_server.py::test_resource_template_non_match_is_unknown_resource tests/server/mcpserver/test_server.py::test_resource_security_rejection_indistinguishable_from_not_found tests/server/mcpserver/test_server.py::test_prompt_reads_input_responses_and_request_state_from_context_on_retry tests/server/mcpserver/test_server.py::test_parameterized_context_carries_the_request_into_templates_and_prompts [gw20] [ 57%] PASSED tests/interaction/mcpserver/test_subscriptions.py::test_listen_on_a_pre_2026_connection_raises_the_typed_steer[streamable-http-stateless-2025-11-25] [gw30] [ 57%] PASSED tests/docs/test_translations.py::test_code_block_moved_into_another_section_is_repaired_not_published [gw1] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_error_details tests/server/mcpserver/test_server.py::TestServerTools::test_tool_return_value_conversion tests/server/mcpserver/test_extension.py::test_require_client_extension_passes_when_client_declared_it tests/docs/test_translations.py::test_code_block_moved_out_of_a_retranslated_section_gets_repair_turns_like_any_other_finding [gw10] [ 57%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthorizeEndpointErrors::test_authorize_missing_pkce_challenge tests/server/mcpserver/prompts/test_base.py::test_message_converts_image_and_audio_helpers_to_content_blocks[helper0-expected0] [gw29] [ 57%] PASSED tests/server/mcpserver/test_server.py::test_resource_security_rejection_indistinguishable_from_not_found tests/server/mcpserver/test_server.py::test_resource_security_per_resource_override [gw19] [ 57%] PASSED tests/server/mcpserver/test_resolve.py::test_divergent_validation_and_serialization_aliases_round_trip tests/server/mcpserver/test_server.py::test_tool_raising_unexpected_exception_is_logged_once_at_error_with_its_traceback tests/server/mcpserver/test_resolve.py::test_state_entry_never_replaces_a_resolver_computed_value [gw26] [ 57%] PASSED tests/server/mcpserver/prompts/test_base.py::test_message_converts_image_and_audio_helpers_to_content_blocks[helper0-expected0] [gw23] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_unknown_prompt tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt_missing_args [gw14] [ 57%] PASSED tests/server/mcpserver/test_server.py::test_prompt_reads_input_responses_and_request_state_from_context_on_retry tests/server/mcpserver/test_server.py::test_prompt_with_parameterized_context_reads_input_responses_on_retry tests/server/mcpserver/test_server.py::test_resource_error_escaping_a_tool_is_anticipated [gw28] [ 57%] PASSED tests/server/mcpserver/test_server.py::test_parameterized_context_carries_the_request_into_templates_and_prompts tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_render_prompt_with_missing_args [gw1] [ 57%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_return_value_conversion [gw29] [ 57%] PASSED tests/server/mcpserver/test_server.py::test_resource_security_per_resource_override tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt_direct_call_without_context tests/server/mcpserver/test_server.py::test_resource_security_server_wide_override [gw20] [ 57%] PASSED tests/server/mcpserver/test_extension.py::test_require_client_extension_passes_when_client_declared_it tests/server/mcpserver/test_server.py::TestServerTools::test_call_tool_always_returns_call_tool_result tests/server/mcpserver/test_extension.py::test_require_client_extension_raises_minus_32021_when_client_did_not_declare_it [gw19] [ 58%] PASSED tests/server/mcpserver/test_resolve.py::test_state_entry_never_replaces_a_resolver_computed_value tests/server/mcpserver/test_resolve.py::test_state_decline_entry_for_a_pure_resolver_is_ignored tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_json_conversion [gw6] [ 58%] PASSED tests/interaction/mcpserver/test_prompts.py::test_registering_a_duplicate_prompt_name_warns_and_keeps_the_first[streamable-http-2025-11-25] [gw14] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_prompt_with_parameterized_context_reads_input_responses_on_retry tests/server/mcpserver/test_server.py::test_prompt_input_required_result_on_legacy_session_is_a_serialization_error [gw46] [ 58%] PASSED tests/interaction/transports/test_hosting_resume.py::test_a_call_whose_stream_the_server_closes_is_resumed_by_the_client [gw9] [ 58%] PASSED tests/server/mcpserver/prompts/test_manager.py::TestPromptManager::test_render_prompt_with_missing_args tests/server/mcpserver/test_server.py::test_nested_tool_crash_stays_unexpected_through_the_outer_tool [gw28] [ 58%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt_direct_call_without_context tests/interaction/transports/test_hosting_resume.py::test_a_captured_resumption_token_replays_missed_messages_on_a_new_connection tests/server/mcpserver/test_server.py::test_completion_handler_crash_is_logged_and_reaches_the_client_generically [gw29] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_resource_security_server_wide_override tests/server/mcpserver/test_server.py::test_resource_security_namespaced_identifier_requires_exempt [gw34] [ 58%] PASSED tests/server/mcpserver/resources/test_function_resources.py::TestFunctionResource::test_json_conversion [gw1] [ 58%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_call_tool_always_returns_call_tool_result [gw22] [ 58%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_uncaught_exception_becomes_error_response[sse-2025-11-25] tests/server/mcpserver/test_server.py::TestServerTools::test_tool_image_helper tests/server/mcpserver/test_server.py::test_remove_prompt_removes_and_unknown_name_raises [gw20] [ 58%] PASSED tests/server/mcpserver/test_extension.py::test_require_client_extension_raises_minus_32021_when_client_did_not_declare_it tests/interaction/lowlevel/test_tools.py::test_call_tool_uncaught_exception_becomes_error_response[streamable-http-2025-11-25] tests/server/mcpserver/test_func_metadata.py::test_complex_function_runtime_arg_validation_non_json tests/server/mcpserver/resources/test_file_resources.py::test_declared_charset_becomes_default_encoding[text/plain; format=flowed; charset="iso-8859-1"] [gw19] [ 58%] PASSED tests/server/mcpserver/test_resolve.py::test_state_decline_entry_for_a_pure_resolver_is_ignored tests/server/mcpserver/test_resolve.py::test_dynamic_schema_resolver_restores_across_rounds [gw15] [ 58%] PASSED tests/server/mcpserver/resources/test_file_resources.py::test_declared_charset_becomes_default_encoding[text/plain; format=flowed; charset="iso-8859-1"] [gw47] [ 58%] PASSED tests/interaction/transports/test_streamable_http.py::test_unrelated_server_messages_arrive_on_the_standalone_stream tests/interaction/transports/test_streamable_http.py::test_server_initiated_elicitation_round_trips_during_a_tool_call [gw34] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_remove_prompt_removes_and_unknown_name_raises [gw29] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_resource_security_namespaced_identifier_requires_exempt tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_add_callable_object tests/server/mcpserver/test_server.py::test_middleware_kwarg_and_property_share_the_low_level_chain tests/server/mcpserver/test_server.py::test_resource_security_rejection_halts_template_iteration tests/interaction/mcpserver/test_context.py::test_context_elicit_returns_typed_result[streamable-http-2025-11-25] tests/server/mcpserver/resources/test_resource_manager.py::test_disable_warn_on_duplicate_resources [gw20] [ 58%] PASSED tests/server/mcpserver/test_func_metadata.py::test_complex_function_runtime_arg_validation_non_json [gw15] [ 58%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_add_callable_object tests/server/mcpserver/resources/test_resource_template.py::test_matches_rejects_null_byte_by_default tests/server/mcpserver/test_func_metadata.py::test_complex_function_runtime_arg_validation_with_json tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_add_async_callable_object [gw16] [ 58%] PASSED tests/server/mcpserver/resources/test_resource_manager.py::test_disable_warn_on_duplicate_resources [gw19] [ 58%] PASSED tests/server/mcpserver/test_resolve.py::test_dynamic_schema_resolver_restores_across_rounds [gw6] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_completion_handler_crash_is_logged_and_reaches_the_client_generically [gw34] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_middleware_kwarg_and_property_share_the_low_level_chain [gw37] [ 58%] PASSED tests/server/mcpserver/test_server.py::TestServerResources::test_file_resource_text [gw40] [ 58%] PASSED tests/server/mcpserver/resources/test_resource_template.py::test_matches_rejects_null_byte_by_default [gw26] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_resource_error_escaping_a_tool_is_anticipated tests/server/mcpserver/test_server.py::test_resource_crash_escaping_a_tool_is_the_tools_crash [gw29] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_resource_security_rejection_halts_template_iteration tests/server/mcpserver/test_server.py::test_static_resource_with_context_param_errors tests/server/mcpserver/test_server.py::test_completion_handler_returning_the_wrong_type_is_a_crash tests/server/mcpserver/test_server.py::TestServerResources::test_file_resource_binary tests/server/mcpserver/test_server.py::test_middleware_can_refuse_subscriptions_listen_before_the_ack tests/server/mcpserver/test_url_elicitation.py::test_url_elicitation_cancel [gw23] [ 58%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_get_prompt_missing_args tests/server/mcpserver/test_server.py::test_resource_decorator_rfc6570_reserved_expansion tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_metadata_in_list_tools [gw16] [ 58%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_metadata_in_list_tools [gw15] [ 58%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_add_async_callable_object tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_add_invalid_tool [gw15] [ 58%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_add_invalid_tool [gw10] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_tool_raising_unexpected_exception_is_logged_once_at_error_with_its_traceback tests/server/mcpserver/test_server.py::test_tool_raising_tool_error_is_logged_at_info_without_traceback [gw29] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_static_resource_with_context_param_errors tests/server/mcpserver/test_server.py::test_static_resource_with_extra_params_errors [gw1] [ 58%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_image_helper tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_helper tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_add_lambda [gw20] [ 58%] PASSED tests/server/mcpserver/test_func_metadata.py::test_complex_function_runtime_arg_validation_with_json tests/server/mcpserver/test_func_metadata.py::test_call_fn_does_not_mutate_the_arguments_dict tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_multiple_tools_with_different_metadata [gw34] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_middleware_can_refuse_subscriptions_listen_before_the_ack tests/server/mcpserver/test_title.py::test_server_name_title_description_version [gw15] [ 58%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_add_lambda [gw23] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_resource_decorator_rfc6570_reserved_expansion tests/server/mcpserver/test_server.py::test_resource_decorator_rejects_malformed_template [gw23] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_resource_decorator_rejects_malformed_template [gw22] [ 58%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_uncaught_exception_becomes_error_response[streamable-http-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_call_tool_uncaught_exception_becomes_error_response[streamable-http-stateless-2025-11-25] [gw9] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_nested_tool_crash_stays_unexpected_through_the_outer_tool tests/server/mcpserver/test_server.py::test_context_exposes_client_capabilities_from_connection [gw29] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_static_resource_with_extra_params_errors tests/server/mcpserver/test_server.py::test_completion_decorator [gw16] [ 58%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_multiple_tools_with_different_metadata tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_metadata_with_complex_structure [gw40] [ 58%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_url_elicitation_cancel tests/server/mcpserver/test_url_elicitation.py::test_url_elicitation_helper_function [gw34] [ 58%] PASSED tests/server/mcpserver/test_title.py::test_server_name_title_description_version tests/server/mcpserver/test_title.py::test_tool_title_precedence [gw20] [ 58%] PASSED tests/server/mcpserver/test_func_metadata.py::test_call_fn_does_not_mutate_the_arguments_dict tests/server/mcpserver/test_func_metadata.py::test_call_fn_with_arg_validation_still_works_and_warns [gw9] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_context_exposes_client_capabilities_from_connection tests/server/mcpserver/test_server.py::test_context_input_responses_and_request_state_are_none_on_initial_round [gw29] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_completion_decorator tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_add_lambda_with_no_name [gw15] [ 58%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_add_lambda_with_no_name tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_warn_on_duplicate_tools [gw0] [ 58%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[in-memory-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[streamable-http-2026-07-28] [gw16] [ 58%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_metadata_with_complex_structure tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_metadata_empty_dict [gw6] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_completion_handler_returning_the_wrong_type_is_a_crash tests/server/mcpserver/test_server.py::test_completion_handler_raising_mcp_error_passes_through [gw8] [ 58%] PASSED tests/interaction/mcpserver/test_context.py::test_context_elicit_returns_typed_result[streamable-http-2025-11-25] [gw20] [ 58%] PASSED tests/server/mcpserver/test_func_metadata.py::test_call_fn_with_arg_validation_still_works_and_warns [gw47] [ 58%] PASSED tests/interaction/transports/test_streamable_http.py::test_server_initiated_elicitation_round_trips_during_a_tool_call tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool_with_missing_args [gw16] [ 58%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_metadata_empty_dict tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_metadata_with_annotations tests/server/mcpserver/test_func_metadata.py::test_str_vs_list_str [gw9] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_context_input_responses_and_request_state_are_none_on_initial_round tests/server/mcpserver/test_server.py::test_context_notify_methods_publish_to_the_configured_bus [gw40] [ 58%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_url_elicitation_helper_function tests/server/mcpserver/test_url_elicitation.py::test_url_no_content_in_response [gw6] [ 58%] PASSED tests/server/mcpserver/test_server.py::test_completion_handler_raising_mcp_error_passes_through tests/server/mcpserver/test_server.py::test_sse_app_applies_the_configured_request_body_limit [gw15] [ 58%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_warn_on_duplicate_tools [gw8] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool_with_missing_args [gw20] [ 59%] PASSED tests/server/mcpserver/test_func_metadata.py::test_str_vs_list_str tests/server/mcpserver/test_func_metadata.py::test_pre_parse_json_leaves_strings_the_json_parser_refuses_untouched [gw10] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_tool_raising_tool_error_is_logged_at_info_without_traceback tests/server/mcpserver/test_server.py::test_tool_error_subclass_is_still_anticipated [gw40] [ 59%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_url_no_content_in_response tests/interaction/mcpserver/test_context.py::test_context_logging_helpers_send_log_notifications[streamable-http-stateless-2025-11-25] [gw34] [ 59%] PASSED tests/server/mcpserver/test_title.py::test_tool_title_precedence tests/server/mcpserver/test_title.py::test_prompt_title [gw46] [ 59%] PASSED tests/interaction/transports/test_hosting_resume.py::test_a_captured_resumption_token_replays_missed_messages_on_a_new_connection [gw31] [ 59%] PASSED tests/docs_src/test_cancellation.py::test_two_http_options_keep_the_cancellation_from_the_handler[stateless_http-legacy] tests/docs_src/test_client.py::test_connected_properties_are_populated_inside_the_block [gw31] [ 59%] PASSED tests/docs_src/test_client.py::test_connected_properties_are_populated_inside_the_block tests/docs_src/test_client.py::test_a_client_is_not_reusable_after_the_block_ends [gw1] [ 59%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_helper tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.wav-audio/wav] [gw37] [ 59%] PASSED tests/server/mcpserver/test_server.py::TestServerResources::test_file_resource_binary tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_disable_warn_on_duplicate_tools [gw15] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_disable_warn_on_duplicate_tools tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool [gw22] [ 59%] PASSED tests/interaction/lowlevel/test_tools.py::test_call_tool_uncaught_exception_becomes_error_response[streamable-http-stateless-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[in-memory-2025-11-25] [gw16] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_metadata_with_annotations tests/server/mcpserver/test_tool_manager.py::TestRemoveTools::test_remove_existing_tool [gw16] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestRemoveTools::test_remove_existing_tool tests/server/mcpserver/test_tool_manager.py::TestRemoveTools::test_remove_nonexistent_tool [gw16] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestRemoveTools::test_remove_nonexistent_tool tests/server/mcpserver/test_tool_manager.py::TestRemoveTools::test_remove_tool_from_multiple_tools [gw16] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestRemoveTools::test_remove_tool_from_multiple_tools [gw31] [ 59%] PASSED tests/docs_src/test_client.py::test_a_client_is_not_reusable_after_the_block_ends tests/docs_src/test_client.py::test_list_tools_returns_the_full_definition tests/server/mcpserver/test_url_elicitation.py::test_form_mode_still_works tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[in-memory-2026-07-28] [gw34] [ 59%] PASSED tests/server/mcpserver/test_title.py::test_prompt_title tests/server/mcpserver/test_title.py::test_resource_title [gw26] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_resource_crash_escaping_a_tool_is_the_tools_crash tests/server/mcpserver/test_server.py::test_tool_that_recovers_from_a_missing_resource_logs_nothing tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_unknown_tool [gw8] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_unknown_tool tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool_with_list_int_input [gw8] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool_with_list_int_input tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool_with_list_str_or_str_input [gw8] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool_with_list_str_or_str_input tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool_with_complex_model tests/server/mcpserver/test_tool_manager.py::TestRemoveTools::test_call_removed_tool_raises_error [gw31] [ 59%] PASSED tests/docs_src/test_client.py::test_list_tools_returns_the_full_definition tests/docs_src/test_client.py::test_get_display_name_prefers_the_title [gw31] [ 59%] PASSED tests/docs_src/test_client.py::test_get_display_name_prefers_the_title tests/docs_src/test_client.py::test_call_tool_result_has_three_things_to_read [gw39] [ 59%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[in-memory-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[sse-2025-11-25] [gw15] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_async_tool [gw15] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_async_tool tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_object_tool [gw22] [ 59%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[in-memory-2025-11-25] tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[sse-2025-11-25] tests/interaction/transports/test_hosting_session.py::test_initialize_issues_a_visible_ascii_session_id [gw46] [ 59%] PASSED tests/interaction/transports/test_hosting_session.py::test_initialize_issues_a_visible_ascii_session_id tests/interaction/transports/test_hosting_session.py::test_subsequent_requests_with_the_session_id_route_to_the_same_session [gw10] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_tool_error_subclass_is_still_anticipated tests/server/mcpserver/test_server.py::test_tool_argument_validation_failure_is_logged_at_info_without_traceback [gw20] [ 59%] PASSED tests/server/mcpserver/test_func_metadata.py::test_pre_parse_json_leaves_strings_the_json_parser_refuses_untouched tests/server/mcpserver/test_func_metadata.py::test_skip_names [gw20] [ 59%] PASSED tests/server/mcpserver/test_func_metadata.py::test_skip_names tests/server/mcpserver/test_func_metadata.py::test_structured_output_dict_str_types [gw8] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool_with_complex_model tests/server/mcpserver/test_tool_manager.py::TestToolSchema::test_context_arg_excluded_from_schema [gw22] [ 59%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[sse-2025-11-25] [gw6] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_sse_app_applies_the_configured_request_body_limit [gw9] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_context_notify_methods_publish_to_the_configured_bus tests/server/mcpserver/test_server.py::test_programmatic_entry_points_carry_the_subscription_bus [gw9] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_programmatic_entry_points_carry_the_subscription_bus tests/server/mcpserver/test_server.py::test_server_advertises_change_notifications_on_the_modern_wire_by_default [gw9] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_server_advertises_change_notifications_on_the_modern_wire_by_default tests/server/mcpserver/test_server.py::test_subscriptions_false_neither_advertises_nor_serves_listen [gw9] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_subscriptions_false_neither_advertises_nor_serves_listen tests/server/mcpserver/test_server.py::test_notify_still_succeeds_when_subscriptions_are_off [gw1] [ 59%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.wav-audio/wav] tests/server/mcpserver/test_server.py::test_report_progress_delegates_to_session_report_progress [gw6] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_report_progress_delegates_to_session_report_progress tests/server/mcpserver/test_server.py::test_context_headers_returns_request_headers [gw6] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_context_headers_returns_request_headers tests/server/mcpserver/test_server.py::test_context_headers_is_none_without_request [gw6] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_context_headers_is_none_without_request tests/server/mcpserver/test_server.py::test_context_headers_is_none_when_request_carries_no_headers [gw6] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_context_headers_is_none_when_request_carries_no_headers tests/server/mcpserver/test_server.py::test_read_resource_template_error [gw43] [ 59%] PASSED tests/interaction/mcpserver/test_context.py::test_context_logging_helpers_send_log_notifications[streamable-http-stateless-2025-11-25] tests/server/mcpserver/tools/test_base.py::test_context_detected_in_union_annotation tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[streamable-http-2025-11-25] [gw40] [ 59%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_form_mode_still_works tests/server/mcpserver/test_url_elicitation.py::test_elicit_complete_notification [gw46] [ 59%] PASSED tests/interaction/transports/test_hosting_session.py::test_subsequent_requests_with_the_session_id_route_to_the_same_session tests/interaction/transports/test_hosting_session.py::test_requests_with_an_unknown_session_id_return_404 [gw46] [ 59%] PASSED tests/interaction/transports/test_hosting_session.py::test_requests_with_an_unknown_session_id_return_404 tests/interaction/transports/test_hosting_session.py::test_non_initialize_post_without_a_session_id_returns_400 [gw9] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_notify_still_succeeds_when_subscriptions_are_off tests/server/mcpserver/test_server.py::test_context_mcp_server_outside_request_raises [gw9] [ 59%] PASSED tests/server/mcpserver/test_server.py::test_context_mcp_server_outside_request_raises [gw8] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolSchema::test_context_arg_excluded_from_schema tests/server/mcpserver/test_tool_manager.py::TestContextHandling::test_context_parameter_detection [gw8] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestContextHandling::test_context_parameter_detection tests/server/mcpserver/test_tool_manager.py::TestContextHandling::test_context_injection [gw15] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_object_tool tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_async_object_tool [gw15] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_async_object_tool tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_basemodel_conversion [gw16] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestRemoveTools::test_call_removed_tool_raises_error tests/server/mcpserver/test_tool_manager.py::TestRemoveTools::test_remove_tool_case_sensitive [gw16] [ 59%] PASSED tests/server/mcpserver/test_tool_manager.py::TestRemoveTools::test_remove_tool_case_sensitive tests/server/mcpserver/test_url_elicitation.py::test_url_elicitation_accept [gw16] [ 59%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_url_elicitation_accept [gw43] [ 59%] PASSED tests/server/mcpserver/tools/test_base.py::test_context_detected_in_union_annotation tests/server/mcpserver/tools/test_base.py::test_mcperror_raised_from_a_tool_surfaces_as_a_top_level_jsonrpc_error_with_code_and_data_intact [gw43] [ 59%] PASSED tests/server/mcpserver/tools/test_base.py::test_mcperror_raised_from_a_tool_surfaces_as_a_top_level_jsonrpc_error_with_code_and_data_intact [gw31] [ 60%] PASSED tests/docs_src/test_client.py::test_call_tool_result_has_three_things_to_read tests/examples/test_stories.py::test_story[sampling-server-in-memory-legacy] tests/server/mcpserver/test_server.py::test_context_request_context_outside_request_raises [gw9] [ 60%] PASSED tests/server/mcpserver/test_server.py::test_context_request_context_outside_request_raises tests/server/mcpserver/test_server.py::test_context_notify_outside_a_request_raises [gw9] [ 60%] PASSED tests/server/mcpserver/test_server.py::test_context_notify_outside_a_request_raises [gw11] [ 60%] PASSED tests/interaction/mcpserver/test_tools.py::test_call_tool_function_exception_becomes_error_result[in-memory-2026-07-28] tests/server/test_apps.py::test_apps_tool_returns_rich_output_when_client_negotiated_apps [gw46] [ 60%] PASSED tests/interaction/transports/test_hosting_session.py::test_non_initialize_post_without_a_session_id_returns_400 tests/interaction/transports/test_hosting_session.py::test_delete_terminates_the_session_and_subsequent_requests_return_404 [gw35] [ 60%] PASSED tests/server/mcpserver/resources/test_resource_template.py::TestResourceTemplate::test_basemodel_conversion tests/server/test_apps.py::test_add_resource_registers_a_prebuilt_ui_resource tests/server/mcpserver/tools/test_base.py::test_non_mcperror_exception_raised_from_a_tool_is_wrapped_as_an_is_error_result [gw6] [ 60%] PASSED tests/server/mcpserver/test_server.py::test_read_resource_template_error tests/server/mcpserver/test_server.py::test_read_resource_template_not_found [gw20] [ 60%] PASSED tests/server/mcpserver/test_func_metadata.py::test_structured_output_dict_str_types tests/server/mcpserver/test_func_metadata.py::test_lambda_function [gw20] [ 60%] PASSED tests/server/mcpserver/test_func_metadata.py::test_lambda_function tests/server/mcpserver/test_func_metadata.py::test_complex_function_json_schema [gw22] [ 60%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[streamable-http-2025-11-25] [gw14] [ 60%] PASSED tests/server/mcpserver/test_server.py::test_prompt_input_required_result_on_legacy_session_is_a_serialization_error tests/server/mcpserver/test_server.py::test_recursive_tool_return_type_lists_and_calls_on_legacy_session [gw31] [ 60%] PASSED tests/examples/test_stories.py::test_story[sampling-server-in-memory-legacy] tests/examples/test_stories.py::test_story[sampling-server-http-asgi-legacy] [gw10] [ 60%] PASSED tests/server/mcpserver/test_server.py::test_tool_argument_validation_failure_is_logged_at_info_without_traceback tests/server/mcpserver/test_server.py::test_tool_argument_validation_failure_chains_directly_to_the_validation_error [gw46] [ 60%] PASSED tests/interaction/transports/test_hosting_session.py::test_delete_terminates_the_session_and_subsequent_requests_return_404 tests/interaction/transports/test_hosting_session.py::test_terminating_one_session_leaves_others_working [gw35] [ 60%] PASSED tests/server/test_apps.py::test_add_resource_registers_a_prebuilt_ui_resource tests/server/test_apps.py::test_add_resource_rejects_non_ui_resource_uri [gw8] [ 60%] PASSED tests/server/mcpserver/test_tool_manager.py::TestContextHandling::test_context_injection tests/server/mcpserver/test_tool_manager.py::TestContextHandling::test_context_injection_async [gw8] [ 60%] PASSED tests/server/mcpserver/test_tool_manager.py::TestContextHandling::test_context_injection_async tests/server/mcpserver/test_tool_manager.py::TestContextHandling::test_context_error_handling [gw34] [ 60%] PASSED tests/server/mcpserver/test_title.py::test_resource_title tests/server/mcpserver/test_title.py::test_get_display_name_utility [gw34] [ 60%] PASSED tests/server/mcpserver/test_title.py::test_get_display_name_utility tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_basic_function [gw34] [ 60%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_basic_function tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_init_with_tools [gw34] [ 60%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_init_with_tools tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_async_function [gw34] [ 60%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_async_function [gw35] [ 60%] PASSED tests/server/test_apps.py::test_add_resource_rejects_non_ui_resource_uri tests/server/test_apps.py::test_apps_tool_rejects_a_ui_meta_key [gw6] [ 60%] PASSED tests/server/mcpserver/test_server.py::test_read_resource_template_not_found tests/server/mcpserver/test_server.py::test_tool_returning_input_required_result_reaches_client_sealed [gw11] [ 60%] PASSED tests/server/test_apps.py::test_apps_tool_returns_rich_output_when_client_negotiated_apps tests/server/test_apps.py::test_client_supports_apps_from_lowlevel_request_context[html-mime-listed] [gw3] [ 60%] PASSED tests/server/mcpserver/test_resolve.py::test_by_name_resolver_param_uses_aliased_tool_arg tests/server/mcpserver/test_resolve.py::test_resolver_may_return_non_basemodel_value [gw35] [ 60%] PASSED tests/server/test_apps.py::test_apps_tool_rejects_a_ui_meta_key tests/server/test_apps.py::test_add_resource_defaults_the_mime_type_to_the_app_mime [gw10] [ 60%] PASSED tests/server/mcpserver/test_server.py::test_tool_argument_validation_failure_chains_directly_to_the_validation_error tests/server/mcpserver/test_server.py::test_validation_error_raised_inside_the_tool_body_is_a_crash [gw8] [ 60%] PASSED tests/server/mcpserver/test_tool_manager.py::TestContextHandling::test_context_error_handling tests/server/mcpserver/test_tool_manager.py::TestToolAnnotations::test_tool_annotations [gw5] [ 60%] PASSED tests/interaction/transports/test_flows.py::test_concurrent_clients_on_one_stateful_server_receive_only_their_own_notifications tests/interaction/transports/test_flows.py::test_a_fresh_connection_after_termination_obtains_a_new_session_and_operates [gw20] [ 60%] PASSED tests/server/mcpserver/test_func_metadata.py::test_complex_function_json_schema [gw35] [ 60%] PASSED tests/server/test_apps.py::test_add_resource_defaults_the_mime_type_to_the_app_mime [gw6] [ 60%] PASSED tests/server/mcpserver/test_server.py::test_tool_returning_input_required_result_reaches_client_sealed tests/server/mcpserver/test_func_metadata.py::test_str_vs_int [gw8] [ 60%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolAnnotations::test_tool_annotations [gw11] [ 60%] PASSED tests/server/test_apps.py::test_client_supports_apps_from_lowlevel_request_context[html-mime-listed] tests/server/test_apps.py::test_client_supports_apps_from_lowlevel_request_context[in-process-tuple-mime-types] tests/server/mcpserver/test_server.py::test_tool_reads_input_responses_and_request_state_from_context_on_retry tests/server/test_apps.py::test_add_resource_rejects_an_explicit_non_app_mime_type [gw35] [ 60%] PASSED tests/server/test_apps.py::test_add_resource_rejects_an_explicit_non_app_mime_type tests/server/test_caching.py::test_cache_hint_defaults_match_the_conservative_model_defaults [gw20] [ 60%] PASSED tests/server/mcpserver/test_func_metadata.py::test_str_vs_int [gw11] [ 60%] PASSED tests/server/test_apps.py::test_client_supports_apps_from_lowlevel_request_context[in-process-tuple-mime-types] tests/server/mcpserver/resources/test_resources.py::TestResourceValidation::test_resource_mime_type [gw35] [ 60%] PASSED tests/server/test_caching.py::test_cache_hint_defaults_match_the_conservative_model_defaults tests/server/test_apps.py::test_client_supports_apps_from_lowlevel_request_context[extension-not-declared] tests/server/test_caching.py::test_a_negative_ttl_is_rejected_at_hint_construction [gw3] [ 60%] PASSED tests/server/mcpserver/test_resolve.py::test_resolver_may_return_non_basemodel_value [gw35] [ 60%] PASSED tests/server/test_caching.py::test_a_negative_ttl_is_rejected_at_hint_construction [gw13] [ 60%] PASSED tests/server/mcpserver/resources/test_resources.py::TestResourceValidation::test_resource_mime_type tests/interaction/transports/test_streamable_http.py::test_cancelled_request_is_terminated_with_request_cancelled[json-response] tests/server/test_caching.py::test_an_unknown_scope_is_rejected_at_hint_construction [gw35] [ 60%] PASSED tests/server/test_caching.py::test_an_unknown_scope_is_rejected_at_hint_construction [gw32] [ 60%] PASSED tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_invalid_accept_headers tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_invalid_content_type tests/server/mcpserver/servers/test_file_server.py::test_delete_file_and_check_resources [gw11] [ 60%] PASSED tests/server/test_apps.py::test_client_supports_apps_from_lowlevel_request_context[extension-not-declared] tests/server/test_apps.py::test_client_supports_apps_from_lowlevel_request_context[html-mime-not-offered] tests/server/mcpserver/test_resolve.py::test_resolver_accepts_optional_context_annotation tests/server/test_caching.py::test_apply_cache_hint_fills_only_the_fields_the_handler_left_unset [gw35] [ 60%] PASSED tests/server/test_caching.py::test_apply_cache_hint_fills_only_the_fields_the_handler_left_unset [gw4] [ 60%] PASSED tests/server/mcpserver/test_integration.py::test_basic_tools [gw31] [ 60%] PASSED tests/examples/test_stories.py::test_story[sampling-server-http-asgi-legacy] tests/examples/test_stories.py::test_story[sampling-server_lowlevel-in-memory-legacy] tests/server/test_caching.py::test_a_non_string_cache_hints_key_is_rejected_with_the_unknown_key_error tests/server/test_caching.py::test_apply_cache_hint_never_overrides_explicit_fields_even_at_default_values tests/server/mcpserver/test_integration.py::test_basic_resources [gw43] [ 60%] PASSED tests/server/mcpserver/tools/test_base.py::test_non_mcperror_exception_raised_from_a_tool_is_wrapped_as_an_is_error_result tests/server/mcpserver/tools/test_base.py::test_tool_with_an_invalid_x_mcp_header_annotation_is_rejected_at_registration[array] [gw35] [ 60%] PASSED tests/server/test_caching.py::test_apply_cache_hint_never_overrides_explicit_fields_even_at_default_values [gw13] [ 60%] PASSED tests/server/test_caching.py::test_a_non_string_cache_hints_key_is_rejected_with_the_unknown_key_error [gw46] [ 60%] PASSED tests/interaction/transports/test_hosting_session.py::test_terminating_one_session_leaves_others_working tests/server/test_caching.py::test_a_dict_returning_handler_takes_the_configured_hint [gw11] [ 60%] PASSED tests/server/test_apps.py::test_client_supports_apps_from_lowlevel_request_context[html-mime-not-offered] tests/server/test_apps.py::test_client_supports_apps_from_lowlevel_request_context[mime-types-key-missing] [gw10] [ 60%] PASSED tests/server/mcpserver/test_server.py::test_validation_error_raised_inside_the_tool_body_is_a_crash tests/server/mcpserver/test_server.py::test_return_value_failing_the_output_schema_is_a_crash [gw3] [ 60%] PASSED tests/server/mcpserver/test_resolve.py::test_resolver_accepts_optional_context_annotation tests/server/mcpserver/test_resolve.py::test_bound_method_resolver_runs_once_across_references [gw30] [ 60%] PASSED tests/docs/test_translations.py::test_code_block_moved_out_of_a_retranslated_section_gets_repair_turns_like_any_other_finding tests/docs/test_translations.py::test_shortened_list_and_table_are_fed_back_for_repair_before_the_page_is_published tests/interaction/transports/test_hosting_session.py::test_second_initialize_on_an_existing_session_is_accepted [gw11] [ 60%] PASSED tests/server/test_apps.py::test_client_supports_apps_from_lowlevel_request_context[mime-types-key-missing] tests/server/test_apps.py::test_apps_tool_rejects_non_ui_resource_uri [gw43] [ 60%] PASSED tests/server/mcpserver/tools/test_base.py::test_tool_with_an_invalid_x_mcp_header_annotation_is_rejected_at_registration[array] tests/server/mcpserver/tools/test_base.py::test_tool_with_an_invalid_x_mcp_header_annotation_is_rejected_at_registration[number] [gw47] [ 60%] PASSED tests/interaction/transports/test_streamable_http.py::test_cancelled_request_is_terminated_with_request_cancelled[json-response] [gw4] [ 61%] PASSED tests/server/mcpserver/test_integration.py::test_basic_resources [gw11] [ 61%] PASSED tests/server/test_apps.py::test_apps_tool_rejects_non_ui_resource_uri tests/server/test_apps.py::test_add_html_resource_rejects_non_ui_resource_uri tests/server/test_completion_with_context.py::test_completion_handler_receives_context tests/server/test_caching.py::test_a_non_cacheable_method_in_cache_hints_is_rejected_at_server_construction [gw35] [ 61%] PASSED tests/server/test_caching.py::test_a_non_cacheable_method_in_cache_hints_is_rejected_at_server_construction [gw31] [ 61%] PASSED tests/examples/test_stories.py::test_story[sampling-server_lowlevel-in-memory-legacy] tests/examples/test_stories.py::test_story[sampling-server_lowlevel-http-asgi-legacy] tests/server/mcpserver/test_integration.py::test_basic_prompts [gw11] [ 61%] PASSED tests/server/test_apps.py::test_add_html_resource_rejects_non_ui_resource_uri tests/server/test_apps.py::test_apps_tool_stamps_visibility_when_given [gw17] [ 61%] PASSED tests/server/mcpserver/servers/test_file_server.py::test_delete_file_and_check_resources tests/server/test_connection.py::test_connection_notify_swallows_broken_stream_and_debug_logs [gw43] [ 61%] PASSED tests/server/mcpserver/tools/test_base.py::test_tool_with_an_invalid_x_mcp_header_annotation_is_rejected_at_registration[number] tests/server/mcpserver/tools/test_base.py::test_tool_with_an_invalid_x_mcp_header_annotation_is_rejected_at_registration[optional] [gw5] [ 61%] PASSED tests/interaction/transports/test_flows.py::test_a_fresh_connection_after_termination_obtains_a_new_session_and_operates tests/interaction/transports/test_flows.py::test_one_server_serves_streamable_http_and_sse_clients_concurrently [gw47] [ 61%] PASSED tests/server/test_completion_with_context.py::test_completion_handler_receives_context [gw46] [ 61%] PASSED tests/interaction/transports/test_hosting_session.py::test_second_initialize_on_an_existing_session_is_accepted [gw13] [ 61%] PASSED tests/server/test_caching.py::test_a_dict_returning_handler_takes_the_configured_hint tests/server/test_caching.py::test_a_dict_provided_ttl_wins_and_the_hint_fills_only_the_missing_scope [gw13] [ 61%] PASSED tests/server/test_caching.py::test_a_dict_provided_ttl_wins_and_the_hint_fills_only_the_missing_scope tests/server/test_caching.py::test_a_dict_returning_handler_leaks_no_hint_fields_to_a_2025_session tests/server/test_completion_with_context.py::test_completion_backward_compatibility tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.ogg-audio/ogg] [gw43] [ 61%] PASSED tests/server/mcpserver/tools/test_base.py::test_tool_with_an_invalid_x_mcp_header_annotation_is_rejected_at_registration[optional] tests/server/mcpserver/tools/test_base.py::test_tool_with_an_invalid_x_mcp_header_annotation_is_rejected_at_registration[non-token-name] [gw4] [ 61%] PASSED tests/server/mcpserver/test_integration.py::test_basic_prompts tests/server/mcpserver/test_integration.py::test_tool_progress [gw11] [ 61%] PASSED tests/server/test_apps.py::test_apps_tool_stamps_visibility_when_given [gw3] [ 61%] PASSED tests/server/mcpserver/test_resolve.py::test_bound_method_resolver_runs_once_across_references tests/server/mcpserver/test_resolve.py::test_bound_method_cycle_is_detected [gw47] [ 61%] PASSED tests/server/test_completion_with_context.py::test_completion_backward_compatibility tests/server/test_apps.py::test_apps_tool_merges_extra_meta_alongside_ui tests/server/test_completion_with_context.py::test_dependent_completion_scenario [gw43] [ 61%] PASSED tests/server/mcpserver/tools/test_base.py::test_tool_with_an_invalid_x_mcp_header_annotation_is_rejected_at_registration[non-token-name] [gw13] [ 61%] PASSED tests/server/test_caching.py::test_a_dict_returning_handler_leaks_no_hint_fields_to_a_2025_session tests/server/mcpserver/tools/test_base.py::test_tool_with_valid_x_mcp_header_annotations_is_registered tests/server/test_caching.py::test_an_input_required_shaped_dict_never_gets_cache_hints [gw3] [ 61%] PASSED tests/server/mcpserver/test_resolve.py::test_bound_method_cycle_is_detected tests/server/mcpserver/test_resolve.py::test_resolver_and_body_see_the_same_validated_default [gw11] [ 61%] PASSED tests/server/test_apps.py::test_apps_tool_merges_extra_meta_alongside_ui [gw31] [ 61%] PASSED tests/examples/test_stories.py::test_story[sampling-server_lowlevel-http-asgi-legacy] tests/server/test_apps.py::test_add_html_resource_stamps_csp_and_permissions_on_resource_meta [gw47] [ 61%] PASSED tests/server/test_completion_with_context.py::test_dependent_completion_scenario tests/server/test_completion_with_context.py::test_completion_error_on_missing_context [gw4] [ 61%] PASSED tests/server/mcpserver/test_integration.py::test_tool_progress tests/examples/test_stories.py::test_story[stickynotes-server-in-memory-modern] tests/server/mcpserver/test_integration.py::test_sampling [gw10] [ 61%] PASSED tests/server/mcpserver/test_server.py::test_return_value_failing_the_output_schema_is_a_crash [gw43] [ 61%] PASSED tests/server/mcpserver/tools/test_base.py::test_tool_with_valid_x_mcp_header_annotations_is_registered [gw13] [ 61%] PASSED tests/server/test_caching.py::test_an_input_required_shaped_dict_never_gets_cache_hints tests/server/test_caching.py::test_server_cache_hints_reach_the_wire_for_a_bare_handler_result tests/server/mcpserver/test_server.py::test_unknown_tool_is_logged_at_info_without_traceback tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_in_union_is_rejected tests/server/test_apps.py::test_apps_tool_stamps_ui_resource_uri_on_tool_meta [gw12] [ 61%] PASSED tests/server/mcpserver/test_func_metadata.py::test_tool_call_result_in_union_is_rejected [gw11] [ 61%] PASSED tests/server/test_apps.py::test_add_html_resource_stamps_csp_and_permissions_on_resource_meta [gw3] [ 61%] PASSED tests/server/mcpserver/test_resolve.py::test_resolver_and_body_see_the_same_validated_default tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_block] tests/server/mcpserver/test_resolve.py::test_resolver_key_is_stable_for_methods_and_distinct_callables tests/server/test_connection.py::test_connection_ping_sends_ping_on_standalone tests/server/mcpserver/test_func_metadata.py::test_union_with_input_required_result_derives_schema_from_residual_arm [gw4] [ 61%] PASSED tests/server/mcpserver/test_integration.py::test_sampling [gw17] [ 61%] PASSED tests/server/test_connection.py::test_connection_notify_swallows_broken_stream_and_debug_logs tests/server/test_connection.py::test_connection_notify_drops_when_no_standalone_channel [gw13] [ 61%] PASSED tests/server/test_caching.py::test_server_cache_hints_reach_the_wire_for_a_bare_handler_result [gw3] [ 61%] PASSED tests/server/mcpserver/test_resolve.py::test_resolver_key_is_stable_for_methods_and_distinct_callables [gw12] [ 61%] PASSED tests/server/test_connection.py::test_connection_ping_sends_ping_on_standalone tests/server/mcpserver/test_integration.py::test_elicitation [gw43] [ 61%] PASSED tests/server/test_apps.py::test_apps_tool_stamps_ui_resource_uri_on_tool_meta tests/server/test_caching.py::test_every_page_of_a_paginated_list_carries_the_configured_scope [gw2] [ 61%] PASSED tests/server/mcpserver/test_func_metadata.py::test_content_block_return_annotation_yields_no_output_schema[_returns_block] tests/server/test_extensions_capability.py::test_legacy_handshake_drops_the_extensions_map [gw18] [ 61%] PASSED tests/server/mcpserver/test_func_metadata.py::test_union_with_input_required_result_derives_schema_from_residual_arm tests/server/test_connection.py::test_connection_log_sends_logging_message_notification [gw12] [ 61%] PASSED tests/server/test_connection.py::test_connection_log_sends_logging_message_notification tests/server/test_connection.py::test_connection_log_sends_nothing_on_a_modern_connection [gw12] [ 61%] PASSED tests/server/test_connection.py::test_connection_log_sends_nothing_on_a_modern_connection tests/server/test_apps.py::test_add_html_resource_serves_ui_resource_at_app_mime_type tests/server/mcpserver/test_resolve.py::test_delete_empty_folder_does_not_elicit tests/server/test_connection.py::test_check_capability_per_field_branches[have3-want3-False] tests/server/test_connection.py::test_connection_log_with_meta_includes_meta_in_params [gw13] [ 61%] PASSED tests/server/test_caching.py::test_every_page_of_a_paginated_list_carries_the_configured_scope [gw2] [ 61%] PASSED tests/server/test_extensions_capability.py::test_legacy_handshake_drops_the_extensions_map tests/server/test_extensions_capability.py::test_server_accepts_capability_for_client_advertised_extension tests/server/test_caching.py::test_the_default_discover_handler_takes_the_server_discover_hint [gw12] [ 61%] PASSED tests/server/test_connection.py::test_connection_log_with_meta_includes_meta_in_params tests/server/test_connection.py::test_connection_list_changed_notifications_send_correct_methods [gw43] [ 61%] PASSED tests/server/test_apps.py::test_add_html_resource_serves_ui_resource_at_app_mime_type tests/server/test_apps.py::test_auto_mode_carries_apps_extension_under_server_capabilities [gw4] [ 61%] PASSED tests/server/mcpserver/test_integration.py::test_elicitation tests/server/mcpserver/test_integration.py::test_notifications [gw18] [ 61%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have3-want3-False] tests/server/test_connection.py::test_check_capability_per_field_branches[have4-want4-False] [gw12] [ 61%] PASSED tests/server/test_connection.py::test_connection_list_changed_notifications_send_correct_methods tests/server/test_connection.py::test_connection_send_tool_list_changed_with_meta_includes_meta_only_params [gw3] [ 61%] PASSED tests/server/mcpserver/test_resolve.py::test_delete_empty_folder_does_not_elicit [gw10] [ 61%] PASSED tests/server/mcpserver/test_server.py::test_unknown_tool_is_logged_at_info_without_traceback tests/server/mcpserver/test_server.py::test_tool_raising_mcp_error_is_not_logged_by_mcpserver [gw47] [ 61%] PASSED tests/server/test_completion_with_context.py::test_completion_error_on_missing_context [gw5] [ 61%] PASSED tests/interaction/transports/test_flows.py::test_one_server_serves_streamable_http_and_sse_clients_concurrently tests/interaction/transports/test_hosting_http.py::test_unsupported_http_methods_return_405 [gw18] [ 61%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have4-want4-False] tests/server/test_connection.py::test_check_capability_per_field_branches[have5-want5-True] [gw12] [ 61%] PASSED tests/server/test_connection.py::test_connection_send_tool_list_changed_with_meta_includes_meta_only_params tests/server/test_connection.py::test_connection_check_capability_false_when_no_capabilities_recorded [gw2] [ 61%] PASSED tests/server/test_extensions_capability.py::test_server_accepts_capability_for_client_advertised_extension tests/server/test_extensions_capability.py::test_server_rejects_capability_for_undeclared_extension tests/server/test_connection.py::test_from_envelope_is_born_ready_with_no_back_channel [gw38] [ 61%] PASSED tests/server/mcpserver/test_extension.py::test_default_interceptor_passes_through_alongside_an_overriding_one tests/server/mcpserver/test_extension.py::test_interceptors_run_in_registration_order_with_threaded_params tests/server/mcpserver/test_resolve.py::test_delete_non_empty_folder_handles_every_outcome[accept-content0-deleted /docs] [gw12] [ 61%] PASSED tests/server/test_connection.py::test_connection_check_capability_false_when_no_capabilities_recorded tests/server/test_connection.py::test_from_envelope_records_capabilities_without_client_info [gw43] [ 61%] PASSED tests/server/test_apps.py::test_auto_mode_carries_apps_extension_under_server_capabilities [gw13] [ 61%] PASSED tests/server/test_caching.py::test_the_default_discover_handler_takes_the_server_discover_hint tests/server/test_caching.py::test_mcpserver_cache_hints_cover_every_high_level_handler [gw12] [ 61%] PASSED tests/server/test_connection.py::test_from_envelope_records_capabilities_without_client_info tests/server/test_connection.py::test_client_params_assignment_keeps_capabilities_in_lockstep [gw12] [ 61%] PASSED tests/server/test_connection.py::test_client_params_assignment_keeps_capabilities_in_lockstep tests/server/test_connection.py::test_check_capability_per_field_branches[have0-want0-False] [gw12] [ 62%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have0-want0-False] tests/server/test_connection.py::test_check_capability_per_field_branches[have1-want1-False] [gw18] [ 62%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have5-want5-True] tests/server/test_connection.py::test_check_capability_per_field_branches[have6-want6-True] [gw18] [ 62%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have6-want6-True] tests/server/test_connection.py::test_check_capability_per_field_branches[have7-want7-False] [gw46] [ 62%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.ogg-audio/ogg] tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.flac-audio/flac] [gw17] [ 62%] PASSED tests/server/test_connection.py::test_connection_notify_drops_when_no_standalone_channel tests/server/test_connection.py::test_connection_send_raw_request_raises_nobackchannel_when_no_standalone_channel [gw17] [ 62%] PASSED tests/server/test_connection.py::test_connection_send_raw_request_raises_nobackchannel_when_no_standalone_channel tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_explicit_settings_not_overridden_sse [gw18] [ 62%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have7-want7-False] tests/server/test_connection.py::test_check_capability_per_field_branches[have8-want8-False] [gw18] [ 62%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have8-want8-False] [gw47] [ 62%] PASSED tests/server/test_connection.py::test_from_envelope_is_born_ready_with_no_back_channel tests/server/test_connection.py::test_from_envelope_records_client_params_when_both_info_and_caps_supplied [gw47] [ 62%] PASSED tests/server/test_connection.py::test_from_envelope_records_client_params_when_both_info_and_caps_supplied tests/server/test_connection.py::test_from_envelope_leaves_client_params_none_when_either_is_missing[None-caps0] [gw47] [ 62%] PASSED tests/server/test_connection.py::test_from_envelope_leaves_client_params_none_when_either_is_missing[None-caps0] tests/server/test_connection.py::test_from_envelope_leaves_client_params_none_when_either_is_missing[info1-None] [gw47] [ 62%] PASSED tests/server/test_connection.py::test_from_envelope_leaves_client_params_none_when_either_is_missing[info1-None] tests/server/test_connection.py::test_from_envelope_with_explicit_outbound_has_standalone_channel [gw47] [ 62%] PASSED tests/server/test_connection.py::test_from_envelope_with_explicit_outbound_has_standalone_channel tests/server/test_connection.py::test_for_loop_seeds_version_from_hint_or_latest_and_is_not_born_ready [gw47] [ 62%] PASSED tests/server/test_connection.py::test_for_loop_seeds_version_from_hint_or_latest_and_is_not_born_ready [gw3] [ 62%] PASSED tests/server/mcpserver/test_resolve.py::test_delete_non_empty_folder_handles_every_outcome[accept-content0-deleted /docs] tests/server/mcpserver/test_resolve.py::test_delete_non_empty_folder_handles_every_outcome[accept-content1-kept the folder] [gw5] [ 62%] PASSED tests/interaction/transports/test_hosting_http.py::test_unsupported_http_methods_return_405 tests/interaction/transports/test_hosting_http.py::test_missing_accept_media_types_return_406 [gw5] [ 62%] PASSED tests/interaction/transports/test_hosting_http.py::test_missing_accept_media_types_return_406 tests/interaction/transports/test_hosting_http.py::test_non_json_content_type_is_rejected [gw42] [ 62%] PASSED tests/server/mcpserver/test_server.py::TestDnsRebindingProtection::test_explicit_settings_not_overridden_sse tests/server/test_otel.py::test_server_ships_opentelemetry_middleware_by_default [gw38] [ 62%] PASSED tests/server/mcpserver/test_extension.py::test_interceptors_run_in_registration_order_with_threaded_params tests/server/mcpserver/test_extension.py::test_an_interceptor_context_rewrite_does_not_change_the_tool_invocation [gw39] [ 62%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[sse-2025-11-25] tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_basemodel_output [gw39] [ 62%] PASSED tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_basemodel_output tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_primitive_output [gw12] [ 62%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have1-want1-False] [gw31] [ 62%] PASSED tests/examples/test_stories.py::test_story[stickynotes-server-in-memory-modern] tests/examples/test_stories.py::test_story[stickynotes-server-in-memory-legacy] tests/server/test_connection.py::test_connection_send_raw_request_forwards_when_standalone_channel_present [gw17] [ 62%] PASSED tests/server/test_connection.py::test_connection_send_raw_request_forwards_when_standalone_channel_present tests/server/test_connection.py::test_connection_send_request_with_spec_type_infers_result_type [gw17] [ 62%] PASSED tests/server/test_connection.py::test_connection_send_request_with_spec_type_infers_result_type [gw13] [ 62%] PASSED tests/server/test_caching.py::test_mcpserver_cache_hints_cover_every_high_level_handler tests/server/test_cancel_handling.py::test_server_remains_functional_after_cancel tests/server/test_connection.py::test_check_capability_per_field_branches[have9-want9-False] [gw18] [ 62%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have9-want9-False] tests/server/test_connection.py::test_check_capability_per_field_branches[have10-want10-True] [gw18] [ 62%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have10-want10-True] tests/server/mcpserver/test_extension.py::test_short_circuiting_interceptor_replaces_tool_result [gw45] [ 62%] PASSED tests/server/mcpserver/test_extension.py::test_short_circuiting_interceptor_replaces_tool_result [gw42] [ 62%] PASSED tests/server/test_otel.py::test_server_ships_opentelemetry_middleware_by_default tests/server/test_otel.py::test_emits_server_span_with_method_and_target [gw39] [ 62%] PASSED tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_primitive_output tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_typeddict_output tests/server/test_connection.py::test_connection_send_request_validates_result_alias_only [gw10] [ 62%] PASSED tests/server/mcpserver/test_server.py::test_tool_raising_mcp_error_is_not_logged_by_mcpserver [gw30] [ 62%] PASSED tests/docs/test_translations.py::test_shortened_list_and_table_are_fed_back_for_repair_before_the_page_is_published tests/docs/test_translations.py::test_page_still_broken_after_two_repair_turns_fails_and_keeps_the_previous_translation tests/server/test_connection.py::test_for_loop_records_session_id_when_supplied [gw47] [ 62%] PASSED tests/server/test_connection.py::test_for_loop_records_session_id_when_supplied [gw3] [ 62%] PASSED tests/server/mcpserver/test_resolve.py::test_delete_non_empty_folder_handles_every_outcome[accept-content1-kept the folder] tests/server/mcpserver/test_resolve.py::test_delete_non_empty_folder_handles_every_outcome[decline-None-declined: folder not deleted] [gw4] [ 62%] PASSED tests/server/mcpserver/test_integration.py::test_notifications tests/server/mcpserver/test_integration.py::test_completion [gw4] [ 62%] PASSED tests/server/mcpserver/test_integration.py::test_completion tests/server/mcpserver/test_integration.py::test_mcpserver_quickstart [gw4] [ 62%] PASSED tests/server/mcpserver/test_integration.py::test_mcpserver_quickstart [gw2] [ 62%] PASSED tests/server/test_extensions_capability.py::test_server_rejects_capability_for_undeclared_extension tests/server/test_otel.py::test_records_error_status_on_mcp_error [gw17] [ 62%] PASSED tests/server/test_connection.py::test_connection_send_request_validates_result_alias_only tests/server/test_connection.py::test_connection_send_request_with_result_type_kwarg_validates_custom_type [gw5] [ 62%] PASSED tests/interaction/transports/test_hosting_http.py::test_non_json_content_type_is_rejected tests/interaction/transports/test_hosting_http.py::test_malformed_and_batched_bodies_return_400 [gw24] [ 62%] PASSED tests/client/test_stdio.py::test_a_graceful_exit_with_a_surviving_child_leaks_no_pipe_fds tests/client/test_streamable_http.py::test_configured_sse_limit_accepts_a_tool_result_larger_than_one_mebibyte tests/server/test_extensions_capability.py::test_server_rejects_capability_when_client_advertises_no_extensions [gw2] [ 62%] PASSED tests/server/test_extensions_capability.py::test_server_rejects_capability_when_client_advertises_no_extensions tests/server/test_fastmcp.py::test_importing_fastmcp_raises_module_not_found_that_points_at_the_migration_guide [gw2] [ 62%] PASSED tests/server/test_fastmcp.py::test_importing_fastmcp_raises_module_not_found_that_points_at_the_migration_guide tests/server/test_fastmcp.py::test_importing_a_fastmcp_submodule_raises_the_parent_pointer [gw2] [ 62%] PASSED tests/server/test_fastmcp.py::test_importing_a_fastmcp_submodule_raises_the_parent_pointer tests/server/test_fastmcp.py::test_v1_first_import_shim_falls_back_to_mcpserver [gw2] [ 62%] PASSED tests/server/test_fastmcp.py::test_v1_first_import_shim_falls_back_to_mcpserver tests/server/test_lifespan.py::test_lowlevel_server_lifespan [gw2] [ 62%] PASSED tests/server/test_lifespan.py::test_lowlevel_server_lifespan tests/server/test_lifespan.py::test_mcpserver_server_lifespan [gw2] [ 62%] PASSED tests/server/test_lifespan.py::test_mcpserver_server_lifespan tests/server/test_lowlevel_exception_handling.py::test_server_run_exits_cleanly_when_transport_yields_exception_then_closes [gw13] [ 62%] PASSED tests/server/test_cancel_handling.py::test_server_remains_functional_after_cancel tests/server/test_cancel_handling.py::test_server_cancels_in_flight_handlers_on_transport_close [gw0] [ 62%] PASSED tests/interaction/mcpserver/test_tools.py::test_registering_a_tool_with_a_spec_invalid_name_warns_but_does_not_reject[streamable-http-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_decorated_tool_raising_url_elicitation_required_surfaces_as_error_32042[in-memory-2025-11-25] tests/server/test_connection.py::test_connection_check_capability_true_when_client_declares_it [gw18] [ 62%] PASSED tests/server/test_connection.py::test_connection_check_capability_true_when_client_declares_it tests/server/test_extensions_capability.py::test_get_capabilities_omits_extensions_when_none_registered [gw18] [ 62%] PASSED tests/server/test_extensions_capability.py::test_get_capabilities_omits_extensions_when_none_registered tests/server/test_extensions_capability.py::test_get_capabilities_advertises_populated_self_extensions [gw38] [ 62%] PASSED tests/server/mcpserver/test_extension.py::test_an_interceptor_context_rewrite_does_not_change_the_tool_invocation tests/server/mcpserver/test_extension.py::test_short_circuited_interceptor_result_carries_the_server_info_stamp [gw38] [ 62%] PASSED tests/server/mcpserver/test_extension.py::test_short_circuited_interceptor_result_carries_the_server_info_stamp tests/server/mcpserver/test_extension.py::test_extension_subclass_without_prefixed_identifier_is_rejected_at_definition [gw5] [ 62%] PASSED tests/interaction/transports/test_hosting_http.py::test_malformed_and_batched_bodies_return_400 tests/interaction/transports/test_hosting_http.py::test_protocol_version_header_is_validated [gw31] [ 62%] PASSED tests/examples/test_stories.py::test_story[stickynotes-server-in-memory-legacy] tests/examples/test_stories.py::test_story[stickynotes-server-http-asgi-modern] tests/server/mcpserver/test_server.py::test_resolver_raising_tool_error_is_anticipated [gw10] [ 62%] PASSED tests/server/mcpserver/test_server.py::test_resolver_raising_tool_error_is_anticipated tests/server/mcpserver/test_server.py::test_resolver_crash_is_logged_as_the_tools_crash [gw3] [ 62%] PASSED tests/server/mcpserver/test_resolve.py::test_delete_non_empty_folder_handles_every_outcome[decline-None-declined: folder not deleted] tests/server/mcpserver/test_resolve.py::test_delete_non_empty_folder_handles_every_outcome[cancel-None-cancelled: folder not deleted] [gw2] [ 62%] PASSED tests/server/test_lowlevel_exception_handling.py::test_server_run_exits_cleanly_when_transport_yields_exception_then_closes [gw13] [ 63%] PASSED tests/server/test_cancel_handling.py::test_server_cancels_in_flight_handlers_on_transport_close [gw42] [ 63%] PASSED tests/server/test_otel.py::test_emits_server_span_with_method_and_target tests/server/test_otel.py::test_tool_error_dict_result_sets_error_type [gw38] [ 63%] PASSED tests/server/mcpserver/test_extension.py::test_extension_subclass_without_prefixed_identifier_is_rejected_at_definition tests/server/mcpserver/test_extension.py::test_extension_without_identifier_is_rejected_at_registration [gw17] [ 63%] PASSED tests/server/test_connection.py::test_connection_send_request_with_result_type_kwarg_validates_custom_type tests/server/test_connection.py::test_connection_send_request_nonconforming_result_raises_validation_error [gw17] [ 63%] PASSED tests/server/test_connection.py::test_connection_send_request_nonconforming_result_raises_validation_error tests/server/test_connection.py::test_send_request_validates_the_client_result_against_the_surface_schema [gw17] [ 63%] PASSED tests/server/test_connection.py::test_send_request_validates_the_client_result_against_the_surface_schema tests/server/test_connection.py::test_send_request_passes_a_spec_valid_client_result [gw18] [ 63%] PASSED tests/server/test_extensions_capability.py::test_get_capabilities_advertises_populated_self_extensions [gw40] [ 63%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_elicit_complete_notification tests/server/mcpserver/test_url_elicitation.py::test_url_elicitation_required_error_code [gw40] [ 63%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_url_elicitation_required_error_code tests/server/mcpserver/test_url_elicitation.py::test_elicit_url_typed_results [gw38] [ 63%] PASSED tests/server/mcpserver/test_extension.py::test_extension_without_identifier_is_rejected_at_registration tests/server/mcpserver/test_extension.py::test_version_pinned_method_is_served_at_an_allowed_version [gw46] [ 63%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.flac-audio/flac] [gw5] [ 63%] PASSED tests/interaction/transports/test_hosting_http.py::test_protocol_version_header_is_validated tests/server/mcpserver/test_resolve.py::test_input_required_loop_handles_every_outcome[accept-content1-kept the folder] [gw39] [ 63%] PASSED tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_typeddict_output [gw17] [ 63%] PASSED tests/server/test_connection.py::test_send_request_passes_a_spec_valid_client_result tests/server/test_connection.py::test_send_request_skips_the_surface_gate_when_method_absent_at_version [gw0] [ 63%] PASSED tests/interaction/mcpserver/test_tools.py::test_decorated_tool_raising_url_elicitation_required_surfaces_as_error_32042[in-memory-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_decorated_tool_raising_url_elicitation_required_surfaces_as_error_32042[sse-2025-11-25] [gw38] [ 63%] PASSED tests/server/mcpserver/test_extension.py::test_version_pinned_method_is_served_at_an_allowed_version tests/server/mcpserver/test_extension.py::test_version_pinned_method_is_method_not_found_at_a_disallowed_version tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.aac-audio/aac] tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_dataclass_output [gw39] [ 63%] PASSED tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_dataclass_output tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_list_output [gw39] [ 63%] PASSED tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_list_output tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_without_structured_output [gw39] [ 63%] PASSED tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_without_structured_output tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_output_schema_property [gw10] [ 63%] PASSED tests/server/mcpserver/test_server.py::test_resolver_crash_is_logged_as_the_tools_crash tests/server/mcpserver/test_server.py::test_argument_validator_that_crashes_is_the_tools_crash [gw42] [ 63%] PASSED tests/server/test_otel.py::test_tool_error_dict_result_sets_error_type [gw3] [ 63%] PASSED tests/server/mcpserver/test_resolve.py::test_delete_non_empty_folder_handles_every_outcome[cancel-None-cancelled: folder not deleted] tests/server/mcpserver/test_resolve.py::test_input_required_first_round_returns_the_question [gw17] [ 63%] PASSED tests/server/test_connection.py::test_send_request_skips_the_surface_gate_when_method_absent_at_version [gw45] [ 63%] PASSED tests/server/test_otel.py::test_records_error_status_on_mcp_error tests/server/test_otel.py::test_validation_failure_sets_sanitized_status tests/server/test_otel.py::test_tool_error_model_result_sets_error_type [gw38] [ 63%] PASSED tests/server/mcpserver/test_extension.py::test_version_pinned_method_is_method_not_found_at_a_disallowed_version tests/server/mcpserver/test_extension.py::test_method_binding_rejects_spec_methods[tools/list] [gw39] [ 63%] PASSED tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_output_schema_property tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_dict_str_any_output [gw38] [ 63%] PASSED tests/server/mcpserver/test_extension.py::test_method_binding_rejects_spec_methods[tools/list] tests/server/mcpserver/test_extension.py::test_method_binding_rejects_spec_methods[completion/complete] [gw38] [ 63%] PASSED tests/server/mcpserver/test_extension.py::test_method_binding_rejects_spec_methods[completion/complete] tests/server/mcpserver/test_extension.py::test_method_binding_rejects_empty_protocol_versions [gw40] [ 63%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_elicit_url_typed_results tests/server/mcpserver/test_url_elicitation.py::test_deprecated_elicit_method [gw39] [ 63%] PASSED tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_dict_str_any_output [gw3] [ 63%] PASSED tests/server/mcpserver/test_resolve.py::test_input_required_first_round_returns_the_question tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_dict_str_typed_output [gw38] [ 63%] PASSED tests/server/mcpserver/test_extension.py::test_method_binding_rejects_empty_protocol_versions [gw5] [ 63%] PASSED tests/server/mcpserver/test_resolve.py::test_input_required_loop_handles_every_outcome[accept-content1-kept the folder] tests/server/mcpserver/test_resolve.py::test_input_required_loop_handles_every_outcome[decline-None-declined: folder not deleted] [gw42] [ 63%] PASSED tests/server/test_otel.py::test_tool_error_model_result_sets_error_type tests/server/test_otel.py::test_snake_case_dict_result_is_not_a_tool_error [gw39] [ 63%] PASSED tests/server/mcpserver/test_tool_manager.py::TestStructuredOutput::test_tool_with_dict_str_typed_output tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_add_tool_with_metadata [gw0] [ 63%] PASSED tests/interaction/mcpserver/test_tools.py::test_decorated_tool_raising_url_elicitation_required_surfaces_as_error_32042[sse-2025-11-25] [gw45] [ 63%] PASSED tests/server/test_otel.py::test_validation_failure_sets_sanitized_status tests/server/test_otel.py::test_records_error_status_on_handler_exception tests/server/mcpserver/test_resolve.py::test_state_entry_without_a_question_digest_is_dropped_and_reasked [gw46] [ 63%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.aac-audio/aac] tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.m4a-audio/mp4] [gw39] [ 63%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_add_tool_with_metadata tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_add_tool_without_metadata tests/server/mcpserver/test_server.py::TestServer::test_create_server tests/interaction/mcpserver/test_tools.py::test_decorated_tool_raising_url_elicitation_required_surfaces_as_error_32042[streamable-http-2025-11-25] [gw39] [ 63%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_add_tool_without_metadata [gw31] [ 63%] PASSED tests/examples/test_stories.py::test_story[stickynotes-server-http-asgi-modern] [gw36] [ 63%] PASSED tests/server/mcpserver/test_server.py::TestServer::test_create_server tests/server/test_request_state.py::test_a_structurally_malformed_token_is_rejected[below-floor] tests/server/mcpserver/test_resolve.py::test_eliciting_resolver_without_elicit_arm_restores_a_typed_model tests/examples/test_stories.py::test_story[stickynotes-server-http-asgi-legacy] [gw40] [ 63%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_deprecated_elicit_method tests/server/mcpserver/test_url_elicitation.py::test_ctx_elicit_url_convenience_method [gw10] [ 63%] PASSED tests/server/mcpserver/test_server.py::test_argument_validator_that_crashes_is_the_tools_crash [gw36] [ 63%] PASSED tests/server/test_request_state.py::test_a_structurally_malformed_token_is_rejected[below-floor] [gw42] [ 63%] PASSED tests/server/test_otel.py::test_snake_case_dict_result_is_not_a_tool_error tests/server/test_request_state.py::test_a_token_minted_under_a_key_outside_the_ring_is_rejected_as_unknown_key [gw5] [ 63%] PASSED tests/server/mcpserver/test_resolve.py::test_input_required_loop_handles_every_outcome[decline-None-declined: folder not deleted] tests/server/test_otel.py::test_named_non_tool_prompt_method_omits_gen_ai_attrs tests/server/mcpserver/test_resolve.py::test_input_required_loop_handles_every_outcome[cancel-None-cancelled: folder not deleted] tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_default_response_types [gw36] [ 63%] PASSED tests/server/test_request_state.py::test_a_token_minted_under_a_key_outside_the_ring_is_rejected_as_unknown_key tests/server/test_request_state.py::test_a_token_minted_under_the_old_key_unseals_under_any_ring_containing_it[rotation-phase-1] [gw40] [ 63%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_ctx_elicit_url_convenience_method tests/server/mcpserver/test_url_elicitation_error_throw.py::test_url_elicitation_error_thrown_from_tool [gw44] [ 63%] PASSED tests/server/mcpserver/test_resolve.py::test_eliciting_resolver_without_elicit_arm_restores_a_typed_model tests/server/mcpserver/test_resolve.py::test_tool_choice_only_sample_validates_as_tools_mode[auto] [gw27] [ 63%] PASSED tests/server/mcpserver/test_resolve.py::test_state_entry_without_a_question_digest_is_dropped_and_reasked tests/server/test_request_state.py::test_seal_unseal_round_trips_any_payload[64KiB] [gw27] [ 63%] PASSED tests/server/test_request_state.py::test_seal_unseal_round_trips_any_payload[64KiB] tests/server/test_request_state.py::test_a_sealed_token_is_v1_plus_unpadded_b64url_over_kid_nonce_and_ciphertext [gw27] [ 63%] PASSED tests/server/test_request_state.py::test_a_sealed_token_is_v1_plus_unpadded_b64url_over_kid_nonce_and_ciphertext tests/server/test_request_state.py::test_two_seals_of_the_same_payload_produce_distinct_tokens_that_both_unseal [gw27] [ 63%] PASSED tests/server/test_request_state.py::test_two_seals_of_the_same_payload_produce_distinct_tokens_that_both_unseal tests/server/test_request_state.py::test_a_token_corrupted_in_any_region_is_rejected_without_echoing_the_payload[prefix-char] tests/server/test_request_state.py::test_a_str_key_is_equivalent_to_its_utf8_bytes_form [gw44] [ 63%] PASSED tests/server/test_request_state.py::test_a_str_key_is_equivalent_to_its_utf8_bytes_form tests/server/test_request_state.py::test_bytearray_key_material_is_copied_at_construction [gw44] [ 63%] PASSED tests/server/test_request_state.py::test_bytearray_key_material_is_copied_at_construction tests/server/test_request_state.py::test_the_token_reveals_the_payload_neither_in_its_text_nor_its_decoded_bytes tests/server/mcpserver/test_server.py::TestServerResources::test_function_resource tests/server/mcpserver/test_server.py::TestContextInjection::test_context_detection [gw33] [ 63%] PASSED tests/server/mcpserver/test_server.py::TestContextInjection::test_context_detection [gw42] [ 63%] PASSED tests/server/test_otel.py::test_named_non_tool_prompt_method_omits_gen_ai_attrs tests/server/test_otel.py::test_prompt_get_sets_prompt_name tests/server/mcpserver/test_resolve.py::test_callable_object_resolver_error_uses_type_name [gw7] [ 63%] PASSED tests/server/mcpserver/test_resolve.py::test_callable_object_resolver_error_uses_type_name [gw40] [ 64%] PASSED tests/server/mcpserver/test_url_elicitation_error_throw.py::test_url_elicitation_error_thrown_from_tool tests/server/mcpserver/test_url_elicitation_error_throw.py::test_url_elicitation_error_from_error tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[InputRequiredResult] [gw19] [ 64%] PASSED tests/server/mcpserver/test_resolve.py::test_tool_combining_resolvers_with_input_required_return_is_rejected[InputRequiredResult] [gw41] [ 64%] PASSED tests/server/mcpserver/auth/test_auth_integration.py::TestAuthEndpoints::test_client_registration_default_response_types tests/server/test_request_state.py::test_a_non_positive_or_non_finite_ttl_is_rejected_at_policy_construction[zero] [gw41] [ 64%] PASSED tests/server/test_request_state.py::test_a_non_positive_or_non_finite_ttl_is_rejected_at_policy_construction[zero] tests/server/test_request_state.py::test_a_non_positive_or_non_finite_ttl_is_rejected_at_policy_construction[negative] [gw41] [ 64%] PASSED tests/server/test_request_state.py::test_a_non_positive_or_non_finite_ttl_is_rejected_at_policy_construction[negative] tests/server/test_request_state.py::test_a_non_positive_or_non_finite_ttl_is_rejected_at_policy_construction[nan] [gw0] [ 64%] PASSED tests/interaction/mcpserver/test_tools.py::test_decorated_tool_raising_url_elicitation_required_surfaces_as_error_32042[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_decorated_tool_raising_url_elicitation_required_surfaces_as_error_32042[streamable-http-stateless-2025-11-25] [gw44] [ 64%] PASSED tests/server/test_request_state.py::test_the_token_reveals_the_payload_neither_in_its_text_nor_its_decoded_bytes tests/server/test_request_state.py::test_every_substitution_of_the_final_token_character_is_rejected [gw44] [ 64%] PASSED tests/server/test_request_state.py::test_every_substitution_of_the_final_token_character_is_rejected tests/server/test_request_state.py::test_a_non_canonical_token_body_is_rejected[junk-chars-injected] tests/server/test_request_state_boundary.py::test_claims_envelope_carries_the_documented_fields_and_omits_p_when_unbound [gw27] [ 64%] PASSED tests/server/test_request_state.py::test_a_token_corrupted_in_any_region_is_rejected_without_echoing_the_payload[prefix-char] tests/server/test_request_state.py::test_a_token_corrupted_in_any_region_is_rejected_without_echoing_the_payload[kid-byte] [gw27] [ 64%] PASSED tests/server/test_request_state.py::test_a_token_corrupted_in_any_region_is_rejected_without_echoing_the_payload[kid-byte] tests/server/test_request_state.py::test_a_token_corrupted_in_any_region_is_rejected_without_echoing_the_payload[nonce-byte] [gw27] [ 64%] PASSED tests/server/test_request_state.py::test_a_token_corrupted_in_any_region_is_rejected_without_echoing_the_payload[nonce-byte] tests/server/test_request_state.py::test_a_token_corrupted_in_any_region_is_rejected_without_echoing_the_payload[ciphertext-byte] [gw42] [ 64%] PASSED tests/server/test_otel.py::test_prompt_get_sets_prompt_name tests/server/test_otel.py::test_notification_span_omits_request_id [gw37] [ 64%] PASSED tests/server/mcpserver/test_server.py::TestServerResources::test_function_resource tests/server/test_request_state_boundary.py::test_a_codec_that_raises_unexpectedly_fails_closed_with_the_frozen_error [gw25] [ 64%] PASSED tests/server/mcpserver/test_resolve.py::test_tool_choice_only_sample_validates_as_tools_mode[auto] tests/server/test_request_state.py::test_authenticated_principal_is_the_tokens_client_issuer_subject_identity[client-only] [gw25] [ 64%] PASSED tests/server/test_request_state.py::test_authenticated_principal_is_the_tokens_client_issuer_subject_identity[client-only] tests/server/test_request_state.py::test_authenticated_principal_is_the_tokens_client_issuer_subject_identity[with-subject] tests/server/test_request_state_boundary.py::test_round_one_state_replayed_on_a_different_tool_is_rejected [gw5] [ 64%] PASSED tests/server/mcpserver/test_resolve.py::test_input_required_loop_handles_every_outcome[cancel-None-cancelled: folder not deleted] tests/server/mcpserver/test_resolve.py::test_input_required_empty_folder_completes_without_eliciting [gw5] [ 64%] PASSED tests/server/mcpserver/test_resolve.py::test_input_required_empty_folder_completes_without_eliciting tests/server/mcpserver/test_resolve.py::test_input_required_asks_each_question_once_while_bodies_rerun [gw27] [ 64%] PASSED tests/server/test_request_state.py::test_a_token_corrupted_in_any_region_is_rejected_without_echoing_the_payload[ciphertext-byte] tests/server/test_request_state.py::test_a_token_corrupted_in_any_region_is_rejected_without_echoing_the_payload[tag-byte] [gw27] [ 64%] PASSED tests/server/test_request_state.py::test_a_token_corrupted_in_any_region_is_rejected_without_echoing_the_payload[tag-byte] tests/server/test_request_state.py::test_a_structurally_malformed_token_is_rejected[empty-string] [gw40] [ 64%] PASSED tests/server/mcpserver/test_url_elicitation_error_throw.py::test_url_elicitation_error_from_error [gw24] [ 64%] PASSED tests/client/test_streamable_http.py::test_configured_sse_limit_accepts_a_tool_result_larger_than_one_mebibyte tests/client/test_streamable_http.py::test_default_sse_limit_fails_one_large_tool_call_and_keeps_the_session_usable [gw7] [ 64%] PASSED tests/server/test_request_state_boundary.py::test_claims_envelope_carries_the_documented_fields_and_omits_p_when_unbound tests/server/test_request_state_boundary.py::test_each_round_is_resealed_with_a_fresh_token_and_a_restamped_iat [gw44] [ 64%] PASSED tests/server/test_request_state.py::test_a_non_canonical_token_body_is_rejected[junk-chars-injected] tests/server/test_request_state.py::test_a_non_canonical_token_body_is_rejected[newline-appended] [gw44] [ 64%] PASSED tests/server/test_request_state.py::test_a_non_canonical_token_body_is_rejected[newline-appended] tests/server/test_request_state.py::test_a_non_canonical_token_body_is_rejected[padding-appended] [gw44] [ 64%] PASSED tests/server/test_request_state.py::test_a_non_canonical_token_body_is_rejected[padding-appended] tests/server/test_request_state.py::test_a_token_reprefixed_to_a_future_format_version_is_rejected tests/server/test_request_state_boundary.py::test_input_required_without_request_state_is_untouched [gw19] [ 64%] PASSED tests/server/test_request_state_boundary.py::test_input_required_without_request_state_is_untouched tests/server/test_request_state_boundary.py::test_an_input_required_mapping_with_a_non_string_state_is_not_sealed [gw27] [ 64%] PASSED tests/server/test_request_state.py::test_a_structurally_malformed_token_is_rejected[empty-string] tests/server/test_request_state.py::test_a_structurally_malformed_token_is_rejected[missing-prefix] [gw27] [ 64%] PASSED tests/server/test_request_state.py::test_a_structurally_malformed_token_is_rejected[missing-prefix] [gw25] [ 64%] PASSED tests/server/test_request_state.py::test_authenticated_principal_is_the_tokens_client_issuer_subject_identity[with-subject] tests/server/test_request_state.py::test_authenticated_principal_is_the_tokens_client_issuer_subject_identity[with-issuer-and-subject] [gw25] [ 64%] PASSED tests/server/test_request_state.py::test_authenticated_principal_is_the_tokens_client_issuer_subject_identity[with-issuer-and-subject] tests/server/test_request_state.py::test_authenticated_principal_distinguishes_two_subjects_of_one_client [gw25] [ 64%] PASSED tests/server/test_request_state.py::test_authenticated_principal_distinguishes_two_subjects_of_one_client tests/server/test_request_state.py::test_authenticated_principal_uses_the_same_components_as_session_ownership [gw25] [ 64%] PASSED tests/server/test_request_state.py::test_authenticated_principal_uses_the_same_components_as_session_ownership [gw44] [ 64%] PASSED tests/server/test_request_state.py::test_a_token_reprefixed_to_a_future_format_version_is_rejected tests/server/test_request_state.py::test_a_kid_transplanted_onto_another_tokens_body_is_rejected [gw44] [ 64%] PASSED tests/server/test_request_state.py::test_a_kid_transplanted_onto_another_tokens_body_is_rejected tests/server/test_request_state.py::test_keys_and_codec_together_are_rejected_at_policy_construction [gw46] [ 64%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.m4a-audio/mp4] tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.unknown-application/octet-stream] [gw45] [ 64%] PASSED tests/server/test_otel.py::test_records_error_status_on_handler_exception tests/server/test_otel.py::test_records_error_status_on_malformed_spec_result tests/server/test_request_state_boundary.py::test_request_state_is_sealed_on_the_wire_and_restored_for_the_handler [gw19] [ 64%] PASSED tests/server/test_request_state_boundary.py::test_an_input_required_mapping_with_a_non_string_state_is_not_sealed tests/server/test_request_state_boundary.py::test_a_notification_crosses_the_boundary_unharmed [gw19] [ 64%] PASSED tests/server/test_request_state_boundary.py::test_a_notification_crosses_the_boundary_unharmed tests/server/test_request_state_boundary.py::test_a_non_mrtr_method_with_no_params_is_untouched [gw19] [ 64%] PASSED tests/server/test_request_state_boundary.py::test_a_non_mrtr_method_with_no_params_is_untouched [gw36] [ 64%] PASSED tests/server/test_request_state.py::test_a_token_minted_under_the_old_key_unseals_under_any_ring_containing_it[rotation-phase-1] [gw7] [ 64%] PASSED tests/server/test_request_state_boundary.py::test_each_round_is_resealed_with_a_fresh_token_and_a_restamped_iat tests/server/test_request_state_boundary.py::test_an_mcpserver_seals_request_state_by_default [gw44] [ 64%] PASSED tests/server/test_request_state.py::test_keys_and_codec_together_are_rejected_at_policy_construction tests/server/test_request_state_boundary.py::test_a_short_circuited_input_required_model_is_sealed_via_the_model_path tests/server/test_request_state.py::test_a_token_minted_under_the_old_key_unseals_under_any_ring_containing_it[rotation-phase-2] [gw36] [ 64%] PASSED tests/server/test_request_state.py::test_a_token_minted_under_the_old_key_unseals_under_any_ring_containing_it[rotation-phase-2] tests/server/test_request_state.py::test_the_first_ring_key_mints_and_later_ring_keys_only_verify [gw36] [ 64%] PASSED tests/server/test_request_state.py::test_the_first_ring_key_mints_and_later_ring_keys_only_verify tests/server/test_request_state.py::test_a_token_minted_under_a_retired_key_is_rejected [gw36] [ 64%] PASSED tests/server/test_request_state.py::test_a_token_minted_under_a_retired_key_is_rejected tests/server/test_request_state.py::test_an_empty_key_ring_is_rejected_at_construction [gw36] [ 64%] PASSED tests/server/test_request_state.py::test_an_empty_key_ring_is_rejected_at_construction tests/server/test_request_state.py::test_a_key_shorter_than_32_bytes_is_rejected_with_generation_guidance [gw36] [ 64%] PASSED tests/server/test_request_state.py::test_a_key_shorter_than_32_bytes_is_rejected_with_generation_guidance tests/server/test_request_state.py::test_a_duplicate_key_in_the_ring_is_rejected_at_construction [gw36] [ 64%] PASSED tests/server/test_request_state.py::test_a_duplicate_key_in_the_ring_is_rejected_at_construction tests/server/test_request_state.py::test_a_non_key_typed_ring_entry_is_rejected_naming_its_index_and_type [gw36] [ 64%] PASSED tests/server/test_request_state.py::test_a_non_key_typed_ring_entry_is_rejected_naming_its_index_and_type [gw0] [ 64%] PASSED tests/interaction/mcpserver/test_tools.py::test_decorated_tool_raising_url_elicitation_required_surfaces_as_error_32042[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[in-memory-2025-11-25] [gw5] [ 64%] PASSED tests/server/mcpserver/test_resolve.py::test_input_required_asks_each_question_once_while_bodies_rerun tests/server/mcpserver/test_resolve.py::test_input_required_batches_independent_elicits_in_one_round [gw19] [ 64%] PASSED tests/server/test_request_state_boundary.py::test_a_short_circuited_input_required_model_is_sealed_via_the_model_path tests/server/test_request_state_boundary.py::test_a_codec_that_raises_during_seal_yields_a_sanitized_internal_error [gw41] [ 64%] PASSED tests/server/test_request_state.py::test_a_non_positive_or_non_finite_ttl_is_rejected_at_policy_construction[nan] tests/server/test_request_state.py::test_a_non_positive_or_non_finite_ttl_is_rejected_at_policy_construction[inf] [gw41] [ 64%] PASSED tests/server/test_request_state.py::test_a_non_positive_or_non_finite_ttl_is_rejected_at_policy_construction[inf] tests/server/test_request_state.py::test_keys_produce_a_working_built_in_codec_on_the_policy [gw41] [ 64%] PASSED tests/server/test_request_state.py::test_keys_produce_a_working_built_in_codec_on_the_policy tests/server/test_request_state.py::test_a_custom_codec_is_stored_on_the_policy_as_is [gw41] [ 64%] PASSED tests/server/test_request_state.py::test_a_custom_codec_is_stored_on_the_policy_as_is tests/server/test_request_state.py::test_ephemeral_policies_are_protected_and_mutually_unintelligible [gw41] [ 64%] PASSED tests/server/test_request_state.py::test_ephemeral_policies_are_protected_and_mutually_unintelligible tests/server/test_request_state.py::test_the_policy_stores_an_explicit_audience_and_defaults_to_none [gw41] [ 64%] PASSED tests/server/test_request_state.py::test_the_policy_stores_an_explicit_audience_and_defaults_to_none tests/server/test_request_state.py::test_the_default_principal_binding_is_authenticated_principal [gw41] [ 64%] PASSED tests/server/test_request_state.py::test_the_default_principal_binding_is_authenticated_principal tests/server/test_request_state.py::test_an_explicit_principal_binding_callable_is_stored [gw25] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_request_state_is_sealed_on_the_wire_and_restored_for_the_handler tests/server/test_request_state_boundary.py::test_lowlevel_server_gets_identical_sealing_from_the_one_line_middleware_append [gw46] [ 65%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.unknown-application/octet-stream] tests/server/mcpserver/test_server.py::TestServerTools::test_tool_mixed_content [gw41] [ 65%] PASSED tests/server/test_request_state.py::test_an_explicit_principal_binding_callable_is_stored [gw25] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_lowlevel_server_gets_identical_sealing_from_the_one_line_middleware_append tests/server/test_request_state_boundary.py::test_a_resource_template_flow_seals_on_resources_read_and_restores_the_plaintext [gw5] [ 65%] PASSED tests/server/mcpserver/test_resolve.py::test_input_required_batches_independent_elicits_in_one_round tests/server/mcpserver/test_resolve.py::test_auto_driver_answers_independent_questions_in_a_single_round [gw46] [ 65%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_mixed_content [gw7] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_an_mcpserver_seals_request_state_by_default tests/server/mcpserver/test_server.py::TestServerTools::test_tool_mixed_list_with_audio_and_image tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.mp3-audio/mpeg] tests/server/test_request_state_boundary.py::test_the_default_key_is_per_instance_so_servers_never_cross_accept tests/server/mcpserver/test_server.py::TestServerPrompts::test_prompt_decorator [gw25] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_a_resource_template_flow_seals_on_resources_read_and_restores_the_plaintext [gw0] [ 65%] PASSED tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[in-memory-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[sse-2025-11-25] tests/server/mcpserver/test_server.py::test_resource_optional_query_params_use_function_defaults tests/server/test_request_state_boundary.py::test_tampered_request_state_is_rejected_with_the_frozen_wire_error [gw33] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_round_one_state_replayed_on_a_different_tool_is_rejected tests/server/test_request_state_boundary.py::test_retry_with_different_arguments_is_rejected_and_the_original_arguments_complete [gw28] [ 65%] PASSED tests/server/mcpserver/test_server.py::TestServerPrompts::test_prompt_decorator [gw5] [ 65%] PASSED tests/server/mcpserver/test_resolve.py::test_auto_driver_answers_independent_questions_in_a_single_round tests/server/mcpserver/test_resolve.py::test_uses_input_required_version_gate tests/server/test_runner.py::test_runner_routes_to_handler_and_builds_context tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[streamable-http-stateless-2025-11-25] [gw5] [ 65%] PASSED tests/server/mcpserver/test_resolve.py::test_uses_input_required_version_gate tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[None] [gw5] [ 65%] PASSED tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[None] [gw19] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_a_codec_that_raises_during_seal_yields_a_sanitized_internal_error [gw45] [ 65%] PASSED tests/server/test_otel.py::test_records_error_status_on_malformed_spec_result tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[] tests/server/test_request_state_boundary.py::test_a_non_string_principal_fails_closed_when_sealing tests/server/test_otel.py::test_passes_rewritten_context_through [gw28] [ 65%] PASSED tests/server/test_runner.py::test_runner_routes_to_handler_and_builds_context tests/server/test_runner.py::test_runner_builds_a_fresh_session_per_request [gw5] [ 65%] PASSED tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[] [gw23] [ 65%] PASSED tests/server/mcpserver/test_server.py::test_resource_optional_query_params_use_function_defaults tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[not json] [gw37] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_a_codec_that_raises_unexpectedly_fails_closed_with_the_frozen_error tests/server/test_runner.py::test_runner_on_notify_initialized_sets_flag_and_connection_event tests/server/test_request_state_boundary.py::test_a_codec_reject_reason_reaches_the_log_but_never_the_wire tests/server/mcpserver/test_server.py::test_custom_resource_returning_the_wrong_type_is_a_crash [gw5] [ 65%] PASSED tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[not json] [gw24] [ 65%] PASSED tests/client/test_streamable_http.py::test_default_sse_limit_fails_one_large_tool_call_and_keeps_the_session_usable tests/client/test_streamable_http.py::test_configured_sse_limit_accepts_a_large_get_notification [gw22] [ 65%] PASSED tests/interaction/lowlevel/test_tools.py::test_list_tools_returns_registered_tools[streamable-http-stateless-2025-11-25] [gw31] [ 65%] PASSED tests/examples/test_stories.py::test_story[stickynotes-server-http-asgi-legacy] tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[{"v": 99, "outcomes": {}}] [gw23] [ 65%] PASSED tests/server/test_runner.py::test_runner_on_notify_initialized_sets_flag_and_connection_event [gw28] [ 65%] PASSED tests/server/test_runner.py::test_runner_builds_a_fresh_session_per_request [gw7] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_the_default_key_is_per_instance_so_servers_never_cross_accept tests/server/test_request_state_boundary.py::test_a_boundary_free_lowlevel_server_passes_request_state_through_verbatim tests/server/test_runner.py::test_runner_on_notify_malformed_initialized_does_not_initialize tests/examples/test_stories.py::test_story[stickynotes-server_lowlevel-in-memory-modern] [gw5] [ 65%] PASSED tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[{"v": 99, "outcomes": {}}] tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[{"v": 1}] tests/server/test_runner.py::test_runner_spec_method_with_no_handler_raises_method_not_found [gw5] [ 65%] PASSED tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[{"v": 1}] [gw7] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_a_boundary_free_lowlevel_server_passes_request_state_through_verbatim tests/server/test_request_state_boundary.py::test_non_string_inbound_request_state_is_rejected_with_the_frozen_error [gw25] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_tampered_request_state_is_rejected_with_the_frozen_wire_error tests/server/test_request_state_boundary.py::test_expired_request_state_is_rejected_and_just_inside_ttl_is_accepted [gw0] [ 65%] PASSED tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[sse-2025-11-25] tests/server/test_runner.py::test_runner_server_middleware_wraps_every_request_including_initialize [gw22] [ 65%] PASSED tests/server/test_runner.py::test_runner_server_middleware_wraps_every_request_including_initialize tests/server/test_runner.py::test_runner_middleware_raise_after_call_next_on_initialize_leaves_connection_uninitialized [gw1] [ 65%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_audio_suffix_detection[test.mp3-audio/mpeg] [gw28] [ 65%] PASSED tests/server/test_runner.py::test_runner_spec_method_with_no_handler_raises_method_not_found tests/server/test_runner.py::test_runner_non_spec_method_with_no_handler_raises_method_not_found tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[streamable-http-2025-11-25] tests/server/test_request_state_boundary.py::test_a_fractional_mint_instant_keeps_the_full_ttl [gw22] [ 65%] PASSED tests/server/test_runner.py::test_runner_middleware_raise_after_call_next_on_initialize_leaves_connection_uninitialized [gw45] [ 65%] PASSED tests/server/test_otel.py::test_passes_rewritten_context_through tests/server/test_runner.py::test_runner_server_middleware_observes_method_not_found_via_call_next_raise tests/server/test_read_resource.py::test_read_resource_text [gw28] [ 65%] PASSED tests/server/test_runner.py::test_runner_non_spec_method_with_no_handler_raises_method_not_found tests/server/test_runner.py::test_runner_malformed_params_for_unregistered_spec_method_raises_invalid_params tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool_with_default_args [gw22] [ 65%] PASSED tests/server/test_runner.py::test_runner_server_middleware_observes_method_not_found_via_call_next_raise [gw31] [ 65%] PASSED tests/examples/test_stories.py::test_story[stickynotes-server_lowlevel-in-memory-modern] tests/server/test_runner.py::test_runner_server_middleware_wraps_notifications tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_pydantic_model_function tests/examples/test_stories.py::test_story[stickynotes-server_lowlevel-in-memory-legacy] [gw19] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_a_non_string_principal_fails_closed_when_sealing [gw28] [ 65%] PASSED tests/server/test_runner.py::test_runner_malformed_params_for_unregistered_spec_method_raises_invalid_params tests/server/test_request_state_boundary.py::test_a_non_string_principal_fails_closed_when_verifying [gw45] [ 65%] PASSED tests/server/test_read_resource.py::test_read_resource_text [gw30] [ 65%] PASSED tests/docs/test_translations.py::test_page_still_broken_after_two_repair_turns_fails_and_keeps_the_previous_translation tests/docs/test_translations.py::test_status_classifies_each_page_against_the_current_english_and_lists_removable_files tests/server/mcpserver/test_func_metadata.py::test_str_annotation_preserves_json_string tests/server/test_runner.py::test_runner_rejects_snake_case_initialize_params [gw33] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_retry_with_different_arguments_is_rejected_and_the_original_arguments_complete [gw15] [ 65%] PASSED tests/server/mcpserver/test_tool_manager.py::TestCallTools::test_call_tool_with_default_args tests/server/test_runner.py::test_on_request_dispatches_custom_method_registered_via_add_request_handler [gw7] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_non_string_inbound_request_state_is_rejected_with_the_frozen_error tests/server/test_request_state_boundary.py::test_an_explicit_null_request_state_is_treated_as_absent[boundary-installed] tests/server/test_read_resource.py::test_read_resource_binary tests/server/test_request_state_boundary.py::test_state_minted_with_a_principal_is_rejected_when_the_verifier_derives_none [gw34] [ 65%] PASSED tests/server/mcpserver/test_tool_manager.py::TestAddTools::test_pydantic_model_function tests/server/test_runner.py::test_an_explicit_null_result_type_is_filled_on_the_modern_path tests/server/mcpserver/test_url_elicitation.py::test_url_elicitation_decline [gw29] [ 65%] PASSED tests/server/mcpserver/test_server.py::test_custom_resource_returning_the_wrong_type_is_a_crash [gw20] [ 65%] PASSED tests/server/mcpserver/test_func_metadata.py::test_str_annotation_preserves_json_string [gw28] [ 65%] PASSED tests/server/test_runner.py::test_runner_rejects_snake_case_initialize_params tests/server/test_runner.py::test_runner_initialize_with_absent_params_returns_invalid_params_and_stays_alive tests/server/test_runner.py::test_runner_handler_returning_unsupported_type_surfaces_as_error tests/server/test_runner.py::test_dual_era_loop_bare_discover_opens_legacy_and_keeps_the_handshake_available [gw15] [ 65%] PASSED tests/server/test_runner.py::test_on_request_dispatches_custom_method_registered_via_add_request_handler tests/server/test_runner.py::test_runner_middleware_short_circuit_on_a_wrong_version_spec_method_skips_the_sieve [gw7] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_an_explicit_null_request_state_is_treated_as_absent[boundary-installed] tests/server/test_request_state_boundary.py::test_an_explicit_null_request_state_is_treated_as_absent[no-boundary] [gw45] [ 65%] PASSED tests/server/test_read_resource.py::test_read_resource_binary [gw37] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_a_codec_reject_reason_reaches_the_log_but_never_the_wire tests/server/test_request_state_boundary.py::test_codec_authenticated_bytes_that_are_not_a_claims_envelope_are_rejected[not-json] [gw7] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_an_explicit_null_request_state_is_treated_as_absent[no-boundary] tests/server/test_request_state.py::test_seal_unseal_round_trips_any_payload[empty] [gw34] [ 65%] PASSED tests/server/test_runner.py::test_an_explicit_null_result_type_is_filled_on_the_modern_path tests/server/test_runner.py::test_a_claimed_extension_result_type_bypasses_the_sieve_and_is_stamped [gw25] [ 65%] PASSED tests/server/test_request_state_boundary.py::test_expired_request_state_is_rejected_and_just_inside_ttl_is_accepted [gw34] [ 65%] PASSED tests/server/test_runner.py::test_a_claimed_extension_result_type_bypasses_the_sieve_and_is_stamped tests/server/test_runner.py::test_an_empty_result_on_the_modern_path_carries_the_discriminator_and_stamp [gw16] [ 66%] PASSED tests/server/mcpserver/test_url_elicitation.py::test_url_elicitation_decline [gw20] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_bare_discover_opens_legacy_and_keeps_the_handshake_available tests/server/test_runner.py::test_dual_era_loop_an_envelopeless_first_request_opens_a_legacy_connection [gw15] [ 66%] PASSED tests/server/test_runner.py::test_runner_middleware_short_circuit_on_a_wrong_version_spec_method_skips_the_sieve tests/server/test_runner.py::test_runner_custom_method_result_is_not_surface_validated [gw28] [ 66%] PASSED tests/server/test_runner.py::test_runner_initialize_with_absent_params_returns_invalid_params_and_stays_alive tests/server/test_runner.py::test_runner_rejects_snake_case_params_for_custom_handler [gw46] [ 66%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_mixed_list_with_audio_and_image tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_basemodel tests/server/test_request_state_boundary.py::test_inbound_request_state_on_a_non_carrier_method_passes_through_unverified [gw7] [ 66%] PASSED tests/server/test_request_state_boundary.py::test_inbound_request_state_on_a_non_carrier_method_passes_through_unverified [gw34] [ 66%] PASSED tests/server/test_runner.py::test_an_empty_result_on_the_modern_path_carries_the_discriminator_and_stamp [gw20] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_an_envelopeless_first_request_opens_a_legacy_connection tests/server/test_runner.py::test_dual_era_loop_modern_request_without_envelope_rejects [gw45] [ 66%] PASSED tests/server/test_request_state.py::test_seal_unseal_round_trips_any_payload[empty] tests/server/test_request_state.py::test_seal_unseal_round_trips_any_payload[ascii] [gw15] [ 66%] PASSED tests/server/test_runner.py::test_runner_custom_method_result_is_not_surface_validated tests/server/test_runner.py::test_modern_short_circuit_middleware_owns_its_result_envelope tests/server/test_runner.py::test_serve_one_runs_handler_and_returns_result_dict tests/server/mcpserver/test_tool_manager.py::TestToolAnnotations::test_tool_annotations_in_mcpserver [gw31] [ 66%] PASSED tests/examples/test_stories.py::test_story[stickynotes-server_lowlevel-in-memory-legacy] tests/server/test_request_state_boundary.py::test_outbound_request_state_on_a_non_carrier_method_is_not_sealed [gw24] [ 66%] PASSED tests/client/test_streamable_http.py::test_configured_sse_limit_accepts_a_large_get_notification [gw45] [ 66%] PASSED tests/server/test_request_state.py::test_seal_unseal_round_trips_any_payload[ascii] tests/server/test_request_state.py::test_seal_unseal_round_trips_any_payload[multi-byte-utf8] [gw15] [ 66%] PASSED tests/server/test_runner.py::test_modern_short_circuit_middleware_owns_its_result_envelope tests/server/test_runner.py::test_a_handler_authored_server_info_stamp_is_not_overwritten tests/server/test_runner.py::test_runner_initialize_result_reflects_init_options [gw34] [ 66%] PASSED tests/server/test_runner.py::test_runner_initialize_result_reflects_init_options tests/server/test_runner.py::test_runner_initialize_echoes_supported_version_and_falls_back_to_latest [gw7] [ 66%] PASSED tests/server/test_request_state_boundary.py::test_outbound_request_state_on_a_non_carrier_method_is_not_sealed [gw16] [ 66%] PASSED tests/server/test_runner.py::test_serve_one_runs_handler_and_returns_result_dict tests/server/test_runner.py::test_serve_one_propagates_error_and_still_closes_exit_stack [gw20] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_modern_request_without_envelope_rejects tests/server/test_runner.py::test_dual_era_loop_serves_subscriptions_listen_over_the_stream_pair [gw45] [ 66%] PASSED tests/server/test_request_state.py::test_seal_unseal_round_trips_any_payload[multi-byte-utf8] tests/client/test_streamable_http.py::test_oversized_get_event_reconnects_and_delivers_later_messages tests/examples/test_stories.py::test_story[stickynotes-server_lowlevel-http-asgi-modern] [gw0] [ 66%] PASSED tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[streamable-http-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[streamable-http-stateless-2025-11-25] [gw46] [ 66%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_basemodel tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_primitive [gw8] [ 66%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolAnnotations::test_tool_annotations_in_mcpserver tests/server/test_runner.py::test_dual_era_loop_legacy_notifications_reach_the_loop_runner [gw15] [ 66%] PASSED tests/server/test_runner.py::test_a_handler_authored_server_info_stamp_is_not_overwritten tests/server/test_runner.py::test_a_non_mapping_custom_result_meta_is_left_alone [gw28] [ 66%] PASSED tests/server/test_runner.py::test_runner_rejects_snake_case_params_for_custom_handler tests/server/test_runner.py::test_runner_on_notify_drops_snake_case_params [gw34] [ 66%] PASSED tests/server/test_runner.py::test_runner_initialize_echoes_supported_version_and_falls_back_to_latest tests/server/test_runner.py::test_runner_connection_exit_stack_unwinds_after_run_returns [gw16] [ 66%] PASSED tests/server/test_runner.py::test_serve_one_propagates_error_and_still_closes_exit_stack tests/server/test_runner.py::test_serve_one_reads_connection_protocol_version_as_a_fact [gw20] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_serves_subscriptions_listen_over_the_stream_pair tests/server/test_runner.py::test_dual_era_loop_malformed_envelope_content_is_a_modern_era_error [gw24] [ 66%] PASSED tests/client/test_streamable_http.py::test_oversized_get_event_reconnects_and_delivers_later_messages tests/client/test_streamable_http.py::test_none_disables_the_sse_event_limit tests/server/mcpserver/test_server.py::test_context_exposes_its_mcp_server [gw16] [ 66%] PASSED tests/server/test_runner.py::test_serve_one_reads_connection_protocol_version_as_a_fact [gw15] [ 66%] PASSED tests/server/test_runner.py::test_a_non_mapping_custom_result_meta_is_left_alone tests/server/test_runner.py::test_stamping_never_mutates_a_handler_retained_result_dict [gw34] [ 66%] PASSED tests/server/test_runner.py::test_runner_connection_exit_stack_unwinds_after_run_returns tests/server/test_runner.py::test_runner_exit_stack_cleanup_exception_is_logged_not_propagated [gw1] [ 66%] PASSED tests/server/test_request_state_boundary.py::test_a_fractional_mint_instant_keeps_the_full_ttl [gw20] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_malformed_envelope_content_is_a_modern_era_error tests/server/test_runner.py::test_dual_era_loop_pair_only_envelope_serves_modern_and_locks [gw8] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_legacy_notifications_reach_the_loop_runner tests/server/test_runner.py::test_dual_era_loop_a_notifications_meta_never_opens_the_log_gate [gw9] [ 66%] PASSED tests/server/mcpserver/test_server.py::test_context_exposes_its_mcp_server [gw15] [ 66%] PASSED tests/server/test_runner.py::test_stamping_never_mutates_a_handler_retained_result_dict tests/server/test_runner.py::test_mutating_a_stamped_response_never_corrupts_later_stamps [gw20] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_pair_only_envelope_serves_modern_and_locks tests/server/test_runner.py::test_dual_era_loop_version_without_capabilities_rejects_naming_the_key [gw29] [ 66%] PASSED tests/server/test_runner.py::test_runner_handler_returning_unsupported_type_surfaces_as_error tests/server/test_runner.py::test_no_server_requests_dispatch_context_denies_requests_and_delegates_the_rest tests/server/mcpserver/test_url_elicitation_error_throw.py::test_normal_exceptions_still_return_error_result tests/server/test_runner.py::test_serve_connection_drives_dispatcher_loop_and_tears_down [gw15] [ 66%] PASSED tests/server/test_runner.py::test_mutating_a_stamped_response_never_corrupts_later_stamps tests/server/test_runner.py::test_a_claimed_result_type_on_a_legacy_session_is_sieved_not_leaked tests/server/test_request_state_boundary.py::test_default_principal_distinguishes_two_subjects_of_one_oauth_client [gw16] [ 66%] PASSED tests/server/test_runner.py::test_serve_connection_drives_dispatcher_loop_and_tears_down tests/server/test_runner.py::test_runner_with_born_ready_connection_skips_init_gate [gw9] [ 66%] PASSED tests/server/test_runner.py::test_no_server_requests_dispatch_context_denies_requests_and_delegates_the_rest [gw46] [ 66%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_primitive tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_list tests/server/test_runner.py::test_dual_era_loop_discover_locks_modern_and_serves_envelope_requests [gw20] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_version_without_capabilities_rejects_naming_the_key tests/server/test_runner.py::test_dual_era_loop_failed_modern_request_leaves_the_connection_modern [gw19] [ 66%] PASSED tests/server/test_request_state_boundary.py::test_a_non_string_principal_fails_closed_when_verifying tests/server/test_request_state_boundary.py::test_lone_surrogate_arguments_are_digested_not_crashed [gw20] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_failed_modern_request_leaves_the_connection_modern tests/server/test_runner.py::test_dual_era_loop_initialize_with_envelope_takes_the_handshake_path [gw29] [ 66%] PASSED tests/server/test_runner.py::test_runner_with_born_ready_connection_skips_init_gate tests/server/test_runner.py::test_server_add_request_handler_routes_custom_method_with_validated_params [gw33] [ 66%] PASSED tests/server/test_request_state_boundary.py::test_state_minted_with_a_principal_is_rejected_when_the_verifier_derives_none tests/server/test_request_state_boundary.py::test_state_minted_without_a_principal_is_rejected_when_the_verifier_derives_one tests/server/test_runner.py::test_no_server_requests_dispatch_context_passes_an_already_denying_transport_through [gw9] [ 66%] PASSED tests/server/test_runner.py::test_no_server_requests_dispatch_context_passes_an_already_denying_transport_through tests/server/test_runner.py::test_notify_only_outbound_forwards_notifications_and_refuses_requests [gw9] [ 66%] PASSED tests/server/test_runner.py::test_notify_only_outbound_forwards_notifications_and_refuses_requests tests/server/test_runner.py::test_notify_only_outbound_drops_change_notifications[notifications/tools/list_changed] [gw16] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_discover_locks_modern_and_serves_envelope_requests [gw37] [ 66%] PASSED tests/server/test_request_state_boundary.py::test_codec_authenticated_bytes_that_are_not_a_claims_envelope_are_rejected[not-json] tests/server/test_request_state_boundary.py::test_codec_authenticated_bytes_that_are_not_a_claims_envelope_are_rejected[json-missing-claims] tests/server/test_runner.py::test_dual_era_loop_pinned_modern_request_locks_without_a_probe [gw31] [ 66%] PASSED tests/examples/test_stories.py::test_story[stickynotes-server_lowlevel-http-asgi-modern] tests/server/test_caching.py::test_a_non_cache_hint_value_is_rejected_at_server_construction [gw34] [ 66%] PASSED tests/server/test_runner.py::test_runner_exit_stack_cleanup_exception_is_logged_not_propagated tests/server/test_runner.py::test_runner_exit_stack_blocking_cleanup_abandoned_after_grace [gw28] [ 66%] PASSED tests/server/test_runner.py::test_runner_on_notify_drops_snake_case_params tests/server/test_runner.py::test_runner_on_notify_drops_a_spec_notification_absent_at_the_negotiated_version tests/server/mcpserver/test_server.py::test_argument_validator_raising_mcp_error_is_a_protocol_error [gw35] [ 66%] PASSED tests/server/test_caching.py::test_a_non_cache_hint_value_is_rejected_at_server_construction [gw20] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_initialize_with_envelope_takes_the_handshake_path [gw46] [ 66%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_list tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_server_side_validation_error [gw29] [ 66%] PASSED tests/server/test_runner.py::test_server_add_request_handler_routes_custom_method_with_validated_params tests/server/test_runner.py::test_runner_spec_method_with_invalid_params_is_invalid_params_at_the_negotiated_version tests/examples/test_stories.py::test_story[stickynotes-server_lowlevel-http-asgi-legacy] [gw16] [ 66%] PASSED tests/server/test_runner.py::test_dual_era_loop_pinned_modern_request_locks_without_a_probe tests/server/test_runner.py::test_dual_era_loop_initialize_after_modern_lock_without_a_parseable_version tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[unauthenticated-creator] [gw15] [ 67%] PASSED tests/server/test_runner.py::test_a_claimed_result_type_on_a_legacy_session_is_sieved_not_leaked [gw10] [ 67%] PASSED tests/server/mcpserver/test_server.py::test_argument_validator_raising_mcp_error_is_a_protocol_error tests/server/test_session.py::test_send_request_validates_result_alias_only [gw24] [ 67%] PASSED tests/client/test_streamable_http.py::test_none_disables_the_sse_event_limit tests/client/test_streamable_http.py::test_configured_sse_limit_fails_an_oversized_resumption_event [gw9] [ 67%] PASSED tests/server/test_runner.py::test_notify_only_outbound_drops_change_notifications[notifications/tools/list_changed] tests/server/test_runner.py::test_notify_only_outbound_drops_change_notifications[notifications/prompts/list_changed] tests/server/test_apps.py::test_apps_tool_with_unregistered_resource_uri_is_rejected_at_construction [gw1] [ 67%] PASSED tests/server/test_request_state_boundary.py::test_default_principal_distinguishes_two_subjects_of_one_oauth_client tests/server/test_request_state_boundary.py::test_a_shared_key_policy_without_a_real_name_must_set_an_audience[unnamed] [gw0] [ 67%] PASSED tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[streamable-http-stateless-2025-11-25] tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[in-memory-2026-07-28] [gw42] [ 67%] PASSED tests/server/test_otel.py::test_notification_span_omits_request_id tests/server/test_otel.py::test_nests_under_ambient_span_when_no_traceparent [gw16] [ 67%] PASSED tests/server/test_runner.py::test_dual_era_loop_initialize_after_modern_lock_without_a_parseable_version tests/server/test_runner.py::test_dual_era_loop_initialize_locks_legacy_and_rejects_modern_traffic [gw40] [ 67%] PASSED tests/server/mcpserver/test_url_elicitation_error_throw.py::test_normal_exceptions_still_return_error_result tests/server/test_session.py::test_send_request_with_related_id_routes_to_request_channel [gw29] [ 67%] PASSED tests/server/test_runner.py::test_runner_spec_method_with_invalid_params_is_invalid_params_at_the_negotiated_version tests/server/test_runner.py::test_runner_handler_returning_malformed_dict_for_spec_method_is_internal_error [gw11] [ 67%] PASSED tests/server/test_apps.py::test_apps_tool_with_unregistered_resource_uri_is_rejected_at_construction tests/server/test_sse_security.py::test_sse_post_body_limit_defaults_to_four_mib [gw1] [ 67%] PASSED tests/server/test_request_state_boundary.py::test_a_shared_key_policy_without_a_real_name_must_set_an_audience[unnamed] tests/server/test_request_state_boundary.py::test_a_shared_key_policy_without_a_real_name_must_set_an_audience[empty-string] [gw6] [ 67%] PASSED tests/server/mcpserver/test_server.py::test_tool_reads_input_responses_and_request_state_from_context_on_retry tests/server/mcpserver/test_server.py::test_prompt_returning_input_required_result_reaches_client_sealed [gw24] [ 67%] PASSED tests/client/test_streamable_http.py::test_configured_sse_limit_fails_an_oversized_resumption_event tests/client/test_streamable_http.py::test_configured_sse_limit_does_not_replay_an_oversized_reconnected_event [gw11] [ 67%] PASSED tests/server/test_sse_security.py::test_sse_post_body_limit_defaults_to_four_mib tests/server/test_sse_security.py::test_sse_post_streamed_body_over_the_limit_returns_413 tests/server/test_apps.py::test_legacy_handshake_drops_apps_extension_from_capabilities [gw16] [ 67%] PASSED tests/server/test_runner.py::test_dual_era_loop_initialize_locks_legacy_and_rejects_modern_traffic [gw40] [ 67%] PASSED tests/server/test_session.py::test_send_request_with_related_id_routes_to_request_channel tests/server/test_session.py::test_send_notification_routes_by_related_request_id [gw40] [ 67%] PASSED tests/server/test_session.py::test_send_notification_routes_by_related_request_id tests/server/test_session.py::test_send_log_message_drops_everything_without_a_log_level_opt_in_at_2026 [gw40] [ 67%] PASSED tests/server/test_session.py::test_send_log_message_drops_everything_without_a_log_level_opt_in_at_2026 [gw34] [ 67%] PASSED tests/server/test_runner.py::test_runner_exit_stack_blocking_cleanup_abandoned_after_grace tests/server/test_runner.py::test_runner_exit_stack_fast_cleanup_completes_within_grace [gw10] [ 67%] PASSED tests/server/test_session.py::test_send_request_validates_result_alias_only tests/server/test_session.py::test_create_message_with_tools_returns_with_tools_result [gw10] [ 67%] PASSED tests/server/test_session.py::test_create_message_with_tools_returns_with_tools_result tests/server/test_session.py::test_create_message_with_tool_choice_only_returns_with_tools_result [gw10] [ 67%] PASSED tests/server/test_session.py::test_create_message_with_tool_choice_only_returns_with_tools_result tests/server/test_session.py::test_check_client_capability_delegates_to_connection [gw24] [ 67%] PASSED tests/client/test_streamable_http.py::test_configured_sse_limit_does_not_replay_an_oversized_reconnected_event tests/client/test_streamable_http.py::test_non_sse_reconnection_response_retries_before_failing_the_request tests/server/test_session.py::test_send_log_message_drops_levels_below_the_requested_one_at_2026 tests/server/test_runner.py::test_dual_era_loop_bare_discover_after_legacy_lock_is_byte_identical [gw16] [ 67%] PASSED tests/server/test_runner.py::test_dual_era_loop_bare_discover_after_legacy_lock_is_byte_identical [gw34] [ 67%] PASSED tests/server/test_runner.py::test_runner_exit_stack_fast_cleanup_completes_within_grace [gw37] [ 67%] PASSED tests/server/test_request_state_boundary.py::test_codec_authenticated_bytes_that_are_not_a_claims_envelope_are_rejected[json-missing-claims] tests/server/test_request_state_boundary.py::test_codec_authenticated_bytes_that_are_not_a_claims_envelope_are_rejected[json-wrong-envelope-version] [gw43] [ 67%] PASSED tests/server/test_apps.py::test_legacy_handshake_drops_apps_extension_from_capabilities [gw9] [ 67%] PASSED tests/server/test_runner.py::test_notify_only_outbound_drops_change_notifications[notifications/prompts/list_changed] tests/server/test_runner.py::test_notify_only_outbound_drops_change_notifications[notifications/resources/list_changed] [gw33] [ 67%] PASSED tests/server/test_request_state_boundary.py::test_state_minted_without_a_principal_is_rejected_when_the_verifier_derives_one tests/server/test_request_state_boundary.py::test_state_for_a_different_principal_is_rejected_and_the_same_principal_completes [gw19] [ 67%] PASSED tests/server/test_request_state_boundary.py::test_lone_surrogate_arguments_are_digested_not_crashed tests/server/test_request_state_boundary.py::test_lone_surrogate_handler_state_seals_and_restores [gw9] [ 67%] PASSED tests/server/test_runner.py::test_notify_only_outbound_drops_change_notifications[notifications/resources/list_changed] [gw11] [ 67%] PASSED tests/server/test_sse_security.py::test_sse_post_streamed_body_over_the_limit_returns_413 tests/server/test_sse_security.py::test_sse_post_within_the_limit_reaches_session_lookup [gw11] [ 67%] PASSED tests/server/test_sse_security.py::test_sse_post_within_the_limit_reaches_session_lookup tests/server/test_sse_security.py::test_sse_message_endpoint_answers_405_to_non_post[GET] [gw1] [ 67%] PASSED tests/server/test_request_state_boundary.py::test_a_shared_key_policy_without_a_real_name_must_set_an_audience[empty-string] tests/server/test_runner.py::test_connected_runner_propagates_body_exception_unwrapped [gw1] [ 67%] PASSED tests/server/test_runner.py::test_connected_runner_propagates_body_exception_unwrapped tests/server/test_runner.py::test_runner_handles_initialize_and_populates_connection [gw1] [ 67%] PASSED tests/server/test_runner.py::test_runner_handles_initialize_and_populates_connection tests/server/test_runner.py::test_runner_initialize_opens_gate_but_event_fires_only_after_initialized_notification [gw1] [ 67%] PASSED tests/server/test_runner.py::test_runner_initialize_opens_gate_but_event_fires_only_after_initialized_notification tests/server/test_runner.py::test_runner_gates_requests_before_initialize [gw10] [ 67%] PASSED tests/server/test_session.py::test_check_client_capability_delegates_to_connection tests/server/test_session.py::test_protocol_version_proxies_connection [gw10] [ 67%] PASSED tests/server/test_session.py::test_protocol_version_proxies_connection tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[different-client] tests/server/test_stateless_mode.py::test_create_message_raises_no_back_channel_without_related_id [gw43] [ 67%] PASSED tests/server/test_stateless_mode.py::test_create_message_raises_no_back_channel_without_related_id tests/server/test_stateless_mode.py::test_elicit_form_raises_no_back_channel_without_related_id [gw43] [ 67%] PASSED tests/server/test_stateless_mode.py::test_elicit_form_raises_no_back_channel_without_related_id tests/server/test_stateless_mode.py::test_elicit_url_raises_no_back_channel_without_related_id [gw43] [ 67%] PASSED tests/server/test_stateless_mode.py::test_elicit_url_raises_no_back_channel_without_related_id tests/server/test_stateless_mode.py::test_elicit_deprecated_raises_no_back_channel_without_related_id [gw43] [ 67%] PASSED tests/server/test_stateless_mode.py::test_elicit_deprecated_raises_no_back_channel_without_related_id tests/server/test_stateless_mode.py::test_send_request_raises_no_back_channel_without_related_id [gw43] [ 67%] PASSED tests/server/test_stateless_mode.py::test_send_request_raises_no_back_channel_without_related_id tests/server/test_stateless_mode.py::test_elicit_form_with_related_id_rides_the_request_channel [gw24] [ 67%] PASSED tests/client/test_streamable_http.py::test_non_sse_reconnection_response_retries_before_failing_the_request tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add-add-False] [gw24] [ 67%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add-add-False] tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[--False] [gw24] [ 67%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[--False] tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[tool with spaces-tool with spaces-False] [gw24] [ 67%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[tool with spaces-tool with spaces-False] tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[ add-=?base64?IGFkZA==?=-True] [gw24] [ 67%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[ add-=?base64?IGFkZA==?=-True] tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add -=?base64?YWRkIA==?=-True] [gw24] [ 67%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add -=?base64?YWRkIA==?=-True] tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[r\xe9sum\xe9-=?base64?csOpc3Vtw6k=?=-True] [gw24] [ 67%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[r\xe9sum\xe9-=?base64?csOpc3Vtw6k=?=-True] tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[a\r\nb-=?base64?YQ0KYg==?=-True] [gw29] [ 67%] PASSED tests/server/test_runner.py::test_runner_handler_returning_malformed_dict_for_spec_method_is_internal_error tests/server/test_runner.py::test_runner_handler_returning_typed_monolith_result_passes_outbound_validation [gw46] [ 67%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_server_side_validation_error tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_dict_str_any [gw43] [ 67%] PASSED tests/server/test_stateless_mode.py::test_elicit_form_with_related_id_rides_the_request_channel tests/server/test_stateless_mode.py::test_send_log_message_rides_the_request_channel_when_opted_in [gw43] [ 67%] PASSED tests/server/test_stateless_mode.py::test_send_log_message_rides_the_request_channel_when_opted_in tests/server/test_stateless_mode.py::test_unrelated_notification_is_dropped_silently [gw0] [ 67%] PASSED tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[in-memory-2026-07-28] tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[streamable-http-2026-07-28] tests/server/test_runner.py::test_notify_only_outbound_drops_change_notifications[notifications/resources/updated] [gw19] [ 67%] PASSED tests/server/test_request_state_boundary.py::test_lone_surrogate_handler_state_seals_and_restores [gw6] [ 67%] PASSED tests/server/mcpserver/test_server.py::test_prompt_returning_input_required_result_reaches_client_sealed tests/server/test_runner.py::test_dual_era_loop_treats_a_read_stream_closed_mid_connection_as_end_of_input [gw6] [ 68%] PASSED tests/server/test_runner.py::test_dual_era_loop_treats_a_read_stream_closed_mid_connection_as_end_of_input tests/server/test_runner.py::test_dual_era_client_propagates_body_exception_unwrapped [gw6] [ 68%] PASSED tests/server/test_runner.py::test_dual_era_client_propagates_body_exception_unwrapped tests/server/test_server_context.py::test_context_exposes_lifespan_and_connection_and_forwards_base_context [gw6] [ 68%] PASSED tests/server/test_server_context.py::test_context_exposes_lifespan_and_connection_and_forwards_base_context tests/server/test_server_context.py::test_context_log_sends_request_scoped_message_notification [gw6] [ 68%] PASSED tests/server/test_server_context.py::test_context_log_sends_request_scoped_message_notification tests/server/test_server_context.py::test_context_log_is_gated_by_the_request_log_level_at_2026 [gw6] [ 68%] PASSED tests/server/test_server_context.py::test_context_log_is_gated_by_the_request_log_level_at_2026 tests/server/test_server_context.py::test_context_log_includes_logger_and_meta_when_supplied [gw6] [ 68%] PASSED tests/server/test_server_context.py::test_context_log_includes_logger_and_meta_when_supplied tests/server/test_session.py::test_send_request_forwards_timeout_and_progress_callback_as_call_options [gw6] [ 68%] PASSED tests/server/test_session.py::test_send_request_forwards_timeout_and_progress_callback_as_call_options tests/server/test_session.py::test_send_request_omits_call_options_when_none_given [gw6] [ 68%] PASSED tests/server/test_session.py::test_send_request_omits_call_options_when_none_given tests/server/test_session.py::test_send_request_timeout_zero_is_forwarded [gw6] [ 68%] PASSED tests/server/test_session.py::test_send_request_timeout_zero_is_forwarded [gw1] [ 68%] PASSED tests/server/test_runner.py::test_runner_gates_requests_before_initialize tests/server/test_runner.py::test_runner_unknown_method_before_initialize_raises_method_not_found [gw1] [ 68%] PASSED tests/server/test_runner.py::test_runner_unknown_method_before_initialize_raises_method_not_found tests/server/test_runner.py::test_runner_spec_method_without_handler_before_initialize_raises_method_not_found [gw1] [ 68%] PASSED tests/server/test_runner.py::test_runner_spec_method_without_handler_before_initialize_raises_method_not_found [gw28] [ 68%] PASSED tests/server/test_runner.py::test_runner_on_notify_drops_a_spec_notification_absent_at_the_negotiated_version [gw29] [ 68%] PASSED tests/server/test_runner.py::test_runner_handler_returning_typed_monolith_result_passes_outbound_validation tests/server/test_runner.py::test_runner_outbound_sieve_drops_2026_only_result_keys_at_a_pre_2026_version [gw29] [ 68%] PASSED tests/server/test_runner.py::test_runner_outbound_sieve_drops_2026_only_result_keys_at_a_pre_2026_version [gw40] [ 68%] PASSED tests/server/test_session.py::test_send_log_message_drops_levels_below_the_requested_one_at_2026 tests/server/test_session.py::test_send_log_message_is_request_scoped_at_2026_even_without_related_request_id [gw40] [ 68%] PASSED tests/server/test_session.py::test_send_log_message_is_request_scoped_at_2026_even_without_related_request_id tests/server/test_session.py::test_send_log_message_on_a_handshake_version_still_routes_by_related_request_id [gw40] [ 68%] PASSED tests/server/test_session.py::test_send_log_message_on_a_handshake_version_still_routes_by_related_request_id tests/server/test_session.py::test_report_progress_delegates_to_the_request_dispatch_context [gw40] [ 68%] PASSED tests/server/test_session.py::test_report_progress_delegates_to_the_request_dispatch_context tests/server/test_session.py::test_send_request_validates_the_client_result_against_the_surface_schema [gw40] [ 68%] PASSED tests/server/test_session.py::test_send_request_validates_the_client_result_against_the_surface_schema tests/server/test_session.py::test_send_request_passes_a_spec_valid_client_result [gw40] [ 68%] PASSED tests/server/test_session.py::test_send_request_passes_a_spec_valid_client_result [gw0] [ 68%] PASSED tests/interaction/mcpserver/test_tools.py::test_adding_and_removing_tools_does_not_notify_connected_clients[streamable-http-2026-07-28] tests/interaction/test_coverage.py::test_every_requirement_is_exercised [gw9] [ 68%] PASSED tests/server/test_runner.py::test_notify_only_outbound_drops_change_notifications[notifications/resources/updated] tests/server/test_runner.py::test_dual_era_loop_carries_the_sender_context_through_the_replay [gw9] [ 68%] PASSED tests/server/test_runner.py::test_dual_era_loop_carries_the_sender_context_through_the_replay tests/server/test_runner.py::test_dual_era_loop_leading_notifications_never_decide_the_era [gw35] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[unauthenticated-creator] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client] [gw35] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-and-subject] [gw30] [ 68%] PASSED tests/docs/test_translations.py::test_status_classifies_each_page_against_the_current_english_and_lists_removable_files tests/docs/test_translations.py::test_stage_overlays_translations_injects_notices_and_rewrites_api_links [gw46] [ 68%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_dict_str_any [gw11] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_message_endpoint_answers_405_to_non_post[GET] tests/server/test_sse_security.py::test_sse_message_endpoint_answers_405_to_non_post[PUT] [gw11] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_message_endpoint_answers_405_to_non_post[PUT] tests/server/test_sse_security.py::test_sse_transport_rejects_a_non_positive_body_limit[0] [gw11] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_transport_rejects_a_non_positive_body_limit[0] tests/server/test_sse_security.py::test_sse_transport_rejects_a_non_positive_body_limit[-1] [gw11] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_transport_rejects_a_non_positive_body_limit[-1] tests/server/test_sse_security.py::test_sse_round_trip_delivers_posted_messages_and_streams_responses [gw42] [ 68%] PASSED tests/server/test_otel.py::test_nests_under_ambient_span_when_no_traceparent tests/server/test_otel.py::test_nests_under_ambient_span_when_meta_lacks_traceparent [gw42] [ 68%] PASSED tests/server/test_otel.py::test_nests_under_ambient_span_when_meta_lacks_traceparent [gw43] [ 68%] PASSED tests/server/test_stateless_mode.py::test_unrelated_notification_is_dropped_silently tests/server/test_stateless_mode.py::test_loop_connection_outbound_does_not_raise_no_back_channel [gw43] [ 68%] PASSED tests/server/test_stateless_mode.py::test_loop_connection_outbound_does_not_raise_no_back_channel tests/server/test_runner.py::test_runner_outbound_sieve_drops_configured_cache_hints_at_a_pre_2026_version [gw29] [ 68%] PASSED tests/server/test_runner.py::test_runner_outbound_sieve_drops_configured_cache_hints_at_a_pre_2026_version tests/server/test_runner.py::test_runner_server_direction_spec_method_routes_to_a_registered_handler [gw37] [ 68%] PASSED tests/server/test_request_state_boundary.py::test_codec_authenticated_bytes_that_are_not_a_claims_envelope_are_rejected[json-wrong-envelope-version] tests/server/test_request_state_boundary.py::test_codec_authenticated_bytes_that_are_not_a_claims_envelope_are_rejected[json-non-string-state] [gw10] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[different-client] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[unauthenticated-sender] [gw9] [ 68%] PASSED tests/server/test_runner.py::test_dual_era_loop_leading_notifications_never_decide_the_era [gw0] [ 68%] PASSED tests/interaction/test_coverage.py::test_every_requirement_is_exercised [gw24] [ 68%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[a\r\nb-=?base64?YQ0KYg==?=-True] tests/server/mcpserver/test_integration.py::test_structured_output [gw4] [ 68%] PASSED tests/server/mcpserver/test_integration.py::test_structured_output tests/server/test_stdio.py::test_stdio_server_round_trips_messages_over_injected_streams [gw14] [ 68%] PASSED tests/server/mcpserver/test_server.py::test_recursive_tool_return_type_lists_and_calls_on_legacy_session tests/server/mcpserver/test_server.py::test_resource_template_input_required_result_on_legacy_session_is_a_serialization_error [gw29] [ 68%] PASSED tests/server/test_runner.py::test_runner_server_direction_spec_method_routes_to_a_registered_handler [gw23] [ 68%] PASSED tests/server/test_runner.py::test_runner_on_notify_malformed_initialized_does_not_initialize tests/server/test_runner.py::test_runner_on_notify_initialized_routes_to_registered_handler_after_state_set tests/interaction/test_coverage.py::test_every_test_exercises_a_requirement [gw35] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-and-subject] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[both-unauthenticated] tests/server/test_runner.py::test_runner_spec_method_absent_at_the_negotiated_version_is_method_not_found [gw11] [ 68%] PASSED tests/server/test_sse_security.py::test_sse_round_trip_delivers_posted_messages_and_streams_responses [gw33] [ 68%] PASSED tests/server/test_request_state_boundary.py::test_state_for_a_different_principal_is_rejected_and_the_same_principal_completes tests/server/test_request_state_boundary.py::test_a_principal_binding_that_raises_fails_the_seal_as_an_internal_error [gw31] [ 68%] PASSED tests/examples/test_stories.py::test_story[stickynotes-server_lowlevel-http-asgi-legacy] tests/examples/test_stories.py::test_story[custom_methods-server-in-memory-modern] tests/server/test_stateless_mode.py::test_list_roots_raises_no_back_channel [gw23] [ 68%] PASSED tests/server/test_runner.py::test_runner_on_notify_initialized_routes_to_registered_handler_after_state_set tests/server/test_runner.py::test_server_add_request_handler_rejects_initialize [gw23] [ 68%] PASSED tests/server/test_runner.py::test_server_add_request_handler_rejects_initialize [gw0] [ 68%] PASSED tests/interaction/test_coverage.py::test_every_test_exercises_a_requirement [gw11] [ 68%] PASSED tests/server/test_stateless_mode.py::test_list_roots_raises_no_back_channel [gw29] [ 68%] PASSED tests/server/test_runner.py::test_runner_spec_method_absent_at_the_negotiated_version_is_method_not_found tests/server/test_runner.py::test_runner_on_notify_routes_to_registered_handler [gw23] [ 68%] PASSED tests/server/test_runner.py::test_runner_on_notify_routes_to_registered_handler tests/server/test_cancel_handling.py::test_server_handles_transport_close_with_pending_server_to_client_requests tests/server/mcpserver/test_resolve.py::test_input_required_loop_handles_every_outcome[accept-content0-deleted /docs] tests/server/test_runner.py::test_runner_on_notify_handler_exception_is_swallowed_and_logged [gw37] [ 68%] PASSED tests/server/test_request_state_boundary.py::test_codec_authenticated_bytes_that_are_not_a_claims_envelope_are_rejected[json-non-string-state] tests/server/test_request_state_boundary.py::test_a_forged_principal_claim_that_is_not_base64_is_rejected [gw22] [ 68%] PASSED tests/server/test_runner.py::test_runner_server_middleware_wraps_notifications tests/server/test_runner.py::test_extract_meta_returns_none_for_absent_or_malformed tests/server/test_connection.py::test_check_capability_per_field_branches[have2-want2-False] [gw31] [ 68%] PASSED tests/examples/test_stories.py::test_story[custom_methods-server-in-memory-modern] [gw22] [ 69%] PASSED tests/server/test_runner.py::test_extract_meta_returns_none_for_absent_or_malformed tests/server/test_runner.py::test_extract_meta_round_trips_through_dump_params [gw35] [ 69%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[both-unauthenticated] tests/server/test_sse_security.py::test_sse_connect_rejects_a_non_http_scope [gw22] [ 69%] PASSED tests/server/test_runner.py::test_extract_meta_round_trips_through_dump_params tests/server/test_runner.py::test_runner_server_middleware_runs_outermost_first [gw12] [ 69%] PASSED tests/server/test_connection.py::test_check_capability_per_field_branches[have2-want2-False] tests/server/test_subscriptions.py::test_same_task_publish_burst_does_not_overflow_a_healthy_stream [gw13] [ 69%] PASSED tests/server/test_cancel_handling.py::test_server_handles_transport_close_with_pending_server_to_client_requests tests/server/test_stdio.py::test_a_refused_claim_releases_the_stream_it_already_took tests/examples/test_stories.py::test_story[custom_methods-server-in-memory-legacy] [gw22] [ 69%] PASSED tests/server/test_runner.py::test_runner_server_middleware_runs_outermost_first tests/server/test_extensions_capability.py::test_modern_connection_carries_the_advertised_extensions_map tests/server/test_runner.py::test_runner_handler_returning_none_yields_empty_result [gw12] [ 69%] PASSED tests/server/test_subscriptions.py::test_same_task_publish_burst_does_not_overflow_a_healthy_stream tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[missing-host] tests/server/test_connection.py::test_connection_notify_forwards_to_outbound [gw14] [ 69%] PASSED tests/server/mcpserver/test_server.py::test_resource_template_input_required_result_on_legacy_session_is_a_serialization_error [gw31] [ 69%] PASSED tests/examples/test_stories.py::test_story[custom_methods-server-in-memory-legacy] tests/server/mcpserver/test_server.py::test_resource_template_returning_input_required_result_reaches_client_sealed tests/examples/test_stories.py::test_story[custom_methods-server-http-asgi-modern] [gw22] [ 69%] PASSED tests/server/test_runner.py::test_runner_handler_returning_none_yields_empty_result tests/server/test_runner.py::test_runner_handler_returning_error_data_produces_jsonrpc_error [gw3] [ 69%] PASSED tests/server/mcpserver/test_resolve.py::test_input_required_loop_handles_every_outcome[accept-content0-deleted /docs] [gw47] [ 69%] PASSED tests/server/test_connection.py::test_connection_notify_forwards_to_outbound tests/server/test_transport_security.py::test_request_body_chunks_are_replayed_as_one_message [gw23] [ 69%] PASSED tests/server/test_runner.py::test_runner_on_notify_handler_exception_is_swallowed_and_logged tests/server/test_runner.py::test_runner_on_notify_drops_malformed_params [gw18] [ 69%] PASSED tests/server/test_extensions_capability.py::test_modern_connection_carries_the_advertised_extensions_map tests/server/test_transport_security.py::test_validate_request_skips_host_and_origin_when_protection_is_disabled [gw47] [ 69%] PASSED tests/server/test_transport_security.py::test_request_body_chunks_are_replayed_as_one_message tests/server/test_transport_security.py::test_request_body_limit_applies_to_every_method[GET] [gw18] [ 69%] PASSED tests/server/test_transport_security.py::test_validate_request_skips_host_and_origin_when_protection_is_disabled tests/server/test_transport_security.py::test_validate_request_defaults_to_protection_disabled [gw18] [ 69%] PASSED tests/server/test_transport_security.py::test_validate_request_defaults_to_protection_disabled tests/server/test_transport_security.py::test_validate_request_checks_content_type_on_post[json] tests/server/test_subscriptions.py::test_only_requested_event_kinds_are_delivered [gw3] [ 69%] PASSED tests/server/test_subscriptions.py::test_only_requested_event_kinds_are_delivered tests/server/test_connection.py::test_send_request_with_a_custom_method_skips_the_surface_gate [gw14] [ 69%] PASSED tests/server/mcpserver/test_server.py::test_resource_template_returning_input_required_result_reaches_client_sealed tests/server/mcpserver/test_server.py::test_resource_template_reads_input_responses_from_context_on_retry [gw47] [ 69%] PASSED tests/server/test_transport_security.py::test_request_body_limit_applies_to_every_method[GET] tests/server/test_transport_security.py::test_request_body_limit_applies_to_every_method[PUT] [gw37] [ 69%] PASSED tests/server/test_request_state_boundary.py::test_a_forged_principal_claim_that_is_not_base64_is_rejected tests/server/test_request_state_boundary.py::test_a_non_string_principal_claim_is_rejected_with_the_frozen_error[int] [gw10] [ 69%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[unauthenticated-sender] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-different-subject] [gw31] [ 69%] PASSED tests/examples/test_stories.py::test_story[custom_methods-server-http-asgi-modern] tests/examples/test_stories.py::test_story[custom_methods-server-http-asgi-legacy] [gw18] [ 69%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_content_type_on_post[json] tests/server/test_transport_security.py::test_validate_request_checks_content_type_on_post[json-with-charset] [gw22] [ 69%] PASSED tests/server/test_runner.py::test_runner_handler_returning_error_data_produces_jsonrpc_error tests/server/test_runner.py::test_runner_server_middleware_observes_handler_error_data_as_mcp_error [gw22] [ 69%] PASSED tests/server/test_runner.py::test_runner_server_middleware_observes_handler_error_data_as_mcp_error [gw47] [ 69%] PASSED tests/server/test_transport_security.py::test_request_body_limit_applies_to_every_method[PUT] tests/server/test_transport_security.py::test_request_body_limit_applies_to_every_method[OPTIONS] [gw17] [ 69%] PASSED tests/server/test_connection.py::test_send_request_with_a_custom_method_skips_the_surface_gate tests/server/test_validation.py::test_check_sampling_tools_capability_returns_true_when_tools_present [gw35] [ 69%] PASSED tests/server/test_sse_security.py::test_sse_connect_rejects_a_non_http_scope tests/server/test_sse_security.py::test_sse_connect_rejects_a_disallowed_host tests/server/test_subscriptions.py::test_empty_filter_honors_nothing_and_delivers_nothing [gw3] [ 69%] PASSED tests/server/test_subscriptions.py::test_empty_filter_honors_nothing_and_delivers_nothing tests/server/test_subscriptions.py::test_publish_after_close_is_dropped [gw21] [ 69%] PASSED tests/server/mcpserver/test_resolve.py::test_reworded_question_drops_the_stored_answer_and_reasks tests/server/mcpserver/test_resolve.py::test_decline_of_a_reworded_question_does_not_suppress_the_new_question [gw18] [ 69%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_content_type_on_post[json-with-charset] tests/server/test_transport_security.py::test_validate_request_checks_content_type_on_post[case-insensitive] [gw18] [ 69%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_content_type_on_post[case-insensitive] tests/server/test_transport_security.py::test_validate_request_checks_content_type_on_post[wrong-type] [gw17] [ 69%] PASSED tests/server/test_validation.py::test_check_sampling_tools_capability_returns_true_when_tools_present tests/server/test_validation.py::test_validate_sampling_tools_no_error_when_tools_none [gw47] [ 69%] PASSED tests/server/test_transport_security.py::test_request_body_limit_applies_to_every_method[OPTIONS] tests/server/test_transport_security.py::test_request_body_limit_applies_to_every_method[HEAD] [gw14] [ 69%] PASSED tests/server/mcpserver/test_server.py::test_resource_template_reads_input_responses_from_context_on_retry tests/server/mcpserver/test_server.py::test_context_read_resource_raises_on_input_required_result [gw18] [ 69%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_content_type_on_post[wrong-type] tests/server/test_transport_security.py::test_validate_request_checks_content_type_on_post[missing] [gw12] [ 69%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[missing-host] tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[host-no-match] [gw3] [ 69%] PASSED tests/server/test_subscriptions.py::test_publish_after_close_is_dropped tests/server/test_subscriptions.py::test_event_published_during_ack_send_is_delivered_after_the_ack [gw47] [ 69%] PASSED tests/server/test_transport_security.py::test_request_body_limit_applies_to_every_method[HEAD] tests/server/test_transport_security.py::test_request_body_limit_applies_to_every_method[DELETE] [gw18] [ 69%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_content_type_on_post[missing] [gw32] [ 69%] PASSED tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_invalid_content_type tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_message_router_async_for [gw17] [ 69%] PASSED tests/server/test_validation.py::test_validate_sampling_tools_no_error_when_tools_none tests/server/test_validation.py::test_validate_sampling_tools_raises_when_tools_provided_but_no_capability [gw14] [ 69%] PASSED tests/server/mcpserver/test_server.py::test_context_read_resource_raises_on_input_required_result tests/server/mcpserver/test_server.py::test_mcpserver_read_resource_returns_input_required_result_for_handler_forwarding tests/server/test_transport_security.py::test_validate_request_ignores_content_type_on_get [gw3] [ 69%] PASSED tests/server/test_subscriptions.py::test_event_published_during_ack_send_is_delivered_after_the_ack tests/server/test_subscriptions.py::test_listen_requires_a_request_id [gw23] [ 69%] PASSED tests/server/test_runner.py::test_runner_on_notify_drops_malformed_params tests/server/test_runner.py::test_runner_on_notify_drops_absent_params_when_model_requires_them [gw35] [ 69%] PASSED tests/server/test_sse_security.py::test_sse_connect_rejects_a_disallowed_host tests/server/test_sse_security.py::test_sse_post_without_a_session_id_returns_400 [gw17] [ 69%] PASSED tests/server/test_validation.py::test_validate_sampling_tools_raises_when_tools_provided_but_no_capability [gw47] [ 69%] PASSED tests/server/test_transport_security.py::test_request_body_limit_applies_to_every_method[DELETE] tests/server/test_transport_security.py::test_request_body_limit_leaves_non_http_scopes_alone [gw47] [ 69%] PASSED tests/server/test_transport_security.py::test_request_body_limit_leaves_non_http_scopes_alone [gw3] [ 69%] PASSED tests/server/test_subscriptions.py::test_listen_requires_a_request_id [gw18] [ 69%] PASSED tests/server/test_transport_security.py::test_validate_request_ignores_content_type_on_get tests/server/test_transport_security.py::test_client_disconnect_while_streaming_request_body_is_replayed [gw18] [ 69%] PASSED tests/server/test_transport_security.py::test_client_disconnect_while_streaming_request_body_is_replayed tests/server/test_validation.py::test_validate_sampling_tools_raises_when_tool_choice_provided_but_no_capability [gw31] [ 69%] PASSED tests/examples/test_stories.py::test_story[custom_methods-server-http-asgi-legacy] tests/server/test_validation.py::test_check_sampling_tools_capability_returns_false_when_caps_none [gw14] [ 69%] PASSED tests/server/mcpserver/test_server.py::test_mcpserver_read_resource_returns_input_required_result_for_handler_forwarding tests/server/mcpserver/test_server.py::test_context_read_resource_keeps_outer_input_responses_from_the_nested_template [gw17] [ 69%] PASSED tests/server/test_validation.py::test_validate_sampling_tools_raises_when_tool_choice_provided_but_no_capability [gw47] [ 69%] PASSED tests/server/test_validation.py::test_check_sampling_tools_capability_returns_false_when_caps_none tests/server/test_subscriptions.py::test_close_without_open_streams_is_a_no_op [gw3] [ 69%] PASSED tests/server/test_subscriptions.py::test_close_without_open_streams_is_a_no_op tests/examples/test_stories.py::test_story[apps-server-in-memory-in-body] tests/server/test_validation.py::test_validate_sampling_tools_no_error_when_capability_present tests/server/test_validation.py::test_check_sampling_tools_capability_returns_false_when_sampling_none tests/server/test_subscriptions.py::test_raising_listener_is_isolated_from_others [gw33] [ 69%] PASSED tests/server/test_request_state_boundary.py::test_a_principal_binding_that_raises_fails_the_seal_as_an_internal_error [gw47] [ 69%] PASSED tests/server/test_validation.py::test_check_sampling_tools_capability_returns_false_when_sampling_none [gw17] [ 70%] PASSED tests/server/test_validation.py::test_validate_sampling_tools_no_error_when_capability_present tests/server/test_lowlevel_tool_annotations.py::test_lowlevel_server_tool_annotations [gw12] [ 70%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[host-no-match] tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[host-wildcard-base-mismatch] tests/server/test_request_state_boundary.py::test_a_principal_binding_that_raises_fails_the_unseal_with_the_frozen_rejection tests/server/test_validation.py::test_validate_tool_use_result_messages_no_error_for_empty_messages [gw17] [ 70%] PASSED tests/server/test_validation.py::test_validate_tool_use_result_messages_no_error_for_empty_messages [gw2] [ 70%] PASSED tests/server/test_lowlevel_tool_annotations.py::test_lowlevel_server_tool_annotations [gw21] [ 70%] PASSED tests/server/mcpserver/test_resolve.py::test_decline_of_a_reworded_question_does_not_suppress_the_new_question tests/server/mcpserver/test_resolve.py::test_reworded_question_reasks_even_when_the_answer_first_arrives tests/server/test_validation.py::test_validate_tool_use_result_messages_no_error_for_simple_text_messages [gw26] [ 70%] PASSED tests/server/mcpserver/test_server.py::test_tool_that_recovers_from_a_missing_resource_logs_nothing tests/server/test_validation.py::test_validate_tool_use_result_messages_raises_when_tool_result_ids_dont_match_tool_use [gw23] [ 70%] PASSED tests/server/test_runner.py::test_runner_on_notify_drops_absent_params_when_model_requires_them tests/server/test_runner.py::test_runner_absent_wire_params_reaches_request_handler_as_defaults_model tests/server/mcpserver/test_server.py::test_static_resource_raising_unexpected_exception_is_logged_once_at_error_with_its_traceback [gw14] [ 70%] PASSED tests/server/mcpserver/test_server.py::test_context_read_resource_keeps_outer_input_responses_from_the_nested_template tests/server/mcpserver/test_server.py::test_prompt_raising_mcp_error_surfaces_code_and_data_to_client tests/server/mcpserver/test_extension.py::test_colliding_extension_methods_are_rejected_at_registration [gw23] [ 70%] PASSED tests/server/test_runner.py::test_runner_absent_wire_params_reaches_request_handler_as_defaults_model [gw35] [ 70%] PASSED tests/server/test_sse_security.py::test_sse_post_without_a_session_id_returns_400 tests/server/test_sse_security.py::test_sse_post_with_a_malformed_session_id_returns_400 tests/server/test_runner.py::test_runner_absent_wire_params_for_required_params_custom_method_is_invalid_params [gw17] [ 70%] PASSED tests/server/test_validation.py::test_validate_tool_use_result_messages_no_error_for_simple_text_messages [gw38] [ 70%] PASSED tests/server/mcpserver/test_extension.py::test_colliding_extension_methods_are_rejected_at_registration tests/server/test_validation.py::test_validate_tool_use_result_messages_raises_when_tool_result_mixed_with_other_content tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[jwks_uri] [gw14] [ 70%] PASSED tests/server/mcpserver/test_server.py::test_prompt_raising_mcp_error_surfaces_code_and_data_to_client [gw31] [ 70%] PASSED tests/examples/test_stories.py::test_story[apps-server-in-memory-in-body] [gw23] [ 70%] PASSED tests/server/test_runner.py::test_runner_absent_wire_params_for_required_params_custom_method_is_invalid_params tests/examples/test_stories.py::test_story[apps-server-http-asgi-in-body] [gw12] [ 70%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[host-wildcard-base-mismatch] [gw37] [ 70%] PASSED tests/server/test_request_state_boundary.py::test_a_non_string_principal_claim_is_rejected_with_the_frozen_error[int] tests/server/test_request_state_boundary.py::test_a_non_string_principal_claim_is_rejected_with_the_frozen_error[object] [gw38] [ 70%] PASSED tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[jwks_uri] tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[host-exact-no-origin] tests/server/mcpserver/test_server.py::test_resource_template_raising_mcp_error_surfaces_code_and_data_to_client [gw17] [ 70%] PASSED tests/server/test_validation.py::test_validate_tool_use_result_messages_raises_when_tool_result_mixed_with_other_content tests/server/test_validation.py::test_validate_tool_use_result_messages_raises_when_tool_result_without_previous_tool_use [gw2] [ 70%] PASSED tests/server/test_validation.py::test_validate_tool_use_result_messages_raises_when_tool_result_ids_dont_match_tool_use tests/server/test_validation.py::test_validate_tool_use_result_messages_no_error_when_tool_result_matches_tool_use [gw2] [ 70%] PASSED tests/server/test_validation.py::test_validate_tool_use_result_messages_no_error_when_tool_result_matches_tool_use tests/shared/test_auth.py::test_oauth [gw2] [ 70%] PASSED tests/shared/test_auth.py::test_oauth tests/shared/test_auth.py::test_oidc [gw21] [ 70%] PASSED tests/server/mcpserver/test_resolve.py::test_reworded_question_reasks_even_when_the_answer_first_arrives tests/server/mcpserver/test_resolve.py::test_an_answer_without_the_echoed_state_is_reasked_not_consumed [gw12] [ 70%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[host-exact-no-origin] [gw17] [ 70%] PASSED tests/server/test_validation.py::test_validate_tool_use_result_messages_raises_when_tool_result_without_previous_tool_use tests/shared/test_auth.py::test_all_optional_urls_empty_together [gw38] [ 70%] PASSED tests/shared/test_auth.py::test_all_optional_urls_empty_together tests/shared/test_auth.py::test_valid_url_passes_through_unchanged tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[host-wildcard-match] [gw3] [ 70%] PASSED tests/server/test_subscriptions.py::test_raising_listener_is_isolated_from_others [gw14] [ 70%] PASSED tests/server/mcpserver/test_server.py::test_resource_template_raising_mcp_error_surfaces_code_and_data_to_client tests/server/test_subscriptions.py::test_raising_unsubscribe_does_not_skip_stream_cleanup [gw2] [ 70%] PASSED tests/shared/test_auth.py::test_oidc tests/shared/test_auth.py::test_oauth_with_jarm [gw12] [ 70%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[host-wildcard-match] tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[origin-no-match] [gw38] [ 70%] PASSED tests/shared/test_auth.py::test_valid_url_passes_through_unchanged tests/shared/test_auth.py::test_information_full_inherits_coercion [gw38] [ 70%] PASSED tests/shared/test_auth.py::test_information_full_inherits_coercion [gw10] [ 70%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-different-subject] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-no-subject] tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_metadata_in_mcpserver_decorator tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[unregistered-application-type] [gw2] [ 70%] PASSED tests/shared/test_auth.py::test_oauth_with_jarm tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[client_uri] [gw2] [ 70%] PASSED tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[client_uri] tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[logo_uri] [gw38] [ 70%] PASSED tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[unregistered-application-type] tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[empty-application-type] [gw38] [ 70%] PASSED tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[empty-application-type] tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[null-application-type] [gw2] [ 70%] PASSED tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[logo_uri] tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[tos_uri] [gw2] [ 70%] PASSED tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[tos_uri] [gw35] [ 70%] PASSED tests/server/test_sse_security.py::test_sse_post_with_a_malformed_session_id_returns_400 tests/server/test_sse_security.py::test_sse_post_with_a_disallowed_host_is_rejected_before_session_lookup [gw21] [ 70%] PASSED tests/server/mcpserver/test_resolve.py::test_an_answer_without_the_echoed_state_is_reasked_not_consumed tests/server/mcpserver/test_resolve.py::test_recorded_answer_containing_a_lone_surrogate_survives_to_later_rounds [gw26] [ 70%] PASSED tests/server/mcpserver/test_server.py::test_static_resource_raising_unexpected_exception_is_logged_once_at_error_with_its_traceback tests/server/mcpserver/test_server.py::test_resource_template_raising_unexpected_exception_is_logged_once_at_error_with_its_traceback [gw39] [ 70%] PASSED tests/server/mcpserver/test_tool_manager.py::TestToolMetadata::test_metadata_in_mcpserver_decorator [gw31] [ 70%] PASSED tests/examples/test_stories.py::test_story[apps-server-http-asgi-in-body] [gw4] [ 70%] PASSED tests/server/test_stdio.py::test_stdio_server_round_trips_messages_over_injected_streams tests/server/test_stdio.py::test_stdio_server_invalid_utf8 tests/examples/test_stories.py::test_story[extensions-server-in-memory-in-body] tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[empty-redirect-uris] [gw38] [ 70%] PASSED tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[null-application-type] tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[unimplemented-auth-method] [gw38] [ 70%] PASSED tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[unimplemented-auth-method] [gw4] [ 70%] PASSED tests/server/test_stdio.py::test_stdio_server_invalid_utf8 tests/server/test_otel.py::test_extracts_trace_context_from_meta [gw39] [ 70%] PASSED tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[empty-redirect-uris] tests/shared/test_auth.py::test_client_information_without_echoed_metadata_still_parses tests/server/test_stdio.py::test_stdio_server_takes_stdin_off_the_descriptor_table_while_serving [gw12] [ 70%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[origin-no-match] tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[origin-wildcard-base-mismatch] [gw39] [ 70%] PASSED tests/shared/test_auth.py::test_client_information_without_echoed_metadata_still_parses [gw35] [ 70%] PASSED tests/server/test_sse_security.py::test_sse_post_with_a_disallowed_host_is_rejected_before_session_lookup tests/shared/test_auth.py::test_every_request_metadata_field_exists_on_the_client_record [gw21] [ 70%] PASSED tests/server/mcpserver/test_resolve.py::test_recorded_answer_containing_a_lone_surrogate_survives_to_later_rounds [gw37] [ 70%] PASSED tests/server/test_request_state_boundary.py::test_a_non_string_principal_claim_is_rejected_with_the_frozen_error[object] tests/server/mcpserver/test_resolve.py::test_resolver_elicitation_seals_and_completes_on_a_fully_default_server [gw39] [ 70%] PASSED tests/shared/test_auth.py::test_every_request_metadata_field_exists_on_the_client_record tests/shared/test_auth.py::test_a_registration_response_without_a_client_id_is_rejected tests/server/test_request_state_boundary.py::test_the_wire_error_never_varies_by_cause_and_logs_never_leak_secrets [gw33] [ 70%] PASSED tests/server/test_request_state_boundary.py::test_a_principal_binding_that_raises_fails_the_unseal_with_the_frozen_rejection [gw39] [ 70%] PASSED tests/shared/test_auth.py::test_a_registration_response_without_a_client_id_is_rejected tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[grant_types-null] tests/server/test_request_state_boundary.py::test_two_mints_for_the_same_principal_carry_different_salted_principal_claims [gw42] [ 70%] PASSED tests/server/test_otel.py::test_extracts_trace_context_from_meta [gw39] [ 70%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[grant_types-null] tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[redirect_uris-empty-string] tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[grant_types-empty-string] [gw39] [ 71%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[grant_types-empty-string] [gw3] [ 71%] PASSED tests/server/test_subscriptions.py::test_raising_unsubscribe_does_not_skip_stream_cleanup tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[response_types-null] tests/server/test_subscriptions.py::test_subscription_limit_rejects_further_streams_pre_ack [gw42] [ 71%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[redirect_uris-empty-string] [gw21] [ 71%] PASSED tests/server/mcpserver/test_resolve.py::test_resolver_elicitation_seals_and_completes_on_a_fully_default_server [gw26] [ 71%] PASSED tests/server/mcpserver/test_server.py::test_resource_template_raising_unexpected_exception_is_logged_once_at_error_with_its_traceback tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[application_type-null] [gw12] [ 71%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[origin-wildcard-base-mismatch] [gw39] [ 71%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[response_types-null] tests/server/mcpserver/test_resolve.py::test_sample_resolver_injects_result[legacy] [gw33] [ 71%] PASSED tests/server/test_request_state_boundary.py::test_two_mints_for_the_same_principal_carry_different_salted_principal_claims tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[origin-exact] tests/server/mcpserver/test_server.py::test_read_resource_wraps_a_crash_as_unexpected_resource_error_chained_to_the_original tests/server/test_request_state_boundary.py::test_two_servers_sharing_a_key_reject_each_others_state_via_the_name_audience tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[response_types-empty-string] [gw3] [ 71%] PASSED tests/server/test_subscriptions.py::test_subscription_limit_rejects_further_streams_pre_ack [gw42] [ 71%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[application_type-null] [gw12] [ 71%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[origin-exact] [gw39] [ 71%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[response_types-empty-string] tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[application_type-empty-string] [gw42] [ 71%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[application_type-empty-string] [gw26] [ 71%] PASSED tests/server/mcpserver/test_server.py::test_read_resource_wraps_a_crash_as_unexpected_resource_error_chained_to_the_original tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[token_endpoint_auth_method-null] tests/server/mcpserver/test_server.py::test_custom_resource_subclass_crash_is_wrapped_and_logged_like_a_function_resource [gw31] [ 71%] PASSED tests/examples/test_stories.py::test_story[extensions-server-in-memory-in-body] [gw30] [ 71%] PASSED tests/docs/test_translations.py::test_stage_overlays_translations_injects_notices_and_rewrites_api_links [gw42] [ 71%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[token_endpoint_auth_method-null] tests/examples/test_stories.py::test_story[extensions-server-http-asgi-in-body] tests/docs/test_translations.py::test_stage_serves_an_outdated_translation_exactly_as_generated_and_a_missing_one_in_english tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[token_endpoint_auth_method-empty-string] [gw42] [ 71%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[token_endpoint_auth_method-empty-string] tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[scope-null] [gw42] [ 71%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[scope-null] [gw10] [ 71%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[same-client-no-subject] [gw21] [ 71%] PASSED tests/server/mcpserver/test_resolve.py::test_sample_resolver_injects_result[legacy] tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[scope-empty-string] tests/server/mcpserver/test_resolve.py::test_sample_resolver_injects_result[auto] [gw42] [ 71%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[scope-empty-string] tests/shared/test_auth.py::test_a_placeholder_client_id_is_a_missing_client_id [gw42] [ 71%] PASSED tests/shared/test_auth.py::test_a_placeholder_client_id_is_a_missing_client_id [gw13] [ 71%] PASSED tests/server/test_stdio.py::test_a_refused_claim_releases_the_stream_it_already_took tests/server/test_stdio.py::test_the_claim_engages_even_when_stderr_is_closed [gw33] [ 71%] PASSED tests/server/test_request_state_boundary.py::test_two_servers_sharing_a_key_reject_each_others_state_via_the_name_audience [gw21] [ 71%] PASSED tests/server/mcpserver/test_resolve.py::test_sample_resolver_injects_result[auto] tests/server/test_request_state_boundary.py::test_audience_presence_drift_is_rejected_in_both_directions tests/server/mcpserver/test_resolve.py::test_list_roots_resolver_injects_result[legacy] [gw26] [ 71%] PASSED tests/server/mcpserver/test_server.py::test_custom_resource_subclass_crash_is_wrapped_and_logged_like_a_function_resource [gw31] [ 71%] PASSED tests/examples/test_stories.py::test_story[extensions-server-http-asgi-in-body] [gw4] [ 71%] PASSED tests/server/test_stdio.py::test_stdio_server_takes_stdin_off_the_descriptor_table_while_serving tests/server/mcpserver/test_server.py::test_static_resource_raising_resource_not_found_error_is_invalid_params_logged_at_info tests/examples/test_stories.py::test_story[subscriptions-server-in-memory-modern] [gw8] [ 71%] PASSED tests/server/test_runner.py::test_dual_era_loop_a_notifications_meta_never_opens_the_log_gate tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup] tests/server/test_runner.py::test_dual_era_loop_modern_server_notifications_ride_the_pipe [gw8] [ 71%] PASSED tests/server/test_runner.py::test_dual_era_loop_modern_server_notifications_ride_the_pipe tests/server/test_runner.py::test_dual_era_loop_modern_refuses_server_initiated_requests [gw21] [ 71%] PASSED tests/server/mcpserver/test_resolve.py::test_list_roots_resolver_injects_result[legacy] [gw8] [ 71%] PASSED tests/server/test_runner.py::test_dual_era_loop_modern_refuses_server_initiated_requests tests/server/test_runner.py::test_dual_era_loop_initialize_during_an_in_flight_modern_request_is_refused tests/server/mcpserver/test_resolve.py::test_list_roots_resolver_injects_result[auto] [gw8] [ 71%] PASSED tests/server/test_runner.py::test_dual_era_loop_initialize_during_an_in_flight_modern_request_is_refused tests/server/test_runner.py::test_dual_era_loop_maps_unmapped_handler_exceptions_like_the_modern_http_entry [gw26] [ 71%] PASSED tests/server/mcpserver/test_server.py::test_static_resource_raising_resource_not_found_error_is_invalid_params_logged_at_info tests/server/mcpserver/test_server.py::test_deliberate_resource_error_passes_its_message_through_and_is_logged_at_info [gw21] [ 71%] PASSED tests/server/mcpserver/test_resolve.py::test_list_roots_resolver_injects_result[auto] tests/server/mcpserver/test_resolve.py::test_mixed_kinds_batch_into_one_round [gw31] [ 71%] PASSED tests/examples/test_stories.py::test_story[subscriptions-server-in-memory-modern] [gw4] [ 71%] PASSED tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup] tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup2] [gw33] [ 71%] PASSED tests/server/test_request_state_boundary.py::test_audience_presence_drift_is_rejected_in_both_directions [gw21] [ 71%] PASSED tests/server/mcpserver/test_resolve.py::test_mixed_kinds_batch_into_one_round tests/server/mcpserver/test_resolve.py::test_sampling_tool_without_client_capability_is_a_protocol_error [gw8] [ 71%] PASSED tests/server/test_runner.py::test_dual_era_loop_maps_unmapped_handler_exceptions_like_the_modern_http_entry tests/server/test_runner.py::test_dual_era_loop_raise_exceptions_reraises_unmapped_modern_handler_exceptions [gw21] [ 71%] PASSED tests/server/mcpserver/test_resolve.py::test_sampling_tool_without_client_capability_is_a_protocol_error [gw37] [ 71%] PASSED tests/server/test_request_state_boundary.py::test_the_wire_error_never_varies_by_cause_and_logs_never_leak_secrets [gw26] [ 71%] PASSED tests/server/mcpserver/test_server.py::test_deliberate_resource_error_passes_its_message_through_and_is_logged_at_info [gw8] [ 71%] PASSED tests/server/test_runner.py::test_dual_era_loop_raise_exceptions_reraises_unmapped_modern_handler_exceptions tests/server/mcpserver/test_server.py::test_prompt_raising_unexpected_exception_is_logged_once [gw4] [ 71%] PASSED tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup2] tests/server/test_runner.py::test_dual_era_loop_custom_method_with_mis_shaped_envelope_values_still_routes tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup2_destroys_target] [gw8] [ 71%] PASSED tests/server/test_runner.py::test_dual_era_loop_custom_method_with_mis_shaped_envelope_values_still_routes tests/server/test_runner.py::test_has_modern_envelope_keys_on_the_protocol_version_key [gw8] [ 71%] PASSED tests/server/test_runner.py::test_has_modern_envelope_keys_on_the_protocol_version_key [gw13] [ 71%] PASSED tests/server/test_stdio.py::test_the_claim_engages_even_when_stderr_is_closed tests/server/test_stdio.py::test_stdio_server_serves_in_place_when_the_diversion_cannot_be_opened [gw26] [ 71%] PASSED tests/server/mcpserver/test_server.py::test_prompt_raising_unexpected_exception_is_logged_once tests/server/mcpserver/test_server.py::test_call_tool_wraps_a_crash_as_unexpected_tool_error_chained_to_the_original [gw4] [ 71%] PASSED tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup2_destroys_target] tests/server/test_stdio.py::test_stdio_server_exits_cleanly_when_the_stdin_restore_fails [gw26] [ 71%] PASSED tests/server/mcpserver/test_server.py::test_call_tool_wraps_a_crash_as_unexpected_tool_error_chained_to_the_original [gw13] [ 71%] PASSED tests/server/test_stdio.py::test_stdio_server_serves_in_place_when_the_diversion_cannot_be_opened tests/server/test_stdio.py::test_a_degraded_session_does_not_close_the_sys_stream_it_served [gw4] [ 71%] PASSED tests/server/test_stdio.py::test_stdio_server_exits_cleanly_when_the_stdin_restore_fails tests/server/test_stdio.py::test_stdio_server_takes_stdout_off_the_descriptor_table_while_serving tests/server/test_request_state.py::test_a_structurally_malformed_token_is_rejected[garbage-after-prefix] tests/server/test_request_state.py::test_a_policy_with_neither_keys_nor_codec_is_rejected tests/server/test_request_state_boundary.py::test_state_minted_in_the_future_is_rejected_beyond_the_sixty_second_skew [gw44] [ 71%] PASSED tests/server/test_request_state.py::test_a_policy_with_neither_keys_nor_codec_is_rejected [gw27] [ 71%] PASSED tests/server/test_request_state.py::test_a_structurally_malformed_token_is_rejected[garbage-after-prefix] [gw30] [ 71%] PASSED tests/docs/test_translations.py::test_stage_serves_an_outdated_translation_exactly_as_generated_and_a_missing_one_in_english tests/server/test_request_state_boundary.py::test_lone_surrogate_principal_binds_and_verifies tests/shared/test_auth_utils.py::test_resource_url_from_server_url_preserves_query tests/server/test_request_state.py::test_a_mixed_ring_of_bytes_bytearray_and_str_entries_still_works tests/docs/test_translations.py::test_stage_keeps_showing_the_generated_code_block_after_its_english_changes_until_the_page_is_retranslated tests/shared/test_auth.py::test_client_with_no_registered_redirect_uris_cannot_resolve_a_redirect[unspecified-absent] [gw27] [ 71%] PASSED tests/shared/test_auth_utils.py::test_resource_url_from_server_url_preserves_query [gw36] [ 71%] PASSED tests/server/test_request_state.py::test_a_mixed_ring_of_bytes_bytearray_and_str_entries_still_works tests/shared/test_auth_utils.py::test_resource_url_from_server_url_preserves_port tests/server/test_request_state.py::test_authenticated_principal_is_none_without_an_auth_context tests/shared/test_dispatcher.py::test_send_raw_request_with_timeout_raises_mcperror_request_timeout[jsonrpc] [gw44] [ 72%] PASSED tests/shared/test_auth.py::test_client_with_no_registered_redirect_uris_cannot_resolve_a_redirect[unspecified-absent] [gw27] [ 72%] PASSED tests/shared/test_auth_utils.py::test_resource_url_from_server_url_preserves_port tests/shared/test_auth.py::test_client_with_no_registered_redirect_uris_cannot_resolve_a_redirect[unspecified-empty] tests/shared/test_auth_utils.py::test_resource_url_from_server_url_lowercase_scheme_and_host [gw41] [ 72%] PASSED tests/server/test_request_state.py::test_authenticated_principal_is_none_without_an_auth_context [gw27] [ 72%] PASSED tests/shared/test_auth_utils.py::test_resource_url_from_server_url_lowercase_scheme_and_host tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_dict_str_typed [gw44] [ 72%] PASSED tests/shared/test_auth.py::test_client_with_no_registered_redirect_uris_cannot_resolve_a_redirect[unspecified-empty] [gw36] [ 72%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_with_timeout_raises_mcperror_request_timeout[jsonrpc] tests/shared/test_auth_utils.py::test_resource_url_from_server_url_handles_pydantic_urls tests/shared/test_auth.py::test_client_with_no_registered_redirect_uris_cannot_resolve_a_redirect[specified-absent] [gw19] [ 72%] PASSED tests/server/test_request_state_boundary.py::test_lone_surrogate_principal_binds_and_verifies tests/shared/test_dispatcher.py::test_notify_invokes_peer_on_notify[direct] tests/shared/test_dispatcher.py::test_ctx_progress_invokes_caller_on_progress_callback[direct] tests/shared/test_context.py::test_base_context_meta_holds_supplied_request_params_meta [gw44] [ 72%] PASSED tests/shared/test_auth.py::test_client_with_no_registered_redirect_uris_cannot_resolve_a_redirect[specified-absent] [gw27] [ 72%] PASSED tests/shared/test_auth_utils.py::test_resource_url_from_server_url_handles_pydantic_urls [gw36] [ 72%] PASSED tests/shared/test_dispatcher.py::test_notify_invokes_peer_on_notify[direct] tests/shared/test_auth_utils.py::test_check_resource_allowed_identical_urls tests/shared/test_auth.py::test_client_with_no_registered_redirect_uris_cannot_resolve_a_redirect[specified-empty] tests/shared/test_dispatcher.py::test_notify_invokes_peer_on_notify[jsonrpc] [gw19] [ 72%] PASSED tests/shared/test_context.py::test_base_context_meta_holds_supplied_request_params_meta [gw44] [ 72%] PASSED tests/shared/test_auth.py::test_client_with_no_registered_redirect_uris_cannot_resolve_a_redirect[specified-empty] tests/shared/test_auth.py::test_request_metadata_restricts_application_type_to_the_values_the_sdk_sends tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[{"v": 1, "outcomes": []}] [gw41] [ 72%] PASSED tests/shared/test_dispatcher.py::test_ctx_progress_invokes_caller_on_progress_callback[direct] tests/shared/test_dispatcher.py::test_ctx_progress_invokes_caller_on_progress_callback[jsonrpc] tests/shared/test_context_streams.py::test_sync_close_closes_the_underlying_streams [gw5] [ 72%] PASSED tests/server/mcpserver/test_resolve.py::test_decode_state_tolerates_malformed_request_state[{"v": 1, "outcomes": []}] tests/shared/test_dispatcher.py::test_direct_send_raw_request_and_notify_raise_runtimeerror_when_no_peer_connected tests/server/test_request_state_boundary.py::test_an_off_set_input_required_result_without_state_passes_through_untouched [gw44] [ 72%] PASSED tests/shared/test_auth.py::test_request_metadata_restricts_application_type_to_the_values_the_sdk_sends tests/shared/test_auth.py::test_request_metadata_requires_at_least_one_redirect_uri [gw44] [ 72%] PASSED tests/shared/test_auth.py::test_request_metadata_requires_at_least_one_redirect_uri [gw19] [ 72%] PASSED tests/shared/test_context_streams.py::test_sync_close_closes_the_underlying_streams tests/shared/test_dispatcher.py::test_send_raw_request_returns_result_from_peer_on_request[direct] [gw27] [ 72%] PASSED tests/shared/test_auth_utils.py::test_check_resource_allowed_identical_urls tests/shared/test_auth_utils.py::test_check_resource_allowed_different_schemes [gw27] [ 72%] PASSED tests/shared/test_auth_utils.py::test_check_resource_allowed_different_schemes tests/shared/test_auth_utils.py::test_check_resource_allowed_different_domains [gw27] [ 72%] PASSED tests/shared/test_auth_utils.py::test_check_resource_allowed_different_domains tests/shared/test_auth_utils.py::test_check_resource_allowed_different_ports [gw27] [ 72%] PASSED tests/shared/test_auth_utils.py::test_check_resource_allowed_different_ports [gw5] [ 72%] PASSED tests/shared/test_dispatcher.py::test_direct_send_raw_request_and_notify_raise_runtimeerror_when_no_peer_connected tests/shared/test_dispatcher.py::test_direct_close_makes_run_return [gw41] [ 72%] PASSED tests/shared/test_dispatcher.py::test_ctx_progress_invokes_caller_on_progress_callback[jsonrpc] tests/shared/test_dispatcher.py::test_ctx_progress_is_noop_when_caller_supplied_no_callback[direct] [gw41] [ 72%] PASSED tests/shared/test_dispatcher.py::test_ctx_progress_is_noop_when_caller_supplied_no_callback[direct] tests/shared/test_dispatcher.py::test_ctx_progress_is_noop_when_caller_supplied_no_callback[jsonrpc] [gw46] [ 72%] PASSED tests/server/mcpserver/test_server.py::TestServerTools::test_tool_structured_output_dict_str_typed tests/shared/test_dispatcher.py::test_ctx_request_id_exposes_inbound_id[jsonrpc] [gw46] [ 72%] PASSED tests/shared/test_dispatcher.py::test_ctx_request_id_exposes_inbound_id[jsonrpc] tests/shared/test_dispatcher.py::test_direct_send_raw_request_wraps_non_mcperror_exception_as_internal_error_with_cause [gw19] [ 72%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_returns_result_from_peer_on_request[direct] tests/shared/test_dispatcher.py::test_send_raw_request_returns_result_from_peer_on_request[jsonrpc] [gw36] [ 72%] PASSED tests/shared/test_dispatcher.py::test_notify_invokes_peer_on_notify[jsonrpc] tests/shared/test_dispatcher.py::test_ctx_send_raw_request_round_trips_to_calling_side[direct] [gw36] [ 72%] PASSED tests/shared/test_dispatcher.py::test_ctx_send_raw_request_round_trips_to_calling_side[direct] tests/shared/test_dispatcher.py::test_ctx_send_raw_request_round_trips_to_calling_side[jsonrpc] [gw36] [ 72%] PASSED tests/shared/test_dispatcher.py::test_ctx_send_raw_request_round_trips_to_calling_side[jsonrpc] tests/shared/test_dispatcher.py::test_ctx_send_raw_request_raises_nobackchannelerror_when_transport_disallows[direct] [gw36] [ 72%] PASSED tests/shared/test_dispatcher.py::test_ctx_send_raw_request_raises_nobackchannelerror_when_transport_disallows[direct] [gw41] [ 72%] PASSED tests/shared/test_dispatcher.py::test_ctx_progress_is_noop_when_caller_supplied_no_callback[jsonrpc] [gw5] [ 72%] PASSED tests/shared/test_dispatcher.py::test_direct_close_makes_run_return tests/shared/test_dispatcher.py::test_send_raw_request_honors_caller_supplied_request_id_verbatim_typed[direct] [gw5] [ 72%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_honors_caller_supplied_request_id_verbatim_typed[direct] [gw7] [ 72%] PASSED tests/server/test_request_state_boundary.py::test_an_off_set_input_required_result_without_state_passes_through_untouched tests/shared/test_dispatcher.py::test_supplied_numeric_string_id_collides_with_its_int_twin[jsonrpc] [gw7] [ 72%] PASSED tests/shared/test_dispatcher.py::test_supplied_numeric_string_id_collides_with_its_int_twin[jsonrpc] tests/shared/test_dispatcher.py::test_notify_intercept_sees_every_notification_and_consumes_on_true[direct] [gw25] [ 72%] PASSED tests/server/test_request_state_boundary.py::test_state_minted_in_the_future_is_rejected_beyond_the_sixty_second_skew tests/shared/test_auth_utils.py::test_check_resource_allowed_path_boundary_matching [gw25] [ 72%] PASSED tests/shared/test_auth_utils.py::test_check_resource_allowed_path_boundary_matching tests/shared/test_auth_utils.py::test_check_resource_allowed_trailing_slash_handling [gw25] [ 72%] PASSED tests/shared/test_auth_utils.py::test_check_resource_allowed_trailing_slash_handling tests/shared/test_auth_utils.py::test_check_resource_allowed_case_insensitive_origin [gw19] [ 72%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_returns_result_from_peer_on_request[jsonrpc] tests/shared/test_dispatcher.py::test_send_raw_request_reraises_mcperror_from_handler_unchanged[direct] [gw19] [ 72%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_reraises_mcperror_from_handler_unchanged[direct] tests/shared/test_dispatcher.py::test_ctx_send_raw_request_raises_nobackchannelerror_when_transport_disallows[jsonrpc] [gw36] [ 72%] PASSED tests/shared/test_dispatcher.py::test_ctx_send_raw_request_raises_nobackchannelerror_when_transport_disallows[jsonrpc] tests/shared/test_dispatcher.py::test_ctx_notify_invokes_calling_side_on_notify[direct] tests/shared/test_dispatcher.py::test_raising_on_progress_callback_is_logged_and_request_still_succeeds[direct] [gw46] [ 72%] PASSED tests/shared/test_dispatcher.py::test_direct_send_raw_request_wraps_non_mcperror_exception_as_internal_error_with_cause tests/shared/test_dispatcher.py::test_direct_send_raw_request_issued_before_peer_run_blocks_until_peer_ready [gw46] [ 72%] PASSED tests/shared/test_dispatcher.py::test_direct_send_raw_request_issued_before_peer_run_blocks_until_peer_ready tests/shared/test_dispatcher.py::test_direct_send_raw_request_before_run_raises_runtimeerror [gw46] [ 72%] PASSED tests/shared/test_dispatcher.py::test_direct_send_raw_request_before_run_raises_runtimeerror tests/shared/test_dispatcher.py::test_direct_send_raw_request_to_never_run_peer_honors_timeout tests/server/test_runner.py::test_runner_on_notify_server_direction_spec_method_routes_to_a_registered_handler tests/shared/test_dispatcher.py::test_send_raw_request_reraises_mcperror_from_handler_unchanged[jsonrpc] [gw19] [ 72%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_reraises_mcperror_from_handler_unchanged[jsonrpc] tests/shared/test_dispatcher.py::test_send_raw_request_maps_validation_error_to_invalid_params[direct] [gw4] [ 72%] PASSED tests/server/test_stdio.py::test_stdio_server_takes_stdout_off_the_descriptor_table_while_serving tests/server/test_stdio.py::test_stdio_server_diverts_stdout_to_the_null_device_when_stderr_is_unusable [gw7] [ 72%] PASSED tests/shared/test_dispatcher.py::test_notify_intercept_sees_every_notification_and_consumes_on_true[direct] tests/shared/test_dispatcher.py::test_notify_intercept_sees_every_notification_and_consumes_on_true[jsonrpc] [gw7] [ 72%] PASSED tests/shared/test_dispatcher.py::test_notify_intercept_sees_every_notification_and_consumes_on_true[jsonrpc] tests/shared/test_dispatcher.py::test_notify_intercept_completes_before_a_later_response_resolves[direct] tests/shared/test_auth.py::test_invalid_non_empty_url_still_rejected [gw44] [ 72%] PASSED tests/shared/test_auth.py::test_invalid_non_empty_url_still_rejected tests/shared/test_auth_utils.py::test_resource_url_from_server_url_removes_fragment [gw44] [ 72%] PASSED tests/shared/test_auth_utils.py::test_resource_url_from_server_url_removes_fragment [gw36] [ 72%] PASSED tests/shared/test_dispatcher.py::test_ctx_notify_invokes_calling_side_on_notify[direct] [gw46] [ 72%] PASSED tests/shared/test_dispatcher.py::test_direct_send_raw_request_to_never_run_peer_honors_timeout tests/shared/test_dispatcher.py::test_direct_request_parked_waiting_for_peer_run_is_woken_by_peer_close [gw19] [ 72%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_maps_validation_error_to_invalid_params[direct] tests/shared/test_dispatcher.py::test_send_raw_request_maps_validation_error_to_invalid_params[jsonrpc] tests/shared/test_dispatcher.py::test_send_raw_request_honors_caller_supplied_request_id_verbatim_typed[jsonrpc] [gw5] [ 72%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_honors_caller_supplied_request_id_verbatim_typed[jsonrpc] tests/shared/test_dispatcher.py::test_send_raw_request_with_in_flight_request_id_raises_and_frees_id_on_completion[direct] [gw5] [ 72%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_with_in_flight_request_id_raises_and_frees_id_on_completion[direct] tests/shared/test_dispatcher.py::test_send_raw_request_with_in_flight_request_id_raises_and_frees_id_on_completion[jsonrpc] [gw5] [ 72%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_with_in_flight_request_id_raises_and_frees_id_on_completion[jsonrpc] tests/shared/test_dispatcher.py::test_minted_ids_skip_a_caller_supplied_id_still_in_flight[direct] tests/server/test_request_state.py::test_seal_unseal_round_trips_any_payload[raw-binary] [gw25] [ 72%] PASSED tests/shared/test_auth_utils.py::test_check_resource_allowed_case_insensitive_origin tests/shared/test_auth_utils.py::test_check_resource_allowed_empty_paths [gw25] [ 72%] PASSED tests/shared/test_auth_utils.py::test_check_resource_allowed_empty_paths tests/shared/test_context.py::test_base_context_forwards_transport_and_cancel_requested [gw25] [ 73%] PASSED tests/shared/test_context.py::test_base_context_forwards_transport_and_cancel_requested tests/shared/test_context.py::test_base_context_can_send_request_reflects_dispatch_context_closed_state [gw25] [ 73%] PASSED tests/shared/test_context.py::test_base_context_can_send_request_reflects_dispatch_context_closed_state tests/shared/test_context.py::test_base_context_send_raw_request_and_notify_forward_to_dispatch_context [gw19] [ 73%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_maps_validation_error_to_invalid_params[jsonrpc] [gw45] [ 73%] PASSED tests/server/test_request_state.py::test_seal_unseal_round_trips_any_payload[raw-binary] tests/shared/test_exceptions.py::test_url_elicitation_required_error_custom_message [gw45] [ 73%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_custom_message tests/shared/test_exceptions.py::test_url_elicitation_required_error_from_error_data [gw45] [ 73%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_from_error_data tests/shared/test_exceptions.py::test_url_elicitation_required_error_from_error_data_wrong_code [gw45] [ 73%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_from_error_data_wrong_code tests/shared/test_exceptions.py::test_url_elicitation_required_error_serialization_roundtrip [gw45] [ 73%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_serialization_roundtrip tests/shared/test_exceptions.py::test_url_elicitation_required_error_data_contains_elicitations [gw45] [ 73%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_data_contains_elicitations tests/shared/test_exceptions.py::test_url_elicitation_required_error_inherits_from_mcp_error [gw45] [ 73%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_inherits_from_mcp_error tests/shared/test_exceptions.py::test_url_elicitation_required_error_exception_message [gw45] [ 73%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_exception_message tests/shared/test_exceptions.py::test_from_jsonrpc_error_preserves_code_message_and_data [gw28] [ 73%] PASSED tests/server/test_runner.py::test_runner_on_notify_server_direction_spec_method_routes_to_a_registered_handler tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[io.modelcontextprotocol/ui] [gw28] [ 73%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[io.modelcontextprotocol/ui] tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/my_ext] [gw28] [ 73%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/my_ext] tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.x-y.z2/n.a-b_c] [gw28] [ 73%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.x-y.z2/n.a-b_c] tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[example/x] [gw41] [ 73%] PASSED tests/shared/test_dispatcher.py::test_raising_on_progress_callback_is_logged_and_request_still_succeeds[direct] tests/shared/test_dispatcher.py::test_raising_on_progress_callback_is_logged_and_request_still_succeeds[jsonrpc] [gw25] [ 73%] PASSED tests/shared/test_context.py::test_base_context_send_raw_request_and_notify_forward_to_dispatch_context [gw28] [ 73%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[example/x] tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[a/b] [gw45] [ 73%] PASSED tests/shared/test_exceptions.py::test_from_jsonrpc_error_preserves_code_message_and_data tests/shared/test_context.py::test_base_context_report_progress_invokes_caller_on_progress [gw25] [ 73%] PASSED tests/shared/test_context.py::test_base_context_report_progress_invokes_caller_on_progress [gw7] [ 73%] PASSED tests/shared/test_dispatcher.py::test_notify_intercept_completes_before_a_later_response_resolves[direct] tests/shared/test_dispatcher.py::test_notify_intercept_completes_before_a_later_response_resolves[jsonrpc] [gw7] [ 73%] PASSED tests/shared/test_dispatcher.py::test_notify_intercept_completes_before_a_later_response_resolves[jsonrpc] tests/shared/test_dispatcher.py::test_a_raising_notify_intercept_is_contained_and_passes_the_frame_through[direct] [gw5] [ 73%] PASSED tests/shared/test_dispatcher.py::test_minted_ids_skip_a_caller_supplied_id_still_in_flight[direct] tests/shared/test_dispatcher.py::test_minted_ids_skip_a_caller_supplied_id_still_in_flight[jsonrpc] [gw5] [ 73%] PASSED tests/shared/test_dispatcher.py::test_minted_ids_skip_a_caller_supplied_id_still_in_flight[jsonrpc] [gw28] [ 73%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[a/b] tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/9start] [gw28] [ 73%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/9start] tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[noprefix] tests/server/test_runner.py::test_aclose_shielded_runs_callbacks_under_outer_cancellation [gw28] [ 73%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[noprefix] tests/server/test_runner.py::test_a_handshake_era_custom_result_gains_no_discriminator tests/interaction/test_coverage.py::test_deferral_reasons_cite_existing_paths tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[-foo/bar] tests/server/test_runner.py::test_dual_era_loop_modern_notification_dispatches_at_the_served_version [gw34] [ 73%] PASSED tests/server/test_runner.py::test_aclose_shielded_runs_callbacks_under_outer_cancellation [gw7] [ 73%] PASSED tests/shared/test_dispatcher.py::test_a_raising_notify_intercept_is_contained_and_passes_the_frame_through[direct] tests/shared/test_dispatcher.py::test_a_raising_notify_intercept_is_contained_and_passes_the_frame_through[jsonrpc] [gw0] [ 73%] PASSED tests/interaction/test_coverage.py::test_deferral_reasons_cite_existing_paths tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[] [gw28] [ 73%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[-foo/bar] [gw34] [ 73%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[] [gw4] [ 73%] PASSED tests/server/test_stdio.py::test_stdio_server_diverts_stdout_to_the_null_device_when_stderr_is_unusable tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-https://mcp.example:443/mcp] tests/server/test_runner.py::test_dual_era_loop_unsupported_modern_version_gets_the_supported_list [gw20] [ 73%] PASSED tests/server/test_runner.py::test_dual_era_loop_modern_notification_dispatches_at_the_served_version tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[None] tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[301] [gw15] [ 73%] PASSED tests/server/test_runner.py::test_a_handshake_era_custom_result_gains_no_discriminator tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[a..b/x] [gw41] [ 73%] PASSED tests/shared/test_dispatcher.py::test_raising_on_progress_callback_is_logged_and_request_still_succeeds[jsonrpc] tests/shared/test_dispatcher.py::test_ctx_message_metadata_is_none_when_transport_attaches_nothing[direct] [gw41] [ 73%] PASSED tests/shared/test_dispatcher.py::test_ctx_message_metadata_is_none_when_transport_attaches_nothing[direct] [gw34] [ 73%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[None] tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[42] [gw15] [ 73%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[a..b/x] tests/shared/test_dispatcher.py::test_ctx_message_metadata_is_none_when_transport_attaches_nothing[jsonrpc] [gw0] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-https://mcp.example:443/mcp] tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://other.example/mcp] tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo-/x] [gw0] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://other.example/mcp] tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://mcp.example:8080/mcp] [gw20] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[301] tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[302] [gw34] [ 73%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[42] tests/shared/test_httpx_utils.py::test_default_client_uses_mcp_timeouts_and_httpx_redirect_default tests/server/test_runner.py::test_dual_era_loop_treats_a_read_stream_closed_before_the_first_request_as_end_of_input [gw41] [ 73%] PASSED tests/shared/test_dispatcher.py::test_ctx_message_metadata_is_none_when_transport_attaches_nothing[jsonrpc] [gw16] [ 73%] PASSED tests/server/test_runner.py::test_dual_era_loop_unsupported_modern_version_gets_the_supported_list [gw0] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://mcp.example:8080/mcp] [gw20] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[302] tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[303] [gw15] [ 73%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo-/x] tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[9foo/x] tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://sub.mcp.example/mcp] tests/shared/test_httpx_utils.py::test_userinfo_of_the_configured_url_kept_by_a_relative_location_is_followed [gw20] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[303] [gw9] [ 73%] PASSED tests/server/test_runner.py::test_dual_era_loop_treats_a_read_stream_closed_before_the_first_request_as_end_of_input [gw0] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://sub.mcp.example/mcp] [gw15] [ 73%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[9foo/x] tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[307] tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[https://mcp.example:8443/mcp] tests/shared/test_inbound.py::test_envelope_rung_accepts_pair_only_envelope_without_client_info [gw20] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[307] tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[308] [gw0] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[https://mcp.example:8443/mcp] [gw16] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_userinfo_of_the_configured_url_kept_by_a_relative_location_is_followed tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[ftp://mcp.example/mcp] tests/shared/test_httpx_utils.py::test_request_within_origin_returns_a_read_response tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/-bar] [gw15] [ 73%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/-bar] tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/bar-] [gw9] [ 73%] PASSED tests/shared/test_inbound.py::test_envelope_rung_accepts_pair_only_envelope_without_client_info tests/server/test_runner.py::test_runner_custom_method_with_handler_is_still_gated_before_initialize [gw20] [ 73%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[308] tests/shared/test_httpx_utils.py::test_https_to_http_on_same_host_is_outside_origin [gw7] [ 73%] PASSED tests/shared/test_dispatcher.py::test_a_raising_notify_intercept_is_contained_and_passes_the_frame_through[jsonrpc] [gw0] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[ftp://mcp.example/mcp] tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[301] tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[params-none] [gw16] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_request_within_origin_returns_a_read_response [gw15] [ 74%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/bar-] tests/shared/test_exceptions.py::test_url_elicitation_required_error_create_with_single_elicitation tests/shared/test_httpx_utils.py::test_sse_within_origin_sends_event_stream_headers_and_caller_headers [gw9] [ 74%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[params-none] tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/] [gw20] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_https_to_http_on_same_host_is_outside_origin tests/shared/test_httpx_utils.py::test_client_configured_to_follow_redirects_is_still_scoped_to_origin [gw0] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[301] tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[302] [gw1] [ 74%] PASSED tests/server/test_runner.py::test_runner_custom_method_with_handler_is_still_gated_before_initialize tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[null] tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-none] tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[different-issuer] [gw15] [ 74%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/] [gw20] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_client_configured_to_follow_redirects_is_still_scoped_to_origin [gw7] [ 74%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_create_with_single_elicitation tests/server/test_stateless_mode.py::test_from_envelope_connection_ping_raises_no_back_channel [gw9] [ 74%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-none] [gw0] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[302] tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[/bar] [gw16] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_sse_within_origin_sends_event_stream_headers_and_caller_headers tests/shared/test_httpx_utils.py::test_auth_flow_requests_are_not_redirected [gw34] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_default_client_uses_mcp_timeouts_and_httpx_redirect_default tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-non-mapping] tests/shared/test_httpx_utils.py::test_redirect_past_the_client_max_redirects_budget_is_handed_back_unfollowed [gw1] [ 74%] PASSED tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[null] tests/shared/test_inbound.py::test_version_rung_rejects_unsupported_with_data_shape [gw1] [ 74%] PASSED tests/shared/test_inbound.py::test_version_rung_rejects_unsupported_with_data_shape [gw43] [ 74%] PASSED tests/server/test_stateless_mode.py::test_from_envelope_connection_ping_raises_no_back_channel tests/shared/test_httpx_utils.py::test_custom_parameters tests/shared/test_inbound.py::test_version_rung_data_reflects_supplied_supported_list [gw15] [ 74%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[/bar] [gw9] [ 74%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-non-mapping] tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[int] tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/ba r] tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_when_body_omits_the_named_param tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[=?base64?Zm9v?=-=?base64?PT9iYXNlNjQ/Wm05dj89?=-True] [gw1] [ 74%] PASSED tests/shared/test_inbound.py::test_version_rung_data_reflects_supplied_supported_list tests/shared/test_inbound.py::test_unsupported_protocol_version_rejection_is_the_version_rung_standalone [gw20] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_redirect_past_the_client_max_redirects_budget_is_handed_back_unfollowed [gw9] [ 74%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[int] tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[null] [gw16] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_auth_flow_requests_are_not_redirected tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-params] [gw1] [ 74%] PASSED tests/shared/test_inbound.py::test_unsupported_protocol_version_rejection_is_the_version_rung_standalone tests/shared/test_inbound.py::test_header_rung_does_not_reject_when_headers_arg_is_none [gw24] [ 74%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[=?base64?Zm9v?=-=?base64?PT9iYXNlNjQ/Wm05dj89?=-True] [gw43] [ 74%] PASSED tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_when_body_omits_the_named_param tests/shared/test_inbound.py::test_all_rungs_pass_yields_route [gw9] [ 74%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[null] tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[list] tests/shared/test_inbound.py::test_error_code_http_status_table[-32602-400] tests/server/test_runner.py::test_on_request_rejects_initialize_at_modern_version_with_method_not_found [gw1] [ 74%] PASSED tests/shared/test_inbound.py::test_header_rung_does_not_reject_when_headers_arg_is_none tests/shared/test_inbound.py::test_header_rung_passes_when_header_matches_envelope [gw15] [ 74%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/ba r] [gw9] [ 74%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[list] tests/shared/test_inbound.py::test_non_string_protocol_version_over_http_still_rejects_at_the_header_rung [gw1] [ 74%] PASSED tests/shared/test_inbound.py::test_header_rung_passes_when_header_matches_envelope tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[mismatch] [gw29] [ 74%] PASSED tests/server/test_runner.py::test_on_request_rejects_initialize_at_modern_version_with_method_not_found [gw16] [ 74%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-params] tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-meta] [gw16] [ 74%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-meta] tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-version] [gw43] [ 74%] PASSED tests/shared/test_inbound.py::test_all_rungs_pass_yields_route tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[initialize] tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[with internal space] [gw9] [ 74%] PASSED tests/shared/test_inbound.py::test_non_string_protocol_version_over_http_still_rejects_at_the_header_rung [gw16] [ 74%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-version] tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-client-caps] [gw24] [ 74%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32602-400] tests/shared/test_inbound.py::test_error_code_http_status_table[-32020-400] [gw24] [ 74%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32020-400] tests/shared/test_inbound.py::test_error_code_http_status_table[-32021-400] [gw24] [ 74%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32021-400] [gw43] [ 74%] PASSED tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[initialize] tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[myorg/custom] tests/server/test_session.py::test_send_request_without_related_id_routes_to_standalone_channel [gw6] [ 74%] PASSED tests/server/test_session.py::test_send_request_without_related_id_routes_to_standalone_channel [gw1] [ 74%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[mismatch] tests/shared/test_inbound.py::test_error_code_http_status_table[-32022-400] [gw16] [ 74%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-client-caps] tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?gA==?=] [gw29] [ 74%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[with internal space] tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[] [gw29] [ 74%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[] [gw34] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_custom_parameters [gw24] [ 74%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32022-400] tests/shared/test_inbound.py::test_error_code_http_status_table[-32601-404] [gw43] [ 74%] PASSED tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[myorg/custom] tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[does/not/exist] tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[ edge-ws ] tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-http://mcp.example/mcp/] [gw6] [ 74%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?gA==?=] tests/shared/test_inbound.py::test_name_bearing_methods_table_matches_spec [gw29] [ 74%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[ edge-ws ] [gw24] [ 74%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32601-404] tests/shared/test_inbound.py::test_error_code_http_status_covers_every_ladder_code tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[r\xe9sum\xe9] [gw43] [ 74%] PASSED tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[does/not/exist] [gw6] [ 74%] PASSED tests/shared/test_inbound.py::test_name_bearing_methods_table_matches_spec tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[none] [gw24] [ 74%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_covers_every_ladder_code tests/shared/test_inbound.py::test_verdict_dataclasses_are_frozen [gw34] [ 74%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-http://mcp.example/mcp/] tests/shared/test_inbound.py::test_ladder_first_failure_wins [gw29] [ 74%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[r\xe9sum\xe9] tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[a\r\nb] tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-/other/path] tests/server/test_session.py::test_send_request_skips_the_surface_gate_when_method_absent_at_version [gw24] [ 74%] PASSED tests/shared/test_inbound.py::test_verdict_dataclasses_are_frozen [gw29] [ 74%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[a\r\nb] [gw40] [ 75%] PASSED tests/server/test_session.py::test_send_request_skips_the_surface_gate_when_method_absent_at_version [gw43] [ 75%] PASSED tests/shared/test_inbound.py::test_ladder_first_failure_wins tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[=?base64?Zm9v?=] tests/shared/test_inbound.py::test_error_code_http_status_table[-32700-400] [gw6] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[none] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-integer] [gw29] [ 75%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[=?base64?Zm9v?=] [gw6] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-properties] [gw10] [ 75%] PASSED tests/server/test_sse_security.py::test_sse_post_requires_the_credential_that_created_the_session[different-issuer] tests/shared/test_inbound.py::test_decode_header_value_passes_none_and_plain_through [gw43] [ 75%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32700-400] [gw34] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-/other/path] tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example:8080/mcp-http://mcp.example:8080/v2/mcp] [gw40] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-integer] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-boolean] [gw29] [ 75%] PASSED tests/shared/test_inbound.py::test_decode_header_value_passes_none_and_plain_through [gw6] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-properties] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[properties-non-mapping] tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-mismatch] [gw10] [ 75%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-mismatch] [gw34] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example:8080/mcp-http://mcp.example:8080/v2/mcp] [gw40] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-boolean] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[two-distinct] tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-case-mismatch] [gw6] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[properties-non-mapping] [gw40] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[two-distinct] tests/server/test_stateless_mode.py::test_send_ping_raises_no_back_channel [gw11] [ 75%] PASSED tests/server/test_stateless_mode.py::test_send_ping_raises_no_back_channel tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-annotation] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping-prop] [gw10] [ 75%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-case-mismatch] tests/shared/test_inbound.py::test_header_rung_rejects_missing_method_header [gw6] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-annotation] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-enum-is-data] [gw40] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping-prop] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[nested-on-properties-chain] [gw10] [ 75%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_method_header tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[tools/call-name] tests/server/test_request_state_boundary.py::test_a_complete_result_crosses_the_boundary_untouched [gw11] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-enum-is-data] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[ref-is-not-dereferenced] [gw40] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[nested-on-properties-chain] [gw10] [ 75%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[tools/call-name] tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[prompts/get-name] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-default-is-data] tests/server/test_request_state_boundary.py::test_an_explicit_policy_audience_overrides_the_server_name_default [gw11] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[ref-is-not-dereferenced] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[malformed-or-empty-applicators-ignored] [gw40] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-default-is-data] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-examples-is-data] [gw37] [ 75%] PASSED tests/server/test_request_state_boundary.py::test_a_complete_result_crosses_the_boundary_untouched tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[non-string] [gw10] [ 75%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[prompts/get-name] tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[resources/read-uri] [gw11] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[malformed-or-empty-applicators-ignored] tests/server/test_runner.py::test_runner_on_notify_drops_before_init_and_unknown_methods [gw37] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[non-string] [gw10] [ 75%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[resources/read-uri] [gw40] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-examples-is-data] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[empty] [gw11] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[empty] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[space] tests/shared/test_inbound.py::test_header_rung_decodes_base64_sentinel_before_comparing_name [gw10] [ 75%] PASSED tests/shared/test_inbound.py::test_header_rung_decodes_base64_sentinel_before_comparing_name tests/server/test_runner.py::test_runner_middleware_returning_error_data_produces_jsonrpc_error tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[oversized-int-header] [gw37] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[oversized-int-header] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-object] [gw37] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-object] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-array] [gw33] [ 75%] PASSED tests/server/test_request_state_boundary.py::test_an_explicit_policy_audience_overrides_the_server_name_default [gw11] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[space] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[colon] [gw22] [ 75%] PASSED tests/server/test_runner.py::test_runner_middleware_returning_error_data_produces_jsonrpc_error [gw37] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-array] [gw11] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[colon] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[non-ascii] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[oversized-int-type] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[dependentSchemas] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-null] [gw11] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[non-ascii] [gw37] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-null] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-number] [gw37] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-number] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[array-type] tests/server/test_transport_security.py::test_client_disconnect_before_request_body_is_replayed [gw22] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[dependentSchemas] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[else] tests/server/test_sse_security.py::test_sse_post_body_over_the_limit_returns_413 [gw33] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[oversized-int-type] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[missing-type] [gw33] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[missing-type] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-same-case] [gw37] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[array-type] [gw35] [ 75%] PASSED tests/server/test_sse_security.py::test_sse_post_body_over_the_limit_returns_413 [gw22] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[else] [gw33] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-same-case] [gw18] [ 75%] PASSED tests/server/test_transport_security.py::test_client_disconnect_before_request_body_is_replayed tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[not-a-mapping] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[if] [gw22] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[if] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[items] tests/server/test_validation.py::test_check_sampling_tools_capability_returns_false_when_tools_none tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-diff-case] [gw33] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-diff-case] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[propertyNames] [gw35] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[propertyNames] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[properties-chain-not-restored-below-an-applicator] [gw47] [ 75%] PASSED tests/server/test_validation.py::test_check_sampling_tools_capability_returns_false_when_tools_none tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[then] [gw22] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[items] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[not] [gw33] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[properties-chain-not-restored-below-an-applicator] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-root-schema] [gw35] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[then] tests/server/mcpserver/test_server.py::test_static_resource_raising_mcp_error_surfaces_code_and_data_to_client tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[unevaluatedItems] [gw22] [ 76%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[not] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[oneOf] tests/shared/test_inbound.py::test_mcp_param_headers_omits_absent_or_null_arguments [gw22] [ 76%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[oneOf] [gw35] [ 76%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[unevaluatedItems] [gw47] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_omits_absent_or_null_arguments tests/shared/test_inbound.py::test_mcp_param_headers_reads_nested_argument_path [gw33] [ 76%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-root-schema] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-across-nesting-levels] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[patternProperties] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[unevaluatedProperties] [gw47] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_reads_nested_argument_path [gw33] [ 76%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-across-nesting-levels] [gw18] [ 76%] PASSED tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[not-a-mapping] tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[input_schema2] [gw18] [ 76%] PASSED tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[input_schema2] tests/shared/test_inbound.py::test_mcp_param_headers_renders_primitive_types_per_spec [gw18] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_renders_primitive_types_per_spec tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[plain-ascii] [gw18] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[plain-ascii] [gw22] [ 76%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[patternProperties] tests/shared/test_inbound.py::test_mcp_param_headers_omits_when_nested_path_is_broken [gw47] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_omits_when_nested_path_is_broken tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[plain-literal] tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[non-ascii] [gw14] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_static_resource_raising_mcp_error_surfaces_code_and_data_to_client [gw18] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[non-ascii] tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[edge-whitespace] [gw47] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[plain-literal] tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[valid-sentinel] [gw35] [ 76%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[unevaluatedProperties] tests/shared/test_inbound.py::test_schema_walk_applicator_keywords_match_the_pinned_reject_cases [gw35] [ 76%] PASSED tests/shared/test_inbound.py::test_schema_walk_applicator_keywords_match_the_pinned_reject_cases tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_reports_dotted_path_for_nested_property [gw35] [ 76%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_reports_dotted_path_for_nested_property tests/shared/test_inbound.py::test_x_mcp_header_map_keys_top_level_and_nested_properties_by_path tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[missing-padding] [gw18] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[edge-whitespace] tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[control-char] [gw47] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[valid-sentinel] [gw35] [ 76%] PASSED tests/shared/test_inbound.py::test_x_mcp_header_map_keys_top_level_and_nested_properties_by_path tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[empty-sentinel] [gw14] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[missing-padding] [gw46] [ 76%] PASSED tests/shared/test_dispatcher.py::test_direct_request_parked_waiting_for_peer_run_is_woken_by_peer_close [gw18] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[control-char] tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[non-alphabet-chars] tests/shared/test_dispatcher.py::test_direct_send_raw_request_after_local_close_raises_and_notify_is_dropped [gw47] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[empty-sentinel] tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[missing-prefix-is-literal] tests/server/test_subscriptions.py::test_backlog_overflow_ends_the_stream_and_frees_its_slot [gw14] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[non-alphabet-chars] [gw47] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[missing-prefix-is-literal] [gw46] [ 76%] PASSED tests/shared/test_dispatcher.py::test_direct_send_raw_request_after_local_close_raises_and_notify_is_dropped tests/shared/test_dispatcher.py::test_direct_inbound_after_peer_close_refuses_requests_and_drops_notifications tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[non-canonical-trailing-bits] tests/server/test_validation.py::test_validate_tool_use_result_messages_raises_when_previous_message_has_no_tool_use [gw14] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[non-canonical-trailing-bits] [gw46] [ 76%] PASSED tests/shared/test_dispatcher.py::test_direct_inbound_after_peer_close_refuses_requests_and_drops_notifications [gw17] [ 76%] PASSED tests/server/test_validation.py::test_validate_tool_use_result_messages_raises_when_previous_message_has_no_tool_use tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[invalid-utf8] tests/examples/test_stories.py::test_story[subscriptions-server-http-asgi-modern] tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[long-zero-fraction] tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[origin-wildcard-match] tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[policy_uri] [gw14] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[invalid-utf8] tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[extra-grant-type] tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_missing_header_for_present_argument [gw32] [ 76%] PASSED tests/issues/test_1363_race_condition_streamable_http.py::test_race_condition_message_router_async_for [gw2] [ 76%] PASSED tests/shared/test_auth.py::test_optional_url_empty_string_coerced_to_none[policy_uri] [gw12] [ 76%] PASSED tests/server/test_transport_security.py::test_validate_request_checks_host_then_origin[origin-wildcard-match] [gw17] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[long-zero-fraction] [gw14] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_missing_header_for_present_argument tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[hook-bug] tests/shared/test_inbound.py::test_mcp_param_headers_omits_values_with_no_scalar_rendering tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[real-fraction] [gw38] [ 76%] PASSED tests/shared/test_auth.py::test_client_information_accepts_server_substituted_metadata[extra-grant-type] tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_orphan_header_for_absent_or_null_argument[absent] tests/issues/test_141_resource_templates.py::test_resource_template_edge_cases tests/shared/test_jsonrpc_dispatcher.py::test_ctx_send_raw_request_tags_outbound_with_server_message_metadata [gw12] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_omits_values_with_no_scalar_rendering tests/shared/test_inbound.py::test_find_duplicated_routing_header_detects_repeats_of_routing_headers_only [gw3] [ 76%] PASSED tests/server/test_subscriptions.py::test_backlog_overflow_ends_the_stream_and_frees_its_slot [gw17] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[real-fraction] [gw14] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_orphan_header_for_absent_or_null_argument[absent] [gw13] [ 76%] PASSED tests/server/test_stdio.py::test_a_degraded_session_does_not_close_the_sys_stream_it_served tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_orphan_header_for_absent_or_null_argument[null] [gw12] [ 76%] PASSED tests/shared/test_inbound.py::test_find_duplicated_routing_header_detects_repeats_of_routing_headers_only tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_absent_argument_with_no_header tests/server/test_stdio.py::test_mcpserver_run_stdio_serves_until_stdin_closes [gw38] [ 76%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_send_raw_request_tags_outbound_with_server_message_metadata tests/shared/test_jsonrpc_dispatcher.py::test_courtesy_cancel_on_timeout_tags_outbound_with_server_message_metadata tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[scientific-notation-never-numeric] [gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_absent_argument_with_no_header tests/shared/test_jsonrpc_dispatcher.py::test_concurrent_send_raw_requests_correlate_by_id_when_responses_arrive_out_of_order [gw14] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_orphan_header_for_absent_or_null_argument[null] tests/shared/test_inbound.py::test_validate_mcp_param_headers_matches_header_names_case_insensitively [gw17] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[scientific-notation-never-numeric] tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[different-value] [gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_matches_header_names_case_insensitively [gw38] [ 76%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_courtesy_cancel_on_timeout_tags_outbound_with_server_message_metadata [gw12] [ 76%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_concurrent_send_raw_requests_correlate_by_id_when_responses_arrive_out_of_order tests/shared/test_jsonrpc_dispatcher.py::test_handler_raising_exception_sends_code_zero_with_str_message tests/shared/test_inbound.py::test_validate_mcp_param_headers_ignores_undeclared_mcp_param_headers tests/shared/test_jsonrpc_dispatcher.py::test_dispatch_context_request_with_dropped_resumption_hints_still_sends_courtesy_cancel [gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_ignores_undeclared_mcp_param_headers [gw32] [ 76%] PASSED tests/issues/test_141_resource_templates.py::test_resource_template_edge_cases tests/shared/test_inbound.py::test_validate_mcp_param_headers_validates_nothing_for_an_invalid_annotation_schema [gw17] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[different-value] tests/issues/test_141_resource_templates.py::test_resource_template_client_interaction tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[negative] [gw13] [ 76%] PASSED tests/server/test_stdio.py::test_mcpserver_run_stdio_serves_until_stdin_closes tests/server/test_stdio.py::test_mcpserver_run_stdio_runs_lifespan_cleanup_after_stdin_closes [gw38] [ 76%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_dispatch_context_request_with_dropped_resumption_hints_still_sends_courtesy_cancel tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_sends_courtesy_cancellation_on_the_wire tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[redirect_uris-null] [gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_validates_nothing_for_an_invalid_annotation_schema tests/shared/test_inbound.py::test_validate_mcp_param_headers_reads_nested_argument_paths [gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_reads_nested_argument_paths [gw17] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[negative] tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-exact] tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_booleans_against_true_false_rendering [gw38] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_sends_courtesy_cancellation_on_the_wire [gw39] [ 77%] PASSED tests/shared/test_auth.py::test_client_information_reads_a_placeholder_member_as_an_omitted_key[redirect_uris-null] tests/shared/test_jsonrpc_dispatcher.py::test_timeout_with_resumption_hints_suppresses_the_courtesy_cancellation tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_blocked_request_write_still_sends_courtesy_cancellation [gw32] [ 77%] PASSED tests/issues/test_141_resource_templates.py::test_resource_template_client_interaction [gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_booleans_against_true_false_rendering tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[exact] [gw17] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-exact] [gw13] [ 77%] PASSED tests/server/test_stdio.py::test_mcpserver_run_stdio_runs_lifespan_cleanup_after_stdin_closes tests/issues/test_152_resource_mime_type.py::test_mcpserver_resource_mime_type tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-off-by-one] [gw39] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_timeout_with_resumption_hints_suppresses_the_courtesy_cancellation tests/server/test_stdio.py::test_mcpserver_run_stdio_serves_a_modern_connection [gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[exact] tests/shared/test_jsonrpc_dispatcher.py::test_cancel_on_abandon_false_suppresses_the_courtesy_cancellation_on_timeout [gw38] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_blocked_request_write_still_sends_courtesy_cancellation tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_delivered_request_write_sends_courtesy_cancellation [gw17] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-off-by-one] [gw39] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancel_on_abandon_false_suppresses_the_courtesy_cancellation_on_timeout tests/shared/test_jsonrpc_dispatcher.py::test_transport_write_timeout_propagates_raw_when_no_request_timeout_is_set [gw31] [ 77%] PASSED tests/examples/test_stories.py::test_story[subscriptions-server-http-asgi-modern] [gw12] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_raising_exception_sends_code_zero_with_str_message [gw13] [ 77%] PASSED tests/server/test_stdio.py::test_mcpserver_run_stdio_serves_a_modern_connection tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_interrupt_mode_interrupts_handler_and_writes_no_response tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_recognized_header_supplied_more_than_once [gw31] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_recognized_header_supplied_more_than_once [gw32] [ 77%] PASSED tests/issues/test_152_resource_mime_type.py::test_mcpserver_resource_mime_type tests/issues/test_152_resource_mime_type.py::test_lowlevel_resource_mime_type [gw39] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_write_timeout_propagates_raw_when_no_request_timeout_is_set tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_courtesy_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] tests/server/test_subscriptions.py::test_in_memory_bus_fans_out_until_unsubscribed tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_header_exceeding_the_int_conversion_limit tests/shared/test_auth.py::test_client_information_that_is_not_an_object_still_fails_the_parse [gw42] [ 77%] PASSED tests/shared/test_auth.py::test_client_information_that_is_not_an_object_still_fails_the_parse tests/shared/test_jsonrpc_dispatcher.py::test_request_write_failure_propagates_and_leaves_no_pending_entry [gw31] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_header_exceeding_the_int_conversion_limit [gw32] [ 77%] PASSED tests/issues/test_152_resource_mime_type.py::test_lowlevel_resource_mime_type tests/server/mcpserver/test_resolve.py::test_roots_tool_without_client_capability_is_a_protocol_error [gw13] [ 77%] PASSED tests/server/test_subscriptions.py::test_in_memory_bus_fans_out_until_unsubscribed tests/server/test_subscriptions.py::test_in_memory_bus_keeps_equal_callables_distinct tests/issues/test_1574_resource_uri_validation.py::test_relative_uri_roundtrip tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integral_float_bodies_numerically [gw31] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integral_float_bodies_numerically [gw13] [ 77%] PASSED tests/server/test_subscriptions.py::test_in_memory_bus_keeps_equal_callables_distinct [gw42] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_request_write_failure_propagates_and_leaves_no_pending_entry tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[non-canonical-trailing-bits] tests/shared/test_jsonrpc_dispatcher.py::test_request_write_on_torn_down_transport_raises_connection_closed [gw31] [ 77%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[non-canonical-trailing-bits] tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[missing-padding] tests/server/mcpserver/test_server.py::test_call_tool_keeps_a_deliberate_tool_error_a_plain_tool_error [gw42] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_request_write_on_torn_down_transport_raises_connection_closed [gw21] [ 77%] PASSED tests/server/mcpserver/test_resolve.py::test_roots_tool_without_client_capability_is_a_protocol_error [gw31] [ 77%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[missing-padding] tests/shared/test_inbound.py::test_validate_mcp_param_headers_union_typed_annotation_invalidates_the_whole_tool [gw32] [ 77%] PASSED tests/issues/test_1574_resource_uri_validation.py::test_relative_uri_roundtrip tests/issues/test_1574_resource_uri_validation.py::test_custom_scheme_uri_roundtrip tests/shared/test_jsonrpc_dispatcher.py::test_notify_after_connection_close_is_dropped_with_debug_log tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_notification_metadata tests/server/test_runner.py::test_initialize_after_modern_data_arms [gw8] [ 77%] PASSED tests/server/test_runner.py::test_initialize_after_modern_data_arms [gw31] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_union_typed_annotation_invalidates_the_whole_tool tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_the_clients_own_rendering_of_large_integral_floats tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_in_flight_request_is_teed_to_on_notify [gw32] [ 77%] PASSED tests/issues/test_1574_resource_uri_validation.py::test_custom_scheme_uri_roundtrip [gw31] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_the_clients_own_rendering_of_large_integral_floats [gw26] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_call_tool_keeps_a_deliberate_tool_error_a_plain_tool_error tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_before_run_raises_runtimeerror tests/server/test_stdio.py::test_a_second_stdio_server_on_the_same_process_streams_is_refused [gw21] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_notification_metadata tests/shared/test_jsonrpc_dispatcher.py::test_ctx_progress_with_only_progress_value_omits_total_and_message [gw8] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_in_flight_request_is_teed_to_on_notify tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[spawned] [gw21] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_progress_with_only_progress_value_omits_total_and_message [gw26] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_before_run_raises_runtimeerror tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_after_connection_close_raises_connection_closed tests/shared/test_jsonrpc_dispatcher.py::test_ctx_after_handler_return_reports_closed_and_drops_backchannel_traffic [gw8] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[spawned] tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[inline] [gw26] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_after_connection_close_raises_connection_closed tests/shared/test_jsonrpc_dispatcher.py::test_transport_exception_in_read_stream_is_logged_and_dropped [gw8] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[inline] tests/shared/test_jsonrpc_dispatcher.py::test_response_write_after_peer_drop_is_swallowed [gw21] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_after_handler_return_reports_closed_and_drops_backchannel_traffic tests/shared/test_jsonrpc_dispatcher.py::test_inline_methods_are_handled_before_next_message_is_dequeued [gw26] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_exception_in_read_stream_is_logged_and_dropped tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observes_transport_exceptions tests/shared/test_auth_utils.py::test_resource_url_from_server_url_preserves_path tests/shared/test_auth_utils.py::test_check_resource_allowed_hierarchical_matching [gw30] [ 77%] PASSED tests/docs/test_translations.py::test_stage_keeps_showing_the_generated_code_block_after_its_english_changes_until_the_page_is_retranslated [gw44] [ 77%] PASSED tests/shared/test_auth_utils.py::test_resource_url_from_server_url_preserves_path tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[int-cancel-for-string-request] [gw8] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_response_write_after_peer_drop_is_swallowed tests/shared/test_jsonrpc_dispatcher.py::test_cancel_outbound_after_write_stream_closed_is_swallowed tests/docs/test_translations.py::test_notice_links_climb_from_the_staged_page_to_the_english_page_and_this_sites_translations_page [gw30] [ 77%] PASSED tests/docs/test_translations.py::test_notice_links_climb_from_the_staged_page_to_the_english_page_and_this_sites_translations_page tests/docs/test_translations.py::test_stage_that_stops_part_way_leaves_no_titles_file_from_an_earlier_run [gw21] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_inline_methods_are_handled_before_next_message_is_dequeued tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_omits_empty_meta_and_empty_params_on_the_wire [gw27] [ 77%] PASSED tests/shared/test_auth_utils.py::test_check_resource_allowed_hierarchical_matching tests/shared/test_jsonrpc_dispatcher.py::test_notify_without_params_omits_params_key_on_the_wire [gw8] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancel_outbound_after_write_stream_closed_is_swallowed tests/shared/test_jsonrpc_dispatcher.py::test_resolve_pending_drops_outcome_when_waiter_stream_already_closed [gw26] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observes_transport_exceptions tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observer_raising_is_contained [gw44] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[int-cancel-for-string-request] tests/shared/test_jsonrpc_dispatcher.py::test_completed_handler_does_not_evict_reused_request_id_from_in_flight [gw27] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notify_without_params_omits_params_key_on_the_wire tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_request_is_answered_with_internal_error [gw21] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_omits_empty_meta_and_empty_params_on_the_wire tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_merges_progress_token_into_caller_meta [gw21] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_merges_progress_token_into_caller_meta [gw8] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_resolve_pending_drops_outcome_when_waiter_stream_already_closed [gw42] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notify_after_connection_close_is_dropped_with_debug_log tests/shared/test_dispatcher.py::test_ctx_notify_invokes_calling_side_on_notify[jsonrpc] [gw36] [ 77%] PASSED tests/shared/test_dispatcher.py::test_ctx_notify_invokes_calling_side_on_notify[jsonrpc] tests/shared/test_otel.py::test_client_and_server_spans [gw44] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_completed_handler_does_not_evict_reused_request_id_from_in_flight tests/shared/test_jsonrpc_dispatcher.py::test_duplicate_request_id_completion_of_first_handler_keeps_second_cancellable [gw44] [ 78%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_duplicate_request_id_completion_of_first_handler_keeps_second_cancellable tests/shared/test_jsonrpc_dispatcher.py::test_notify_on_torn_down_transport_is_dropped_with_debug_log tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_related_request_id_drops_resumption_hints_but_keeps_abandon_cancel tests/shared/test_dispatcher.py::test_send_raw_request_with_timeout_raises_mcperror_request_timeout[direct] tests/shared/test_dispatcher.py::test_ctx_request_id_exposes_inbound_id[direct] [gw44] [ 78%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_related_request_id_drops_resumption_hints_but_keeps_abandon_cancel tests/shared/test_jsonrpc_dispatcher.py::test_server_middleware_observes_cancelled_notification [gw19] [ 78%] PASSED tests/shared/test_dispatcher.py::test_send_raw_request_with_timeout_raises_mcperror_request_timeout[direct] tests/shared/test_path_security.py::test_contains_path_traversal[a/../b-False] tests/shared/test_dispatcher.py::test_direct_inbound_to_closed_never_run_peer_fails_with_connection_closed [gw46] [ 78%] PASSED tests/shared/test_dispatcher.py::test_direct_inbound_to_closed_never_run_peer_fails_with_connection_closed tests/shared/test_dispatcher.py::test_supplied_numeric_string_id_collides_with_its_int_twin[direct] [gw41] [ 78%] PASSED tests/shared/test_dispatcher.py::test_ctx_request_id_exposes_inbound_id[direct] tests/shared/test_path_security.py::test_contains_path_traversal[./../../etc-True] tests/shared/test_path_security.py::test_contains_path_traversal[a\\b\\c-False] [gw19] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/../b-False] [gw46] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a\\b\\c-False] tests/shared/test_path_security.py::test_contains_path_traversal[a/..\\..\\b-True] [gw46] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/..\\..\\b-True] tests/shared/test_path_security.py::test_is_absolute_path[relative/path-False] [gw26] [ 78%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observer_raising_is_contained tests/shared/test_jsonrpc_dispatcher.py::test_progress_notification_for_unknown_token_falls_through_to_on_notify [gw26] [ 78%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_progress_notification_for_unknown_token_falls_through_to_on_notify [gw44] [ 78%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_server_middleware_observes_cancelled_notification tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_with_caller_supplied_string_id_is_verbatim_on_the_wire [gw44] [ 78%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_with_caller_supplied_string_id_is_verbatim_on_the_wire tests/shared/test_context.py::test_base_context_satisfies_outbound_so_peer_mixin_works [gw25] [ 78%] PASSED tests/shared/test_context.py::test_base_context_satisfies_outbound_so_peer_mixin_works tests/shared/test_path_security.py::test_is_absolute_path[\\\\server\\share-True] [gw25] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\\\\server\\share-True] tests/shared/test_path_security.py::test_is_absolute_path[\\foo-True] tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[.leading/x] [gw28] [ 78%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[.leading/x] tests/shared/test_path_security.py::test_safe_join_rejects_absolute_part [gw5] [ 78%] PASSED tests/shared/test_dispatcher.py::test_supplied_numeric_string_id_collides_with_its_int_twin[direct] tests/shared/test_path_security.py::test_is_absolute_path[/-True] [gw5] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[/-True] tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../c-False] [gw19] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../c-False] tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../../c-False] [gw19] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../../c-False] tests/shared/test_path_security.py::test_contains_path_traversal[..-True] [gw19] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[..-True] [gw25] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\\foo-True] tests/shared/test_path_security.py::test_is_absolute_path[C:relative-True] tests/shared/test_path_security.py::test_is_absolute_path[/etc/passwd-True] [gw46] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[relative/path-False] tests/shared/test_path_security.py::test_is_absolute_path[file.txt-False] [gw46] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[file.txt-False] tests/shared/test_path_security.py::test_is_absolute_path[-False] [gw46] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[-False] [gw23] [ 78%] PASSED tests/server/test_runner.py::test_runner_on_notify_drops_before_init_and_unknown_methods tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[nested-non-primitive] tests/shared/test_extension.py::test_server_extension_module_reexports_shared_validator [gw45] [ 78%] PASSED tests/shared/test_extension.py::test_server_extension_module_reexports_shared_validator tests/shared/test_path_security.py::test_is_absolute_path[\u03a9:namespace-False] [gw45] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\u03a9:namespace-False] tests/shared/test_path_security.py::test_is_absolute_path[\xe9:foo-False] [gw45] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\xe9:foo-False] tests/shared/test_path_security.py::test_safe_join_simple tests/shared/test_path_security.py::test_is_absolute_path[.-False] [gw25] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[C:relative-True] tests/shared/test_path_security.py::test_is_absolute_path[x:y-True] [gw25] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[x:y-True] tests/shared/test_path_security.py::test_is_absolute_path[a:debug-True] [gw28] [ 78%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_absolute_part tests/shared/test_path_security.py::test_safe_join_rejects_absolute_in_later_part [gw28] [ 78%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_absolute_in_later_part tests/shared/test_path_security.py::test_contains_path_traversal[../etc-True] [gw19] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[../etc-True] tests/shared/test_path_security.py::test_contains_path_traversal[../../etc/passwd-True] [gw19] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[../../etc/passwd-True] [gw5] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[/etc/passwd-True] tests/shared/test_path_security.py::test_is_absolute_path[/a-True] [gw45] [ 78%] PASSED tests/shared/test_path_security.py::test_safe_join_simple tests/shared/test_path_security.py::test_safe_join_resolves_relative_base [gw25] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[a:debug-True] tests/shared/test_path_security.py::test_is_absolute_path[1:foo-False] [gw23] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[nested-non-primitive] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[$defs] [gw23] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[$defs] tests/shared/test_exceptions.py::test_url_elicitation_required_error_create_with_multiple_elicitations [gw7] [ 78%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_create_with_multiple_elicitations tests/shared/test_path_security.py::test_path_escape_error_is_value_error [gw7] [ 78%] PASSED tests/shared/test_path_security.py::test_path_escape_error_is_value_error tests/shared/test_peer.py::test_peer_sample_sends_create_message_and_returns_typed_result [gw7] [ 78%] PASSED tests/shared/test_peer.py::test_peer_sample_sends_create_message_and_returns_typed_result tests/shared/test_path_security.py::test_safe_join_rejects_windows_drive [gw28] [ 78%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_windows_drive tests/shared/test_path_security.py::test_safe_join_rejects_null_byte [gw27] [ 78%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_request_is_answered_with_internal_error tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_notification_drops_only_that_notification [gw45] [ 78%] PASSED tests/shared/test_path_security.py::test_safe_join_resolves_relative_base tests/shared/test_path_security.py::test_safe_join_rejects_dotdot_escape tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[additionalProperties] [gw23] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[additionalProperties] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[allOf] [gw5] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[/a-True] tests/shared/test_path_security.py::test_is_absolute_path[C:-True] [gw5] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[C:-True] [gw46] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[.-False] [gw28] [ 78%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_null_byte tests/shared/test_path_security.py::test_safe_join_rejects_null_byte_in_later_part [gw42] [ 78%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notify_on_torn_down_transport_is_dropped_with_debug_log tests/shared/test_jsonrpc_dispatcher.py::test_notification_handler_exception_is_contained tests/shared/test_peer.py::test_peer_sample_validates_result_alias_only [gw25] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[1:foo-False] tests/shared/test_path_security.py::test_is_absolute_path[C:\\Windows-True] [gw36] [ 78%] PASSED tests/shared/test_otel.py::test_client_and_server_spans tests/shared/test_otel.py::test_client_span_records_error_status_when_peer_answers_with_jsonrpc_error [gw45] [ 78%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_dotdot_escape tests/shared/test_path_security.py::test_safe_join_rejects_balanced_then_escape [gw7] [ 78%] PASSED tests/shared/test_peer.py::test_peer_sample_validates_result_alias_only tests/shared/test_peer.py::test_peer_sample_with_tools_returns_with_tools_result [gw28] [ 78%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_null_byte_in_later_part tests/shared/test_path_security.py::test_safe_join_rejects_symlink_escape [gw23] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[allOf] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[anyOf] [gw23] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[anyOf] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[contains] [gw5] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[C:\\Windows-True] tests/shared/test_path_security.py::test_is_absolute_path[c:/foo-True] [gw41] [ 79%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[./../../etc-True] tests/shared/test_path_security.py::test_contains_path_traversal[1.0..2.0-False] [gw41] [ 79%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[1.0..2.0-False] tests/shared/test_path_security.py::test_contains_path_traversal[foo..bar-False] [gw41] [ 79%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[foo..bar-False] tests/shared/test_path_security.py::test_contains_path_traversal[..foo-False] [gw41] [ 79%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[..foo-False] tests/shared/test_path_security.py::test_contains_path_traversal[foo..-False] [gw41] [ 79%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[foo..-False] tests/shared/test_path_security.py::test_contains_path_traversal[..\\etc-True] [gw41] [ 79%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[..\\etc-True] [gw7] [ 79%] PASSED tests/shared/test_peer.py::test_peer_sample_with_tools_returns_with_tools_result tests/shared/test_peer.py::test_peer_sample_with_tool_choice_only_returns_with_tools_result [gw45] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_balanced_then_escape [gw5] [ 79%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[c:/foo-True] [gw23] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[contains] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[contentSchema] [gw23] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[contentSchema] [gw7] [ 79%] PASSED tests/shared/test_peer.py::test_peer_sample_with_tool_choice_only_returns_with_tools_result [gw28] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_symlink_escape tests/shared/test_peer.py::test_peer_elicit_form_sends_elicitation_create_with_form_params [gw7] [ 79%] PASSED tests/shared/test_peer.py::test_peer_elicit_form_sends_elicitation_create_with_form_params [gw4] [ 79%] PASSED tests/server/test_stdio.py::test_a_second_stdio_server_on_the_same_process_streams_is_refused tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_resumption_token_returns_client_metadata_and_suppresses_abandon_cancel [gw36] [ 79%] PASSED tests/shared/test_otel.py::test_client_span_records_error_status_when_peer_answers_with_jsonrpc_error [gw4] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_resumption_token_returns_client_metadata_and_suppresses_abandon_cancel tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_projects_opts_headers_onto_message_metadata tests/shared/test_path_security.py::test_contains_path_traversal[a/b/c-False] tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[303] tests/shared/test_httpx_utils.py::test_redirect_location_with_userinfo_is_not_followed [gw0] [ 79%] PASSED tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[303] [gw4] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_projects_opts_headers_onto_message_metadata tests/shared/test_peer.py::test_peer_list_roots_sends_roots_list_and_returns_typed_result [gw20] [ 79%] PASSED tests/shared/test_httpx_utils.py::test_redirect_location_with_userinfo_is_not_followed tests/shared/test_request_clock.py::test_a_wait_that_began_before_the_clock_started_leaves_the_whole_budget[trio-mockclock] [gw36] [ 79%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/b/c-False] tests/shared/test_path_security.py::test_contains_path_traversal[readme.txt-False] [gw36] [ 79%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[readme.txt-False] tests/shared/test_path_security.py::test_contains_path_traversal[-False] tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[io.modelcontextprotocol/ui\n] [gw27] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_notification_drops_only_that_notification tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_with_bool_request_id_does_not_cancel_request_one [gw15] [ 79%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[io.modelcontextprotocol/ui\n] tests/shared/test_jsonrpc_dispatcher.py::test_response_with_string_id_correlates_to_int_keyed_pending_request [gw4] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_response_with_string_id_correlates_to_int_keyed_pending_request tests/shared/test_jsonrpc_dispatcher.py::test_error_response_with_string_id_correlates_to_int_keyed_pending_request [gw0] [ 79%] PASSED tests/shared/test_peer.py::test_peer_list_roots_sends_roots_list_and_returns_typed_result tests/shared/test_peer.py::test_peer_list_roots_with_meta_sends_meta_in_params tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[int] [gw20] [ 79%] PASSED tests/shared/test_request_clock.py::test_a_wait_that_began_before_the_clock_started_leaves_the_whole_budget[trio-mockclock] tests/shared/test_request_clock.py::test_the_clock_stops_and_resumes_on_asyncio tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?session_id=def456-def456] [gw27] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_with_bool_request_id_does_not_cancel_request_one tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_bool_token_or_bool_progress_does_not_fire_callback tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[header-absent] [gw36] [ 79%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[-False] tests/shared/test_path_security.py::test_contains_path_traversal[.-False] [gw36] [ 79%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[.-False] [gw4] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_error_response_with_string_id_correlates_to_int_keyed_pending_request tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_string_token_reaches_callback_for_int_keyed_request [gw0] [ 79%] PASSED tests/shared/test_peer.py::test_peer_list_roots_with_meta_sends_meta_in_params tests/shared/test_peer.py::test_peer_list_roots_is_deprecated_sep_2577 [gw9] [ 79%] PASSED tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[int] tests/shared/test_sse.py::test_sse_client_exception_handling [gw42] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notification_handler_exception_is_contained [gw27] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_bool_token_or_bool_progress_does_not_fire_callback tests/shared/test_jsonrpc_dispatcher.py::test_request_with_bool_meta_progress_token_is_not_adopted tests/shared/test_jsonrpc_dispatcher.py::test_spawned_notification_handlers_run_concurrently [gw15] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?session_id=def456-def456] tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc&session_id=def-abc] [gw15] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc&session_id=def-abc] [gw1] [ 79%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[header-absent] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/-/] [gw4] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_string_token_reaches_callback_for_int_keyed_request tests/shared/test_jsonrpc_dispatcher.py::test_coerce_request_id_passes_through_non_numeric_string_and_int [gw0] [ 79%] PASSED tests/shared/test_peer.py::test_peer_list_roots_is_deprecated_sep_2577 tests/shared/test_peer.py::test_dump_params_merges_meta_over_model_meta [gw0] [ 79%] PASSED tests/shared/test_peer.py::test_dump_params_merges_meta_over_model_meta tests/shared/test_peer.py::test_dump_params_serializes_meta_by_alias [gw1] [ 79%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/-/] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[http://example.com/messages/-ValueError] tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-both] [gw4] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_coerce_request_id_passes_through_non_numeric_string_and_int [gw42] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_spawned_notification_handlers_run_concurrently tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_request_metadata tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?other=value-None] [gw15] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?other=value-None] [gw0] [ 79%] PASSED tests/shared/test_peer.py::test_dump_params_serializes_meta_by_alias [gw1] [ 79%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[http://example.com/messages/-ValueError] tests/shared/test_peer.py::test_peer_notify_forwards_to_wrapped_outbound [gw16] [ 79%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-both] [gw27] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_request_with_bool_meta_progress_token_is_not_adopted tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[//example.com/messages/-ValueError] tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages-None] [gw0] [ 79%] PASSED tests/shared/test_peer.py::test_peer_notify_forwards_to_wrapped_outbound [gw15] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages-None] tests/shared/test_sse.py::test_extract_session_id_from_endpoint[-None] tests/shared/test_sse.py::test_sse_client_follows_redirect_within_origin_on_connect [gw1] [ 79%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[//example.com/messages/-ValueError] [gw42] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_request_metadata tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[ftp://example.com/messages/-ValueError] [gw15] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[-None] [gw1] [ 79%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[ftp://example.com/messages/-ValueError] tests/shared/test_sse.py::test_sse_client_on_session_created_not_called_when_no_session_id tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[plain] tests/shared/test_inbound.py::test_error_code_http_status_table[-32600-400] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/?param=value-ValueError] [gw9] [ 79%] PASSED tests/shared/test_sse.py::test_sse_client_exception_handling [gw16] [ 79%] PASSED tests/shared/test_sse.py::test_sse_client_follows_redirect_within_origin_on_connect tests/shared/test_sse.py::test_sse_client_does_not_follow_redirect_to_another_origin_on_connect tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-http://MCP.EXAMPLE:80/mcp/] [gw1] [ 79%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/?param=value-ValueError] tests/shared/test_sse.py::test_sse_client_basic_connection_mounted_app tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/#fragment-ValueError] [gw24] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[plain] [gw43] [ 80%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32600-400] [gw16] [ 80%] PASSED tests/shared/test_sse.py::test_sse_client_does_not_follow_redirect_to_another_origin_on_connect tests/shared/test_sse.py::test_sse_session_cleanup_on_disconnect tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?not base64!?=] [gw29] [ 80%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?not base64!?=] tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*] tests/shared/test_streamable_http.py::test_json_validation tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/json, text/*] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-string] [gw6] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-string] [gw2] [ 80%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[hook-bug] tests/shared/test_streamable_http.py::test_client_crash_handled [gw1] [ 80%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/#fragment-ValueError] [gw15] [ 80%] PASSED tests/shared/test_sse.py::test_sse_client_on_session_created_not_called_when_no_session_id [gw9] [ 80%] PASSED tests/shared/test_sse.py::test_sse_client_basic_connection_mounted_app tests/shared/test_sse.py::test_request_context_propagation tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-const-is-data] [gw34] [ 80%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-http://MCP.EXAMPLE:80/mcp/] tests/shared/test_streamable_http.py::test_session_termination tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[connection-closing] [gw24] [ 80%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/json, text/*] tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*;q=0.8] [gw43] [ 80%] PASSED tests/shared/test_streamable_http.py::test_json_validation tests/shared/test_streamable_http.py::test_json_parsing tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[dict-type] [gw34] [ 80%] PASSED tests/shared/test_streamable_http.py::test_session_termination tests/shared/test_streamable_http.py::test_response [gw43] [ 80%] PASSED tests/shared/test_streamable_http.py::test_json_parsing [gw38] [ 80%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_delivered_request_write_sends_courtesy_cancellation tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancelled_before_request_write_starts_sends_no_courtesy_cancellation [gw38] [ 80%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancelled_before_request_write_starts_sends_no_courtesy_cancellation tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[control-char] [gw11] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[control-char] [gw12] [ 80%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_interrupt_mode_interrupts_handler_and_writes_no_response tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_signal_mode_sets_event_and_drops_the_completed_handlers_result [gw40] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-const-is-data] tests/shared/test_streamable_http.py::test_standalone_stream_teardown_mid_listen_is_not_an_error [gw37] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[dict-type] tests/shared/test_streamable_http.py::test_method_not_allowed tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_at_symbol] tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_for_non_name_bearing_method [gw10] [ 80%] PASSED tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_for_non_name_bearing_method tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[single_character] [gw10] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[single_character] tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[max_length_128] [gw10] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[max_length_128] tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_empty_name [gw10] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_empty_name tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_name_exceeding_max_length [gw9] [ 80%] PASSED tests/shared/test_sse.py::test_request_context_propagation tests/shared/test_sse.py::test_request_context_isolation [gw29] [ 80%] PASSED tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*] tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*;q=0.9] [gw29] [ 80%] PASSED tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*;q=0.9] tests/shared/test_streamable_http.py::test_get_sse_stream [gw11] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_at_symbol] tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_trailing_newline] [gw34] [ 80%] PASSED tests/shared/test_streamable_http.py::test_response tests/shared/test_streamable_http.py::test_json_response [gw34] [ 80%] PASSED tests/shared/test_streamable_http.py::test_json_response tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dash [gw37] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dash tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dot [gw37] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dot tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dot [gw10] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_name_exceeding_max_length tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_spaces] [gw10] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_spaces] tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_commas] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[nested-bad-token] [gw16] [ 80%] PASSED tests/shared/test_sse.py::test_sse_session_cleanup_on_disconnect tests/shared/test_streamable_http.py::test_accept_header_validation tests/shared/test_streamable_http.py::test_json_response_accept_json_only [gw24] [ 80%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*;q=0.8] tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*;q=0.9, text/*;q=0.8] [gw24] [ 80%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*;q=0.9, text/*;q=0.8] tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/html] [gw24] [ 80%] PASSED tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/html] tests/shared/test_streamable_http.py::test_accept_header_incompatible[application/*] [gw11] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_trailing_newline] tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[max_length_with_trailing_newline] [gw29] [ 80%] PASSED tests/shared/test_streamable_http.py::test_get_sse_stream tests/shared/test_streamable_http.py::test_get_validation [gw10] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_commas] [gw43] [ 80%] PASSED tests/shared/test_streamable_http.py::test_method_not_allowed tests/shared/test_streamable_http.py::test_session_validation [gw37] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dot tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_logs_warnings [gw37] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_logs_warnings tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_no_logging_for_empty_warnings [gw37] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_no_logging_for_empty_warnings [gw16] [ 80%] PASSED tests/shared/test_streamable_http.py::test_accept_header_validation tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[prefixItems] [gw11] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[max_length_with_trailing_newline] tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_multiple_invalid_chars [gw33] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[nested-bad-token] tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_false_for_invalid_name [gw24] [ 80%] PASSED tests/shared/test_streamable_http.py::test_accept_header_incompatible[application/*] tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/*] [gw22] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[prefixItems] [gw43] [ 80%] PASSED tests/shared/test_streamable_http.py::test_session_validation tests/shared/test_streamable_http.py::test_session_id_pattern [gw11] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_multiple_invalid_chars tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_unicode_characters [gw16] [ 80%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*] tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*, text/*] tests/shared/test_tool_name_validation.py::test_edge_cases[mixed_valid_invalid] [gw29] [ 80%] PASSED tests/shared/test_streamable_http.py::test_get_validation [gw33] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_false_for_invalid_name [gw40] [ 80%] PASSED tests/shared/test_streamable_http.py::test_standalone_stream_teardown_mid_listen_is_not_an_error [gw43] [ 80%] PASSED tests/shared/test_streamable_http.py::test_session_id_pattern tests/shared/test_streamable_http.py::test_transport_whose_idle_period_ran_out_answers_as_terminated tests/shared/test_streamable_http.py::test_client_includes_protocol_version_header_after_init [gw34] [ 80%] PASSED tests/shared/test_streamable_http.py::test_json_response_accept_json_only tests/shared/test_streamable_http.py::test_json_response_missing_accept_header [gw34] [ 80%] PASSED tests/shared/test_streamable_http.py::test_json_response_missing_accept_header tests/shared/test_streamable_http.py::test_json_response_incorrect_accept_header [gw11] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_unicode_characters tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_logs_warnings_for_invalid_name tests/shared/test_streamable_http.py::test_standalone_stream_teardown_between_dequeues_is_not_an_error [gw40] [ 81%] PASSED tests/shared/test_streamable_http.py::test_standalone_stream_teardown_between_dequeues_is_not_an_error tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[simple_alphanumeric] [gw40] [ 81%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[simple_alphanumeric] tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_underscores] [gw40] [ 81%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_underscores] [gw22] [ 81%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[mixed_valid_invalid] [gw16] [ 81%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*, text/*] [gw24] [ 81%] PASSED tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/*] [gw33] [ 81%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_logs_warnings_for_invalid_name tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_no_warnings_for_clean_valid_name [gw30] [ 81%] PASSED tests/docs/test_translations.py::test_stage_that_stops_part_way_leaves_no_titles_file_from_an_earlier_run tests/docs/test_translations.py::test_stage_without_lang_stages_every_language_in_the_registry [gw43] [ 81%] PASSED tests/shared/test_streamable_http.py::test_transport_whose_idle_period_ran_out_answers_as_terminated tests/shared/test_uri_template.py::test_parse_literal_only [gw22] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_literal_only [gw34] [ 81%] PASSED tests/shared/test_streamable_http.py::test_json_response_incorrect_accept_header tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dashes] [gw40] [ 81%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dashes] tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dots] tests/shared/test_uri_template.py::test_is_template[file://docs/{name}-True] [gw6] [ 81%] PASSED tests/shared/test_streamable_http.py::test_client_crash_handled tests/shared/test_streamable_http.py::test_handle_sse_event_skips_empty_data [gw40] [ 81%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dots] [gw33] [ 81%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_no_warnings_for_clean_valid_name [gw6] [ 81%] PASSED tests/shared/test_streamable_http.py::test_handle_sse_event_skips_empty_data tests/shared/test_tool_name_validation.py::test_edge_cases[only_dots] tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_old_protocol_version [gw22] [ 81%] PASSED tests/shared/test_uri_template.py::test_is_template[file://docs/{name}-True] tests/shared/test_uri_template.py::test_is_template[file://docs/readme.txt-False] [gw22] [ 81%] PASSED tests/shared/test_uri_template.py::test_is_template[file://docs/readme.txt-False] [gw6] [ 81%] PASSED tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_old_protocol_version tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_unknown_protocol_version [gw33] [ 81%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[only_dots] tests/shared/test_uri_template.py::test_is_template[-False] [gw22] [ 81%] PASSED tests/shared/test_uri_template.py::test_is_template[-False] [gw6] [ 81%] PASSED tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_unknown_protocol_version tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[sentinel-lookalike] tests/shared/test_tool_name_validation.py::test_edge_cases[only_dashes] tests/shared/test_streamable_http.py::test_initialize_with_unknown_protocol_version_gets_no_priming_event [gw29] [ 81%] PASSED tests/shared/test_streamable_http.py::test_client_includes_protocol_version_header_after_init tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[missing-suffix-is-literal] tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[None] tests/shared/test_streamable_http.py::test_server_validates_protocol_version_header [gw33] [ 81%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[only_dashes] [gw47] [ 81%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[missing-suffix-is-literal] [gw35] [ 81%] PASSED tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[None] [gw18] [ 81%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[sentinel-lookalike] tests/shared/test_uri_template.py::test_is_template[{-False] tests/shared/test_uri_template.py::test_parse_all_operators[{&next}-&] tests/shared/test_uri_template.py::test_parse_all_operators[{+path}-+] [gw6] [ 81%] PASSED tests/shared/test_streamable_http.py::test_initialize_with_unknown_protocol_version_gets_no_priming_event tests/shared/test_streamable_http.py::test_server_close_sse_stream_via_context [gw9] [ 81%] PASSED tests/shared/test_sse.py::test_request_context_isolation [gw35] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{&next}-&] tests/shared/test_sse.py::test_sse_message_id_coercion [gw47] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{+path}-+] tests/shared/test_uri_template.py::test_parse_all_operators[{#frag}-#] [gw18] [ 81%] PASSED tests/shared/test_uri_template.py::test_is_template[{-False] tests/shared/test_uri_template.py::test_is_template[}-False] [gw18] [ 81%] PASSED tests/shared/test_uri_template.py::test_is_template[}-False] tests/shared/test_uri_template.py::test_is_template[}{-False] [gw18] [ 81%] PASSED tests/shared/test_uri_template.py::test_is_template[}{-False] [gw20] [ 81%] PASSED tests/shared/test_request_clock.py::test_the_clock_stops_and_resumes_on_asyncio tests/shared/test_request_clock.py::test_a_wait_that_begins_after_the_budget_ran_out_does_not_swallow_the_timeout [gw9] [ 81%] PASSED tests/shared/test_sse.py::test_sse_message_id_coercion tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/-/messages/] [gw47] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{#frag}-#] tests/shared/test_uri_template.py::test_parse_all_operators[{.ext}-.] tests/shared/test_uri_template.py::test_is_template[prefix{+path}/suffix-True] [gw20] [ 81%] PASSED tests/shared/test_request_clock.py::test_a_wait_that_begins_after_the_budget_ran_out_does_not_swallow_the_timeout tests/shared/test_sse.py::test_raw_sse_connection [gw9] [ 81%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/-/messages/] [gw18] [ 81%] PASSED tests/shared/test_uri_template.py::test_is_template[prefix{+path}/suffix-True] [gw47] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{.ext}-.] tests/shared/test_uri_template.py::test_parse_all_operators[{/seg}-/] [gw29] [ 81%] PASSED tests/shared/test_streamable_http.py::test_server_validates_protocol_version_header tests/shared/test_uri_template.py::test_is_template[{invalid syntax but still a template}-True] [gw47] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{/seg}-/] tests/shared/test_uri_template.py::test_parse_multiple_variables_in_expression [gw18] [ 81%] PASSED tests/shared/test_uri_template.py::test_is_template[{invalid syntax but still a template}-True] tests/shared/test_uri_template.py::test_parse_all_operators[{;param}-;] [gw35] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_multiple_variables_in_expression tests/shared/test_uri_template.py::test_parse_multiple_expressions [gw35] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_multiple_expressions tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}-expected0] [gw35] [ 81%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}-expected0] tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}{&c}-expected1] [gw20] [ 81%] PASSED tests/shared/test_sse.py::test_raw_sse_connection [gw35] [ 81%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}{&c}-expected1] tests/shared/test_sse.py::test_sse_client_basic_connection [gw47] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{;param}-;] tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_value_mismatch [gw14] [ 81%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_value_mismatch tests/shared/test_inbound.py::test_validate_mcp_param_headers_non_primitive_body_value_rejects_only_when_a_header_claims_it tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{&c}-expected3] tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[trailing-zero-fraction] tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_with_resumption_hints_suppresses_the_courtesy_cancellation [gw3] [ 81%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[trailing-zero-fraction] [gw17] [ 81%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_non_primitive_body_value_rejects_only_when_a_header_claims_it [gw14] [ 81%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{&c}-expected3] tests/shared/test_uri_template.py::test_parse_explode_modifier tests/server/test_subscriptions.py::test_ack_first_honored_subset_and_stamped_graceful_result [gw20] [ 81%] PASSED tests/shared/test_sse.py::test_sse_client_basic_connection tests/shared/test_sse.py::test_sse_client_on_session_created tests/shared/test_uri_template.py::test_parse_rejects_unclosed_expression tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad/name] [gw14] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_explode_modifier [gw17] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_expression [gw38] [ 81%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_with_resumption_hints_suppresses_the_courtesy_cancellation tests/shared/test_uri_template.py::test_parse_rejects_prefix_modifier [gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad/name] tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo..bar] [gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo..bar] [gw13] [ 82%] PASSED tests/server/test_subscriptions.py::test_ack_first_honored_subset_and_stamped_graceful_result tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{/a*}/x{/b*}] [gw13] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{/a*}/x{/b*}] tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a,b}] tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{.labels*}] [gw14] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{.labels*}] tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{;params*}] tests/shared/test_inbound.py::test_validate_mcp_param_headers_handles_unrenderable_huge_integer_bodies_without_raising [gw38] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_prefix_modifier tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{var*}] [gw38] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{var*}] tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{+var*}] tests/issues/test_1574_resource_uri_validation.py::test_uri_json_roundtrip_preserves_value [gw32] [ 82%] PASSED tests/issues/test_1574_resource_uri_validation.py::test_uri_json_roundtrip_preserves_value tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[pre{a}{b}post] [gw20] [ 82%] PASSED tests/shared/test_sse.py::test_sse_client_on_session_created tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo.] [gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo.] tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo\n] [gw14] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{;params*}] tests/shared/test_uri_template.py::test_parse_mixed_explode_and_plain tests/shared/test_uri_template.py::test_parse_rejects_empty_expression [gw17] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_empty_expression tests/shared/test_uri_template.py::test_parse_rejects_operator_without_variable [gw17] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_operator_without_variable tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[-bad] [gw17] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[-bad] tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad-name] [gw31] [ 82%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_handles_unrenderable_huge_integer_bodies_without_raising tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[x{name}{+path}y] [gw32] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[pre{a}{b}post] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}] [gw38] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{+var*}] tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{#var*}] [gw38] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{#var*}] tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{?var*}] [gw17] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad-name] [gw31] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[x{name}{+path}y] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{+a}{b}] [gw14] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_mixed_explode_and_plain [gw39] [ 82%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_courtesy_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] tests/shared/test_jsonrpc_dispatcher.py::test_timeout_courtesy_cancel_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] [gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo\n] tests/shared/test_uri_template.py::test_parse_accepts_dotted_varname [gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_accepts_dotted_varname [gw38] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{?var*}] [gw13] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a,b}] tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}/x/{+b}] [gw13] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}/x/{+b}] tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a},{+b}] [gw13] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a},{+b}] tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{#a}/x/{+b}] [gw13] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{#a}/x/{+b}] [gw32] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{b}] [gw32] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{#a}{b}] [gw39] [ 82%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_timeout_courtesy_cancel_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_error_response_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] [gw31] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{+a}{b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}{n}] [gw31] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}{n}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{x}Y{+p}{n}] [gw32] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{#a}{b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{+b}] [gw31] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{x}Y{+p}{n}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{?a}{+b}x] [gw39] [ 82%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_error_response_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_answers_in_flight_request_with_connection_closed [gw32] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{+b}] [gw31] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{?a}{+b}x] tests/shared/test_jsonrpc_dispatcher.py::test_fan_out_closed_drops_signal_when_waiter_already_has_outcome [gw39] [ 82%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_answers_in_flight_request_with_connection_closed tests/shared/test_jsonrpc_dispatcher.py::test_handler_raising_validation_error_sends_invalid_params [gw8] [ 82%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_fan_out_closed_drops_signal_when_waiter_already_has_outcome tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_unknown_request_id_skips_cancel_but_reaches_on_notify tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}-{b}] tests/shared/test_otel.py::test_extract_trace_context_degrades_to_no_parent_on_malformed_traceparent [gw8] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}-{b}] [gw21] [ 82%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_raising_validation_error_sends_invalid_params tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{name}{+path}{.ext}] [gw26] [ 82%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_unknown_request_id_skips_cancel_but_reaches_on_notify tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}{b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{.b*}] [gw8] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{name}{+path}{.ext}] [gw44] [ 82%] PASSED tests/shared/test_otel.py::test_extract_trace_context_degrades_to_no_parent_on_malformed_traceparent tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{base}{+p}{;k}] [gw30] [ 82%] PASSED tests/docs/test_translations.py::test_stage_without_lang_stages_every_language_in_the_registry tests/shared/test_path_security.py::test_contains_path_traversal[a/../../b-True] [gw8] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{base}{+p}{;k}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}{c}] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}/edit] [gw44] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}/edit] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{?v,page}] [gw44] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{?v,page}] [gw26] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{.b*}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a*}{;b*}] [gw26] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a*}{;b*}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{b}{.c*}] [gw19] [ 82%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/../../b-True] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a},{b}] tests/shared/test_path_security.py::test_is_absolute_path[ab:c-False] [gw25] [ 82%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[ab:c-False] tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}{?b}] tests/shared/test_path_security.py::test_safe_join_allows_balanced_dotdot tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{&next}] [gw44] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{&next}] tests/shared/test_path_security.py::test_is_absolute_path[..-False] [gw46] [ 82%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[..-False] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[tree://nodes{/path*}] [gw46] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[tree://nodes{/path*}] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api{;key}/{+rest}] tests/docs_src/test_apps.py::test_the_tool_carries_the_ui_resource_reference [gw30] [ 82%] PASSED tests/docs_src/test_apps.py::test_the_tool_carries_the_ui_resource_reference [gw8] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}{c}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}{b}Y{c}] [gw8] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}{b}Y{c}] [gw26] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{b}{.c*}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{/b*}] [gw26] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{/b*}] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://docs/{+path}] [gw26] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://docs/{+path}] [gw25] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}{?b}] tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}/y{?b}] [gw19] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a},{b}] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{/b}] [gw19] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{/b}] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{.b}] [gw45] [ 83%] PASSED tests/shared/test_path_security.py::test_safe_join_allows_balanced_dotdot tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a{b}c}] [gw45] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a{b}c}] tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{]{}}{}] [gw46] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api{;key}/{+rest}] tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x}/{x}] [gw46] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x}/{x}] tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x,x}] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[page{#section}] [gw44] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[page{#section}] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{a}{#b}] [gw44] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{a}{#b}] [gw21] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}{b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}] [gw21] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/seg}{;k*}] [gw21] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/seg}{;k*}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[item://{id}{;opts*}] [gw21] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[item://{id}{;opts*}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[api{;key}{+rest}] [gw21] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[api{;key}{+rest}] [gw25] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}/y{?b}] tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[{?a}{&b}{?c}] [gw25] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[{?a}{&b}{?c}] tests/shared/test_uri_template.py::test_query_tail_roundtrip_correct_spellings [gw25] [ 83%] PASSED tests/shared/test_uri_template.py::test_query_tail_roundtrip_correct_spellings [gw46] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x,x}] tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{a}{b}{a}] [gw46] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{a}{b}{a}] [gw45] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{]{}}{}] tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a,{b}] [gw45] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a,{b}] tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{-0] [gw19] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{.b}] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{;b}] [gw19] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{;b}] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+path}{.ext}] [gw19] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+path}{.ext}] tests/shared/test_uri_template.py::test_invalid_uri_template_is_value_error [gw25] [ 83%] PASSED tests/shared/test_uri_template.py::test_invalid_uri_template_is_value_error tests/shared/test_path_security.py::test_safe_join_base_equals_target [gw45] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{-0] [gw28] [ 83%] PASSED tests/shared/test_path_security.py::test_safe_join_base_equals_target tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{{-0] tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{a}{-3] tests/shared/test_path_security.py::test_is_absolute_path[Z:\\-True] [gw28] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{a}{-3] tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[definitions] [gw5] [ 83%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[Z:\\-True] [gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[connection-closing] tests/shared/test_peer.py::test_peer_elicit_url_sends_elicitation_create_with_url_params [gw45] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{{-0] tests/shared/test_path_security.py::test_contains_path_traversal[a\\..\\..\\b-True] tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_raises_connection_closed_when_read_stream_eofs_mid_await [gw23] [ 83%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[definitions] tests/shared/test_uri_template.py::test_parse_stray_close_brace_between_expressions tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[}{-1] [gw28] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[}{-1] tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}}] [gw41] [ 83%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a\\..\\..\\b-True] tests/shared/test_uri_template.py::test_expand[{+var}-variables5-a?b#c] tests/shared/test_uri_template.py::test_frozen [gw7] [ 83%] PASSED tests/shared/test_peer.py::test_peer_elicit_url_sends_elicitation_create_with_url_params tests/shared/test_uri_template.py::test_expand[{var}-variables11-path%252Fto] [gw5] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_stray_close_brace_between_expressions [gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_raises_connection_closed_when_read_stream_eofs_mid_await tests/shared/test_path_security.py::test_contains_path_traversal[./a/b-False] [gw28] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}}] tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}] tests/shared/test_jsonrpc_dispatcher.py::test_run_returns_cleanly_when_read_stream_receive_end_is_closed [gw28] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}] tests/shared/test_uri_template.py::test_parse_rejects_oversized_template tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[a}b] [gw41] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables5-a?b#c] [gw23] [ 83%] PASSED tests/shared/test_uri_template.py::test_frozen [gw36] [ 83%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[./a/b-False] [gw7] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables11-path%252Fto] [gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_run_returns_cleanly_when_read_stream_receive_end_is_closed tests/shared/test_jsonrpc_dispatcher.py::test_run_cancels_in_flight_handlers_when_read_stream_eofs tests/shared/test_uri_template.py::test_expand[{var}-variables0-value] [gw28] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[a}b] tests/shared/test_uri_template.py::test_expand[{;id}-variables17-;id=42] tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[string-cancel-for-int-request] tests/shared/test_uri_template.py::test_expand[{+var}-variables6-path%2Fto] [gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_run_cancels_in_flight_handlers_when_read_stream_eofs [gw12] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_signal_mode_sets_event_and_drops_the_completed_handlers_result tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[unmapped-exception] tests/shared/test_uri_template.py::test_expand[file://docs/{+path}-variables12-file://docs/src/main.py] [gw23] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables0-value] [gw5] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_oversized_template tests/shared/test_uri_template.py::test_parse_rejects_too_many_variables [gw5] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_too_many_variables tests/shared/test_uri_template.py::test_parse_counts_variables_not_expressions tests/shared/test_jsonrpc_dispatcher.py::test_jsonrpc_error_response_with_null_id_is_dropped [gw4] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_jsonrpc_error_response_with_null_id_is_dropped [gw7] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[file://docs/{+path}-variables12-file://docs/src/main.py] tests/shared/test_uri_template.py::test_expand[{#var}-variables13-#section] [gw7] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{#var}-variables13-#section] tests/shared/test_jsonrpc_dispatcher.py::test_run_closes_write_stream_on_exit [gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_run_closes_write_stream_on_exit tests/shared/test_jsonrpc_dispatcher.py::test_late_response_after_timeout_is_dropped_without_crashing [gw41] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables6-path%2Fto] tests/shared/test_uri_template.py::test_expand[{+var}-variables7-50%25] [gw27] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[string-cancel-for-int-request] tests/shared/test_uri_template.py::test_expand[{x,y}-variables23-1,2] [gw36] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{;id}-variables17-;id=42] tests/shared/test_uri_template.py::test_expand[{;id}-variables18-;id] [gw36] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{;id}-variables18-;id] tests/shared/test_uri_template.py::test_expand[{?q}-variables19-?q=search] tests/shared/test_uri_template.py::test_expand[{#var}-variables14-#a/b] [gw7] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{#var}-variables14-#a/b] tests/shared/test_uri_template.py::test_expand[{;keys*}-variables29-;keys=a;keys;keys=b] [gw5] [ 84%] PASSED tests/shared/test_uri_template.py::test_parse_counts_variables_not_expressions tests/shared/test_uri_template.py::test_parse_custom_limits_allow_larger [gw5] [ 84%] PASSED tests/shared/test_uri_template.py::test_parse_custom_limits_allow_larger [gw27] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{x,y}-variables23-1,2] tests/shared/test_uri_template.py::test_expand[{/list}-variables24-/a,b,c] [gw27] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{/list}-variables24-/a,b,c] tests/shared/test_uri_template.py::test_expand[{?list}-variables25-?list=a,b] [gw36] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{?q}-variables19-?q=search] [gw41] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables7-50%25] tests/shared/test_uri_template.py::test_expand[{+var}-variables8-50%252] tests/shared/test_uri_template.py::test_expand[{var}-variables1-hello%20world] [gw23] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables1-hello%20world] tests/shared/test_uri_template.py::test_expand[{var}-variables2-a%2Fb] [gw23] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables2-a%2Fb] tests/shared/test_uri_template.py::test_expand[file://docs/{name}-variables3-file://docs/readme.txt] [gw23] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[file://docs/{name}-variables3-file://docs/readme.txt] tests/shared/test_uri_template.py::test_expand[file{.ext}-variables15-file.txt] [gw7] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[file{.ext}-variables15-file.txt] [gw2] [ 84%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_late_response_after_timeout_is_dropped_without_crashing [gw4] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{;keys*}-variables29-;keys=a;keys;keys=b] tests/shared/test_uri_template.py::test_expand[{;name}-variables30-;name] [gw4] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{;name}-variables30-;name] tests/shared/test_uri_template.py::test_expand[{;name}-variables31-;name=,] [gw4] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{;name}-variables31-;name=,] tests/shared/test_uri_template.py::test_expand[{?name}-variables32-?name=] [gw27] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{?list}-variables25-?list=a,b] tests/shared/test_uri_template.py::test_expand[{/path*}-variables26-/a/b/c] [gw27] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{/path*}-variables26-/a/b/c] tests/shared/test_uri_template.py::test_expand[{.labels*}-variables27-.x.y] tests/shared/test_uri_template.py::test_expand[{?q}-variables20-?q=] [gw36] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{?q}-variables20-?q=] tests/shared/test_uri_template.py::test_expand[/search{?q,lang}-variables21-/search?q=mcp&lang=en] [gw41] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables8-50%252] tests/shared/test_uri_template.py::test_expand[{+var}-variables9-a%2Fb%20c] tests/shared/test_jsonrpc_dispatcher.py::test_transport_stamped_can_send_request_makes_the_request_channel_refuse [gw4] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{?name}-variables32-?name=] [gw42] [ 84%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_stamped_can_send_request_makes_the_request_channel_refuse tests/shared/test_uri_template.py::test_expand[{?q,page}-variables35-?q=x] [gw42] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{?q,page}-variables35-?q=x] tests/shared/test_uri_template.py::test_expand[{a,b}-variables36-x] [gw27] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{.labels*}-variables27-.x.y] tests/shared/test_uri_template.py::test_expand[{&name}-variables33-&name=] [gw36] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[/search{?q,lang}-variables21-/search?q=mcp&lang=en] [gw4] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{&name}-variables33-&name=] [gw42] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{a,b}-variables36-x] tests/shared/test_uri_template.py::test_expand[{?page}-variables37-] tests/shared/test_peer.py::test_peer_ping_sends_ping_and_returns_none [gw41] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables9-a%2Fb%20c] [gw42] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{?page}-variables37-] tests/shared/test_uri_template.py::test_expand[{/path*}-variables38-] [gw0] [ 84%] PASSED tests/shared/test_peer.py::test_peer_ping_sends_ping_and_returns_none [gw42] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{/path*}-variables38-] tests/shared/test_sse.py::test_sse_client_handles_empty_keepalive_pings tests/shared/test_sse.py::test_sse_client_happy_request_and_response tests/shared/test_uri_template.py::test_expand[file://static-variables39-file://static] tests/shared/test_uri_template.py::test_expand_preserves_special_chars_in_reserved [gw42] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[file://static-variables39-file://static] [gw0] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand_preserves_special_chars_in_reserved [gw1] [ 84%] PASSED tests/shared/test_sse.py::test_sse_client_handles_empty_keepalive_pings tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[42] tests/shared/test_uri_template.py::test_match[file://docs/{+path}-file://docs/src/main.py-expected3] [gw0] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[42] tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[None] [gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[file://docs/{+path}-file://docs/src/main.py-expected3] tests/shared/test_uri_template.py::test_match[{+var}-a/b/c-expected4] tests/shared/test_streamable_http.py::test_content_type_validation [gw0] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[None] tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[3.14] tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_slashes] tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_true_for_valid_name [gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{+var}-a/b/c-expected4] tests/shared/test_uri_template.py::test_match[page{#section}-page#intro-expected5] [gw10] [ 84%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_slashes] tests/shared/test_streamable_http.py::test_accept_header_wildcard[text/*, application/json] [gw0] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[3.14] [gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[page{#section}-page#intro-expected5] tests/shared/test_uri_template.py::test_match[prefix/{+path}{.ext}-prefix/a/b.txt-expected8] tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dash [gw37] [ 84%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_true_for_valid_name tests/shared/test_streamable_http.py::test_transport_reports_stream_closure_when_host_exits_without_terminating tests/shared/test_uri_template.py::test_match[item{;keys*}-item-expected18] tests/shared/test_uri_template.py::test_match[{+path}{/name}-a/b/c/readme-expected6] [gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{+path}{/name}-a/b/c/readme-expected6] [gw24] [ 84%] PASSED tests/shared/test_streamable_http.py::test_content_type_validation tests/shared/test_streamable_http.py::test_server_backwards_compatibility_no_protocol_version [gw11] [ 84%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dash tests/shared/test_uri_template.py::test_match[search{?q}-search?q=C++-expected28] [gw10] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[prefix/{+path}{.ext}-prefix/a/b.txt-expected8] tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[*/*] [gw15] [ 84%] PASSED tests/shared/test_sse.py::test_sse_client_happy_request_and_response tests/shared/test_uri_template.py::test_match[api{/version}-api/v1-expected13] tests/shared/test_uri_template.py::test_match[{#section}{/page}-#intro/1-expected9] [gw37] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[item{;keys*}-item-expected18] tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello-expected19] tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value4] [gw11] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=C++-expected28] tests/shared/test_uri_template.py::test_match[search{?q}-search?q=1.0+build.5-expected29] [gw37] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello-expected19] tests/shared/test_uri_template.py::test_match[search{?q}-search?q=-expected20] [gw16] [ 84%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[text/*, application/json] [gw11] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=1.0+build.5-expected29] [gw10] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{#section}{/page}-#intro/1-expected9] [gw37] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=-expected20] [gw24] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[api{/version}-api/v1-expected13] tests/shared/test_uri_template.py::test_match[item{;id}-item;id=42-expected14] tests/shared/test_uri_template.py::test_match[{owner}@{+path}-alice@src/main-expected10] tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?lang=en&q=mcp-expected23] tests/docs_src/test_apps.py::test_the_ui_resource_is_served_as_the_app_mime_type [gw15] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value4] tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[mixed_characters] tests/shared/test_uri_template.py::test_match[logs://{service}{?level}-logs://api?level=error#section1-expected30] tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[bytes] [gw10] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{owner}@{+path}-alice@src/main-expected10] [gw29] [ 84%] PASSED tests/shared/test_streamable_http.py::test_server_backwards_compatibility_no_protocol_version [gw34] [ 84%] PASSED tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[*/*] tests/shared/test_uri_template.py::test_match[/files{/path*}-/files-expected43] tests/shared/test_tool_name_validation.py::test_edge_cases[only_slashes] tests/shared/test_uri_template.py::test_match[search{?q}-search-expected21] [gw37] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search-expected21] [gw24] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[item{;id}-item;id=42-expected14] tests/shared/test_uri_template.py::test_match[item{;id}-item;id-expected15] [gw11] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[logs://{service}{?level}-logs://api?level=error#section1-expected30] tests/shared/test_uri_template.py::test_match[search{?q}-search#frag-expected31] [gw11] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search#frag-expected31] [gw34] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[/files{/path*}-/files-expected43] tests/shared/test_uri_template.py::test_match[/files{/path*}/edit-/files/a/b/edit-expected44] [gw15] [ 85%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[bytes] tests/shared/test_uri_template.py::test_is_template[{a}-True] tests/shared/test_uri_template.py::test_match[{+path}@{name}-src@main@v1-expected11] [gw16] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?lang=en&q=mcp-expected23] tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp-expected24] tests/shared/test_uri_template.py::test_match[{var}-hello-expected0] tests/shared/test_uri_template.py::test_match[search{?q}-search?q=first&q=second-expected38] [gw22] [ 85%] PASSED tests/shared/test_uri_template.py::test_is_template[{a}-True] [gw40] [ 85%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[mixed_characters] tests/shared/test_uri_template.py::test_match_no_match[///{a}////{b}////-//x////y////] [gw34] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[/files{/path*}/edit-/files/a/b/edit-expected44] tests/shared/test_uri_template.py::test_match[host{.labels*}-host.example.com-expected45] [gw33] [ 85%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[only_slashes] [gw30] [ 85%] PASSED tests/docs_src/test_apps.py::test_the_ui_resource_is_served_as_the_app_mime_type tests/shared/test_uri_template.py::test_match_no_match[{a}/{b}-foo] [gw24] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[item{;id}-item;id-expected15] tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys=b-expected16] tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[u{s}-variables1] tests/shared/test_uri_template.py::test_match_no_match[api/{name}{?q}-wrong/path?q=x] [gw15] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[{var}-hello-expected0] tests/shared/test_uri_template.py::test_match[file://docs/{name}-file://docs/readme.txt-expected1] [gw29] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=first&q=second-expected38] tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil&token=real-expected39] [gw10] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[{+path}@{name}-src@main@v1-expected11] [gw16] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp-expected24] tests/shared/test_uri_template.py::test_match[search{?q,lang}-search-expected25] [gw16] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search-expected25] tests/shared/test_uri_template.py::test_match[search{?q}-search?q=mcp&utm=x&ref=y-expected26] [gw43] [ 85%] PASSED tests/shared/test_streamable_http.py::test_transport_reports_stream_closure_when_host_exits_without_terminating tests/shared/test_uri_template.py::test_match[api{&page}-api&page=2-expected33] [gw15] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[file://docs/{name}-file://docs/readme.txt-expected1] [gw34] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[host{.labels*}-host.example.com-expected45] tests/shared/test_uri_template.py::test_match[///{a}////{b}////-///x////y////-expected46] [gw34] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[///{a}////{b}////-///x////y////-expected46] [gw33] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_match[api/{name}{?q}-wrong/path?q=x] tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}{?q}-item;wrong=x?q=1] [gw22] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[u{s}-variables1] tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[_{x}-variables2] [gw40] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_match[///{a}////{b}////-//x////y////] tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;identity=john] [gw40] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;identity=john] tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;ident] [gw16] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=mcp&utm=x&ref=y-expected26] [gw43] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[api{&page}-api&page=2-expected33] tests/shared/test_uri_template.py::test_match[api?x{?page}-api?x?page=2-expected34] [gw43] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[api?x{?page}-api?x?page=2-expected34] [gw30] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_match[{a}/{b}-foo] tests/shared/test_uri_template.py::test_match_no_match[file{.ext}-file] [gw30] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_match[file{.ext}-file] tests/shared/test_uri_template.py::test_match_no_match[static-different] [gw30] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_match[static-different] tests/shared/test_uri_template.py::test_match_no_match[/users/{id}-/users/123/extra] [gw30] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_match[/users/{id}-/users/123/extra] tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[messages/-/messages/] [gw9] [ 85%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[messages/-/messages/] [gw24] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys=b-expected16] tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[foo{+a}oob-fooob] [gw29] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil&token=real-expected39] tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil-expected40] [gw29] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil-expected40] tests/shared/test_uri_template.py::test_match[?a=1{&b}-?a=1&b=2-expected41] [gw29] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[?a=1{&b}-?a=1&b=2-expected41] [gw22] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[_{x}-variables2] tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[~{v}~-variables3] [gw22] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[~{v}~-variables3] tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[L{a}L{b}-variables4] [gw40] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;ident] tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;admin=true] [gw40] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;admin=true] tests/shared/test_uri_template.py::test_match[page{#section}{?q}-page#intro?q=x-expected35] [gw43] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[page{#section}{?q}-page#intro?q=x-expected35] tests/shared/test_uri_template.py::test_match[page#lit{?q}-page#lit?q=x-expected36] [gw43] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[page#lit{?q}-page#lit?q=x-expected36] [gw33] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}{?q}-item;wrong=x?q=1] tests/shared/test_uri_template.py::test_match_explode_preserves_empty_list_items [gw33] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_explode_preserves_empty_list_items tests/shared/test_uri_template.py::test_match_adjacent_vars_disambiguated_by_literal [gw33] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_adjacent_vars_disambiguated_by_literal [gw9] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[foo{+a}oob-fooob] tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}-api://foo?bar] [gw9] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}-api://foo?bar] tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-Xnoslash] [gw22] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[L{a}L{b}-variables4] tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}-expected2] tests/shared/test_uri_template.py::test_parse_simple_variable [gw9] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-Xnoslash] tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-X/a?b] tests/shared/test_uri_template.py::test_parse_all_operators[{?q}-?] [gw18] [ 85%] PASSED tests/shared/test_uri_template.py::test_parse_simple_variable [gw35] [ 85%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}-expected2] tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file://docs/{name}-file://docs/a%2Fb-expected0] [gw47] [ 85%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{?q}-?] tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[{;a}{;b}-;a=x=y;b=z-expected1] tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc123-abc123] [gw9] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-X/a?b] tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}/{id}-api://foo] [gw18] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}/{id}-api://foo] tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[docs/{+path}/v/{name}-docs/v/x] [gw47] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[{;a}{;b}-;a=x=y;b=z-expected1] tests/shared/test_uri_template.py::test_match_prefix_ifemp_empty_before_non_stop_literal [gw35] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file://docs/{name}-file://docs/a%2Fb-expected0] tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%3Fb-expected1] tests/shared/test_uri_template.py::test_parse_varname_with_dots_and_underscores [gw18] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[docs/{+path}/v/{name}-docs/v/x] tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=base/a/b-expected0] [gw20] [ 86%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc123-abc123] tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[api{/v}-api/a%2Fb-expected5] tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad name] [gw47] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_prefix_ifemp_empty_before_non_stop_literal tests/shared/test_uri_template.py::test_match_large_uri_against_greedy_template [gw20] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[api{/v}-api/a%2Fb-expected5] [gw14] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_varname_with_dots_and_underscores tests/shared/test_uri_template.py::test_match_rejects_oversized_uri tests/shared/test_uri_template.py::test_parse_rejects_empty_spec_in_list tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{&var*}] [gw38] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{&var*}] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables6] [gw17] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad name] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{name}-variables1] [gw17] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{name}-variables1] [gw47] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_large_uri_against_greedy_template tests/shared/test_uri_template.py::test_match_decodes_percent_encoding [gw3] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_empty_spec_in_list tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{/v}-variables11] [gw38] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables6] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables7] [gw14] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_rejects_oversized_uri tests/shared/test_uri_template.py::test_match_accepts_uri_within_custom_limit [gw14] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_accepts_uri_within_custom_limit tests/shared/test_uri_template.py::test_match_default_uri_length_limit tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[search{?q}-search?q=a%26b-expected6] [gw20] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[search{?q}-search?q=a%26b-expected6] tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{;filter}-;filter=a%3Bb-expected7] [gw20] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{;filter}-;filter=a%3Bb-expected7] tests/shared/test_uri_template.py::test_match_reserved_expansion_handles_slash [gw20] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_reserved_expansion_handles_slash [gw47] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_decodes_percent_encoding tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}.foo.{#b}] [gw13] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}.foo.{#b}] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables16] [gw13] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables16] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[host{.labels*}-variables17] [gw35] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%3Fb-expected1] tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%23b-expected2] [gw35] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%23b-expected2] tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%26b-expected3] [gw35] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%26b-expected3] [gw38] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables7] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables8] [gw38] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables8] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[page{#section}-variables9] [gw18] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=base/a/b-expected0] tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=v=base/x-expected1] [gw18] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=v=base/x-expected1] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}-{+p}{b}] [gw31] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}-{+p}{b}] tests/test_examples.py::test_complex_inputs [gw3] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{/v}-variables11] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[x{name}y-variables12] [gw3] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[x{name}y-variables12] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables13] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{+b}] [gw32] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{+b}] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{;key}=base/{+path}-variables21] [gw32] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{;key}=base/{+path}-variables21] tests/shared/test_uri_template.py::test_match_simple_var_accepts_empty [gw32] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_simple_var_accepts_empty tests/shared/test_uri_template.py::test_match_inverts_expand_for_every_parseable_template tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{+path}-variables2] [gw17] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{+path}-variables2] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[search{?q,lang}-variables3] [gw17] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[search{?q,lang}-variables3] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables4] [gw17] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables4] [gw38] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[page{#section}-variables9] tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_cancel_during_delivered_result_write_writes_no_second_answer [gw3] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables13] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables14] [gw3] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables14] [gw13] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[host{.labels*}-variables17] [gw14] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_default_uri_length_limit tests/shared/test_uri_template.py::test_match_explode_encoded_separator_in_segment [gw14] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_explode_encoded_separator_in_segment tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables18] [gw13] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables18] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables19] [gw13] [ 86%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables19] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{a}{+p}{b}Y{c}] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}.txt] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}/sep/{b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{/b*}] [gw8] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{a}{+p}{b}Y{c}] [gw26] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}.txt] tests/test_examples.py::test_docs_examples[docs/whats-new.md:169-171] tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{+x}/foo/{x}] tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:101-103] [gw44] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}/sep/{b}] [gw21] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{/b*}] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:77-81] tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{name}}] [gw46] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{+x}/foo/{x}] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:172-175] tests/test_examples.py::test_docs_examples[docs/deprecated.md:108-114] [gw25] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{name}}] tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[file://{name-7] tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[prefix/{+path}{.ext}] [gw19] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[prefix/{+path}{.ext}] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:379-383] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:305-309] [gw45] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[file://{name-7] tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[{a}}{b}] tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:39-70] tests/shared/test_jsonrpc_dispatcher.py::test_raise_handler_exceptions_true_propagates_out_of_run [gw28] [ 86%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[{a}}{b}] tests/shared/test_uri_template.py::test_equality_based_on_template_string [gw21] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:77-81] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:91-95] [gw46] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:172-175] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:189-191] [gw8] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:169-171] tests/test_examples.py::test_docs_examples[docs/whats-new.md:173-175] [gw5] [ 86%] PASSED tests/shared/test_uri_template.py::test_equality_based_on_template_string tests/test_examples.py::test_docs_examples[docs/servers/tools.md:72-74] tests/shared/test_uri_template.py::test_expand[{+var}-variables4-a/b/c] tests/test_examples.py::test_docs_examples[docs/servers/media.md:50-52] [gw44] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:108-114] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:7-9] tests/shared/test_uri_template.py::test_expand[{/seg}-variables16-/docs] [gw23] [ 86%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables4-a/b/c] [gw26] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:101-103] tests/test_examples.py::test_docs_examples[docs/deprecated.md:57-61] [gw25] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:379-383] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:405-407] tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:11-13] [gw45] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:39-70] tests/test_examples.py::test_docs_examples[docs/get-started/index.md:24-36] [gw7] [ 87%] PASSED tests/shared/test_uri_template.py::test_expand[{/seg}-variables16-/docs] tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:163-165] [gw19] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:305-309] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:334-336] tests/shared/test_uri_template.py::test_expand[{;keys*}-variables28-;keys=a;keys=b] [gw28] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:50-52] [gw32] [ 87%] PASSED tests/shared/test_uri_template.py::test_match_inverts_expand_for_every_parseable_template tests/shared/test_uri_template.py::test_expand[{;name}-variables34-;name] [gw21] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:91-95] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:107-112] [gw5] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:72-74] tests/test_examples.py::test_docs_examples[docs/servers/tools.md:98-100] tests/shared/test_uri_template.py::test_expand_encodes_special_chars_in_simple [gw25] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:405-407] [gw26] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:57-61] tests/test_examples.py::test_docs_examples[docs/deprecated.md:65-71] tests/test_examples.py::test_docs_examples[docs/servers/media.md:56-59] [gw42] [ 87%] PASSED tests/shared/test_uri_template.py::test_expand_encodes_special_chars_in_simple tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:112-114] [gw45] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/index.md:24-36] tests/test_examples.py::test_docs_examples[docs/get-started/real-host.md:9-11] [gw8] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:173-175] tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:19-21] tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:37-39] [gw4] [ 87%] PASSED tests/shared/test_uri_template.py::test_expand[{;name}-variables34-;name] tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:21-25] [gw46] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:189-191] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:231-233] [gw19] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:334-336] [gw8] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:19-21] [gw7] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:163-165] tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:178-180] [gw23] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:11-13] tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:84-86] [gw44] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:7-9] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:25-29] tests/shared/test_uri_template.py::test_match_never_raises tests/shared/test_uri_template.py::test_expand[{#var}-variables10-#a%2Fb] [gw41] [ 87%] PASSED tests/shared/test_uri_template.py::test_expand[{#var}-variables10-#a%2Fb] tests/test_examples.py::test_docs_examples[docs/servers/completions.md:71-73] [gw27] [ 87%] PASSED tests/shared/test_uri_template.py::test_expand[{;keys*}-variables28-;keys=a;keys=b] tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:179-181] [gw27] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:179-181] tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:218-220] tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:44-46] tests/shared/test_uri_template.py::test_expand[?a=1{&b}-variables22-?a=1&b=2] [gw36] [ 87%] PASSED tests/shared/test_uri_template.py::test_expand[?a=1{&b}-variables22-?a=1&b=2] tests/test_examples.py::test_docs_examples[docs/servers/completions.md:24-26] [gw36] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:24-26] [gw46] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:231-233] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:246-254] [gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_raise_handler_exceptions_true_propagates_out_of_run tests/test_examples.py::test_docs_examples[docs/servers/media.md:106-108] [gw21] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:107-112] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:138-140] [gw44] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:25-29] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:51-58] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:338-342] tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value3] [gw0] [ 87%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value3] tests/test_examples.py::test_docs_examples[docs/servers/resources.md:78-80] tests/test_examples.py::test_docs_examples[docs/servers/completions.md:46-48] [gw28] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:56-59] tests/test_examples.py::test_docs_examples[docs/servers/media.md:67-69] [gw5] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:98-100] tests/test_examples.py::test_docs_examples[docs/servers/tools.md:127-129] [gw41] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:71-73] tests/test_examples.py::test_docs_examples[docs/servers/completions.md:94-96] [gw4] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:21-25] [gw26] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:65-71] tests/test_examples.py::test_docs_examples[docs/deprecated.md:81-86] [gw42] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:112-114] tests/test_examples.py::test_docs_examples[docs/servers/resources.md:11-13] [gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:106-108] tests/test_examples.py::test_docs_examples[docs/servers/media.md:120-123] [gw12] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[unmapped-exception] tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[mcp-error] [gw23] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:84-86] tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:114-116] [gw21] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:138-140] [gw8] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:44-46] [gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:78-80] [gw25] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:37-39] tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:89-91] [gw26] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:81-86] [gw27] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:218-220] tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:232-234] [gw7] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:178-180] tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:24-26] [gw19] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:338-342] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:350-352] [gw45] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/real-host.md:9-11] tests/test_examples.py::test_docs_examples[docs/servers/media.md:11-13] [gw28] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:67-69] tests/test_examples.py::test_docs_examples[docs/servers/media.md:88-90] tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:46-48] [gw46] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:246-254] [gw31] [ 87%] PASSED tests/test_examples.py::test_complex_inputs tests/test_examples.py::test_direct_call_tool_result_return [gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:120-123] tests/test_examples.py::test_docs_examples[docs/servers/tools.md:9-11] [gw45] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:11-13] tests/shared/test_uri_template.py::test_match[{+path}{.ext}-src/main.py-expected7] [gw44] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:51-58] [gw5] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:127-129] [gw36] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:46-48] tests/test_examples.py::test_docs_examples[docs/servers/completions.md:55-57] tests/test_examples.py::test_docs_examples[docs/servers/resources.md:103-105] [gw41] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:94-96] tests/test_examples.py::test_docs_examples[docs/servers/completions.md:106-108] [gw4] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:46-48] tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:93-95] [gw1] [ 87%] PASSED tests/shared/test_uri_template.py::test_match[{+path}{.ext}-src/main.py-expected7] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:53-55] [gw7] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:24-26] [gw25] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:89-91] [gw19] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:350-352] [gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:103-105] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:11-13] [gw42] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:11-13] tests/test_examples.py::test_docs_examples[docs/servers/resources.md:36-38] [gw28] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:88-90] [gw27] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:232-234] [gw23] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:114-116] [gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:9-11] [gw42] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:36-38] [gw36] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:55-57] tests/shared/test_uri_template.py::test_match[api{?v}{&page,limit}-api?limit=10&v=2-expected32] [gw11] [ 88%] PASSED tests/shared/test_uri_template.py::test_match[api{?v}{&page,limit}-api?limit=10&v=2-expected32] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:206-208] [gw4] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:93-95] [gw41] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:106-108] tests/shared/test_uri_template.py::test_match[file{.ext}-file.txt-expected12] [gw10] [ 88%] PASSED tests/shared/test_uri_template.py::test_match[file{.ext}-file.txt-expected12] tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:100-102] [gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:53-55] tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp&lang=en-expected22] [gw37] [ 88%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp&lang=en-expected22] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:119-121] tests/shared/test_uri_template.py::test_match[{a}/{b}-foo/bar-expected2] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:74-76] [gw32] [ 88%] PASSED tests/shared/test_uri_template.py::test_match_never_raises tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys;keys=b-expected17] [gw24] [ 88%] PASSED tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys;keys=b-expected17] tests/shared/test_uri_template.py::test_match_no_match[file://docs/{name}-file://other/readme.txt] [gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:11-13] [gw34] [ 88%] PASSED tests/shared/test_uri_template.py::test_match_no_match[file://docs/{name}-file://other/readme.txt] tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello%20world-expected27] [gw15] [ 88%] PASSED tests/shared/test_uri_template.py::test_match[{a}/{b}-foo/bar-expected2] tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:132-134] tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:141-143] [gw16] [ 88%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello%20world-expected27] tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:13-15] tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;keys=a;admin=true] tests/shared/test_uri_template.py::test_match_no_match[/users/{id}/posts/{pid}-/users/1/posts/2/extra] [gw30] [ 88%] PASSED tests/shared/test_uri_template.py::test_match_no_match[/users/{id}/posts/{pid}-/users/1/posts/2/extra] [gw10] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:100-102] tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:11-13] tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[api/{name}-variables5] [gw11] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:206-208] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:222-224] tests/shared/test_uri_template.py::test_match[/files{/path*}-/files/a/b/c-expected42] [gw29] [ 88%] PASSED tests/shared/test_uri_template.py::test_match[/files{/path*}-/files/a/b/c-expected42] tests/shared/test_uri_template.py::test_match[search{?q}-search?&q=hello&-expected37] [gw43] [ 88%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?&q=hello&-expected37] tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:54-56] [gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:74-76] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:99-101] [gw40] [ 88%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;keys=a;admin=true] [gw37] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:119-121] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:154-156] tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:104-132] tests/test_examples.py::test_docs_examples[docs/handlers/context.md:80-82] tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:136-138] tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[prefix-{id}-variables0] [gw33] [ 88%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[prefix-{id}-variables0] tests/test_examples.py::test_docs_examples[docs/run/asgi.md:93-95] [gw15] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:132-134] tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:11-13] tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:83-89] [gw34] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:13-15] tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:29-31] [gw24] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:141-143] tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:20-22] [gw10] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:11-13] [gw11] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:222-224] tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:11-13] [gw16] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:104-132] tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:140-149] [gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:99-101] tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:68-70] [gw22] [ 88%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[api/{name}-variables5] tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:27-29] [gw30] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:54-56] tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:79-81] tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api{;key}suffix/{+p}-api;keyZ/x] [gw37] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:154-156] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:166-168] [gw9] [ 88%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api{;key}suffix/{+p}-api;keyZ/x] tests/test_examples.py::test_docs_examples[docs/run/deploy.md:95-97] [gw40] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:80-82] tests/test_examples.py::test_docs_examples[docs/handlers/context.md:86-89] [gw29] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:136-138] tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:11-13] [gw33] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:93-95] tests/test_examples.py::test_docs_examples[docs/run/asgi.md:103-105] [gw15] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:11-13] tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:52-54] [gw24] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:20-22] tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:47-49] [gw22] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:27-29] tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:11-13] [gw43] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:83-89] tests/test_examples.py::test_docs_examples[docs/run/asgi.md:11-13] [gw34] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:29-31] tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:24-26] [gw37] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:166-168] [gw10] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:68-70] [gw16] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:140-149] tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:155-157] [gw30] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:79-81] tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:96-101] tests/shared/test_uri_template.py::test_match_double_encoding_decoded_once [gw11] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:11-13] [gw9] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:95-97] [gw43] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:11-13] tests/shared/test_uri_template.py::test_match_escapes_template_literals [gw15] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:52-54] [gw20] [ 88%] PASSED tests/shared/test_uri_template.py::test_match_double_encoding_decoded_once tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:33-35] [gw29] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:11-13] tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:65-67] tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[item{;id}-item;id=a=b-expected0] [gw22] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:11-13] tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:21-24] tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file{.ext}-file.a%2Eb-expected4] [gw33] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:103-105] tests/test_examples.py::test_docs_examples[docs/run/asgi.md:116-118] tests/test_examples.py::test_docs_examples[docs/run/asgi.md:52-54] [gw24] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:47-49] [gw35] [ 89%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file{.ext}-file.a%2Eb-expected4] [gw40] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:86-89] tests/test_examples.py::test_docs_examples[docs/handlers/context.md:98-100] [gw47] [ 89%] PASSED tests/shared/test_uri_template.py::test_match_escapes_template_literals tests/test_examples.py::test_docs_examples[docs/run/index.md:22-24] [gw16] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:155-157] [gw34] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:24-26] tests/test_examples.py::test_docs_examples[docs/run/authorization.md:93-95] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[/files{/path*}-variables5] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables10] [gw30] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:96-101] tests/test_examples.py::test_docs_examples[docs/run/deploy.md:130-132] [gw9] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:130-132] tests/test_examples.py::test_docs_examples[docs/run/deploy.md:162-164] [gw17] [ 89%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[/files{/path*}-variables5] [gw43] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:52-54] [gw18] [ 89%] PASSED tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[item{;id}-item;id=a=b-expected0] tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:51-53] [gw38] [ 89%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables10] [gw33] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:116-118] tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:24-26] [gw20] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:33-35] tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:93-95] [gw39] [ 89%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_cancel_during_delivered_result_write_writes_no_second_answer [gw29] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:65-67] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables20] [gw40] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:98-100] tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:40-42] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables0] [gw22] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:21-24] tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables15] tests/test_examples.py::test_docs_examples[docs/index.md:43-45] [gw14] [ 89%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables0] [gw3] [ 89%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables15] [gw13] [ 89%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables20] [gw18] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:51-53] tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:87-89] tests/test_examples.py::test_docs_examples[docs/client/transports.md:33-35] tests/test_examples.py::test_docs_examples[docs/client/caching.md:28-30] tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:11-13] [gw35] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/authorization.md:93-95] tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:11-13] [gw47] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/index.md:22-24] tests/test_examples.py::test_docs_examples[docs/run/index.md:58-60] [gw9] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:162-164] [gw20] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:93-95] tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:107-109] [gw17] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:24-26] tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:83-85] [gw38] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:40-42] [gw39] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/index.md:43-45] tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:46-48] tests/test_examples.py::test_docs_examples[docs/whats-new.md:18-22] [gw47] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/index.md:58-60] [gw14] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:28-30] [gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:11-13] [gw18] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:87-89] tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:93-95] tests/test_examples.py::test_docs_examples[docs/run/index.md:95-97] [gw31] [ 89%] PASSED tests/test_examples.py::test_direct_call_tool_result_return [gw13] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:33-35] tests/test_examples.py::test_docs_examples[docs/client/caching.md:48-50] tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:110-112] tests/test_examples.py::test_docs_examples[docs/client/transports.md:55-57] [gw35] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:11-13] [gw20] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:107-109] tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:22-24] [gw17] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:83-85] tests/test_examples.py::test_desktop tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:11-13] [gw38] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:46-48] tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:68-70] [gw39] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:18-22] tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:68-70] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:166-168] tests/test_examples.py::test_docs_examples[docs/whats-new.md:40-42] tests/test_examples.py::test_docs_examples[docs/deprecated.md:90-97] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:289-291] [gw14] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:48-50] [gw47] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/index.md:95-97] tests/test_examples.py::test_docs_examples[docs/servers/media.md:21-24] [gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:110-112] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:69-73] [gw18] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:93-95] tests/test_examples.py::test_docs_examples[docs/servers/tools.md:147-149] tests/test_examples.py::test_docs_examples[docs/client/caching.md:76-80] [gw13] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:55-57] tests/test_examples.py::test_docs_examples[docs/client/transports.md:111-113] tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:11-13] [gw35] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:22-24] [gw17] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:11-13] [gw38] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:68-70] tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:360-362] tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:162-164] [gw8] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:68-70] tests/test_examples.py::test_docs_examples[docs/servers/tools.md:47-50] [gw21] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:166-168] tests/test_examples.py::test_docs_examples[docs/servers/media.md:96-98] tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:11-13] [gw44] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:69-73] tests/test_examples.py::test_docs_examples[docs/servers/completions.md:61-63] tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:147-149] [gw14] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:76-80] tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:99-102] [gw39] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:40-42] tests/test_examples.py::test_docs_examples[docs/whats-new.md:56-86] tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:13-15] tests/test_examples.py::test_docs_examples[docs/servers/completions.md:11-13] tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:23-25] tests/test_examples.py::test_docs_examples[docs/servers/resources.md:59-61] [gw26] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:90-97] tests/test_examples.py::test_docs_examples[docs/client/index.md:130-134] [gw46] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:289-291] tests/test_examples.py::test_docs_examples[docs/client/index.md:180-183] tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:100-102] [gw5] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:147-149] tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:178-180] [gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:11-13] [gw13] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:111-113] [gw45] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:21-24] tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:45-47] tests/test_examples.py::test_docs_examples[docs/client/index.md:57-59] [gw7] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:162-164] [gw25] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:11-13] [gw19] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:360-362] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:172-174] [gw4] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:99-102] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:228-231] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:78-80] [gw23] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:147-149] tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:21-23] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:32-35] [gw21] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:23-25] tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:45-47] [gw28] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:96-98] tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:27-29] [gw42] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:59-61] tests/test_types.py::test_sampling_message_with_assistant_role [gw26] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:130-134] tests/test_examples.py::test_docs_examples[docs/client/index.md:152-154] [gw5] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:178-180] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:15-17] [gw44] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:100-102] tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:124-126] tests/test_examples.py::test_simple_echo [gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:47-50] tests/test_types.py::test_tool_use_content [gw2] [ 90%] PASSED tests/test_types.py::test_tool_use_content tests/test_types.py::test_tool_result_content [gw2] [ 90%] PASSED tests/test_types.py::test_tool_result_content [gw39] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:56-86] [gw27] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:11-13] tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:54-56] [gw41] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:13-15] tests/test_types.py::test_cacheable_results_default_to_immediately_stale_private [gw41] [ 90%] PASSED tests/test_types.py::test_cacheable_results_default_to_immediately_stale_private tests/test_types.py::test_empty_result_dumps_no_fields_by_default [gw36] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:61-63] tests/test_types.py::test_create_message_result_with_tool_use [gw36] [ 90%] PASSED tests/test_types.py::test_create_message_result_with_tool_use tests/test_types.py::test_create_message_result_basic [gw36] [ 90%] PASSED tests/test_types.py::test_create_message_result_basic [gw45] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:45-47] tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:17-19] [gw41] [ 90%] PASSED tests/test_types.py::test_empty_result_dumps_no_fields_by_default [gw19] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:228-231] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:250-252] [gw8] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:57-59] tests/test_examples.py::test_docs_examples[docs/client/index.md:63-67] [gw8] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:63-67] tests/test_examples.py::test_docs_examples[docs/client/index.md:96-98] [gw23] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:21-23] tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:67-69] [gw7] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:78-80] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:90-92] [gw25] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:172-174] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:178-180] [gw28] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:27-29] tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:35-37] [gw44] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:124-126] tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:137-139] [gw46] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:180-183] tests/test_examples.py::test_docs_examples[docs/client/index.md:191-193] [gw46] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:191-193] tests/test_examples.py::test_docs_examples[docs/client/index.md:204-206] tests/test_types.py::test_tool_choice [gw2] [ 90%] PASSED tests/test_types.py::test_tool_choice [gw21] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:45-47] tests/test_examples.py::test_docs_examples[docs/client/index.md:11-13] [gw42] [ 90%] PASSED tests/test_types.py::test_sampling_message_with_assistant_role tests/test_types.py::test_sampling_message_backward_compatibility [gw42] [ 90%] PASSED tests/test_types.py::test_sampling_message_backward_compatibility [gw0] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:32-35] tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[jsonrpc] [gw0] [ 90%] PASSED tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[jsonrpc] tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[methods] [gw0] [ 90%] PASSED tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[methods] [gw27] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:54-56] tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:63-65] [gw27] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:63-65] tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:95-97] tests/test_types.py::test_tool_preserves_json_schema_2020_12_fields [gw4] [ 90%] PASSED tests/test_types.py::test_tool_preserves_json_schema_2020_12_fields tests/test_types.py::test_list_tools_result_preserves_json_schema_2020_12_fields [gw4] [ 90%] PASSED tests/test_types.py::test_list_tools_result_preserves_json_schema_2020_12_fields [gw45] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:17-19] tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:42-55] [gw26] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:152-154] tests/test_examples.py::test_docs_examples[docs/client/index.md:166-168] [gw8] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:96-98] [gw19] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:250-252] [gw12] [ 90%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[mcp-error] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}] [gw12] [ 90%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{b}] [gw12] [ 90%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{b}] [gw12] [ 90%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{;a}{b}] [gw12] [ 90%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{;a}{b}] tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}X{+p}] [gw12] [ 90%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}X{+p}] [gw23] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:67-69] tests/test_types.py::test_jsonrpc_request [gw23] [ 90%] PASSED tests/test_types.py::test_jsonrpc_request [gw25] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:178-180] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:197-201] [gw5] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:15-17] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:39-41] [gw5] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:39-41] [gw28] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:35-37] tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:45-47] [gw21] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:11-13] [gw46] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:204-206] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:258-260] [gw45] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:42-55] [gw44] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:137-139] [gw27] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:95-97] [gw26] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:166-168] [gw25] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:197-201] [gw28] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:45-47] [gw7] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:90-92] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:119-121] [gw7] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:119-121] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:109-111] [gw19] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:258-260] tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:180-182] tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:98-100] tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:27-47] tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:67-69] tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:118-120] tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:169-171] tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:38-40] tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:122-126] tests/test_examples.py::test_docs_examples[docs/run/asgi.md:82-84] tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:9-11] tests/test_examples.py::test_docs_examples[docs/handlers/context.md:11-13] tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:14-16] [gw1] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:109-111] tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:21-23] tests/test_examples.py::test_docs_examples[docs/run/deploy.md:20-22] [gw24] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:118-120] [gw10] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:98-100] tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:158-160] tests/transports/stdio/test_lifecycle.py::test_fallback_process_wait_is_cancellable_while_the_child_lives [gw11] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:27-47] [gw43] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:82-84] tests/test_types.py::test_bare_import_mcp_binds_the_types_submodule [gw37] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:180-182] tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_mid_session_keeps_its_own_exit_code tests/types/test_methods.py::test_elicit_result_surface_accepts_null_content_values_at_every_version_that_defines_it tests/test_examples.py::test_docs_examples[docs/run/authorization.md:21-23] [gw16] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:169-171] [gw34] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:38-40] tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:34-36] tests/types/test_methods.py::test_surface_keys_agree_with_their_classes_and_the_monolith_maps [gw29] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:14-16] [gw30] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:122-126] tests/types/test_methods.py::test_input_required_methods_mirror_the_monolith_input_required_arms tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:122-124] tests/types/test_methods.py::test_2025_11_25_tool_schema_surfaces_accept_boolean_sub_schemas tests/test_examples.py::test_docs_examples[docs/client/caching.md:9-11] tests/types/test_methods.py::test_2026_07_28_requests_accept_meta_without_the_optional_client_info [gw24] [ 91%] PASSED tests/types/test_methods.py::test_elicit_result_surface_accepts_null_content_values_at_every_version_that_defines_it [gw15] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:67-69] tests/transports/stdio/test_windows.py::test_a_tool_spawned_python_child_with_default_stdin_completes_promptly [gw15] [ 91%] SKIPPED tests/transports/stdio/test_windows.py::test_a_tool_spawned_python_child_with_default_stdin_completes_promptly tests/types/test_methods.py::test_maps_define_exactly_the_expected_methods_for_every_known_version [gw15] [ 91%] PASSED tests/types/test_methods.py::test_maps_define_exactly_the_expected_methods_for_every_known_version tests/transports/stdio/test_windows.py::test_a_gracefully_exited_servers_child_is_reaped_when_the_job_handle_closes [gw11] [ 91%] SKIPPED tests/transports/stdio/test_windows.py::test_a_gracefully_exited_servers_child_is_reaped_when_the_job_handle_closes tests/transports/stdio/test_windows.py::test_a_selector_event_loop_session_uses_the_fallback_process_and_exits_cleanly[anyio_backend0] [gw11] [ 91%] SKIPPED tests/transports/stdio/test_windows.py::test_a_selector_event_loop_session_uses_the_fallback_process_and_exits_cleanly[anyio_backend0] [gw34] [ 91%] PASSED tests/types/test_methods.py::test_surface_keys_agree_with_their_classes_and_the_monolith_maps tests/types/test_methods.py::test_discovery_capabilities_preserve_nested_json_values tests/types/test_methods.py::test_minimal_notification_bodies_parse_through_every_notification_row [gw43] [ 91%] PASSED tests/types/test_methods.py::test_minimal_notification_bodies_parse_through_every_notification_row tests/types/test_methods.py::test_minimal_result_bodies_parse_through_every_result_row [gw9] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:21-23] tests/types/test_methods.py::test_inconsistent_extension_maps_raise_runtime_error_after_the_surface_hit [gw30] [ 91%] PASSED tests/types/test_methods.py::test_input_required_methods_mirror_the_monolith_input_required_arms tests/types/test_methods.py::test_is_input_required_matches_typed_and_wire_shapes [gw30] [ 91%] PASSED tests/types/test_methods.py::test_is_input_required_matches_typed_and_wire_shapes tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:42-47] [gw22] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:11-13] tests/types/test_methods.py::test_none_params_omit_the_key_so_required_params_reject [gw33] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:20-22] tests/types/test_methods.py::test_absent_map_keys_raise_key_error_for_every_gate_shape [gw33] [ 91%] PASSED tests/types/test_methods.py::test_absent_map_keys_raise_key_error_for_every_gate_shape tests/types/test_methods.py::test_unknown_version_strings_raise_value_error_on_every_parse_function [gw16] [ 91%] PASSED tests/types/test_methods.py::test_2025_11_25_tool_schema_surfaces_accept_boolean_sub_schemas tests/types/test_methods.py::test_response_map_keys_mirror_the_request_map_keys [gw9] [ 91%] PASSED tests/types/test_methods.py::test_inconsistent_extension_maps_raise_runtime_error_after_the_surface_hit tests/types/test_methods.py::test_input_required_unions_discriminate_identically_in_both_arm_orders [gw40] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:9-11] tests/types/test_methods.py::test_2026_07_28_shaped_result_extras_pass_at_earlier_versions [gw22] [ 91%] PASSED tests/types/test_methods.py::test_none_params_omit_the_key_so_required_params_reject tests/types/test_methods.py::test_snake_case_spellings_of_required_aliased_fields_reject_as_missing [gw17] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:34-36] tests/types/test_methods.py::test_built_in_maps_are_immutable [gw34] [ 91%] PASSED tests/types/test_methods.py::test_built_in_maps_are_immutable [gw47] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/run/authorization.md:21-23] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2024-11-05] [gw33] [ 91%] PASSED tests/types/test_methods.py::test_unknown_version_strings_raise_value_error_on_every_parse_function [gw40] [ 91%] PASSED tests/types/test_methods.py::test_2026_07_28_shaped_result_extras_pass_at_earlier_versions tests/types/test_methods.py::test_embedded_input_request_entries_without_method_reject_at_the_surface_step [gw24] [ 91%] PASSED tests/types/test_methods.py::test_discovery_capabilities_preserve_nested_json_values [gw35] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:42-47] [gw18] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:122-124] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-06-18] [gw29] [ 91%] PASSED tests/types/test_methods.py::test_2026_07_28_requests_accept_meta_without_the_optional_client_info tests/types/test_methods.py::test_2026_07_28_results_require_result_type [gw29] [ 91%] PASSED tests/types/test_methods.py::test_2026_07_28_results_require_result_type [gw22] [ 91%] PASSED tests/types/test_methods.py::test_snake_case_spellings_of_required_aliased_fields_reject_as_missing tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-06-18] [gw20] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:158-160] tests/types/test_methods.py::test_validate_functions_accept_reject_and_gate_like_their_parse_siblings [gw20] [ 91%] PASSED tests/types/test_methods.py::test_validate_functions_accept_reject_and_gate_like_their_parse_siblings tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2024-11-05] [gw16] [ 91%] PASSED tests/types/test_methods.py::test_response_map_keys_mirror_the_request_map_keys [gw47] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-03-26] [gw47] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-11-25] [gw43] [ 92%] PASSED tests/types/test_methods.py::test_minimal_result_bodies_parse_through_every_result_row [gw18] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-06-18] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-11-25] [gw17] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-06-18] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-11-25] [gw35] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-11-25] [gw38] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:9-11] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-03-26] [gw18] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-11-25] [gw40] [ 92%] PASSED tests/types/test_methods.py::test_embedded_input_request_entries_without_method_reject_at_the_surface_step tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2024-11-05] [gw17] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-11-25] [gw20] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2024-11-05] [gw31] [ 92%] PASSED tests/test_examples.py::test_desktop [gw35] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2024-11-05] [gw38] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-03-26] [gw32] [ 92%] PASSED tests/test_examples.py::test_simple_echo tests/test_examples.py::test_docs_examples[docs/client/transports.md:13-15] tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:15-17] tests/test_examples.py::test_docs_examples[README.md:47-63] tests/test_types.py::test_input_required_result_dumps_its_discriminating_tag tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-06-18] tests/test_examples.py::test_docs_examples[docs/client/transports.md:131-133] [gw32] [ 92%] PASSED tests/test_types.py::test_input_required_result_dumps_its_discriminating_tag [gw38] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-06-18] tests/test_types.py::test_input_required_result_requires_at_least_one_of_input_requests_or_request_state [gw32] [ 92%] PASSED tests/test_types.py::test_input_required_result_requires_at_least_one_of_input_requests_or_request_state tests/test_examples.py::test_docs_examples[docs/whats-new.md:96-98] tests/test_types.py::test_client_capabilities_with_sampling_tools tests/test_types.py::test_empty_result_dumps_result_type_only_when_explicitly_tagged [gw36] [ 92%] PASSED tests/test_types.py::test_client_capabilities_with_sampling_tools [gw3] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:15-17] tests/test_types.py::test_sampling_message_with_user_role [gw14] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:13-15] [gw41] [ 92%] PASSED tests/test_types.py::test_empty_result_dumps_result_type_only_when_explicitly_tagged tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-06-18] [gw13] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:131-133] tests/test_types.py::test_create_message_request_params_with_tools [gw31] [ 92%] PASSED tests/test_examples.py::test_docs_examples[README.md:47-63] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-11-25] [gw2] [ 92%] PASSED tests/test_types.py::test_sampling_message_with_user_role tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-06-18] [gw41] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2024-11-05] [gw3] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-11-25] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2026-07-28] [gw36] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-06-18] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-11-25] [gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-06-18] [gw42] [ 92%] PASSED tests/test_types.py::test_create_message_request_params_with_tools tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2026-07-28] [gw39] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:96-98] [gw13] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2026-07-28] [gw36] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-11-25] [gw14] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-03-26] [gw14] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-06-18] tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[version] [gw3] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2026-07-28] [gw39] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2026-07-28] tests/test_types.py::test_concrete_wire_results_always_dump_result_type_complete [gw42] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2026-07-28] [gw0] [ 92%] PASSED tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[version] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2024-11-05] tests/test_examples.py::test_docs_examples[docs/client/index.md:102-106] [gw13] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-06-18] [gw39] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-03-26] [gw4] [ 92%] PASSED tests/test_types.py::test_concrete_wire_results_always_dump_result_type_complete tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}X{a}{b}] tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:159-161] tests/test_examples.py::test_docs_examples[docs/client/index.md:21-23] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:60-62] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-11-25] tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:89-91] tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:164-166] tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:13-15] [gw0] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-03-26] tests/test_examples.py::test_docs_examples[docs/client/index.md:172-176] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:208-210] [gw12] [ 92%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}X{a}{b}] tests/test_types.py::test_method_initialization [gw23] [ 92%] PASSED tests/test_types.py::test_method_initialization tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:11-13] [gw4] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-11-25] tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:141-143] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-11-25] tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:23-25] [gw8] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:102-106] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2024-11-05] [gw23] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-03-26] [gw12] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-11-25] [gw5] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:60-62] [gw44] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:164-166] [gw9] [ 92%] PASSED tests/types/test_methods.py::test_input_required_unions_discriminate_identically_in_both_arm_orders [gw26] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:172-176] [gw46] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:13-15] [gw7] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:141-143] [gw45] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:89-91] [gw25] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:208-210] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2024-11-05] [gw8] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-03-26] [gw27] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:159-161] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-06-18] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[server/discover-2026-07-28] [gw28] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:23-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-06-18] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2026-07-28] [gw44] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2026-07-28] [gw21] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:21-23] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-06-18] [gw21] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-06-18] [gw46] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[server/discover-2026-07-28] [gw19] [ 93%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:11-13] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-06-18] [gw7] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2024-11-05] [gw45] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-06-18] [gw28] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-06-18] [gw25] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2024-11-05] [gw27] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-03-26] [gw5] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2024-11-05] [gw26] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-11-25] [gw19] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-06-18] tests/types/test_methods.py::test_cacheable_methods_mirror_the_cacheable_method_literal tests/transports/stdio/test_windows.py::test_a_native_server_emitting_crlf_line_endings_round_trips_messages [gw11] [ 93%] SKIPPED tests/transports/stdio/test_windows.py::test_a_native_server_emitting_crlf_line_endings_round_trips_messages tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-06-18] tests/types/test_methods.py::test_spec_client_method_sets_are_the_client_direction_projection_of_the_surface_maps [gw15] [ 93%] PASSED tests/types/test_methods.py::test_spec_client_method_sets_are_the_client_direction_projection_of_the_surface_maps tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2024-11-05] tests/types/test_methods.py::test_elicit_request_surface_accepts_loose_property_schemas [gw24] [ 93%] PASSED tests/types/test_methods.py::test_elicit_request_surface_accepts_loose_property_schemas tests/types/test_methods.py::test_2026_07_28_requests_missing_a_required_meta_entry_reject_as_missing [gw33] [ 93%] PASSED tests/types/test_methods.py::test_2026_07_28_requests_missing_a_required_meta_entry_reject_as_missing tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2024-11-05] [gw15] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2024-11-05] tests/types/test_methods.py::test_response_row_values_match_the_pinned_classes_and_unions tests/types/test_methods.py::test_empty_result_body_parses_at_versions_that_define_it [gw29] [ 93%] PASSED tests/types/test_methods.py::test_empty_result_body_parses_at_versions_that_define_it tests/types/test_methods.py::test_input_required_url_elicit_without_elicitation_id_parses_at_2026 [gw34] [ 93%] PASSED tests/types/test_methods.py::test_cacheable_methods_mirror_the_cacheable_method_literal tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-06-18] [gw34] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-06-18] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2024-11-05] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-06-18] [gw24] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-06-18] [gw33] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2024-11-05] [gw11] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-06-18] tests/types/test_methods.py::test_minimal_request_bodies_parse_through_every_request_row [gw30] [ 93%] PASSED tests/types/test_methods.py::test_minimal_request_bodies_parse_through_every_request_row tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2024-11-05] [gw30] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-03-26] [gw20] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2026-07-28] [gw18] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2026-07-28] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2024-11-05] [gw29] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2024-11-05] [gw17] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2024-11-05] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-06-18] [gw17] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-06-18] [gw16] [ 93%] PASSED tests/types/test_methods.py::test_response_row_values_match_the_pinned_classes_and_unions tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-06-18] [gw16] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-06-18] tests/types/test_methods.py::test_non_file_root_uri_passes_the_surface_step_and_rejects_at_the_monolith_step [gw43] [ 93%] PASSED tests/types/test_methods.py::test_non_file_root_uri_passes_the_surface_step_and_rejects_at_the_monolith_step tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2024-11-05] [gw43] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2024-11-05] [gw40] [ 93%] PASSED tests/types/test_methods.py::test_input_required_url_elicit_without_elicitation_id_parses_at_2026 tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-06-18] [gw40] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-06-18] [gw20] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2024-11-05] tests/types/test_methods.py::test_extension_map_rows_parse_through_the_same_functions [gw22] [ 93%] PASSED tests/types/test_methods.py::test_extension_map_rows_parse_through_the_same_functions tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-06-18] [gw22] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-06-18] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-06-18] [gw47] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-06-18] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2024-11-05] [gw47] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-11-25] [gw38] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-11-25] [gw18] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-03-26] [gw35] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-06-18] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2024-11-05] tests/test_types.py::test_mcp_types_namespace_mirrors_mcp_types_exactly [gw32] [ 93%] PASSED tests/test_types.py::test_mcp_types_namespace_mirrors_mcp_types_exactly tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-06-18] [gw35] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-06-18] [gw38] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2024-11-05] [gw32] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-06-18] tests/test_examples.py::test_docs_examples[README.md:90-103] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2026-07-28] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-06-18] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-11-25] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2024-11-05] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-11-25] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-06-18] [gw41] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-03-26] [gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2024-11-05] tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-03-26] [gw2] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-11-25] [gw14] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-06-18] tests/types/test_methods.py::test_serialize_server_result_keeps_2026_only_keys_at_2026_07_28 [gw14] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_keeps_2026_only_keys_at_2026_07_28 [gw0] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-06-18] tests/types/test_methods.py::test_importing_the_module_builds_no_adapters_and_identical_rows_share_one tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2024-11-05] [gw42] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2024-11-05] tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-11-25] [gw3] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-03-26] [gw39] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_an_unknown_nested_tool_field tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2024-11-05] [gw4] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2024-11-05] [gw36] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2026-07-28] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-06-18] [gw36] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-06-18] [gw0] [ 94%] PASSED tests/types/test_methods.py::test_importing_the_module_builds_no_adapters_and_identical_rows_share_one tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-06-18] [gw41] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-06-18] [gw13] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_preserves_open_type_extras [gw13] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_open_type_extras [gw2] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2024-11-05] [gw39] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_an_unknown_nested_tool_field [gw31] [ 94%] PASSED tests/test_examples.py::test_docs_examples[README.md:90-103] [gw42] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-11-25] [gw37] [ 94%] PASSED tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_mid_session_keeps_its_own_exit_code tests/transports/stdio/test_lifecycle.py::test_server_stderr_output_reaches_the_errlog_file tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2024-11-05] tests/types/test_methods.py::test_sampling_union_keeps_the_complete_arm_first_because_order_is_load_bearing tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-06-18] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2026-07-28] [gw31] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2024-11-05] [gw23] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2024-11-05] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[subscriptions/listen-2026-07-28] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-11-25] [gw8] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-06-18] [gw12] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2026-07-28] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-03-26] [gw9] [ 94%] PASSED tests/types/test_methods.py::test_sampling_union_keeps_the_complete_arm_first_because_order_is_load_bearing tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-06-18] [gw46] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[subscriptions/listen-2026-07-28] [gw44] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2024-11-05] [gw21] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-11-25] [gw25] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-03-26] [gw7] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-03-26] [gw45] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-11-25] [gw27] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-06-18] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-11-25] [gw28] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-11-25] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2026-07-28] [gw26] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2026-07-28] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-11-25] [gw19] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-03-26] tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-03-26] [gw5] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-11-25] [gw15] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-03-26] [gw11] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-11-25] [gw33] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-03-26] [gw34] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-11-25] [gw30] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-03-26] [gw10] [ 94%] PASSED tests/transports/stdio/test_lifecycle.py::test_fallback_process_wait_is_cancellable_while_the_child_lives tests/transports/stdio/test_posix.py::test_a_gracefully_exiting_servers_child_survives_the_client_shutdown tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-03-26] [gw24] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-11-25] [gw17] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-11-25] [gw29] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-03-26] [gw16] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-03-26] [gw43] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-11-25] [gw40] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-11-25] [gw22] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-11-25] [gw20] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-03-26] [gw47] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-03-26] [gw38] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-03-26] [gw35] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-11-25] [gw32] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-11-25] [gw18] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2024-11-05] tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-06-18] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-11-25] tests/types/test_methods.py::test_serialize_server_result_drops_top_level_server_info_on_discover_but_keeps_the_meta_stamp tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-03-26] tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2026-07-28] [gw14] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2024-11-05] tests/types/test_methods.py::test_serialize_server_result_raises_key_error_for_an_absent_row_and_value_error_for_an_unknown_version [gw3] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-06-18] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BlobResourceContents--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BaseMetadata--] [gw41] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-11-25] [gw42] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2026-07-28] [gw0] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BaseMetadata--] [gw4] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BlobResourceContents--] [gw13] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_top_level_server_info_on_discover_but_keeps_the_meta_stamp tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-03-26] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation--] [gw36] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-11-25] [gw31] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-03-26] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params--] [gw39] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_raises_key_error_for_an_absent_row_and_value_error_for_an_unknown_version [gw2] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-03-26] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling1--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation1--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Roots--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks--] [gw8] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling--] [gw23] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params--] [gw44] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation1--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Context--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ClientCapabilities--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Completion--] [gw12] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation--] [gw21] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling1--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Argument--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params1--] [gw46] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests--] [gw7] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteResult--] [gw27] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Completion--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Error--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitationCompleteNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params3--] [gw15] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitationCompleteNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Icon--] [gw30] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Icon--] [gw33] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadResult--] [gw9] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Roots--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Implementation--] [gw19] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params1--] [gw28] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Argument--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params2--] [gw24] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params2--] [gw25] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Context--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelPreferences--] [gw40] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelPreferences--] [gw5] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteResult--] [gw11] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params3--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotificationParams--] [gw16] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotificationParams--] [gw45] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ClientCapabilities--] [gw29] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Implementation--] [gw34] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Error--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelHint--] [gw43] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelHint--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptListChangedNotification--] [gw38] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptListChangedNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptArgument--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Notification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptReference--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequestParams--] [gw32] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCNotification--] [gw17] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Result--] [gw37] [ 95%] PASSED tests/transports/stdio/test_lifecycle.py::test_server_stderr_output_reaches_the_errlog_file tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Request--] [gw26] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitResult--] [gw18] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptArgument--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceListChangedNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompts--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.NotificationParams--] [gw22] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.NotificationParams--] [gw47] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplateReference--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools1--] [gw21] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools1--] [gw35] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptReference--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RelatedTaskMetadata--] [gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RelatedTaskMetadata--] [gw8] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Root--] [gw42] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Root--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotificationParams--] [gw39] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RootsListChangedNotification--] [gw4] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RootsListChangedNotification--] [gw20] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Notification--] [gw14] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Request--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks1--] [gw44] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks1--] [gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplateReference--] [gw31] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompts--] [gw36] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceContents--] [gw41] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceContents--] [gw0] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Result--] [gw13] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceListChangedNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resources--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextResourceContents--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Annotations--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ServerCapabilities--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.AudioContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests1--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolListChangedNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolAnnotations--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.EmbeddedResource--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolChoice--] [gw23] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resources--] [gw27] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextResourceContents--] [gw7] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequestParams--] [gw30] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Annotations--] [gw24] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskRequest--] [gw9] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ServerCapabilities--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolUseContent--] [gw5] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolUseContent--] [gw28] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolAnnotations--] [gw19] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolListChangedNotification--] [gw15] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.AudioContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestURLParams--] [gw29] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestURLParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskMetadata--] [gw45] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskMetadata--] [gw33] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequestParams--] [gw12] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests1--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequestParams--] [gw25] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequestParams--] [gw40] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.EmbeddedResource--] [gw11] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestFormParams--] [gw16] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestFormParams--] [gw46] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolChoice--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ImageContent--] tests/transports/stdio/test_lifecycle.py::test_fallback_process_reports_death_through_returncode_without_a_wait_call [gw43] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolExecution--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializedNotification--] [gw38] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resource--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCErrorResponse--] [gw32] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ImageContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompt--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequestParams--] [gw22] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequestParams--] [gw17] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PingRequest--] [gw42] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PingRequest--] [gw47] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeResult--] [gw18] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializedNotification--] [gw34] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadRequest--] [gw20] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCRequest--] [gw14] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplate--] [gw44] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplate--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceLink--] [gw21] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceLink--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequestParams--] [gw39] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCResultResponse--] [gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCResultResponse--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotificationParams--] [gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotificationParams--] [gw26] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolExecution--] [gw8] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resource--] [gw4] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompt--] [gw35] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCErrorResponse--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Task--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Data--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateTaskResult--] [gw36] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequest--] [gw0] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsResult--] [gw13] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequest--] [gw41] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsResult--] [gw31] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceResult--] [gw24] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskResult--] [gw5] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateTaskResult--] [gw9] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Data--] [gw29] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsResult--] [gw23] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsRequest--] [gw28] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequest--] [gw27] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Task--] [gw7] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotification--] [gw45] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tool--] [gw33] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tool--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskResult--] [gw15] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequest--] [gw16] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskResult--] [gw12] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequest--] [gw19] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequest--] [gw25] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotification--] [gw40] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequest--] [gw11] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequest--] [gw46] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequest--] [gw30] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SamplingMessage--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotification--] [gw38] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequestParams--] [gw43] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesResult--] [gw22] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequest--] [gw42] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequest--] [gw20] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SamplingMessage--] [gw32] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptMessage--] [gw18] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsResult--] [gw47] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotification--] [gw14] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequestParams--] [gw34] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesRequest--] [gw17] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksRequest--] [gw21] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptMessage--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolResultContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BaseMetadata--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequest--] [gw4] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageResult--] [gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BaseMetadata--] [gw35] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotification--] [gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolResultContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestURLParams--] [gw44] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequest--] [gw39] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Context--] [gw36] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Context--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestFormParams--] [gw0] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestFormParams--] [gw8] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolResult--] [gw37] [ 97%] PASSED tests/transports/stdio/test_lifecycle.py::test_fallback_process_reports_death_through_returncode_without_a_wait_call [gw26] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsRequest--] [gw13] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestURLParams--] [gw6] [ 97%] PASSED tests/shared/test_streamable_http.py::test_server_close_sse_stream_via_context tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Completion--] [gw41] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Completion--] tests/shared/test_streamable_http.py::test_standalone_get_stream_reconnection tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Argument--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelHint--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Implementation--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptReference--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelPreferences--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Error--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Icon--] [gw31] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Argument--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Request--] [gw24] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Implementation--] [gw5] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelHint--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceContents--] [gw27] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Error--] [gw29] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptReference--] [gw23] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitResult--] [gw9] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCNotification--] [gw7] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Icon--] [gw45] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Request--] [gw28] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelPreferences--] [gw33] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceContents--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptArgument--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplateReference--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Notification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resources--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Root--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tools--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextResourceContents--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionFilter--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompts--] [gw12] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplateReference--] [gw25] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Root--] [gw15] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptArgument--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolAnnotations--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolUseContent--] [gw46] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextResourceContents--] [gw30] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompts--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.AudioContent--] [gw19] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Notification--] [gw16] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionFilter--] [gw40] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resources--] [gw38] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolAnnotations--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CacheableResult--] [gw18] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CacheableResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.EmbeddedResource--] [gw32] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolUseContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data1--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Annotations--] [gw17] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Annotations--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BlobResourceContents--] [gw47] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BlobResourceContents--] [gw42] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.AudioContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ImageContent--] [gw14] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ImageContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteResult--] [gw34] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteResult--] [gw20] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.EmbeddedResource--] [gw22] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data1--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotificationParams--] [gw4] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsRequest--] [gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompt--] [gw35] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompt--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptListChangedNotification--] [gw44] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptListChangedNotification--] [gw11] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tools--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCRequest--] [gw39] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceResult--] [gw36] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsResult--] [gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCErrorResponse--] [gw21] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCErrorResponse--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolChoice--] [gw43] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolChoice--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resource--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.NotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceLink--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceListChangedNotification--] [gw10] [ 97%] PASSED tests/transports/stdio/test_posix.py::test_a_gracefully_exiting_servers_child_survives_the_client_shutdown tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenResult--] [gw8] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedResult--] [gw26] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.NotificationParams--] [gw0] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resource--] [gw41] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceListChangedNotification--] [gw13] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceLink--] [gw29] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplate--] [gw31] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplate--] [gw37] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksResult--] [gw23] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenResult--] [gw24] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ServerCapabilities--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotificationParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Result--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tool--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolListChangedNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Elicitation--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Sampling--] [gw7] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolListChangedNotification--] [gw28] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextContent--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverResult--] [gw9] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ServerCapabilities--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCResultResponse--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsResult--] [gw15] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Sampling--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotificationParams--] [gw38] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotificationParams--] [gw27] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tool--] [gw19] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverResult--] [gw40] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCResultResponse--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data--] [gw32] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data--] [gw46] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotification--] [gw18] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotification--] [gw16] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsResult--] [gw30] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequestParams--] [gw14] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotification--] [gw47] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolResultContent--] [gw34] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolResultContent--] [gw45] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotificationParams--] [gw25] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequest--] [gw5] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Result--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptMessage--] [gw42] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptMessage--] [gw33] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Elicitation--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.RequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptResult--] [gw20] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotification--] [gw3] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotification--] [gw4] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverRequest--] [gw22] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.RequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ClientCapabilities--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsResult--] [gw11] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotification--] tests/transports/stdio/test_posix.py::test_a_surviving_childs_write_to_the_inherited_stdout_fails_with_epipe tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequestParams--] [gw44] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequestParams--] [gw35] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequestParams--] [gw21] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageResult--] [gw36] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageResult--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequest--] [gw43] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotification--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequest--] [gw39] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolResult--] [gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesRequest--] [gw0] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsRequest--] [gw13] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequestParams--] [gw41] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequestParams--] [gw12] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ClientCapabilities--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesRequest--] [gw17] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolResult--] [gw26] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsRequest--] [gw31] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequestParams--] [gw8] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesRequest--] [gw37] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SamplingMessage--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequest--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputResponseRequestParams--] tests/types/test_request_name_param.py::test_request_base_declares_no_name_param tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2024-11-05-True] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequest--] [gw23] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequestParams--] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputRequiredResult--] [gw29] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequestParams--] tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-11-25-True] tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-06-18-True] [gw24] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SamplingMessage--] tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2025-11-25-False] tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2024-11-05-True] tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[] [gw9] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputResponseRequestParams--] tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2025-03-26-False] tests/types/test_request_name_param.py::test_subclass_overrides_by_bare_assignment tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[2025-11-26] [gw7] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequest--] [gw28] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputRequiredResult--] [gw27] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequest--] tests/types/test_request_name_param.py::test_core_request_types_inherit_none [gw19] [ 98%] PASSED tests/types/test_request_name_param.py::test_core_request_types_inherit_none [gw30] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2025-11-25-False] [gw32] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2024-11-05-True] [gw47] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2025-03-26-False] [gw38] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-11-25-True] [gw16] [ 99%] PASSED tests/types/test_request_name_param.py::test_subclass_overrides_by_bare_assignment [gw14] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[] [gw18] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2024-11-05-True] [gw34] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[2025-11-26] [gw46] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-06-18-True] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequest--] [gw45] [ 99%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequest--] tests/types/test_parity.py::test_every_public_monolith_model_is_exported_from_mcp_types [gw33] [ 99%] PASSED tests/types/test_parity.py::test_every_public_monolith_model_is_exported_from_mcp_types tests/types/test_parity.py::test_every_surface_class_is_accounted_for [gw15] [ 99%] PASSED tests/types/test_request_name_param.py::test_request_base_declares_no_name_param tests/types/test_request_name_param.py::test_name_param_is_not_a_pydantic_field tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[9999-99-99] tests/types/test_version.py::test_is_version_at_least_unknown_minimum_raises tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2024-11-05] tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequest--] [gw5] [ 99%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequest--] tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[draft] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-11-25] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-03-26] [gw20] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[draft] tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[zzz] [gw42] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[zzz] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-06-18] [gw44] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-06-18] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2024-11-05] [gw11] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-11-25] [gw4] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_minimum_raises [gw36] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2024-11-05] [gw25] [ 99%] PASSED tests/types/test_parity.py::test_every_surface_class_is_accounted_for [gw35] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-03-26] [gw40] [ 99%] PASSED tests/types/test_request_name_param.py::test_name_param_is_not_a_pydantic_field tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2026-07-28] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-06-18] [gw21] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-06-18] [gw3] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2024-11-05] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2026-07-28] [gw43] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2026-07-28] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-03-26] [gw2] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-03-26] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-06-18] [gw22] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[9999-99-99] [gw39] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2026-07-28] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-06-18] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2024-11-05] [gw0] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-06-18] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-11-25] [gw12] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-11-25] [gw41] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-06-18] tests/types/test_wire_frames.py::test_empty_result_frame_dumps_an_empty_result_object tests/types/test_wire_frames.py::test_error_frame_wraps_error_data_in_the_jsonrpc_envelope [gw30] [ 99%] PASSED tests/types/test_wire_frames.py::test_empty_result_frame_dumps_an_empty_result_object tests/types/test_wire_frames.py::test_cacheable_list_result_dump_carries_default_caching_directives tests/types/test_wire_frames.py::test_input_required_result_frame_carries_the_tag_and_the_embedded_requests tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-03-26] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2026-07-28] [gw23] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2026-07-28] tests/types/test_wire_frames.py::test_request_frame_carries_the_envelope_and_the_dumped_request_body tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-11-25] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-11-25] [gw37] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-11-25] tests/types/test_version.py::test_supported_versions_are_known tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-06-18] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-03-26] [gw16] [ 99%] PASSED tests/types/test_wire_frames.py::test_cacheable_list_result_dump_carries_default_caching_directives tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2026-07-28] [gw8] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2026-07-28] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2024-11-05] [gw13] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2024-11-05] tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2024-11-05] [gw27] [ 99%] PASSED tests/types/test_version.py::test_supported_versions_are_known [gw14] [ 99%] PASSED tests/types/test_wire_frames.py::test_input_required_result_frame_carries_the_tag_and_the_embedded_requests [gw19] [ 99%] PASSED tests/types/test_wire_frames.py::test_error_frame_wraps_error_data_in_the_jsonrpc_envelope tests/types/test_wire_frames.py::test_notification_frame_has_no_id_and_carries_the_dumped_params [gw29] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-03-26] tests/types/test_version.py::test_known_versions_are_strictly_ordered [gw28] [ 99%] PASSED tests/types/test_version.py::test_known_versions_are_strictly_ordered [gw32] [ 99%] PASSED tests/types/test_wire_frames.py::test_request_frame_carries_the_envelope_and_the_dumped_request_body tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-11-25] [gw7] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-06-18] [gw31] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-03-26] [gw17] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2024-11-05] [gw9] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-11-25] [gw26] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-11-25] tests/types/test_wire_frames.py::test_non_empty_result_dump_carries_result_type_complete_before_the_sieve [gw18] [ 99%] PASSED tests/types/test_wire_frames.py::test_non_empty_result_dump_carries_result_type_complete_before_the_sieve tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2026-07-28] [gw46] [ 99%] PASSED tests/types/test_wire_frames.py::test_notification_frame_has_no_id_and_carries_the_dumped_params [gw24] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2024-11-05] [gw15] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2026-07-28] [gw10] [ 99%] PASSED tests/transports/stdio/test_posix.py::test_a_surviving_childs_write_to_the_inherited_stdout_fails_with_epipe tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-03-26] [gw10] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-03-26] [gw6] [ 99%] PASSED tests/shared/test_streamable_http.py::test_standalone_get_stream_reconnection tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}-{+b}x---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------] [gw6] [ 99%] PASSED tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}-{+b}x---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------] tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}L{b}L{c}L{d}M-LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL] [gw6] [ 99%] PASSED tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}L{b}L{c}L{d}M-LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL] tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}-http://x] [gw6] [ 99%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}-http://x] tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}.txt-file://x] [gw6] [ 99%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}.txt-file://x] tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[{a}@{+path}-no-at-sign-here] [gw6] [ 99%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[{a}@{+path}-no-at-sign-here] [gw1] [ 99%] PASSED tests/test_types.py::test_bare_import_mcp_binds_the_types_submodule tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_on_stdin_close_is_reaped_and_never_terminated [gw1] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_on_stdin_close_is_reaped_and_never_terminated tests/transports/stdio/test_lifecycle.py::test_cancelling_the_client_mid_session_terminates_the_whole_server_tree [gw1] [100%] PASSED tests/transports/stdio/test_lifecycle.py::test_cancelling_the_client_mid_session_terminates_the_whole_server_tree ================= 5904 passed, 8 skipped, 1 xfailed in 25.67s ================== Finished executing pytestCheckPhase Running phase: pytestcachePhase Running phase: pytestRemoveBytecodePhase