Coverage report: 99%

Files Functions Classes

coverage.py v7.13.1, created at 2026-02-11 07:10 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
mcpgateway / admin.py set_logging_service   100% 2 0 0   100% 0 0   100%
mcpgateway / admin.py _normalize_team_id   100% 6 0 0   100% 2 0   100%
mcpgateway / admin.py _validated_team_id_param   100% 4 0 0   100% 0 0   100%
mcpgateway / admin.py get_client_ip   100% 7 0 0   100% 4 0   100%
mcpgateway / admin.py get_user_agent   100% 1 0 0   100% 0 0   100%
mcpgateway / admin.py rate_limit   100% 2 0 0   100% 0 0   100%
mcpgateway / admin.py rate_limit.decorator   100% 3 0 0   100% 0 0   100%
mcpgateway / admin.py rate_limit.decorator.wrapper   100% 10 0 0   100% 2 0   100%
mcpgateway / admin.py get_user_email   100% 7 0 0   100% 6 0   100%
mcpgateway / admin.py _get_user_team_roles   100% 1 0 0   100% 0 0   100%
mcpgateway / admin.py _get_span_entity_performance   100% 23 0 0   100% 10 0   100%
mcpgateway / admin.py _get_span_entity_performance.percentile   100% 6 0 0   100% 0 0   100%
mcpgateway / admin.py get_user_id   100% 3 0 0   100% 2 0   100%
mcpgateway / admin.py serialize_datetime   100% 3 0 0   100% 2 0   100%
mcpgateway / admin.py validate_password_strength   100% 19 0 0   100% 12 0   100%
mcpgateway / admin.py get_overview_partial   100% 57 0 0   100% 10 0   100%
mcpgateway / admin.py get_global_passthrough_headers   100% 2 0 0   100% 0 0   100%
mcpgateway / admin.py update_global_passthrough_headers   100% 18 0 0   100% 2 0   100%
mcpgateway / admin.py invalidate_passthrough_headers_cache   100% 3 0 0   100% 0 0   100%
mcpgateway / admin.py get_passthrough_headers_cache_stats   100% 1 0 0   100% 0 0   100%
mcpgateway / admin.py invalidate_a2a_stats_cache   100% 3 0 0   100% 0 0   100%
mcpgateway / admin.py get_a2a_stats_cache_stats   100% 1 0 0   100% 0 0   100%
mcpgateway / admin.py get_mcp_session_pool_metrics   100% 8 0 0   100% 2 0   100%
mcpgateway / admin.py get_configuration_settings   100% 3 0 0   100% 0 0   100%
mcpgateway / admin.py get_configuration_settings.mask_sensitive   100% 7 0 0   83% 6 1   92%
mcpgateway / admin.py admin_list_servers   100% 5 0 0   100% 0 0   100%
mcpgateway / admin.py admin_servers_partial_html   100% 48 0 0   94% 18 1   98%
mcpgateway / admin.py admin_get_server   100% 9 0 0   100% 0 0   100%
mcpgateway / admin.py admin_add_server   100% 73 0 0   86% 14 2   98%
mcpgateway / admin.py admin_edit_server   100% 74 0 0   86% 14 2   98%
mcpgateway / admin.py admin_set_server_state   100% 26 0 0   100% 6 0   100%
mcpgateway / admin.py admin_delete_server   100% 23 0 0   100% 6 0   100%
mcpgateway / admin.py admin_list_resources   100% 4 0 0   100% 0 0   100%
mcpgateway / admin.py admin_list_prompts   100% 4 0 0   100% 0 0   100%
mcpgateway / admin.py admin_list_gateways   100% 4 0 0   100% 0 0   100%
mcpgateway / admin.py admin_set_gateway_state   100% 23 0 0   100% 6 0   100%
mcpgateway / admin.py admin_ui   100% 109 0 0   100% 28 0   100%
mcpgateway / admin.py admin_ui._call_list_with_team_support   100% 7 0 0   100% 2 0   100%
mcpgateway / admin.py admin_ui._matches_selected_team   100% 25 0 2   94% 16 1   98%
mcpgateway / admin.py admin_ui._to_dict_and_filter   100% 17 0 0   100% 8 0   100%
mcpgateway / admin.py admin_login_page   100% 9 0 0   100% 4 0   100%
mcpgateway / admin.py admin_login_handler   100% 82 0 0   93% 28 2   98%
mcpgateway / admin.py _admin_logout   100% 7 0 0   100% 2 0   100%
mcpgateway / admin.py admin_logout_get   100% 1 0 0   100% 0 0   100%
mcpgateway / admin.py admin_logout_post   100% 1 0 0   100% 0 0   100%
mcpgateway / admin.py change_password_required_page   100% 5 0 0   100% 2 0   100%
mcpgateway / admin.py change_password_required_handler   100% 76 0 0   94% 16 1   99%
mcpgateway / admin.py _generate_unified_teams_view   100% 63 0 0   100% 30 0   100%
mcpgateway / admin.py admin_get_all_team_ids   100% 21 0 0   100% 14 0   100%
mcpgateway / admin.py admin_search_teams   100% 22 0 0   93% 14 1   97%
mcpgateway / admin.py admin_teams_partial_html   100% 90 0 0   96% 50 2   99%
mcpgateway / admin.py admin_list_teams   100% 35 0 0   92% 12 1   98%
mcpgateway / admin.py admin_create_team   100% 52 0 0   90% 10 1   98%
mcpgateway / admin.py admin_view_team_members   100% 22 0 0   100% 4 0   100%
mcpgateway / admin.py admin_add_team_members_view   100% 22 0 0   100% 6 0   100%
mcpgateway / admin.py admin_get_team_edit   100% 15 0 0   100% 4 0   100%
mcpgateway / admin.py admin_update_team   100% 63 0 0   95% 22 1   99%
mcpgateway / admin.py admin_delete_team   100% 16 0 0   100% 2 0   100%
mcpgateway / admin.py admin_add_team_members   100% 115 0 0   98% 56 1   99%
mcpgateway / admin.py admin_update_team_member_role   100% 28 0 0   100% 10 0   100%
mcpgateway / admin.py admin_remove_team_member   100% 29 0 0   100% 10 0   100%
mcpgateway / admin.py admin_leave_team   100% 27 0 0   93% 14 1   98%
mcpgateway / admin.py admin_create_join_request   100% 25 0 0   100% 10 0   100%
mcpgateway / admin.py admin_cancel_join_request   100% 12 0 0   100% 4 0   100%
mcpgateway / admin.py admin_list_join_requests   100% 26 0 0   100% 10 0   100%
mcpgateway / admin.py admin_approve_join_request   100% 17 0 0   100% 6 0   100%
mcpgateway / admin.py admin_reject_join_request   100% 17 0 0   100% 6 0   100%
mcpgateway / admin.py _render_user_card_html   100% 29 0 0   100% 16 0   100%
mcpgateway / admin.py admin_list_users   100% 13 0 0   100% 4 0   100%
mcpgateway / admin.py admin_users_partial_html   100% 41 0 0   93% 14 1   98%
mcpgateway / admin.py admin_team_members_partial_html   100% 26 0 0   100% 6 0   100%
mcpgateway / admin.py admin_team_non_members_partial_html   100% 26 0 0   100% 6 0   100%
mcpgateway / admin.py admin_search_users   100% 12 0 0   100% 4 0   100%
mcpgateway / admin.py admin_create_user   100% 19 0 0   83% 6 1   96%
mcpgateway / admin.py admin_get_user_edit   100% 28 0 0   71% 14 4   90%
mcpgateway / admin.py admin_update_user   100% 32 0 0   83% 12 2   95%
mcpgateway / admin.py admin_activate_user   100% 13 0 0   100% 2 0   100%
mcpgateway / admin.py admin_deactivate_user   100% 17 0 0   100% 6 0   100%
mcpgateway / admin.py admin_delete_user   100% 15 0 0   100% 6 0   100%
mcpgateway / admin.py admin_force_password_change   100% 18 0 0   100% 4 0   100%
mcpgateway / admin.py admin_list_tools   100% 7 0 0   100% 0 0   100%
mcpgateway / admin.py admin_tools_partial_html   100% 62 0 0   96% 28 1   99%
mcpgateway / admin.py admin_tool_ops_partial   100% 42 0 0   81% 16 3   95%
mcpgateway / admin.py admin_get_all_tool_ids   100% 35 0 0   88% 16 2   96%
mcpgateway / admin.py admin_search_tools   100% 44 0 0   90% 20 2   97%
mcpgateway / admin.py admin_prompts_partial_html   100% 70 0 0   94% 32 2   98%
mcpgateway / admin.py admin_gateways_partial_html   100% 49 0 0   100% 18 0   100%
mcpgateway / admin.py admin_get_all_gateways_ids   100% 22 0 0   88% 8 1   97%
mcpgateway / admin.py admin_search_gateways   100% 31 0 0   92% 12 1   98%
mcpgateway / admin.py admin_get_all_server_ids   100% 22 0 0   88% 8 1   97%
mcpgateway / admin.py admin_search_servers   100% 31 0 0   100% 12 0   100%
mcpgateway / admin.py admin_resources_partial_html   100% 70 0 0   91% 32 3   97%
mcpgateway / admin.py admin_get_all_prompt_ids   100% 35 0 0   88% 16 2   96%
mcpgateway / admin.py admin_get_all_resource_ids   100% 35 0 0   88% 16 2   96%
mcpgateway / admin.py admin_search_resources   100% 44 0 0   90% 20 2   97%
mcpgateway / admin.py admin_search_prompts   100% 44 0 0   90% 20 2   97%
mcpgateway / admin.py admin_a2a_partial_html   100% 57 0 0   88% 24 3   96%
mcpgateway / admin.py admin_get_all_agent_ids   100% 22 0 0   75% 8 2   93%
mcpgateway / admin.py admin_search_a2a_agents   100% 31 0 0   83% 12 2   95%
mcpgateway / admin.py admin_get_tool   100% 12 0 0   100% 0 0   100%
mcpgateway / admin.py admin_add_tool   100% 45 0 0   100% 6 0   100%
mcpgateway / admin.py admin_edit_tool   100% 46 0 0   75% 4 1   98%
mcpgateway / admin.py admin_delete_tool   100% 23 0 0   100% 6 0   100%
mcpgateway / admin.py admin_set_tool_state   100% 26 0 0   100% 6 0   100%
mcpgateway / admin.py admin_get_gateway   100% 9 0 0   100% 0 0   100%
mcpgateway / admin.py admin_add_gateway   100% 132 0 0   100% 46 0   100%
mcpgateway / admin.py admin_edit_gateway   100% 96 0 0   100% 46 0   100%
mcpgateway / admin.py admin_delete_gateway   100% 22 0 0   100% 6 0   100%
mcpgateway / admin.py admin_test_resource   100% 11 0 0   100% 0 0   100%
mcpgateway / admin.py admin_get_resource   100% 9 0 0   100% 0 0   100%
mcpgateway / admin.py admin_add_resource   100% 40 0 0   100% 10 0   100%
mcpgateway / admin.py admin_edit_resource   100% 28 0 0   100% 6 0   100%
mcpgateway / admin.py admin_delete_resource   100% 23 0 0   100% 6 0   100%
mcpgateway / admin.py admin_set_resource_state   100% 23 0 0   100% 6 0   100%
mcpgateway / admin.py admin_get_prompt   100% 10 0 0   100% 0 0   100%
mcpgateway / admin.py admin_add_prompt   100% 32 0 0   100% 8 0   100%
mcpgateway / admin.py admin_edit_prompt   100% 34 0 0   100% 6 0   100%
mcpgateway / admin.py admin_delete_prompt   100% 23 0 0   100% 6 0   100%
mcpgateway / admin.py admin_set_prompt_state   100% 23 0 0   100% 6 0   100%
mcpgateway / admin.py admin_export_root   100% 16 0 0   100% 0 0   100%
mcpgateway / admin.py admin_get_root   100% 9 0 0   100% 0 0   100%
mcpgateway / admin.py admin_add_root   100% 27 0 0   100% 6 0   100%
mcpgateway / admin.py admin_update_root   100% 18 0 0   75% 4 1   95%
mcpgateway / admin.py admin_delete_root   100% 8 0 0   100% 2 0   100%
mcpgateway / admin.py get_aggregated_metrics   100% 2 0 0   100% 0 0   100%
mcpgateway / admin.py admin_metrics_partial_html   100% 20 0 0   100% 8 0   100%
mcpgateway / admin.py admin_reset_metrics   100% 6 0 0   100% 0 0   100%
mcpgateway / admin.py admin_test_gateway   100% 61 0 0   100% 12 0   100%
mcpgateway / admin.py admin_events   100% 5 0 0   100% 0 0   100%
mcpgateway / admin.py admin_events.stream_to_queue   100% 7 0 0   100% 2 0   100%
mcpgateway / admin.py admin_events.event_generator   100% 25 0 0   100% 4 0   100%
mcpgateway / admin.py admin_list_tags   100% 17 0 0   83% 6 1   96%
mcpgateway / admin.py _read_request_json   100% 7 0 0   100% 6 0   100%
mcpgateway / admin.py admin_import_tools   100% 78 0 0   100% 18 0   100%
mcpgateway / admin.py admin_get_logs   100% 25 0 0   100% 8 0   100%
mcpgateway / admin.py admin_stream_logs   100% 11 0 0   100% 4 0   100%
mcpgateway / admin.py admin_stream_logs.generate   100% 21 0 0   86% 14 2   94%
mcpgateway / admin.py admin_get_log_file   100% 47 0 0   95% 20 1   99%
mcpgateway / admin.py admin_export_logs   100% 39 0 0   94% 16 1   98%
mcpgateway / admin.py admin_export_configuration   100% 24 0 0   100% 6 0   100%
mcpgateway / admin.py admin_export_selective   100% 18 0 0   100% 0 0   100%
mcpgateway / admin.py admin_import_preview   100% 19 0 0   100% 2 0   100%
mcpgateway / admin.py admin_import_configuration   100% 24 0 0   100% 2 0   100%
mcpgateway / admin.py admin_get_import_status   100% 5 0 0   100% 2 0   100%
mcpgateway / admin.py admin_list_import_statuses   100% 3 0 0   100% 0 0   100%
mcpgateway / admin.py admin_get_agent   100% 9 0 0   100% 0 0   100%
mcpgateway / admin.py admin_list_a2a_agents   100% 7 0 0   100% 2 0   100%
mcpgateway / admin.py admin_add_a2a_agent   100% 104 0 0   100% 40 0   100%
mcpgateway / admin.py admin_edit_a2a_agent   100% 99 0 0   70% 40 12   91%
mcpgateway / admin.py admin_set_a2a_agent_state   100% 26 0 0   100% 4 0   100%
mcpgateway / admin.py admin_delete_a2a_agent   100% 23 0 0   100% 4 0   100%
mcpgateway / admin.py admin_test_a2a_agent   100% 19 0 0   100% 4 0   100%
mcpgateway / admin.py admin_list_grpc_services   100% 4 0 0   100% 2 0   100%
mcpgateway / admin.py admin_create_grpc_service   100% 12 0 0   100% 2 0   100%
mcpgateway / admin.py admin_get_grpc_service   100% 7 0 0   100% 2 0   100%
mcpgateway / admin.py admin_update_grpc_service   100% 14 0 0   100% 2 0   100%
mcpgateway / admin.py admin_set_grpc_service_state   100% 10 0 0   75% 4 1   93%
mcpgateway / admin.py admin_delete_grpc_service   100% 7 0 0   100% 2 0   100%
mcpgateway / admin.py admin_reflect_grpc_service   100% 10 0 0   100% 2 0   100%
mcpgateway / admin.py admin_get_grpc_methods   100% 7 0 0   100% 2 0   100%
mcpgateway / admin.py get_resources_section   100% 15 0 0   75% 4 1   95%
mcpgateway / admin.py get_prompts_section   100% 15 0 0   75% 4 1   95%
mcpgateway / admin.py get_servers_section   100% 15 0 0   75% 4 1   95%
mcpgateway / admin.py get_gateways_section   100% 19 0 0   88% 8 1   96%
mcpgateway / admin.py get_plugins_partial   100% 14 0 0   100% 2 0   100%
mcpgateway / admin.py list_plugins   100% 18 0 0   75% 4 1   95%
mcpgateway / admin.py get_plugin_stats   100% 14 0 0   50% 2 1   94%
mcpgateway / admin.py get_plugin_details   100% 21 0 0   75% 4 1   96%
mcpgateway / admin.py list_catalog_servers   100% 4 0 0   100% 2 0   100%
mcpgateway / admin.py register_catalog_server   100% 21 0 0   100% 8 0   100%
mcpgateway / admin.py check_catalog_server_status   100% 3 0 0   100% 2 0   100%
mcpgateway / admin.py bulk_register_catalog_servers   100% 3 0 0   100% 2 0   100%
mcpgateway / admin.py catalog_partial   100% 23 0 0   100% 4 0   100%
mcpgateway / admin.py get_system_stats   100% 12 0 0   100% 2 0   100%
mcpgateway / admin.py admin_generate_support_bundle   100% 14 0 0   100% 0 0   100%
mcpgateway / admin.py get_maintenance_partial   100% 3 0 0   100% 0 0   100%
mcpgateway / admin.py get_observability_partial   100% 2 0 0   100% 0 0   100%
mcpgateway / admin.py get_observability_metrics_partial   100% 2 0 0   100% 0 0   100%
mcpgateway / admin.py get_observability_stats   100% 9 0 0   100% 0 0   100%
mcpgateway / admin.py get_observability_traces   100% 30 0 0   100% 16 0   100%
mcpgateway / admin.py get_observability_trace_detail   100% 10 0 0   100% 2 0   100%
mcpgateway / admin.py save_observability_query   100% 15 0 0   100% 0 0   100%
mcpgateway / admin.py list_observability_queries   100% 8 0 0   100% 0 0   100%
mcpgateway / admin.py get_observability_query   100% 10 0 0   100% 2 0   100%
mcpgateway / admin.py update_observability_query   100% 26 0 0   60% 10 4   89%
mcpgateway / admin.py delete_observability_query   100% 11 0 0   100% 2 0   100%
mcpgateway / admin.py track_query_usage   100% 20 0 0   100% 2 0   100%
mcpgateway / admin.py get_latency_percentiles   100% 13 0 0   100% 2 0   100%
mcpgateway / admin.py _get_latency_percentiles_postgresql   100% 17 0 0   100% 4 0   100%
mcpgateway / admin.py _get_latency_percentiles_python   100% 28 0 0   90% 10 1   97%
mcpgateway / admin.py _get_latency_percentiles_python.percentile_cont   100% 6 0 0   100% 0 0   100%
mcpgateway / admin.py get_timeseries_metrics   100% 13 0 0   100% 2 0   100%
mcpgateway / admin.py _get_timeseries_metrics_postgresql   100% 20 0 0   100% 4 0   100%
mcpgateway / admin.py _get_timeseries_metrics_python   100% 31 0 0   92% 12 1   98%
mcpgateway / admin.py _get_latency_heatmap_postgresql   100% 30 0 0   92% 12 1   98%
mcpgateway / admin.py _get_latency_heatmap_python   100% 29 0 0   100% 10 0   100%
mcpgateway / admin.py get_top_slow_endpoints   100% 14 0 0   100% 2 0   100%
mcpgateway / admin.py get_top_volume_endpoints   100% 14 0 0   100% 2 0   100%
mcpgateway / admin.py get_top_error_endpoints   100% 15 0 0   100% 2 0   100%
mcpgateway / admin.py get_latency_heatmap   100% 13 0 0   100% 2 0   100%
mcpgateway / admin.py get_tool_usage   100% 16 0 0   100% 0 0   100%
mcpgateway / admin.py get_tool_performance   100% 12 0 0   100% 0 0   100%
mcpgateway / admin.py get_tool_errors   100% 15 0 0   100% 0 0   100%
mcpgateway / admin.py get_tool_chains   100% 26 0 0   88% 8 1   97%
mcpgateway / admin.py get_tools_partial   100% 2 0 0   100% 0 0   100%
mcpgateway / admin.py get_prompt_usage   100% 16 0 0   100% 0 0   100%
mcpgateway / admin.py get_prompt_performance   100% 12 0 0   100% 0 0   100%
mcpgateway / admin.py get_prompts_errors   100% 19 0 0   100% 2 0   100%
mcpgateway / admin.py get_prompts_partial   100% 2 0 0   100% 0 0   100%
mcpgateway / admin.py get_resource_usage   100% 16 0 0   100% 0 0   100%
mcpgateway / admin.py get_resource_performance   100% 12 0 0   100% 0 0   100%
mcpgateway / admin.py get_resources_errors   100% 19 0 0   100% 2 0   100%
mcpgateway / admin.py get_resources_partial   100% 2 0 0   100% 0 0   100%
mcpgateway / admin.py get_performance_stats   100% 22 0 0   79% 14 3   92%
mcpgateway / admin.py get_performance_system   100% 5 0 0   100% 2 0   100%
mcpgateway / admin.py get_performance_workers   100% 5 0 0   100% 2 0   100%
mcpgateway / admin.py get_performance_requests   100% 5 0 0   100% 2 0   100%
mcpgateway / admin.py get_performance_cache   100% 5 0 0   100% 2 0   100%
mcpgateway / admin.py get_performance_history   100% 6 0 0   100% 2 0   100%
mcpgateway / admin.py (no function)   100% 704 0 0   50% 2 1   99%
mcpgateway / auth.py _log_auth_event   100% 8 0 0   100% 4 0   100%
mcpgateway / auth.py get_db   100% 14 0 0   100% 0 0   100%
mcpgateway / auth.py _get_personal_team_sync   100% 6 0 0   100% 0 0   100%
mcpgateway / auth.py _get_user_team_ids_sync   100% 5 0 0   100% 0 0   100%
mcpgateway / auth.py get_user_team_roles   100% 6 0 0   100% 0 0   100%
mcpgateway / auth.py _resolve_teams_from_db_sync   100% 20 0 0   100% 4 0   100%
mcpgateway / auth.py _resolve_teams_from_db   100% 17 0 0   100% 4 0   100%
mcpgateway / auth.py normalize_token_teams   100% 20 0 0   100% 16 0   100%
mcpgateway / auth.py get_team_from_token   100% 7 0 0   100% 4 0   100%
mcpgateway / auth.py _check_token_revoked_sync   100% 5 0 0   100% 0 0   100%
mcpgateway / auth.py _lookup_api_token_sync   100% 16 0 0   100% 6 0   100%
mcpgateway / auth.py _is_api_token_jti_sync   100% 9 0 0   100% 0 0   100%
mcpgateway / auth.py _get_user_by_email_sync   100% 7 0 0   100% 2 0   100%
mcpgateway / auth.py _get_auth_context_batched_sync   100% 18 0 0   100% 6 0   100%
mcpgateway / auth.py _user_from_cached_dict   100% 1 0 0   100% 0 0   100%
mcpgateway / auth.py get_current_user   100% 221 0 0   100% 116 0   100%
mcpgateway / auth.py get_current_user._set_auth_method_from_payload   100% 18 0 0   100% 10 0   100%
mcpgateway / auth.py _inject_userinfo_instate   100% 18 0 0   100% 12 0   100%
mcpgateway / auth.py (no function)   100% 32 0 0   100% 0 0   100%
mcpgateway / bootstrap_db.py _column_exists   100% 4 0 0   100% 0 0   100%
mcpgateway / bootstrap_db.py _schema_looks_current   100% 1 0 0   100% 0 0   100%
mcpgateway / bootstrap_db.py advisory_lock   100% 23 0 0   100% 6 0   100%
mcpgateway / bootstrap_db.py bootstrap_admin_user   100% 29 0 0   100% 8 0   100%
mcpgateway / bootstrap_db.py bootstrap_default_roles   100% 73 0 0   100% 32 0   100%
mcpgateway / bootstrap_db.py normalize_team_visibility   100% 15 0 0   100% 4 0   100%
mcpgateway / bootstrap_db.py bootstrap_resource_assignments   100% 37 0 0   100% 16 0   100%
mcpgateway / bootstrap_db.py main   100% 47 0 0   100% 10 0   100%
mcpgateway / bootstrap_db.py (no function)   100% 30 0 2   100% 0 0   100%
mcpgateway / cache / a2a_stats_cache.py A2AStatsCache.__init__   100% 6 0 0   100% 0 0   100%
mcpgateway / cache / a2a_stats_cache.py A2AStatsCache.get_counts   100% 16 0 0   100% 4 0   100%
mcpgateway / cache / a2a_stats_cache.py A2AStatsCache.invalidate   100% 4 0 0   100% 0 0   100%
mcpgateway / cache / a2a_stats_cache.py A2AStatsCache.stats   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / a2a_stats_cache.py (no function)   100% 12 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py CacheEntry.is_expired   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.__init__   100% 30 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache._get_redis_key   100% 3 0 0   100% 2 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache._get_redis_client   100% 14 0 0   75% 4 1   94%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.get_system_stats   100% 22 0 0   100% 8 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.set_system_stats   100% 12 0 0   100% 4 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.get_observability_stats   100% 22 0 0   100% 8 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.set_observability_stats   100% 12 0 0   100% 4 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.get_users_list   100% 22 0 0   100% 8 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.set_users_list   100% 12 0 0   100% 4 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.get_teams_list   100% 22 0 0   100% 8 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.set_teams_list   100% 12 0 0   100% 4 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.get_tags   100% 22 0 0   100% 8 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.set_tags   100% 12 0 0   100% 4 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.get_plugin_stats   100% 22 0 0   100% 8 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.set_plugin_stats   100% 12 0 0   100% 4 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.get_performance_history   100% 22 0 0   100% 8 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.set_performance_history   100% 12 0 0   100% 4 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.invalidate_system_stats   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.invalidate_observability_stats   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.invalidate_users   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.invalidate_teams   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.invalidate_tags   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.invalidate_plugins   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.invalidate_performance   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache._invalidate_prefix   100% 14 0 0   100% 6 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.invalidate_all   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.stats   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py AdminStatsCache.reset_stats   100% 4 0 0   100% 0 0   100%
mcpgateway / cache / admin_stats_cache.py get_admin_stats_cache   100% 3 0 0   100% 2 0   100%
mcpgateway / cache / admin_stats_cache.py (no function)   100% 43 0 0   100% 0 0   100%
mcpgateway / cache / auth_cache.py CacheEntry.is_expired   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / auth_cache.py AuthCache.__init__   100% 34 0 0   100% 0 0   100%
mcpgateway / cache / auth_cache.py AuthCache._get_redis_key   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / auth_cache.py AuthCache._get_redis_client   100% 14 0 0   100% 4 0   100%
mcpgateway / cache / auth_cache.py AuthCache.get_auth_context   100% 30 0 0   100% 10 0   100%
mcpgateway / cache / auth_cache.py AuthCache.set_auth_context   100% 15 0 0   100% 4 0   100%
mcpgateway / cache / auth_cache.py AuthCache.invalidate_user   100% 22 0 0   100% 10 0   100%
mcpgateway / cache / auth_cache.py AuthCache.invalidate_revocation   100% 18 0 0   100% 6 0   100%
mcpgateway / cache / auth_cache.py AuthCache.invalidate_team   100% 16 0 0   100% 6 0   100%
mcpgateway / cache / auth_cache.py AuthCache.get_user_role   100% 25 0 0   100% 8 0   100%
mcpgateway / cache / auth_cache.py AuthCache.set_user_role   100% 13 0 0   100% 4 0   100%
mcpgateway / cache / auth_cache.py AuthCache.invalidate_user_role   100% 11 0 0   100% 2 0   100%
mcpgateway / cache / auth_cache.py AuthCache.invalidate_team_roles   100% 14 0 0   100% 6 0   100%
mcpgateway / cache / auth_cache.py AuthCache.get_user_teams   100% 24 0 0   100% 8 0   100%
mcpgateway / cache / auth_cache.py AuthCache.set_user_teams   100% 12 0 0   100% 4 0   100%
mcpgateway / cache / auth_cache.py AuthCache.invalidate_user_teams   100% 12 0 0   100% 4 0   100%
mcpgateway / cache / auth_cache.py AuthCache.get_team_membership_valid_sync   100% 10 0 0   100% 4 0   100%
mcpgateway / cache / auth_cache.py AuthCache.set_team_membership_valid_sync   100% 6 0 0   100% 2 0   100%
mcpgateway / cache / auth_cache.py AuthCache.get_team_membership_valid   100% 26 0 0   100% 8 0   100%
mcpgateway / cache / auth_cache.py AuthCache.set_team_membership_valid   100% 13 0 0   100% 4 0   100%
mcpgateway / cache / auth_cache.py AuthCache.invalidate_team_membership   100% 14 0 0   100% 6 0   100%
mcpgateway / cache / auth_cache.py AuthCache.is_token_revoked   100% 23 0 0   100% 12 0   100%
mcpgateway / cache / auth_cache.py AuthCache.sync_revoked_tokens   100% 18 0 0   100% 4 0   100%
mcpgateway / cache / auth_cache.py AuthCache.sync_revoked_tokens._load_revoked_jtis   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / auth_cache.py AuthCache.invalidate_all   100% 8 0 0   100% 0 0   100%
mcpgateway / cache / auth_cache.py AuthCache.stats   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / auth_cache.py AuthCache.reset_stats   100% 4 0 0   100% 0 0   100%
mcpgateway / cache / auth_cache.py get_auth_cache   100% 3 0 0   100% 2 0   100%
mcpgateway / cache / auth_cache.py (no function)   100% 48 0 0   100% 0 0   100%
mcpgateway / cache / global_config_cache.py GlobalConfigCache.__init__   100% 6 0 0   100% 0 0   100%
mcpgateway / cache / global_config_cache.py GlobalConfigCache.get   100% 16 0 0   100% 6 0   100%
mcpgateway / cache / global_config_cache.py GlobalConfigCache.get_passthrough_headers   100% 18 0 0   100% 6 0   100%
mcpgateway / cache / global_config_cache.py GlobalConfigCache.invalidate   100% 4 0 0   100% 0 0   100%
mcpgateway / cache / global_config_cache.py GlobalConfigCache.stats   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / global_config_cache.py (no function)   100% 12 0 0   100% 0 0   100%
mcpgateway / cache / metrics_cache.py MetricsCache.__init__   100% 6 0 0   100% 0 0   100%
mcpgateway / cache / metrics_cache.py MetricsCache.get   100% 8 0 0   100% 2 0   100%
mcpgateway / cache / metrics_cache.py MetricsCache.set   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / metrics_cache.py MetricsCache.invalidate   100% 8 0 0   100% 2 0   100%
mcpgateway / cache / metrics_cache.py MetricsCache.invalidate_prefix   100% 7 0 0   100% 4 0   100%
mcpgateway / cache / metrics_cache.py MetricsCache.stats   100% 4 0 0   100% 0 0   100%
mcpgateway / cache / metrics_cache.py MetricsCache.reset_stats   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / metrics_cache.py _create_metrics_cache   100% 6 0 0   100% 0 0   100%
mcpgateway / cache / metrics_cache.py is_cache_enabled   100% 5 0 0   100% 0 0   100%
mcpgateway / cache / metrics_cache.py (no function)   100% 18 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py _get_cleanup_timeout   100% 5 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py CacheEntry.is_expired   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.__init__   100% 31 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache._get_redis_key   100% 3 0 0   100% 2 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.hash_filters   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache._get_redis_client   100% 14 0 0   75% 4 1   94%
mcpgateway / cache / registry_cache.py RegistryCache.get   100% 22 0 0   100% 8 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.set   100% 15 0 0   100% 6 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.invalidate   100% 15 0 0   100% 6 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.invalidate_tools   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.invalidate_prompts   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.invalidate_resources   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.invalidate_agents   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.invalidate_servers   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.invalidate_gateways   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.invalidate_catalog   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.invalidate_all   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.stats   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py RegistryCache.reset_stats   100% 4 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py get_registry_cache   100% 3 0 0   100% 2 0   100%
mcpgateway / cache / registry_cache.py CacheInvalidationSubscriber.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / cache / registry_cache.py CacheInvalidationSubscriber.start   100% 29 0 0   83% 6 1   97%
mcpgateway / cache / registry_cache.py CacheInvalidationSubscriber.stop   100% 31 0 0   88% 8 1   97%
mcpgateway / cache / registry_cache.py CacheInvalidationSubscriber._listen_loop   100% 21 0 0   100% 10 0   100%
mcpgateway / cache / registry_cache.py CacheInvalidationSubscriber._process_invalidation   100% 37 0 0   100% 14 0   100%
mcpgateway / cache / registry_cache.py get_cache_invalidation_subscriber   100% 3 0 0   100% 2 0   100%
mcpgateway / cache / registry_cache.py (no function)   100% 53 0 0   100% 0 0   100%
mcpgateway / cache / resource_cache.py ResourceCache.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / cache / resource_cache.py ResourceCache.initialize   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / resource_cache.py ResourceCache.shutdown   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / resource_cache.py ResourceCache.get   100% 10 0 0   100% 4 0   100%
mcpgateway / cache / resource_cache.py ResourceCache.set   100% 8 0 0   100% 4 0   100%
mcpgateway / cache / resource_cache.py ResourceCache.delete   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / resource_cache.py ResourceCache.clear   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / resource_cache.py ResourceCache._cleanup_loop   100% 4 0 0   100% 0 0   100%
mcpgateway / cache / resource_cache.py ResourceCache._cleanup_loop._run_once   100% 4 0 0   100% 0 0   100%
mcpgateway / cache / resource_cache.py ResourceCache._cleanup_once   100% 15 0 0   100% 8 0   100%
mcpgateway / cache / resource_cache.py ResourceCache._compact_heap   100% 11 0 0   100% 2 0   100%
mcpgateway / cache / resource_cache.py ResourceCache.__len__   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / resource_cache.py (no function)   100% 26 0 0   100% 0 0   100%
mcpgateway / cache / session_registry.py SessionBackend.__init__   100% 20 0 0   100% 16 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.__init__   100% 9 0 0   100% 0 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.register_respond_task   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._cancel_respond_task   100% 50 0 0   100% 8 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._reap_stuck_tasks   100% 41 0 0   100% 14 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.initialize   100% 17 0 0   100% 10 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.shutdown   100% 49 0 0   100% 22 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.add_session   100% 29 0 0   100% 8 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.get_session   100% 35 0 0   100% 14 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.remove_session   100% 41 0 0   100% 14 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.broadcast   100% 32 0 0   100% 10 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.broadcast._build_payload   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._register_session_mapping   100% 28 0 0   100% 10 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.get_all_session_ids   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.get_session_sync   100% 3 0 0   100% 2 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.respond   100% 123 0 0   100% 36 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._refresh_redis_sessions   100% 15 0 0   100% 6 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._db_cleanup_task   100% 15 0 0   100% 2 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._db_cleanup_task._db_cleanup   100% 10 0 0   100% 0 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._refresh_session_db   100% 12 0 0   100% 2 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._cleanup_database_sessions   100% 23 0 0   100% 12 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._cleanup_database_sessions.bounded_refresh   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._memory_cleanup_task   100% 20 0 0   100% 4 0   100%
mcpgateway / cache / session_registry.py SessionRegistry._get_oauth_experimental_config   100% 21 0 0   100% 10 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.handle_initialize_logic   100% 16 0 0   100% 8 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.store_client_capabilities   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.get_client_capabilities   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.has_elicitation_capability   100% 4 0 0   100% 2 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.get_elicitation_capable_sessions   100% 7 0 0   100% 6 0   100%
mcpgateway / cache / session_registry.py SessionRegistry.generate_response   100% 59 0 0   100% 16 0   100%
mcpgateway / cache / session_registry.py (no function)   100% 66 0 0   100% 0 0   100%
mcpgateway / cache / tool_lookup_cache.py CacheEntry.is_expired   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache.__init__   100% 24 0 0   100% 0 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache.enabled   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache._redis_key   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache._gateway_set_key   100% 1 0 0   100% 0 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache._get_redis_client   100% 14 0 0   67% 6 2   90%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache._get_l1   100% 10 0 0   100% 4 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache._set_l1   100% 6 0 0   100% 4 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache.get   100% 19 0 0   100% 8 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache.set   87% 15 2 0   83% 6 1   86%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache.set_negative   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache.invalidate   86% 14 2 0   83% 6 1   85%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache.invalidate_gateway   100% 19 0 0   88% 8 1   96%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache.invalidate_all_local   100% 2 0 0   100% 0 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache.stats   100% 3 0 0   100% 0 0   100%
mcpgateway / cache / tool_lookup_cache.py ToolLookupCache.reset_stats   100% 4 0 0   100% 0 0   100%
mcpgateway / cache / tool_lookup_cache.py (no function)   100% 32 0 0   100% 0 0   100%
mcpgateway / cli.py _needs_app   100% 1 0 0   100% 0 0   100%
mcpgateway / cli.py _insert_defaults   100% 9 0 0   100% 8 0   100%
mcpgateway / cli.py _handle_validate_config   100% 7 0 0   100% 0 0   100%
mcpgateway / cli.py _handle_config_schema   100% 7 0 0   100% 2 0   100%
mcpgateway / cli.py _handle_support_bundle   100% 14 0 0   100% 0 0   100%
mcpgateway / cli.py main   100% 48 0 0   100% 24 0   100%
mcpgateway / cli.py (no function)   100% 19 0 2   100% 0 0   100%
mcpgateway / cli_export_import.py get_auth_token   100% 7 0 0   100% 4 0   100%
mcpgateway / cli_export_import.py make_authenticated_request   100% 19 0 0   100% 6 0   100%
mcpgateway / cli_export_import.py export_command   100% 38 0 0   100% 18 0   100%
mcpgateway / cli_export_import.py import_command   100% 56 0 0   93% 28 2   98%
mcpgateway / cli_export_import.py create_parser   100% 21 0 0   100% 0 0   100%
mcpgateway / cli_export_import.py main_with_subcommands   100% 15 0 0   83% 6 1   95%
mcpgateway / cli_export_import.py (no function)   100% 22 0 2   100% 0 0   100%
mcpgateway / common / models.py FileUrl.__eq__   67% 3 1 0   50% 2 1   60%
mcpgateway / common / models.py (no function)   100% 341 0 0   100% 0 0   100%
mcpgateway / common / validators.py _iter_template_expressions   100% 27 0 0   100% 18 0   100%
mcpgateway / common / validators.py _has_simple_template_expression   100% 5 0 0   100% 2 0   100%
mcpgateway / common / validators.py SecurityValidator.sanitize_display_text   100% 10 0 0   100% 10 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_name   100% 9 0 0   100% 8 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_identifier   100% 9 0 0   100% 8 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_uri   100% 11 0 0   100% 10 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_tool_name   100% 9 0 0   100% 8 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_uuid   100% 8 0 0   100% 2 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_template   100% 27 0 0   100% 22 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_url   100% 44 0 0   100% 38 0   100%
mcpgateway / common / validators.py SecurityValidator._validate_ssrf   100% 39 0 0   100% 26 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_no_xss   100% 4 0 0   100% 4 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_json_depth   100% 12 0 0   100% 12 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_mime_type   100% 10 0 0   100% 8 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_shell_parameter   100% 8 0 0   100% 6 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_path   100% 16 0 0   100% 10 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_sql_parameter   100% 8 0 0   100% 8 0   100%
mcpgateway / common / validators.py SecurityValidator.validate_parameter_length   100% 4 0 0   100% 2 0   100%
mcpgateway / common / validators.py SecurityValidator.sanitize_text   100% 5 0 0   100% 2 0   100%
mcpgateway / common / validators.py SecurityValidator.sanitize_json_response   100% 7 0 0   100% 6 0   100%
mcpgateway / common / validators.py (no function)   100% 79 0 0   100% 0 0   100%
mcpgateway / config.py _normalize_env_list_vars   100% 17 0 0   100% 8 0   100%
mcpgateway / config.py Settings.normalize_x_frame_options   100% 3 0 0   100% 2 0   100%
mcpgateway / config.py Settings.parse_allowed_roots   100% 12 0 0   100% 6 0   100%
mcpgateway / config.py Settings.validate_secrets   100% 13 0 0   100% 10 0   100%
mcpgateway / config.py Settings.validate_admin_password   100% 17 0 0   100% 10 0   100%
mcpgateway / config.py Settings.validate_cors_origins   100% 12 0 0   100% 12 0   100%
mcpgateway / config.py Settings.validate_database_url   100% 7 0 0   100% 8 0   100%
mcpgateway / config.py Settings.validate_security_combinations   100% 6 0 2   100% 4 0   100%
mcpgateway / config.py Settings.get_security_warnings   100% 18 0 2   100% 14 0   100%
mcpgateway / config.py Settings.get_security_status   100% 2 0 0   100% 0 0   100%
mcpgateway / config.py Settings._parse_allowed_origins   100% 10 0 0   100% 4 0   100%
mcpgateway / config.py Settings.validate_log_level   100% 5 0 0   100% 2 0   100%
mcpgateway / config.py Settings.parse_issuers   100% 16 0 0   100% 10 0   100%
mcpgateway / config.py Settings.must_be_allowed_sep   100% 4 0 0   100% 2 0   100%
mcpgateway / config.py Settings.custom_well_known_files   100% 5 0 0   100% 0 0   100%
mcpgateway / config.py Settings._auto_enable_security_txt   100% 3 0 0   100% 2 0   100%
mcpgateway / config.py Settings._parse_list_from_env   100% 16 0 0   100% 10 0   100%
mcpgateway / config.py Settings.api_key   100% 1 0 0   100% 0 0   100%
mcpgateway / config.py Settings.supports_http   100% 1 0 0   100% 0 0   100%
mcpgateway / config.py Settings.supports_websocket   100% 1 0 0   100% 0 0   100%
mcpgateway / config.py Settings.supports_sse   100% 1 0 0   100% 0 0   100%
mcpgateway / config.py Settings.database_settings   100% 1 0 0   100% 0 0   100%
mcpgateway / config.py Settings.cors_settings   100% 1 0 0   100% 0 0   100%
mcpgateway / config.py Settings.validate_transport   100% 3 0 0   100% 2 0   100%
mcpgateway / config.py Settings.validate_database   100% 5 0 0   100% 4 0   100%
mcpgateway / config.py Settings.derive_public_keys   100% 16 0 0   100% 6 0   100%
mcpgateway / config.py Settings.__init__   100% 17 0 0   100% 10 0   100%
mcpgateway / config.py Settings.log_summary   100% 2 0 0   100% 0 0   100%
mcpgateway / config.py get_settings   100% 4 0 0   100% 0 0   100%
mcpgateway / config.py generate_settings_schema   100% 1 0 0   100% 0 0   100%
mcpgateway / config.py LazySettingsWrapper.__getattr__   100% 1 0 0   100% 0 0   100%
mcpgateway / config.py (no function)   100% 618 0 6   100% 2 0   100%
mcpgateway / db.py build_engine   100% 33 0 0   100% 20 0   100%
mcpgateway / db.py utc_now   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py set_sqlite_pragma   100% 7 0 0   100% 0 0   100%
mcpgateway / db.py ResilientSession._is_connection_error   100% 8 0 0   100% 6 0   100%
mcpgateway / db.py ResilientSession._safe_rollback   100% 7 0 0   100% 0 0   100%
mcpgateway / db.py ResilientSession.execute   100% 7 0 0   100% 2 0   100%
mcpgateway / db.py ResilientSession.scalar   100% 7 0 0   100% 2 0   100%
mcpgateway / db.py ResilientSession.scalars   100% 7 0 0   100% 2 0   100%
mcpgateway / db.py end_transaction_cleanup   100% 0 0 0   100% 0 0   100%
mcpgateway / db.py before_commit_handler   100% 4 0 0   100% 0 0   100%
mcpgateway / db.py handle_pool_error   100% 16 0 0   100% 10 0   100%
mcpgateway / db.py reset_connection_on_checkin   100% 8 0 0   100% 0 0   100%
mcpgateway / db.py reset_connection_on_reset   100% 4 0 0   100% 0 0   100%
mcpgateway / db.py _refresh_gateway_slugs_batched   100% 18 0 0   90% 10 1   96%
mcpgateway / db.py _refresh_tool_names_batched   100% 24 0 0   83% 12 2   94%
mcpgateway / db.py _refresh_prompt_names_batched   100% 24 0 0   83% 12 2   94%
mcpgateway / db.py refresh_slugs_on_startup   100% 20 0 0   100% 0 0   100%
mcpgateway / db.py Role.get_effective_permissions   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py UserRole.is_expired   100% 3 0 0   100% 2 0   100%
mcpgateway / db.py Permissions.get_all_permissions   100% 7 0 0   83% 6 1   92%
mcpgateway / db.py Permissions.get_permissions_by_resource   100% 7 0 0   100% 4 0   100%
mcpgateway / db.py EmailUser.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py EmailUser.is_email_verified   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py EmailUser.is_account_locked   100% 3 0 0   100% 2 0   100%
mcpgateway / db.py EmailUser.get_display_name   100% 3 0 0   100% 2 0   100%
mcpgateway / db.py EmailUser.reset_failed_attempts   100% 3 0 0   100% 0 0   100%
mcpgateway / db.py EmailUser.increment_failed_attempts   100% 5 0 0   100% 2 0   100%
mcpgateway / db.py EmailUser.get_teams   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py EmailUser.get_personal_team   100% 4 0 0   75% 4 1   88%
mcpgateway / db.py EmailUser.is_team_member   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py EmailUser.get_team_role   100% 4 0 0   100% 4 0   100%
mcpgateway / db.py EmailAuthEvent.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py EmailAuthEvent.create_login_attempt   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py EmailAuthEvent.create_registration_event   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py EmailAuthEvent.create_password_change_event   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py EmailTeam.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py EmailTeam.get_member_count   100% 6 0 0   100% 2 0   100%
mcpgateway / db.py EmailTeam.is_member   100% 6 0 0   100% 2 0   100%
mcpgateway / db.py EmailTeam.get_member_role   100% 9 0 0   100% 6 0   100%
mcpgateway / db.py EmailTeamMember.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py EmailTeamMemberHistory.__repr__   100% 0 0 21   100% 0 0   100%
mcpgateway / db.py EmailTeamInvitation.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py EmailTeamInvitation.is_expired   100% 7 0 0   100% 4 0   100%
mcpgateway / db.py EmailTeamInvitation.is_valid   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py EmailTeamJoinRequest.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py EmailTeamJoinRequest.is_expired   100% 7 0 0   100% 4 0   100%
mcpgateway / db.py EmailTeamJoinRequest.is_pending   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py PendingUserApproval.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py PendingUserApproval.is_expired   100% 7 0 0   75% 4 1   91%
mcpgateway / db.py PendingUserApproval.approve   100% 4 0 0   100% 0 0   100%
mcpgateway / db.py PendingUserApproval.reject   100% 5 0 0   100% 0 0   100%
mcpgateway / db.py Tool.team   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Tool.name   100% 7 0 0   100% 4 0   100%
mcpgateway / db.py Tool.name   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Tool.name   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Tool.gateway_slug   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Tool.gateway_slug   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Tool._metrics_loaded   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Tool._get_metric_counts   100% 17 0 0   100% 8 0   100%
mcpgateway / db.py Tool.execution_count   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Tool.execution_count   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Tool.successful_executions   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Tool.failed_executions   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Tool.failure_rate   100% 2 0 0   100% 0 0   100%
mcpgateway / db.py Tool.min_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Tool.max_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Tool.avg_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Tool.last_execution_time   100% 5 0 0   100% 4 0   100%
mcpgateway / db.py Tool.metrics_summary   100% 31 0 0   86% 14 2   96%
mcpgateway / db.py Resource.content   100% 6 0 0   100% 4 0   100%
mcpgateway / db.py Resource._metrics_loaded   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Resource._get_metric_counts   100% 17 0 0   100% 8 0   100%
mcpgateway / db.py Resource.execution_count   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Resource.execution_count   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Resource.successful_executions   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Resource.failed_executions   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Resource.failure_rate   100% 2 0 0   100% 0 0   100%
mcpgateway / db.py Resource.min_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Resource.max_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Resource.avg_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Resource.last_execution_time   100% 5 0 0   100% 4 0   100%
mcpgateway / db.py Resource.metrics_summary   100% 31 0 0   86% 14 2   96%
mcpgateway / db.py Prompt.gateway_slug   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Prompt.gateway_slug   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Prompt.validate_arguments   100% 4 0 0   100% 0 0   100%
mcpgateway / db.py Prompt._metrics_loaded   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Prompt._get_metric_counts   100% 17 0 0   100% 8 0   100%
mcpgateway / db.py Prompt.execution_count   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Prompt.execution_count   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Prompt.successful_executions   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Prompt.failed_executions   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Prompt.failure_rate   100% 2 0 0   100% 0 0   100%
mcpgateway / db.py Prompt.min_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Prompt.max_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Prompt.avg_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Prompt.last_execution_time   100% 5 0 0   100% 4 0   100%
mcpgateway / db.py Prompt.metrics_summary   100% 31 0 0   86% 14 2   96%
mcpgateway / db.py Server._metrics_loaded   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Server._get_metric_counts   100% 17 0 0   100% 8 0   100%
mcpgateway / db.py Server.execution_count   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Server.execution_count   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Server.successful_executions   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Server.failed_executions   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Server.failure_rate   100% 2 0 0   100% 0 0   100%
mcpgateway / db.py Server.min_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Server.max_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Server.avg_response_time   100% 4 0 0   100% 2 0   100%
mcpgateway / db.py Server.last_execution_time   100% 5 0 0   100% 4 0   100%
mcpgateway / db.py Server.metrics_summary   100% 31 0 0   86% 14 2   96%
mcpgateway / db.py Server.team   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py Gateway.team   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py update_tool_names_on_gateway_update   100% 8 0 0   100% 2 0   100%
mcpgateway / db.py update_prompt_names_on_gateway_update   100% 8 0 0   100% 2 0   100%
mcpgateway / db.py A2AAgent._metrics_loaded   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py A2AAgent.execution_count   100% 3 0 0   100% 2 0   100%
mcpgateway / db.py A2AAgent.successful_executions   100% 3 0 0   100% 2 0   100%
mcpgateway / db.py A2AAgent.failed_executions   100% 3 0 0   100% 2 0   100%
mcpgateway / db.py A2AAgent.failure_rate   100% 5 0 0   100% 4 0   100%
mcpgateway / db.py A2AAgent.avg_response_time   100% 5 0 0   100% 4 0   100%
mcpgateway / db.py A2AAgent.last_execution_time   100% 5 0 0   100% 4 0   100%
mcpgateway / db.py A2AAgent.__repr__   100% 0 0 11   100% 0 0   100%
mcpgateway / db.py GrpcService.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py EmailApiToken.is_scoped_to_server   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py EmailApiToken.has_permission   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py EmailApiToken.is_team_token   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py EmailApiToken.get_effective_permissions   100% 3 0 0   100% 2 0   100%
mcpgateway / db.py EmailApiToken.is_expired   100% 3 0 0   100% 2 0   100%
mcpgateway / db.py EmailApiToken.is_valid   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py SSOProvider.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py SSOAuthSession.is_expired   100% 7 0 0   75% 4 1   91%
mcpgateway / db.py SSOAuthSession.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py validate_tool_schema   100% 18 0 0   100% 10 0   100%
mcpgateway / db.py validate_tool_name   100% 7 0 0   100% 2 0   100%
mcpgateway / db.py validate_prompt_schema   100% 18 0 0   100% 10 0   100%
mcpgateway / db.py get_db   100% 14 0 0   100% 0 0   100%
mcpgateway / db.py get_for_update   100% 20 0 0   100% 12 0   100%
mcpgateway / db.py patch_string_columns_for_mariadb   100% 6 0 0   100% 8 0   100%
mcpgateway / db.py extract_json_field   100% 5 0 0   100% 2 0   100%
mcpgateway / db.py init_db   100% 5 0 0   100% 0 0   100%
mcpgateway / db.py LLMProviderType.get_all_types   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py LLMProviderType.get_provider_defaults   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py LLMProvider.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py LLMModel.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / db.py set_gateway_slug   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py set_a2a_agent_slug   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py set_grpc_service_slug   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py set_llm_provider_slug   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py set_email_team_slug   100% 1 0 0   100% 0 0   100%
mcpgateway / db.py set_custom_name_and_slug   100% 22 0 0   93% 14 1   97%
mcpgateway / db.py set_prompt_name_and_slug   100% 24 0 0   94% 16 1   98%
mcpgateway / db.py (no function)   99% 1349 1 17   75% 12 3   99%
mcpgateway / handlers / sampling.py SamplingHandler.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / handlers / sampling.py SamplingHandler.initialize   100% 1 0 0   100% 0 0   100%
mcpgateway / handlers / sampling.py SamplingHandler.shutdown   100% 1 0 0   100% 0 0   100%
mcpgateway / handlers / sampling.py SamplingHandler.create_message   95% 22 1 0   90% 10 1   94%
mcpgateway / handlers / sampling.py SamplingHandler._select_model   100% 18 0 0   100% 14 0   100%
mcpgateway / handlers / sampling.py SamplingHandler._add_context   100% 1 0 0   100% 0 0   100%
mcpgateway / handlers / sampling.py SamplingHandler._validate_message   100% 14 0 0   100% 10 0   100%
mcpgateway / handlers / sampling.py SamplingHandler._mock_sample   100% 14 0 0   90% 10 1   96%
mcpgateway / handlers / sampling.py (no function)   100% 16 0 0   100% 0 0   100%
mcpgateway / instrumentation / sqlalchemy.py _write_span_to_db   100% 16 0 0   100% 2 0   100%
mcpgateway / instrumentation / sqlalchemy.py _span_writer_worker   100% 12 0 0   100% 2 0   100%
mcpgateway / instrumentation / sqlalchemy.py instrument_sqlalchemy   100% 7 0 0   100% 2 0   100%
mcpgateway / instrumentation / sqlalchemy.py _before_cursor_execute   100% 2 0 0   100% 0 0   100%
mcpgateway / instrumentation / sqlalchemy.py _after_cursor_execute   100% 23 0 0   100% 12 0   100%
mcpgateway / instrumentation / sqlalchemy.py _create_query_span   100% 11 0 0   100% 0 0   100%
mcpgateway / instrumentation / sqlalchemy.py attach_trace_to_session   100% 4 0 0   100% 4 0   100%
mcpgateway / instrumentation / sqlalchemy.py (no function)   100% 20 0 0   100% 0 0   100%
mcpgateway / llm_provider_configs.py get_provider_config   100% 1 0 0   100% 0 0   100%
mcpgateway / llm_provider_configs.py get_all_provider_configs   100% 1 0 0   100% 0 0   100%
mcpgateway / llm_provider_configs.py (no function)   100% 58 0 0   100% 0 0   100%
mcpgateway / llm_schemas.py LLMProviderBase.validate_provider_config   100% 7 0 0   100% 6 0   100%
mcpgateway / llm_schemas.py (no function)   100% 221 0 0   100% 0 0   100%
mcpgateway / main.py get_user_email   100% 3 0 0   100% 2 0   100%
mcpgateway / main.py _normalize_token_teams   100% 11 0 0   90% 10 1   95%
mcpgateway / main.py _get_token_teams_from_request   100% 10 0 0   100% 6 0   100%
mcpgateway / main.py _get_rpc_filter_context   100% 15 0 0   90% 10 1   96%
mcpgateway / main.py _parse_jsonpath   100% 1 0 0   100% 0 0   100%
mcpgateway / main.py jsonpath_modifier   100% 16 0 0   100% 6 0   100%
mcpgateway / main.py transform_data_with_mappings   100% 21 0 0   100% 10 0   100%
mcpgateway / main.py attempt_to_bootstrap_sso_providers   100% 6 0 0   100% 0 0   100%
mcpgateway / main.py lifespan   100% 149 0 0   96% 56 2   99%
mcpgateway / main.py lifespan.run_log_backfill   100% 6 0 2   100% 2 0   100%
mcpgateway / main.py lifespan.run_log_aggregation_loop   100% 14 0 2   100% 2 0   100%
mcpgateway / main.py shutdown_services   100% 5 0 0   100% 2 0   100%
mcpgateway / main.py setup_passthrough_headers   100% 10 0 0   100% 2 0   100%
mcpgateway / main.py validate_security_configuration   100% 20 0 0   71% 14 4   88%
mcpgateway / main.py log_security_warnings   100% 7 0 0   75% 4 1   91%
mcpgateway / main.py log_critical_issues   100% 17 0 0   88% 8 1   96%
mcpgateway / main.py log_security_recommendations   100% 15 0 0   90% 10 1   96%
mcpgateway / main.py validation_exception_handler   100% 1 0 0   100% 0 0   100%
mcpgateway / main.py request_validation_exception_handler   100% 15 0 0   100% 6 0   100%
mcpgateway / main.py database_exception_handler   100% 1 0 0   100% 0 0   100%
mcpgateway / main.py plugin_violation_exception_handler   100% 16 0 0   80% 10 2   92%
mcpgateway / main.py plugin_exception_handler   100% 12 0 0   75% 8 2   90%
mcpgateway / main.py _normalize_scope_path   100% 7 0 0   100% 6 0   100%
mcpgateway / main.py DocsAuthMiddleware.dispatch   100% 15 0 0   100% 4 0   100%
mcpgateway / main.py AdminAuthMiddleware._error_response   100% 8 0 0   100% 4 0   100%
mcpgateway / main.py AdminAuthMiddleware.dispatch   100% 78 0 0   92% 40 3   97%
mcpgateway / main.py MCPPathRewriteMiddleware.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py MCPPathRewriteMiddleware.__call__   100% 12 0 0   100% 6 0   100%
mcpgateway / main.py MCPPathRewriteMiddleware.__call__.call_next   100% 1 0 0   100% 0 0   100%
mcpgateway / main.py MCPPathRewriteMiddleware._call_streamable_http   100% 10 0 0   100% 4 0   100%
mcpgateway / main.py get_db   100% 15 0 0   50% 2 1   94%
mcpgateway / main.py _read_request_json   100% 7 0 0   100% 2 0   100%
mcpgateway / main.py require_api_key   100% 4 0 0   100% 4 0   100%
mcpgateway / main.py invalidate_resource_cache   100% 3 0 0   100% 2 0   100%
mcpgateway / main.py get_protocol_from_request   100% 4 0 0   100% 2 0   100%
mcpgateway / main.py update_url_protocol   100% 4 0 0   100% 0 0   100%
mcpgateway / main.py initialize   100% 6 0 0   100% 0 0   100%
mcpgateway / main.py ping   100% 12 0 0   100% 2 0   100%
mcpgateway / main.py handle_notification   100% 16 0 0   88% 8 1   96%
mcpgateway / main.py handle_completion   100% 3 0 0   100% 0 0   100%
mcpgateway / main.py handle_sampling   100% 3 0 0   100% 0 0   100%
mcpgateway / main.py list_servers   100% 19 0 0   88% 8 1   96%
mcpgateway / main.py get_server   100% 5 0 0   100% 0 0   100%
mcpgateway / main.py create_server   100% 28 0 0   100% 6 0   100%
mcpgateway / main.py update_server   100% 22 0 0   100% 0 0   100%
mcpgateway / main.py set_server_state   100% 12 0 0   100% 0 0   100%
mcpgateway / main.py toggle_server_status   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py delete_server   100% 14 0 0   100% 0 0   100%
mcpgateway / main.py sse_endpoint   100% 50 0 0   88% 8 1   98%
mcpgateway / main.py sse_endpoint.on_disconnect_cleanup   100% 5 0 0   100% 0 0   100%
mcpgateway / main.py message_endpoint   100% 34 0 0   83% 12 2   96%
mcpgateway / main.py server_get_tools   100% 11 0 0   100% 4 0   100%
mcpgateway / main.py server_get_resources   100% 9 0 0   100% 4 0   100%
mcpgateway / main.py server_get_prompts   100% 9 0 0   100% 4 0   100%
mcpgateway / main.py list_a2a_agents   100% 25 0 0   94% 16 1   98%
mcpgateway / main.py get_a2a_agent   100% 12 0 0   100% 6 0   100%
mcpgateway / main.py create_a2a_agent   100% 27 0 0   100% 8 0   100%
mcpgateway / main.py update_a2a_agent   100% 21 0 0   100% 2 0   100%
mcpgateway / main.py set_a2a_agent_state   100% 12 0 0   100% 2 0   100%
mcpgateway / main.py toggle_a2a_agent_status   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py delete_a2a_agent   100% 13 0 0   100% 2 0   100%
mcpgateway / main.py invoke_a2a_agent   100% 18 0 0   100% 8 0   100%
mcpgateway / main.py list_tools   100% 29 0 0   94% 16 1   98%
mcpgateway / main.py create_tool   100% 34 0 0   100% 16 0   100%
mcpgateway / main.py get_tool   100% 11 0 0   100% 2 0   100%
mcpgateway / main.py update_tool   100% 25 0 0   100% 10 0   100%
mcpgateway / main.py delete_tool   100% 13 0 0   100% 0 0   100%
mcpgateway / main.py set_tool_state   100% 13 0 0   100% 0 0   100%
mcpgateway / main.py toggle_tool_status   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py list_resource_templates   100% 11 0 0   100% 6 0   100%
mcpgateway / main.py set_resource_state   100% 13 0 0   100% 0 0   100%
mcpgateway / main.py toggle_resource_status   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py list_resources   100% 25 0 0   100% 14 0   100%
mcpgateway / main.py create_resource   100% 28 0 0   100% 6 0   100%
mcpgateway / main.py read_resource   100% 29 0 0   100% 10 0   100%
mcpgateway / main.py get_resource_info   100% 5 0 0   100% 0 0   100%
mcpgateway / main.py update_resource   100% 21 0 0   100% 0 0   100%
mcpgateway / main.py delete_resource   100% 14 0 0   100% 0 0   100%
mcpgateway / main.py subscribe_resource   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py set_prompt_state   100% 13 0 0   100% 0 0   100%
mcpgateway / main.py toggle_prompt_status   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py list_prompts   100% 25 0 0   93% 14 1   97%
mcpgateway / main.py create_prompt   100% 31 0 0   100% 14 0   100%
mcpgateway / main.py get_prompt   100% 19 0 0   100% 4 0   100%
mcpgateway / main.py get_prompt_no_args   100% 13 0 0   100% 0 0   100%
mcpgateway / main.py update_prompt   100% 25 0 0   100% 12 0   100%
mcpgateway / main.py delete_prompt   100% 16 0 0   100% 6 0   100%
mcpgateway / main.py set_gateway_state   100% 11 0 0   100% 0 0   100%
mcpgateway / main.py toggle_gateway_status   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py list_gateways   100% 19 0 0   83% 6 1   96%
mcpgateway / main.py register_gateway   100% 34 0 0   100% 20 0   100%
mcpgateway / main.py get_gateway   100% 5 0 0   100% 0 0   100%
mcpgateway / main.py update_gateway   100% 28 0 0   100% 18 0   100%
mcpgateway / main.py delete_gateway   100% 17 0 0   100% 2 0   100%
mcpgateway / main.py refresh_gateway_tools   100% 9 0 0   100% 0 0   100%
mcpgateway / main.py list_roots   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py export_root   100% 17 0 0   100% 4 0   100%
mcpgateway / main.py subscribe_roots_changes   100% 3 0 0   100% 0 0   100%
mcpgateway / main.py subscribe_roots_changes.generate_events   100% 2 0 0   100% 2 0   100%
mcpgateway / main.py get_root_by_uri   100% 9 0 0   100% 0 0   100%
mcpgateway / main.py add_root   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py update_root   100% 9 0 0   100% 0 0   100%
mcpgateway / main.py remove_root   100% 3 0 0   100% 0 0   100%
mcpgateway / main.py handle_rpc   100% 384 0 0   98% 184 4   99%
mcpgateway / main.py websocket_endpoint   100% 53 0 0   95% 20 1   99%
mcpgateway / main.py utility_sse_endpoint   100% 49 0 0   88% 8 1   98%
mcpgateway / main.py utility_sse_endpoint.on_disconnect_cleanup   100% 5 0 0   100% 0 0   100%
mcpgateway / main.py utility_message_endpoint   100% 17 0 0   100% 2 0   100%
mcpgateway / main.py set_log_level   100% 5 0 0   100% 0 0   100%
mcpgateway / main.py get_metrics   100% 10 0 0   50% 2 1   92%
mcpgateway / main.py reset_metrics   100% 22 0 0   94% 16 1   97%
mcpgateway / main.py healthcheck   100% 17 0 0   100% 0 0   100%
mcpgateway / main.py readiness_check   100% 7 0 0   100% 2 0   100%
mcpgateway / main.py readiness_check._check_db   100% 15 0 0   100% 0 0   100%
mcpgateway / main.py security_health   100% 11 0 0   83% 6 1   94%
mcpgateway / main.py list_tags   100% 10 0 0   100% 2 0   100%
mcpgateway / main.py get_entities_by_tag   100% 10 0 0   100% 2 0   100%
mcpgateway / main.py export_configuration   100% 26 0 0   90% 10 1   97%
mcpgateway / main.py export_selective_configuration   100% 16 0 0   75% 4 1   95%
mcpgateway / main.py import_configuration   100% 25 0 0   100% 4 0   100%
mcpgateway / main.py get_import_status   100% 5 0 0   100% 2 0   100%
mcpgateway / main.py list_import_statuses   100% 3 0 0   100% 0 0   100%
mcpgateway / main.py cleanup_import_statuses   100% 3 0 0   100% 0 0   100%
mcpgateway / main.py root_redirect   100% 3 0 0   100% 0 0   100%
mcpgateway / main.py favicon_redirect   100% 2 0 0   100% 0 0   100%
mcpgateway / main.py (no function)   100% 633 0 0   94% 54 3   99%
mcpgateway / middleware / auth_middleware.py _should_log_auth_success   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / auth_middleware.py _should_log_auth_failure   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / auth_middleware.py AuthContextMiddleware.dispatch   100% 45 0 0   100% 14 0   100%
mcpgateway / middleware / auth_middleware.py (no function)   100% 17 0 0   100% 0 0   100%
mcpgateway / middleware / compression.py SSEAwareCompressMiddleware.__init__   100% 6 0 0   100% 0 0   100%
mcpgateway / middleware / compression.py SSEAwareCompressMiddleware._is_mcp_path   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / compression.py SSEAwareCompressMiddleware.__call__   100% 8 0 0   100% 4 0   100%
mcpgateway / middleware / compression.py (no function)   100% 7 0 0   100% 0 0   100%
mcpgateway / middleware / correlation_id.py CorrelationIDMiddleware.__init__   100% 4 0 0   100% 0 0   100%
mcpgateway / middleware / correlation_id.py CorrelationIDMiddleware.dispatch   100% 14 0 0   100% 6 0   100%
mcpgateway / middleware / correlation_id.py (no function)   100% 10 0 0   100% 0 0   100%
mcpgateway / middleware / db_query_logging.py _normalize_query   100% 5 0 0   100% 0 0   100%
mcpgateway / middleware / db_query_logging.py _extract_table_name   100% 4 0 0   100% 2 0   100%
mcpgateway / middleware / db_query_logging.py _detect_n1_patterns   100% 12 0 0   100% 8 0   100%
mcpgateway / middleware / db_query_logging.py _format_text_log   100% 43 0 0   94% 18 1   98%
mcpgateway / middleware / db_query_logging.py _format_json_log   100% 3 0 0   100% 0 0   100%
mcpgateway / middleware / db_query_logging.py _write_logs   100% 18 0 0   62% 8 3   88%
mcpgateway / middleware / db_query_logging.py _before_cursor_execute   100% 4 0 0   100% 2 0   100%
mcpgateway / middleware / db_query_logging.py _should_exclude_query   100% 5 0 0   100% 4 0   100%
mcpgateway / middleware / db_query_logging.py _after_cursor_execute   100% 13 0 0   83% 6 1   95%
mcpgateway / middleware / db_query_logging.py instrument_engine_for_logging   100% 7 0 0   100% 2 0   100%
mcpgateway / middleware / db_query_logging.py DBQueryLoggingMiddleware.dispatch   100% 24 0 0   88% 8 1   97%
mcpgateway / middleware / db_query_logging.py setup_query_logging   100% 6 0 0   100% 2 0   100%
mcpgateway / middleware / db_query_logging.py (no function)   100% 39 0 0   100% 0 0   100%
mcpgateway / middleware / http_auth_middleware.py HttpAuthMiddleware.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / middleware / http_auth_middleware.py HttpAuthMiddleware.dispatch   100% 46 0 0   91% 22 2   97%
mcpgateway / middleware / http_auth_middleware.py (no function)   100% 10 0 0   100% 0 0   100%
mcpgateway / middleware / observability_middleware.py ObservabilityMiddleware.__init__   100% 4 0 0   100% 0 0   100%
mcpgateway / middleware / observability_middleware.py ObservabilityMiddleware.dispatch   100% 74 0 0   68% 22 7   93%
mcpgateway / middleware / observability_middleware.py (no function)   100% 16 0 0   100% 0 0   100%
mcpgateway / middleware / path_filter.py _matches_prefix   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / path_filter.py _matches_any_regex   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / path_filter.py _get_observability_include_regex   100% 7 0 0   100% 2 0   100%
mcpgateway / middleware / path_filter.py _get_observability_exclude_regex   100% 7 0 0   100% 2 0   100%
mcpgateway / middleware / path_filter.py should_skip_observability   100% 8 0 0   100% 6 0   100%
mcpgateway / middleware / path_filter.py should_skip_auth_context   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / path_filter.py should_skip_request_logging   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / path_filter.py should_skip_db_query_logging   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / path_filter.py clear_all_caches   100% 6 0 0   100% 0 0   100%
mcpgateway / middleware / path_filter.py (no function)   100% 28 0 0   100% 0 0   100%
mcpgateway / middleware / protocol_version.py MCPProtocolVersionMiddleware.dispatch   100% 13 0 0   100% 6 0   100%
mcpgateway / middleware / protocol_version.py MCPProtocolVersionMiddleware._is_mcp_endpoint   100% 5 0 0   100% 4 0   100%
mcpgateway / middleware / protocol_version.py (no function)   100% 11 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py get_db   100% 14 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py get_permission_service   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py get_current_user_with_permissions   100% 79 0 0   100% 38 0   100%
mcpgateway / middleware / rbac.py _get_resource_param_to_model   100% 2 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py _derive_team_from_resource   100% 12 0 0   100% 6 0   100%
mcpgateway / middleware / rbac.py _derive_team_from_payload   100% 18 0 0   100% 12 0   100%
mcpgateway / middleware / rbac.py _is_mutate_permission   100% 5 0 0   100% 2 0   100%
mcpgateway / middleware / rbac.py require_permission   100% 2 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py require_permission.decorator   100% 3 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py require_permission.decorator.wrapper   100% 44 0 0   100% 26 0   100%
mcpgateway / middleware / rbac.py require_admin_permission   100% 2 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py require_admin_permission.decorator   100% 3 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py require_admin_permission.decorator.wrapper   100% 14 0 0   100% 6 0   100%
mcpgateway / middleware / rbac.py require_any_permission   100% 2 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py require_any_permission.decorator   100% 3 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py require_any_permission.decorator.wrapper   100% 35 0 0   100% 26 0   100%
mcpgateway / middleware / rbac.py PermissionChecker.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / middleware / rbac.py PermissionChecker.has_permission   100% 6 0 0   100% 2 0   100%
mcpgateway / middleware / rbac.py PermissionChecker.has_admin_permission   100% 6 0 0   100% 2 0   100%
mcpgateway / middleware / rbac.py PermissionChecker.has_any_permission   100% 12 0 0   100% 10 0   100%
mcpgateway / middleware / rbac.py PermissionChecker.require_permission   100% 2 0 0   100% 2 0   100%
mcpgateway / middleware / rbac.py (no function)   100% 32 0 0   100% 0 0   100%
mcpgateway / middleware / request_context.py get_request_path   100% 5 0 0   100% 2 0   100%
mcpgateway / middleware / request_context.py (no function)   100% 2 0 0   100% 0 0   100%
mcpgateway / middleware / request_logging_middleware.py mask_sensitive_data   100% 7 0 0   100% 6 0   100%
mcpgateway / middleware / request_logging_middleware.py mask_jwt_in_cookies   100% 13 0 0   100% 8 0   100%
mcpgateway / middleware / request_logging_middleware.py mask_sensitive_headers   100% 9 0 0   100% 6 0   100%
mcpgateway / middleware / request_logging_middleware.py RequestLoggingMiddleware.__init__   100% 9 0 0   100% 0 0   100%
mcpgateway / middleware / request_logging_middleware.py RequestLoggingMiddleware._resolve_user_identity   100% 23 0 0   100% 12 0   100%
mcpgateway / middleware / request_logging_middleware.py RequestLoggingMiddleware.dispatch   100% 129 0 0   100% 42 0   100%
mcpgateway / middleware / request_logging_middleware.py RequestLoggingMiddleware.dispatch.receive   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / request_logging_middleware.py RequestLoggingMiddleware._categorize_response_time   100% 7 0 0   100% 6 0   100%
mcpgateway / middleware / request_logging_middleware.py (no function)   100% 28 0 0   100% 0 0   100%
mcpgateway / middleware / security_headers.py SecurityHeadersMiddleware.dispatch   100% 55 0 0   100% 40 0   100%
mcpgateway / middleware / security_headers.py (no function)   100% 6 0 0   100% 0 0   100%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware.__init__   100% 0 0 0   100% 0 0   100%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware._normalize_teams   100% 11 0 0   100% 10 0   100%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware._extract_token_scopes   100% 11 0 0   100% 2 0   100%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware._get_client_ip   100% 7 0 0   100% 4 0   100%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware._check_ip_restrictions   100% 17 0 0   90% 10 1   96%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware._check_time_restrictions   100% 10 0 0   100% 8 0   100%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware._check_server_restriction   100% 14 0 0   100% 12 0   100%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware._check_permission_restrictions   100% 6 0 0   100% 6 0   100%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware._check_team_membership   100% 35 0 0   83% 12 2   96%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware._check_resource_team_ownership   100% 175 0 0   100% 94 0   100%
mcpgateway / middleware / token_scoping.py TokenScopingMiddleware.__call__   100% 66 0 0   97% 34 1   99%
mcpgateway / middleware / token_scoping.py (no function)   100% 30 0 0   100% 0 0   100%
mcpgateway / middleware / validation_middleware.py is_path_traversal   100% 1 0 0   100% 0 0   100%
mcpgateway / middleware / validation_middleware.py ValidationMiddleware.__init__   100% 6 0 0   100% 0 0   100%
mcpgateway / middleware / validation_middleware.py ValidationMiddleware.dispatch   100% 15 0 0   100% 6 0   100%
mcpgateway / middleware / validation_middleware.py ValidationMiddleware._validate_request   100% 13 0 0   100% 10 0   100%
mcpgateway / middleware / validation_middleware.py ValidationMiddleware._validate_parameter   100% 11 0 0   100% 10 0   100%
mcpgateway / middleware / validation_middleware.py ValidationMiddleware._validate_json_data   100% 9 0 0   100% 12 0   100%
mcpgateway / middleware / validation_middleware.py ValidationMiddleware.validate_resource_path   100% 15 0 0   100% 10 0   100%
mcpgateway / middleware / validation_middleware.py ValidationMiddleware._sanitize_response   100% 12 0 0   100% 4 0   100%
mcpgateway / middleware / validation_middleware.py (no function)   100% 18 0 0   100% 0 0   100%
mcpgateway / observability.py init_telemetry   100% 97 0 0   95% 58 3   98%
mcpgateway / observability.py init_telemetry.ResourceAttributeSpanProcessor.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / observability.py init_telemetry.ResourceAttributeSpanProcessor.on_start   100% 8 0 0   83% 6 1   93%
mcpgateway / observability.py init_telemetry.ResourceAttributeSpanProcessor.on_end   0% 1 1 0   100% 0 0   0%
mcpgateway / observability.py trace_operation   100% 2 0 0   100% 0 0   100%
mcpgateway / observability.py trace_operation.decorator   100% 2 0 0   100% 0 0   100%
mcpgateway / observability.py trace_operation.decorator.wrapper   100% 15 0 0   100% 6 0   100%
mcpgateway / observability.py create_span   100% 21 0 0   83% 12 2   94%
mcpgateway / observability.py create_span.SpanWithAttributes.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / observability.py create_span.SpanWithAttributes.__enter__   100% 6 0 0   83% 6 1   92%
mcpgateway / observability.py create_span.SpanWithAttributes.__exit__   100% 11 0 0   75% 8 2   89%
mcpgateway / observability.py (no function)   97% 70 2 7   50% 2 1   96%
mcpgateway / plugins / framework / base.py Plugin.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py Plugin.priority   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py Plugin.config   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py Plugin.mode   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py Plugin.name   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py Plugin.hooks   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py Plugin.tags   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py Plugin.conditions   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py Plugin.initialize   100% 0 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py Plugin.shutdown   100% 0 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py Plugin.json_to_payload   100% 12 0 0   100% 8 0   100%
mcpgateway / plugins / framework / base.py Plugin.json_to_result   100% 12 0 0   100% 8 0   100%
mcpgateway / plugins / framework / base.py PluginRef.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py PluginRef.plugin   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py PluginRef.uuid   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py PluginRef.priority   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py PluginRef.name   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py PluginRef.hooks   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py PluginRef.tags   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py PluginRef.conditions   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py PluginRef.mode   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py HookRef.__init__   100% 16 0 0   100% 10 0   100%
mcpgateway / plugins / framework / base.py HookRef._validate_hook_signature   100% 7 0 0   100% 4 0   100%
mcpgateway / plugins / framework / base.py HookRef._validate_type_hints   100% 30 0 0   83% 12 2   95%
mcpgateway / plugins / framework / base.py HookRef.plugin_ref   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py HookRef.name   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py HookRef.hook   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / base.py (no function)   100% 53 0 0   100% 0 0   100%
mcpgateway / plugins / framework / constants.py (no function)   100% 26 0 0   100% 0 0   100%
mcpgateway / plugins / framework / decorator.py HookMetadata.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / decorator.py hook   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / decorator.py hook.decorator   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / decorator.py get_hook_metadata   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / decorator.py has_hook_metadata   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / decorator.py (no function)   100% 11 0 0   100% 0 0   100%
mcpgateway / plugins / framework / errors.py PluginViolationError.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / errors.py PluginError.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / errors.py convert_exception_to_error   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / errors.py (no function)   100% 6 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / client.py GrpcExternalPlugin.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / client.py GrpcExternalPlugin.initialize   100% 24 0 0   100% 6 0   100%
mcpgateway / plugins / framework / external / grpc / client.py GrpcExternalPlugin._get_plugin_config_with_retry   100% 11 0 1   100% 2 0   100%
mcpgateway / plugins / framework / external / grpc / client.py GrpcExternalPlugin._get_plugin_config   100% 12 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / grpc / client.py GrpcExternalPlugin.invoke_hook   100% 31 0 0   100% 12 0   100%
mcpgateway / plugins / framework / external / grpc / client.py GrpcExternalPlugin.shutdown   100% 5 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / grpc / client.py (no function)   100% 22 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2.py (no function)   100% 11 0 34   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py PluginServiceStub.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py PluginServiceServicer.GetPluginConfig   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py PluginServiceServicer.GetPluginConfigs   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py PluginServiceServicer.InvokeHook   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py add_PluginServiceServicer_to_server   100% 4 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py PluginService.GetPluginConfig   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py PluginService.GetPluginConfigs   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py PluginService.InvokeHook   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py HealthStub.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py HealthServicer.Check   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py add_HealthServicer_to_server   100% 4 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py Health.Check   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / proto / plugin_service_pb2_grpc.py (no function)   100% 30 0 4   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / server / runtime.py GrpcPluginRuntime.__init__   100% 6 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / server / runtime.py GrpcPluginRuntime.start   100% 30 0 0   100% 8 0   100%
mcpgateway / plugins / framework / external / grpc / server / runtime.py GrpcPluginRuntime.stop   100% 7 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / grpc / server / runtime.py GrpcPluginRuntime.request_shutdown   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / server / runtime.py GrpcPluginRuntime._get_server_config   100% 8 0 0   100% 6 0   100%
mcpgateway / plugins / framework / external / grpc / server / runtime.py run_server   100% 8 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / grpc / server / runtime.py run_server.signal_handler   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / server / runtime.py main   100% 15 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / server / runtime.py (no function)   100% 22 0 2   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / server / server.py GrpcPluginServicer.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / server / server.py GrpcPluginServicer.GetPluginConfig   100% 14 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / grpc / server / server.py GrpcPluginServicer.GetPluginConfigs   100% 14 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / grpc / server / server.py GrpcPluginServicer.InvokeHook   100% 29 0 0   100% 10 0   100%
mcpgateway / plugins / framework / external / grpc / server / server.py GrpcPluginServicer._dict_to_plugin_error   100% 8 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / grpc / server / server.py GrpcHealthServicer.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / server / server.py GrpcHealthServicer.Check   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / server / server.py (no function)   100% 19 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / tls_utils.py _read_file   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / tls_utils.py create_client_credentials   100% 14 0 0   100% 6 0   100%
mcpgateway / plugins / framework / external / grpc / tls_utils.py create_server_credentials   100% 13 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / grpc / tls_utils.py create_insecure_channel   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / tls_utils.py create_secure_channel   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / grpc / tls_utils.py (no function)   100% 10 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.__init__   100% 15 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.initialize   100% 33 0 0   100% 12 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.__resolve_stdio_command   100% 19 0 0   100% 16 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.__build_stdio_env   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.__run_stdio_session   100% 25 0 0   100% 10 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.__connect_to_stdio_server   100% 15 0 0   100% 6 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.__connect_to_http_server   100% 34 0 0   100% 6 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.__connect_to_http_server._tls_httpx_client_factory   100% 16 0 0   100% 8 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.invoke_hook   100% 32 0 0   100% 14 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.__get_plugin_config   100% 15 0 0   100% 8 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.shutdown   100% 23 0 0   100% 10 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalPlugin.__terminate_http_session   100% 13 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / mcp / client.py ExternalHookRef.__init__   100% 5 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / mcp / client.py (no function)   100% 37 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py get_plugin_configs   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py get_plugin_config   100% 6 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py invoke_hook   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py SSLCapableFastMCP.__init__   100% 8 0 0   100% 6 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py SSLCapableFastMCP._get_ssl_config   100% 20 0 0   100% 10 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py SSLCapableFastMCP._start_health_check_server   100% 17 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py SSLCapableFastMCP._start_health_check_server.health_check   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py SSLCapableFastMCP._start_health_check_server.metrics_endpoint   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py SSLCapableFastMCP._start_health_check_server.metrics_disabled   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py SSLCapableFastMCP.run_streamable_http_async   100% 28 0 0   100% 6 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py SSLCapableFastMCP.run_streamable_http_async.health_check   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py SSLCapableFastMCP.run_streamable_http_async.metrics_endpoint   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py SSLCapableFastMCP.run_streamable_http_async.metrics_disabled   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py run   100% 35 0 0   100% 10 0   100%
mcpgateway / plugins / framework / external / mcp / server / runtime.py (no function)   100% 24 0 2   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / server.py ExternalPluginServer.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / server.py ExternalPluginServer.get_plugin_configs   100% 5 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / mcp / server / server.py ExternalPluginServer.get_plugin_config   100% 5 0 0   100% 6 0   100%
mcpgateway / plugins / framework / external / mcp / server / server.py ExternalPluginServer.invoke_hook   94% 16 1 0   50% 2 1   89%
mcpgateway / plugins / framework / external / mcp / server / server.py ExternalPluginServer.initialize   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / server.py ExternalPluginServer.shutdown   100% 2 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / mcp / server / server.py ExternalPluginServer.get_server_config   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / server.py ExternalPluginServer.get_grpc_server_config   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / server / server.py (no function)   100% 20 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / mcp / tls_utils.py create_ssl_context   100% 21 0 0   100% 8 0   100%
mcpgateway / plugins / framework / external / mcp / tls_utils.py (no function)   100% 6 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / proto_convert.py pydantic_global_context_to_proto   100% 11 0 0   90% 10 1   95%
mcpgateway / plugins / framework / external / proto_convert.py proto_global_context_to_pydantic   100% 6 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / proto_convert.py pydantic_context_to_proto   100% 6 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / proto_convert.py proto_context_to_pydantic   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / proto_convert.py proto_context_to_dict   100% 7 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / proto_convert.py pydantic_violation_to_proto   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / proto_convert.py proto_violation_to_pydantic   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / proto_convert.py pydantic_result_to_proto_base   100% 6 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / proto_convert.py update_pydantic_result_from_proto_base   100% 5 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / proto_convert.py update_pydantic_context_from_proto   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / proto_convert.py (no function)   100% 16 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / client.py UnixSocketExternalPlugin.__init__   100% 11 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / unix / client.py UnixSocketExternalPlugin.connected   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / client.py UnixSocketExternalPlugin._connect   100% 7 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / client.py UnixSocketExternalPlugin._disconnect   100% 9 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / unix / client.py UnixSocketExternalPlugin._reconnect   100% 13 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / unix / client.py UnixSocketExternalPlugin._send_request   95% 22 1 0   83% 6 1   93%
mcpgateway / plugins / framework / external / unix / client.py UnixSocketExternalPlugin.initialize   100% 21 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / unix / client.py UnixSocketExternalPlugin.shutdown   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / client.py UnixSocketExternalPlugin.invoke_hook   100% 28 0 0   100% 12 0   100%
mcpgateway / plugins / framework / external / unix / client.py (no function)   100% 24 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / protocol.py read_message   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / unix / protocol.py read_message._read   100% 7 0 0   100% 4 0   100%
mcpgateway / plugins / framework / external / unix / protocol.py write_message   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / unix / protocol.py write_message_async   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / unix / protocol.py (no function)   100% 10 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / server / runtime.py run   100% 6 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / server / runtime.py main   100% 7 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / server / runtime.py (no function)   100% 9 0 2   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer.socket_path   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer.running   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer._handle_client   93% 28 2 0   50% 2 1   90%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer._handle_message   100% 26 0 0   83% 6 1   97%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer._handle_invoke_hook   100% 28 0 0   90% 10 1   97%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer._handle_get_plugin_config   100% 11 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer._handle_get_plugin_configs   100% 10 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer.start   100% 10 0 0   75% 4 1   93%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer.serve_forever   50% 4 2 0   50% 2 1   50%
mcpgateway / plugins / framework / external / unix / server / server.py UnixSocketPluginServer.stop   100% 15 0 0   100% 6 0   100%
mcpgateway / plugins / framework / external / unix / server / server.py run_server   100% 10 0 0   100% 2 0   100%
mcpgateway / plugins / framework / external / unix / server / server.py run_server.signal_handler   0% 2 2 0   100% 0 0   0%
mcpgateway / plugins / framework / external / unix / server / server.py (no function)   100% 28 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / agents.py _register_agent_hooks   100% 5 0 0   50% 2 1   86%
mcpgateway / plugins / framework / hooks / agents.py (no function)   100% 25 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / http.py HttpHeaderPayload.__iter__   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / http.py HttpHeaderPayload.__getitem__   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / http.py HttpHeaderPayload.__setitem__   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / http.py HttpHeaderPayload.__len__   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / http.py _register_http_auth_hooks   100% 7 0 0   50% 2 1   89%
mcpgateway / plugins / framework / hooks / http.py (no function)   100% 46 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / prompts.py _register_prompt_hooks   100% 5 0 0   50% 2 1   86%
mcpgateway / plugins / framework / hooks / prompts.py (no function)   100% 18 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / registry.py HookRegistry.__new__   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / hooks / registry.py HookRegistry.register_hook   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / registry.py HookRegistry.get_payload_type   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / registry.py HookRegistry.get_result_type   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / registry.py HookRegistry.json_to_payload   100% 6 0 0   100% 4 0   100%
mcpgateway / plugins / framework / hooks / registry.py HookRegistry.json_to_result   100% 6 0 0   100% 4 0   100%
mcpgateway / plugins / framework / hooks / registry.py HookRegistry.is_registered   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / registry.py HookRegistry.get_registered_hooks   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / registry.py get_hook_registry   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / registry.py (no function)   100% 16 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / resources.py _register_resource_hooks   100% 5 0 0   50% 2 1   86%
mcpgateway / plugins / framework / hooks / resources.py (no function)   100% 17 0 0   100% 0 0   100%
mcpgateway / plugins / framework / hooks / tools.py _register_tool_hooks   100% 5 0 0   50% 2 1   86%
mcpgateway / plugins / framework / hooks / tools.py (no function)   100% 19 0 0   100% 0 0   100%
mcpgateway / plugins / framework / loader / config.py ConfigLoader.load_config   100% 11 0 0   100% 2 0   100%
mcpgateway / plugins / framework / loader / config.py (no function)   100% 7 0 0   100% 0 0   100%
mcpgateway / plugins / framework / loader / plugin.py PluginLoader.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / loader / plugin.py PluginLoader.__get_plugin_type   100% 8 0 0   100% 0 0   100%
mcpgateway / plugins / framework / loader / plugin.py PluginLoader.__register_plugin_type   100% 5 0 0   100% 4 0   100%
mcpgateway / plugins / framework / loader / plugin.py PluginLoader.load_and_instantiate_plugin   100% 22 0 1   100% 10 0   100%
mcpgateway / plugins / framework / loader / plugin.py PluginLoader.shutdown   100% 2 0 0   100% 2 0   100%
mcpgateway / plugins / framework / loader / plugin.py (no function)   100% 14 0 0   100% 0 0   100%
mcpgateway / plugins / framework / manager.py PluginExecutor.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / manager.py PluginExecutor.execute   96% 25 1 0   93% 14 1   95%
mcpgateway / plugins / framework / manager.py PluginExecutor.execute_plugin   97% 39 1 0   86% 22 3   93%
mcpgateway / plugins / framework / manager.py PluginExecutor._execute_with_timeout   100% 17 0 0   100% 2 0   100%
mcpgateway / plugins / framework / manager.py PluginExecutor._validate_payload_size   100% 8 0 0   100% 8 0   100%
mcpgateway / plugins / framework / manager.py PluginManager.__init__   100% 9 0 0   100% 6 0   100%
mcpgateway / plugins / framework / manager.py PluginManager.reset   100% 9 0 0   100% 0 0   100%
mcpgateway / plugins / framework / manager.py PluginManager.config   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / manager.py PluginManager.plugin_count   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / manager.py PluginManager.initialized   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / manager.py PluginManager.get_plugin   0% 2 2 0   100% 0 0   0%
mcpgateway / plugins / framework / manager.py PluginManager.has_hooks_for   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / manager.py PluginManager.initialize   92% 26 2 0   92% 12 1   92%
mcpgateway / plugins / framework / manager.py PluginManager.shutdown   90% 10 1 0   75% 4 1   86%
mcpgateway / plugins / framework / manager.py PluginManager.invoke_hook   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / manager.py PluginManager.invoke_hook_for_plugin   100% 14 0 0   100% 10 0   100%
mcpgateway / plugins / framework / manager.py (no function)   100% 50 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.__getitem__   100% 7 0 0   100% 6 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.__setitem__   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.__delitem__   100% 5 0 0   100% 4 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.__contains__   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.__len__   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.__iter__   100% 6 0 0   100% 8 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.__repr__   100% 0 0 7   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.get   100% 4 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.keys   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.values   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.items   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.copy   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.get_modifications   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.get_deleted   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.has_modifications   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.update   100% 8 0 0   100% 10 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.pop   100% 10 0 0   100% 4 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.setdefault   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / memory.py CopyOnWriteDict.clear   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / memory.py copyonwrite   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / memory.py (no function)   100% 23 0 1   100% 0 0   100%
mcpgateway / plugins / framework / models.py PluginCondition.serialize_set   100% 6 0 0   100% 4 0   100%
mcpgateway / plugins / framework / models.py MCPTransportTLSConfigBase.validate_path   100% 6 0 0   100% 4 0   100%
mcpgateway / plugins / framework / models.py MCPTransportTLSConfigBase.validate_cert_key   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / models.py MCPTransportTLSConfigBase._parse_bool   100% 8 0 0   100% 6 0   100%
mcpgateway / plugins / framework / models.py MCPClientTLSConfig.from_env   100% 19 0 0   100% 14 0   100%
mcpgateway / plugins / framework / models.py MCPServerTLSConfig.from_env   100% 18 0 0   100% 12 0   100%
mcpgateway / plugins / framework / models.py MCPServerConfig.validate_uds   100% 17 0 0   100% 10 0   100%
mcpgateway / plugins / framework / models.py MCPServerConfig.validate_uds_tls   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / models.py MCPServerConfig._parse_bool   100% 8 0 0   100% 6 0   100%
mcpgateway / plugins / framework / models.py MCPServerConfig.from_env   100% 19 0 0   100% 12 0   100%
mcpgateway / plugins / framework / models.py MCPClientConfig.validate_url   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / models.py MCPClientConfig.validate_script   100% 8 0 0   100% 8 0   100%
mcpgateway / plugins / framework / models.py MCPClientConfig.validate_cmd   100% 7 0 0   100% 6 0   100%
mcpgateway / plugins / framework / models.py MCPClientConfig.validate_env   100% 10 0 0   100% 10 0   100%
mcpgateway / plugins / framework / models.py MCPClientConfig.validate_cwd   100% 6 0 0   100% 4 0   100%
mcpgateway / plugins / framework / models.py MCPClientConfig.validate_uds   100% 17 0 0   100% 10 0   100%
mcpgateway / plugins / framework / models.py MCPClientConfig.validate_tls_usage   100% 5 0 0   100% 4 0   100%
mcpgateway / plugins / framework / models.py MCPClientConfig.validate_transport_fields   100% 7 0 0   100% 6 0   100%
mcpgateway / plugins / framework / models.py GRPCClientTLSConfig.from_env   100% 16 0 0   100% 12 0   100%
mcpgateway / plugins / framework / models.py GRPCServerTLSConfig.validate_client_auth   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / models.py GRPCServerTLSConfig.from_env   100% 15 0 0   100% 12 0   100%
mcpgateway / plugins / framework / models.py GRPCClientConfig.validate_target   100% 7 0 0   100% 6 0   100%
mcpgateway / plugins / framework / models.py GRPCClientConfig.validate_uds   100% 17 0 0   100% 10 0   100%
mcpgateway / plugins / framework / models.py GRPCClientConfig.validate_target_or_uds   100% 9 0 0   100% 6 0   100%
mcpgateway / plugins / framework / models.py GRPCClientConfig.get_target   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / models.py GRPCServerConfig.validate_uds   100% 17 0 0   100% 10 0   100%
mcpgateway / plugins / framework / models.py GRPCServerConfig.validate_uds_tls   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / models.py GRPCServerConfig.get_bind_address   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / models.py GRPCServerConfig.from_env   100% 19 0 0   100% 12 0   100%
mcpgateway / plugins / framework / models.py UnixSocketClientConfig.validate_path   100% 5 0 0   100% 4 0   100%
mcpgateway / plugins / framework / models.py UnixSocketServerConfig.from_env   100% 7 0 0   100% 4 0   100%
mcpgateway / plugins / framework / models.py PluginConfig.check_url_or_script_filled   100% 11 0 0   100% 10 0   100%
mcpgateway / plugins / framework / models.py PluginConfig.check_config_and_external   100% 15 0 0   100% 10 0   100%
mcpgateway / plugins / framework / models.py PluginViolation.plugin_name   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / models.py PluginViolation.plugin_name   100% 3 0 0   100% 2 0   100%
mcpgateway / plugins / framework / models.py PluginContext.get_state   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / models.py PluginContext.set_state   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / models.py PluginContext.cleanup   100% 2 0 0   100% 0 0   100%
mcpgateway / plugins / framework / models.py PluginContext.is_empty   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / models.py (no function)   100% 241 0 0   100% 0 0   100%
mcpgateway / plugins / framework / registry.py PluginInstanceRegistry.__init__   100% 4 0 0   100% 0 0   100%
mcpgateway / plugins / framework / registry.py PluginInstanceRegistry.register   100% 15 0 0   100% 6 0   100%
mcpgateway / plugins / framework / registry.py PluginInstanceRegistry.unregister   100% 8 0 0   100% 4 0   100%
mcpgateway / plugins / framework / registry.py PluginInstanceRegistry.get_plugin   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / registry.py PluginInstanceRegistry.get_plugin_hook_by_name   100% 5 0 0   75% 4 1   89%
mcpgateway / plugins / framework / registry.py PluginInstanceRegistry.get_hook_refs_for_hook   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / registry.py PluginInstanceRegistry.get_all_plugins   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / registry.py PluginInstanceRegistry.has_hooks_for   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / registry.py PluginInstanceRegistry.plugin_count   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / registry.py PluginInstanceRegistry.shutdown   100% 8 0 0   100% 2 0   100%
mcpgateway / plugins / framework / registry.py (no function)   100% 18 0 0   100% 0 0   100%
mcpgateway / plugins / framework / utils.py import_module   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / framework / utils.py parse_class_name   100% 4 0 0   100% 2 0   100%
mcpgateway / plugins / framework / utils.py matches   100% 8 0 0   100% 8 0   100%
mcpgateway / plugins / framework / utils.py get_attr   86% 7 1 0   83% 6 1   85%
mcpgateway / plugins / framework / utils.py get_matchable_value   100% 5 0 0   100% 2 0   100%
mcpgateway / plugins / framework / utils.py payload_matches   100% 15 0 0   92% 12 1   96%
mcpgateway / plugins / framework / utils.py (no function)   100% 12 0 0   100% 0 0   100%
mcpgateway / plugins / tools / cli.py command_exists   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / tools / cli.py git_user_name   100% 5 0 0   100% 0 0   100%
mcpgateway / plugins / tools / cli.py git_user_email   100% 5 0 0   100% 0 0   100%
mcpgateway / plugins / tools / cli.py bootstrap   100% 11 0 0   100% 2 0   100%
mcpgateway / plugins / tools / cli.py callback   100% 0 0 1   100% 0 0   100%
mcpgateway / plugins / tools / cli.py main   100% 1 0 0   100% 0 0   100%
mcpgateway / plugins / tools / cli.py (no function)   100% 28 0 4   100% 0 0   100%
mcpgateway / plugins / tools / models.py (no function)   100% 7 0 0   100% 0 0   100%
mcpgateway / reverse_proxy.py StdioProcess.__init__   100% 4 0 0   100% 0 0   100%
mcpgateway / reverse_proxy.py StdioProcess.start   100% 6 0 0   100% 2 0   100%
mcpgateway / reverse_proxy.py StdioProcess.stop   100% 14 0 0   83% 6 1   95%
mcpgateway / reverse_proxy.py StdioProcess.send   100% 5 0 0   100% 2 0   100%
mcpgateway / reverse_proxy.py StdioProcess.add_message_handler   100% 1 0 0   100% 0 0   100%
mcpgateway / reverse_proxy.py StdioProcess._read_stdout   100% 20 0 0   100% 8 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient.__init__   100% 17 0 0   100% 0 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient.connect   100% 17 0 0   100% 4 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient._connect_websocket   100% 14 0 0   100% 8 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient._connect_sse   100% 3 0 0   100% 2 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient._register   100% 5 0 0   100% 0 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient._send_to_gateway   100% 6 0 0   100% 4 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient._handle_stdio_message   100% 6 0 0   100% 0 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient._receive_websocket   100% 16 0 0   80% 10 2   92%
mcpgateway / reverse_proxy.py ReverseProxyClient._handle_gateway_message   100% 14 0 0   100% 6 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient._keepalive_loop   100% 11 0 0   100% 2 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient.disconnect   100% 19 0 0   100% 10 0   100%
mcpgateway / reverse_proxy.py ReverseProxyClient.run_with_reconnect   100% 20 0 0   100% 8 0   100%
mcpgateway / reverse_proxy.py parse_args   100% 33 0 0   100% 20 0   100%
mcpgateway / reverse_proxy.py main   100% 16 0 0   100% 2 0   100%
mcpgateway / reverse_proxy.py main.signal_handler   100% 2 0 0   100% 0 0   100%
mcpgateway / reverse_proxy.py run   100% 8 0 0   100% 0 0   100%
mcpgateway / reverse_proxy.py (no function)   100% 76 0 2   100% 0 0   100%
mcpgateway / routers / auth.py get_db   100% 14 0 0   100% 0 0   100%
mcpgateway / routers / auth.py LoginRequest.get_email   100% 7 0 0   100% 6 0   100%
mcpgateway / routers / auth.py login   100% 17 0 0   100% 2 0   100%
mcpgateway / routers / auth.py (no function)   100% 20 0 0   100% 0 0   100%
mcpgateway / routers / cancellation_router.py cancel_run   100% 14 0 0   100% 2 0   100%
mcpgateway / routers / cancellation_router.py get_status   100% 6 0 0   100% 4 0   100%
mcpgateway / routers / cancellation_router.py (no function)   100% 25 0 0   100% 0 0   100%
mcpgateway / routers / email_auth.py get_db   100% 14 0 0   100% 0 0   100%
mcpgateway / routers / email_auth.py get_client_ip   100% 7 0 0   100% 4 0   100%
mcpgateway / routers / email_auth.py get_user_agent   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / email_auth.py create_access_token   100% 6 0 0   100% 0 0   100%
mcpgateway / routers / email_auth.py create_legacy_access_token   100% 6 0 0   100% 0 0   100%
mcpgateway / routers / email_auth.py login   100% 46 0 0   100% 20 0   100%
mcpgateway / routers / email_auth.py register   100% 20 0 0   100% 2 0   100%
mcpgateway / routers / email_auth.py change_password   100% 15 0 0   100% 2 0   100%
mcpgateway / routers / email_auth.py get_current_user_profile   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / email_auth.py get_auth_events   100% 7 0 0   100% 0 0   100%
mcpgateway / routers / email_auth.py list_users   100% 10 0 0   100% 2 0   100%
mcpgateway / routers / email_auth.py list_all_auth_events   100% 7 0 0   100% 0 0   100%
mcpgateway / routers / email_auth.py create_user   100% 19 0 0   100% 2 0   100%
mcpgateway / routers / email_auth.py get_user   100% 11 0 0   100% 2 0   100%
mcpgateway / routers / email_auth.py update_user   100% 16 0 0   100% 2 0   100%
mcpgateway / routers / email_auth.py delete_user   100% 16 0 0   100% 4 0   100%
mcpgateway / routers / email_auth.py (no function)   100% 51 0 0   100% 0 0   100%
mcpgateway / routers / llm_admin_router.py get_providers_partial   100% 7 0 0   100% 2 0   100%
mcpgateway / routers / llm_admin_router.py get_models_partial   100% 16 0 0   100% 2 0   100%
mcpgateway / routers / llm_admin_router.py set_provider_state_html   100% 5 0 0   100% 0 0   100%
mcpgateway / routers / llm_admin_router.py check_provider_health   100% 5 0 0   100% 0 0   100%
mcpgateway / routers / llm_admin_router.py delete_provider_html   100% 5 0 0   100% 0 0   100%
mcpgateway / routers / llm_admin_router.py set_model_state_html   100% 10 0 0   100% 0 0   100%
mcpgateway / routers / llm_admin_router.py delete_model_html   100% 5 0 0   100% 0 0   100%
mcpgateway / routers / llm_admin_router.py get_api_info_partial   100% 12 0 0   100% 2 0   100%
mcpgateway / routers / llm_admin_router.py admin_test_api   100% 34 0 0   88% 8 1   98%
mcpgateway / routers / llm_admin_router.py get_provider_defaults   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / llm_admin_router.py get_provider_configs   100% 3 0 0   100% 0 0   100%
mcpgateway / routers / llm_admin_router.py fetch_provider_models   100% 45 0 0   89% 18 2   97%
mcpgateway / routers / llm_admin_router.py sync_provider_models   100% 26 0 0   100% 10 0   100%
mcpgateway / routers / llm_admin_router.py (no function)   100% 52 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py create_provider   100% 12 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py list_providers   100% 6 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py get_provider   100% 9 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py update_provider   100% 11 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py delete_provider   100% 6 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py set_provider_state   100% 9 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py check_provider_health   100% 7 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py create_model   100% 11 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py list_models   100% 12 0 0   100% 2 0   100%
mcpgateway / routers / llm_config_router.py get_model   100% 12 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py update_model   100% 12 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py delete_model   100% 6 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py set_model_state   100% 12 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py get_gateway_models   100% 5 0 0   100% 0 0   100%
mcpgateway / routers / llm_config_router.py (no function)   100% 54 0 0   100% 0 0   100%
mcpgateway / routers / llm_proxy_router.py chat_completions   100% 21 0 0   100% 4 0   100%
mcpgateway / routers / llm_proxy_router.py list_models   100% 7 0 0   100% 2 0   100%
mcpgateway / routers / llm_proxy_router.py (no function)   100% 18 0 0   100% 0 0   100%
mcpgateway / routers / llmchat_router.py init_redis   100% 4 0 0   100% 4 0   100%
mcpgateway / routers / llmchat_router.py build_llm_config   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / llmchat_router.py build_config   100% 2 0 0   100% 0 0   100%
mcpgateway / routers / llmchat_router.py _get_user_id_from_context   100% 3 0 0   100% 2 0   100%
mcpgateway / routers / llmchat_router.py _resolve_user_id   100% 6 0 0   100% 4 0   100%
mcpgateway / routers / llmchat_router.py _cfg_key   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / llmchat_router.py _active_key   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / llmchat_router.py _lock_key   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / llmchat_router.py set_user_config   100% 3 0 0   100% 2 0   100%
mcpgateway / routers / llmchat_router.py get_user_config   100% 6 0 0   100% 4 0   100%
mcpgateway / routers / llmchat_router.py delete_user_config   100% 3 0 0   100% 2 0   100%
mcpgateway / routers / llmchat_router.py set_active_session   100% 3 0 0   100% 2 0   100%
mcpgateway / routers / llmchat_router.py delete_active_session   100% 7 0 0   100% 2 0   100%
mcpgateway / routers / llmchat_router.py _try_acquire_lock   100% 3 0 0   100% 2 0   100%
mcpgateway / routers / llmchat_router.py _release_lock_safe   100% 7 0 0   100% 2 0   100%
mcpgateway / routers / llmchat_router.py _create_local_session_from_config   100% 12 0 0   100% 2 0   100%
mcpgateway / routers / llmchat_router.py get_active_session   98% 45 1 0   96% 24 1   97%
mcpgateway / routers / llmchat_router.py connect   100% 54 0 0   86% 14 2   97%
mcpgateway / routers / llmchat_router.py token_streamer   100% 31 0 0   95% 22 1   98%
mcpgateway / routers / llmchat_router.py token_streamer.sse   100% 2 0 0   100% 0 0   100%
mcpgateway / routers / llmchat_router.py chat   96% 27 1 0   90% 10 1   95%
mcpgateway / routers / llmchat_router.py disconnect   94% 16 1 0   75% 4 1   90%
mcpgateway / routers / llmchat_router.py status   100% 3 0 0   100% 0 0   100%
mcpgateway / routers / llmchat_router.py get_config   100% 9 0 0   75% 4 1   92%
mcpgateway / routers / llmchat_router.py get_gateway_models   100% 10 0 0   100% 0 0   100%
mcpgateway / routers / llmchat_router.py (no function)   97% 77 2 0   100% 0 0   97%
mcpgateway / routers / log_search.py _align_to_window   100% 4 0 0   100% 0 0   100%
mcpgateway / routers / log_search.py _deduplicate_metrics   100% 11 0 0   100% 6 0   100%
mcpgateway / routers / log_search.py _expand_component_filters   100% 4 0 0   100% 2 0   100%
mcpgateway / routers / log_search.py _aggregate_custom_windows   100% 52 0 0   100% 30 0   100%
mcpgateway / routers / log_search.py search_logs   100% 41 0 0   100% 26 0   100%
mcpgateway / routers / log_search.py trace_correlation_id   100% 23 0 0   100% 6 0   100%
mcpgateway / routers / log_search.py get_security_events   100% 21 0 0   100% 12 0   100%
mcpgateway / routers / log_search.py get_audit_trails   100% 23 0 0   100% 14 0   100%
mcpgateway / routers / log_search.py get_performance_metrics   100% 22 0 2   100% 8 0   100%
mcpgateway / routers / log_search.py (no function)   100% 126 0 0   100% 0 0   100%
mcpgateway / routers / metrics_maintenance.py trigger_cleanup   100% 15 0 0   100% 4 0   100%
mcpgateway / routers / metrics_maintenance.py trigger_rollup   100% 6 0 0   100% 2 0   100%
mcpgateway / routers / metrics_maintenance.py get_metrics_stats   100% 13 0 0   100% 4 0   100%
mcpgateway / routers / metrics_maintenance.py get_metrics_config   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / metrics_maintenance.py (no function)   100% 58 0 0   100% 0 0   100%
mcpgateway / routers / oauth_router.py _normalize_resource_url   100% 9 0 0   100% 4 0   100%
mcpgateway / routers / oauth_router.py initiate_oauth_flow   100% 74 0 0   93% 28 2   98%
mcpgateway / routers / oauth_router.py oauth_callback   100% 47 0 0   94% 16 1   98%
mcpgateway / routers / oauth_router.py get_oauth_status   100% 27 0 0   92% 12 1   97%
mcpgateway / routers / oauth_router.py fetch_tools_after_oauth   100% 9 0 0   100% 0 0   100%
mcpgateway / routers / oauth_router.py list_registered_oauth_clients   100% 10 0 0   100% 2 0   100%
mcpgateway / routers / oauth_router.py get_registered_client_for_gateway   100% 11 0 0   100% 2 0   100%
mcpgateway / routers / oauth_router.py delete_registered_client   100% 18 0 0   100% 2 0   100%
mcpgateway / routers / oauth_router.py (no function)   100% 31 0 0   100% 0 0   100%
mcpgateway / routers / observability.py get_db   100% 14 0 0   100% 0 0   100%
mcpgateway / routers / observability.py list_traces   100% 3 0 0   100% 0 0   100%
mcpgateway / routers / observability.py query_traces_advanced   100% 13 0 0   100% 4 0   100%
mcpgateway / routers / observability.py get_trace   100% 5 0 0   100% 2 0   100%
mcpgateway / routers / observability.py list_spans   100% 3 0 0   100% 0 0   100%
mcpgateway / routers / observability.py cleanup_old_traces   100% 4 0 0   100% 0 0   100%
mcpgateway / routers / observability.py get_stats   100% 10 0 0   100% 0 0   100%
mcpgateway / routers / observability.py export_traces   100% 30 0 0   100% 14 0   100%
mcpgateway / routers / observability.py get_query_performance   100% 6 0 0   100% 2 0   100%
mcpgateway / routers / observability.py _get_query_performance_postgresql   100% 5 0 0   100% 2 0   100%
mcpgateway / routers / observability.py _get_query_performance_python   100% 7 0 0   100% 2 0   100%
mcpgateway / routers / observability.py _get_query_performance_python.percentile   100% 7 0 0   100% 2 0   100%
mcpgateway / routers / observability.py (no function)   100% 38 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py get_db   100% 14 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py create_role   100% 13 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py list_roles   100% 9 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py get_role   100% 13 0 0   100% 2 0   100%
mcpgateway / routers / rbac.py update_role   100% 17 0 0   100% 2 0   100%
mcpgateway / routers / rbac.py delete_role   100% 14 0 0   100% 2 0   100%
mcpgateway / routers / rbac.py assign_role_to_user   100% 13 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py get_user_roles   100% 10 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py revoke_user_role   100% 14 0 0   100% 2 0   100%
mcpgateway / routers / rbac.py check_permission   100% 9 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py get_user_permissions   100% 10 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py get_available_permissions   100% 7 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py get_my_roles   100% 10 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py get_my_permissions   100% 10 0 0   100% 0 0   100%
mcpgateway / routers / rbac.py (no function)   100% 49 0 0   100% 0 0   100%
mcpgateway / routers / reverse_proxy.py ReverseProxySession.__init__   100% 8 0 0   100% 0 0   100%
mcpgateway / routers / reverse_proxy.py ReverseProxySession.send_message   100% 4 0 0   100% 0 0   100%
mcpgateway / routers / reverse_proxy.py ReverseProxySession.receive_message   100% 5 0 0   100% 0 0   100%
mcpgateway / routers / reverse_proxy.py ReverseProxyManager.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / routers / reverse_proxy.py ReverseProxyManager.add_session   100% 3 0 0   100% 0 0   100%
mcpgateway / routers / reverse_proxy.py ReverseProxyManager.remove_session   100% 4 0 0   100% 2 0   100%
mcpgateway / routers / reverse_proxy.py ReverseProxyManager.get_session   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / reverse_proxy.py ReverseProxyManager.list_sessions   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / reverse_proxy.py websocket_endpoint   100% 80 0 0   100% 22 0   100%
mcpgateway / routers / reverse_proxy.py list_sessions   100% 10 0 0   100% 6 0   100%
mcpgateway / routers / reverse_proxy.py disconnect_session   100% 7 0 0   100% 2 0   100%
mcpgateway / routers / reverse_proxy.py send_request_to_session   100% 10 0 0   100% 2 0   100%
mcpgateway / routers / reverse_proxy.py _get_user_from_credentials   100% 7 0 0   100% 4 0   100%
mcpgateway / routers / reverse_proxy.py _validate_session_ownership   100% 10 0 0   100% 6 0   100%
mcpgateway / routers / reverse_proxy.py sse_endpoint   100% 6 0 0   100% 2 0   100%
mcpgateway / routers / reverse_proxy.py sse_endpoint.event_generator   100% 7 0 0   100% 2 0   100%
mcpgateway / routers / reverse_proxy.py (no function)   100% 38 0 0   100% 0 0   100%
mcpgateway / routers / server_well_known.py server_oauth_protected_resource   100% 12 0 0   100% 2 0   100%
mcpgateway / routers / server_well_known.py server_well_known_file   100% 10 0 0   100% 8 0   100%
mcpgateway / routers / server_well_known.py (no function)   100% 17 0 0   100% 0 0   100%
mcpgateway / routers / sso.py list_sso_providers   100% 5 0 0   100% 2 0   100%
mcpgateway / routers / sso.py _normalize_origin   100% 4 0 0   100% 2 0   100%
mcpgateway / routers / sso.py _validate_redirect_uri   100% 25 0 0   88% 16 2   95%
mcpgateway / routers / sso.py initiate_sso_login   100% 15 0 0   100% 6 0   100%
mcpgateway / routers / sso.py handle_sso_callback   86% 21 3 0   100% 6 0   89%
mcpgateway / routers / sso.py create_sso_provider   100% 9 0 0   100% 2 0   100%
mcpgateway / routers / sso.py list_all_sso_providers   100% 9 0 0   100% 0 0   100%
mcpgateway / routers / sso.py get_sso_provider   100% 8 0 0   100% 2 0   100%
mcpgateway / routers / sso.py update_sso_provider   100% 11 0 0   100% 4 0   100%
mcpgateway / routers / sso.py delete_sso_provider   100% 6 0 0   100% 2 0   100%
mcpgateway / routers / sso.py list_pending_approvals   82% 11 2 0   50% 2 1   77%
mcpgateway / routers / sso.py handle_approval_request   100% 23 0 0   100% 12 0   100%
mcpgateway / routers / sso.py (no function)   100% 100 0 0   100% 0 0   100%
mcpgateway / routers / teams.py create_team   100% 13 0 0   100% 0 0   100%
mcpgateway / routers / teams.py list_teams   100% 23 0 0   100% 4 0   100%
mcpgateway / routers / teams.py discover_public_teams   100% 14 0 0   100% 2 0   100%
mcpgateway / routers / teams.py get_team   100% 18 0 0   100% 4 0   100%
mcpgateway / routers / teams.py update_team   100% 24 0 0   100% 6 0   100%
mcpgateway / routers / teams.py delete_team   100% 16 0 0   100% 4 0   100%
mcpgateway / routers / teams.py list_team_members   100% 23 0 0   100% 8 0   100%
mcpgateway / routers / teams.py update_team_member   100% 23 0 0   100% 6 0   100%
mcpgateway / routers / teams.py remove_team_member   100% 16 0 0   100% 4 0   100%
mcpgateway / routers / teams.py invite_team_member   100% 22 0 0   100% 4 0   100%
mcpgateway / routers / teams.py list_team_invitations   100% 20 0 0   100% 4 0   100%
mcpgateway / routers / teams.py accept_team_invitation   100% 17 0 0   100% 2 0   100%
mcpgateway / routers / teams.py cancel_team_invitation   100% 21 0 0   100% 6 0   100%
mcpgateway / routers / teams.py request_to_join_team   100% 19 0 0   100% 6 0   100%
mcpgateway / routers / teams.py leave_team   100% 21 0 0   100% 8 0   100%
mcpgateway / routers / teams.py list_team_join_requests   100% 18 0 0   100% 4 0   100%
mcpgateway / routers / teams.py approve_join_request   100% 19 0 0   100% 6 0   100%
mcpgateway / routers / teams.py reject_join_request   100% 19 0 0   100% 6 0   100%
mcpgateway / routers / teams.py (no function)   100% 65 0 0   100% 0 0   100%
mcpgateway / routers / tokens.py _require_interactive_session   88% 8 1 0   83% 6 1   86%
mcpgateway / routers / tokens.py _get_caller_permissions   80% 5 1 0   50% 2 1   71%
mcpgateway / routers / tokens.py create_token   100% 16 0 0   100% 4 0   100%
mcpgateway / routers / tokens.py list_tokens   100% 10 0 0   100% 2 0   100%
mcpgateway / routers / tokens.py get_token   100% 8 0 0   100% 2 0   100%
mcpgateway / routers / tokens.py update_token   95% 21 1 0   88% 8 1   93%
mcpgateway / routers / tokens.py revoke_token   100% 8 0 0   100% 2 0   100%
mcpgateway / routers / tokens.py get_token_usage_stats   100% 9 0 0   100% 2 0   100%
mcpgateway / routers / tokens.py list_all_tokens   100% 14 0 0   100% 6 0   100%
mcpgateway / routers / tokens.py admin_revoke_token   100% 11 0 0   100% 4 0   100%
mcpgateway / routers / tokens.py create_team_token   88% 16 2 0   50% 4 2   80%
mcpgateway / routers / tokens.py list_team_tokens   100% 13 0 0   100% 2 0   100%
mcpgateway / routers / tokens.py (no function)   100% 41 0 0   100% 0 0   100%
mcpgateway / routers / toolops_router.py generate_testcases_for_tool   100% 5 0 0   100% 0 0   100%
mcpgateway / routers / toolops_router.py execute_tool_nl_testcases   71% 7 2 0   100% 0 0   71%
mcpgateway / routers / toolops_router.py enrich_a_tool   100% 12 0 0   100% 0 0   100%
mcpgateway / routers / toolops_router.py (no function)   100% 26 0 0   100% 0 0   100%
mcpgateway / routers / well_known.py get_base_url_with_protocol   100% 7 0 0   100% 2 0   100%
mcpgateway / routers / well_known.py validate_security_txt   100% 14 0 0   100% 6 0   100%
mcpgateway / routers / well_known.py get_oauth_protected_resource   97% 32 1 0   91% 22 2   94%
mcpgateway / routers / well_known.py get_well_known_file_content   100% 23 0 0   100% 16 0   100%
mcpgateway / routers / well_known.py get_well_known_file   100% 1 0 0   100% 0 0   100%
mcpgateway / routers / well_known.py get_well_known_status   100% 7 0 0   100% 4 0   100%
mcpgateway / routers / well_known.py (no function)   100% 24 0 0   100% 0 0   100%
mcpgateway / schemas.py encode_datetime   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ToolCreate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ToolCreate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ToolCreate.validate_url   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ToolCreate.validate_description   100% 11 0 0   100% 8 0   100%
mcpgateway / schemas.py ToolCreate.validate_display_name   100% 5 0 0   100% 4 0   100%
mcpgateway / schemas.py ToolCreate.validate_json_fields   100% 2 0 0   100% 0 0   100%
mcpgateway / schemas.py ToolCreate.validate_request_type   100% 16 0 0   93% 14 1   97%
mcpgateway / schemas.py ToolCreate.assemble_auth   100% 18 0 0   100% 10 0   100%
mcpgateway / schemas.py ToolCreate.prevent_manual_mcp_creation   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py ToolCreate.enforce_passthrough_fields_for_rest   100% 7 0 0   100% 6 0   100%
mcpgateway / schemas.py ToolCreate.extract_base_url_and_path_template   100% 15 0 0   100% 10 0   100%
mcpgateway / schemas.py ToolCreate.validate_base_url   100% 6 0 0   100% 4 0   100%
mcpgateway / schemas.py ToolCreate.validate_path_template   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ToolCreate.validate_timeout_ms   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ToolCreate.validate_allowlist   100% 10 0 0   100% 10 0   100%
mcpgateway / schemas.py ToolCreate.validate_plugin_chain   100% 6 0 0   83% 6 1   92%
mcpgateway / schemas.py ToolCreate.handle_timeout_ms_defaults   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ToolUpdate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ToolUpdate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ToolUpdate.validate_custom_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ToolUpdate.validate_url   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ToolUpdate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py ToolUpdate.validate_json_fields   100% 2 0 0   100% 0 0   100%
mcpgateway / schemas.py ToolUpdate.validate_request_type   100% 11 0 0   100% 8 0   100%
mcpgateway / schemas.py ToolUpdate.assemble_auth   100% 18 0 0   90% 10 1   96%
mcpgateway / schemas.py ToolUpdate.validate_display_name   100% 5 0 0   100% 4 0   100%
mcpgateway / schemas.py ToolUpdate.prevent_manual_mcp_update   100% 6 0 0   100% 4 0   100%
mcpgateway / schemas.py ToolUpdate.extract_base_url_and_path_template   100% 15 0 0   80% 10 2   92%
mcpgateway / schemas.py ToolUpdate.validate_base_url   100% 6 0 0   100% 4 0   100%
mcpgateway / schemas.py ToolUpdate.validate_path_template   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ToolUpdate.validate_timeout_ms   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ToolUpdate.validate_allowlist   100% 10 0 0   100% 10 0   100%
mcpgateway / schemas.py ToolUpdate.validate_plugin_chain   100% 6 0 0   83% 6 1   92%
mcpgateway / schemas.py ToolInvocation.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ToolInvocation.validate_arguments   100% 2 0 0   100% 0 0   100%
mcpgateway / schemas.py ResourceCreate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ResourceCreate.validate_uri   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ResourceCreate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ResourceCreate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py ResourceCreate.validate_mime_type   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ResourceCreate.validate_content   100% 13 0 0   100% 8 0   100%
mcpgateway / schemas.py ResourceUpdate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ResourceUpdate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ResourceUpdate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py ResourceUpdate.validate_mime_type   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ResourceUpdate.validate_content   100% 13 0 0   100% 8 0   100%
mcpgateway / schemas.py ResourceSubscription.validate_uri   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ResourceSubscription.validate_subscriber_id   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ResourceNotification.serialize_timestamp   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py PromptCreate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py PromptCreate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py PromptCreate.validate_custom_name   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py PromptCreate.validate_display_name   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py PromptCreate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py PromptCreate.validate_template   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py PromptCreate.validate_arguments   100% 2 0 0   100% 0 0   100%
mcpgateway / schemas.py PromptExecuteArgs.validate_args   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py PromptUpdate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py PromptUpdate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py PromptUpdate.validate_custom_name   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py PromptUpdate.validate_display_name   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py PromptUpdate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py PromptUpdate.validate_template   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py PromptUpdate.validate_arguments   100% 2 0 0   100% 0 0   100%
mcpgateway / schemas.py GatewayCreate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py GatewayCreate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py GatewayCreate.validate_url   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py GatewayCreate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py GatewayCreate.create_auth_value   100% 6 0 0   100% 2 0   100%
mcpgateway / schemas.py GatewayCreate.validate_transport   100% 4 0 0   100% 2 0   100%
mcpgateway / schemas.py GatewayCreate._process_auth_fields   100% 50 0 0   100% 36 0   100%
mcpgateway / schemas.py GatewayCreate.validate_query_param_auth   100% 16 0 0   100% 12 0   100%
mcpgateway / schemas.py GatewayUpdate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py GatewayUpdate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py GatewayUpdate.validate_url   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py GatewayUpdate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py GatewayUpdate.create_auth_value   100% 6 0 0   100% 2 0   100%
mcpgateway / schemas.py GatewayUpdate._process_auth_fields   100% 50 0 0   100% 36 0   100%
mcpgateway / schemas.py GatewayUpdate.validate_query_param_auth   100% 6 0 0   100% 6 0   100%
mcpgateway / schemas.py _mask_oauth_config   100% 10 0 0   100% 8 0   100%
mcpgateway / schemas.py GatewayRead._mask_query_param_auth   100% 20 0 0   75% 16 4   89%
mcpgateway / schemas.py GatewayRead._populate_auth   100% 38 0 0   96% 24 1   98%
mcpgateway / schemas.py GatewayRead.masked   100% 15 0 0   100% 6 0   100%
mcpgateway / schemas.py RPCRequest.validate_method   100% 6 0 0   100% 4 0   100%
mcpgateway / schemas.py RPCRequest.validate_params   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py EventMessage.serialize_timestamp   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py AdminToolCreate.validate_json   100% 6 0 0   100% 2 0   100%
mcpgateway / schemas.py ServerCreate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ServerCreate.validate_id   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ServerCreate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ServerCreate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py ServerCreate.validate_icon   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ServerCreate.split_comma_separated   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ServerCreate.validate_visibility   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ServerCreate.validate_team_id   67% 3 1 0   50% 2 1   60%
mcpgateway / schemas.py ServerUpdate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ServerUpdate.validate_id   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ServerUpdate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py ServerUpdate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py ServerUpdate.validate_icon   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ServerUpdate.split_comma_separated   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py ServerRead.populate_associated_ids   100% 15 0 0   100% 10 0   100%
mcpgateway / schemas.py A2AAgentCreate.validate_tags   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py A2AAgentCreate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py A2AAgentCreate.validate_endpoint_url   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py A2AAgentCreate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py A2AAgentCreate.validate_json_fields   100% 2 0 0   100% 0 0   100%
mcpgateway / schemas.py A2AAgentCreate.validate_visibility   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py A2AAgentCreate.validate_team_id   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py A2AAgentCreate.create_auth_value   100% 6 0 0   100% 2 0   100%
mcpgateway / schemas.py A2AAgentCreate._process_auth_fields   100% 50 0 0   100% 36 0   100%
mcpgateway / schemas.py A2AAgentCreate.validate_query_param_auth   100% 16 0 0   92% 12 1   96%
mcpgateway / schemas.py A2AAgentUpdate.validate_tags   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py A2AAgentUpdate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py A2AAgentUpdate.validate_endpoint_url   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py A2AAgentUpdate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py A2AAgentUpdate.validate_json_fields   100% 4 0 0   100% 2 0   100%
mcpgateway / schemas.py A2AAgentUpdate.validate_visibility   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py A2AAgentUpdate.validate_team_id   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py A2AAgentUpdate.create_auth_value   100% 6 0 0   100% 2 0   100%
mcpgateway / schemas.py A2AAgentUpdate._process_auth_fields   100% 50 0 0   100% 36 0   100%
mcpgateway / schemas.py A2AAgentUpdate.validate_query_param_auth   100% 6 0 0   100% 6 0   100%
mcpgateway / schemas.py A2AAgentRead._mask_query_param_auth   100% 20 0 0   69% 16 5   86%
mcpgateway / schemas.py A2AAgentRead._populate_auth   100% 33 0 0   96% 24 1   98%
mcpgateway / schemas.py A2AAgentRead.masked   100% 9 0 0   100% 4 0   100%
mcpgateway / schemas.py A2AAgentInvocation.validate_agent_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py A2AAgentInvocation.validate_parameters   100% 2 0 0   100% 0 0   100%
mcpgateway / schemas.py ChangePasswordRequest.validate_new_password   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py EmailUserResponse.from_email_user   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py TeamCreateRequest.validate_name   100% 9 0 0   100% 6 0   100%
mcpgateway / schemas.py TeamCreateRequest.validate_description   100% 7 0 0   83% 6 1   92%
mcpgateway / schemas.py TeamCreateRequest.validate_slug   100% 8 0 0   100% 6 0   100%
mcpgateway / schemas.py TeamUpdateRequest.validate_name   100% 11 0 0   100% 8 0   100%
mcpgateway / schemas.py TeamUpdateRequest.validate_description   100% 7 0 0   67% 6 2   85%
mcpgateway / schemas.py TokenScopeRequest.validate_ip_restrictions   100% 16 0 0   100% 8 0   100%
mcpgateway / schemas.py TokenScopeRequest.validate_permissions   100% 15 0 0   100% 10 0   100%
mcpgateway / schemas.py GrpcServiceCreate.validate_name   100% 1 0 0   100% 0 0   100%
mcpgateway / schemas.py GrpcServiceCreate.validate_target   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py GrpcServiceCreate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py GrpcServiceUpdate.validate_name   100% 3 0 0   100% 2 0   100%
mcpgateway / schemas.py GrpcServiceUpdate.validate_target   100% 5 0 0   75% 4 1   89%
mcpgateway / schemas.py GrpcServiceUpdate.validate_description   100% 7 0 0   100% 4 0   100%
mcpgateway / schemas.py (no function)   100% 1775 0 0   100% 0 0   100%
mcpgateway / scripts / validate_env.py get_security_warnings   100% 43 0 0   100% 30 0   100%
mcpgateway / scripts / validate_env.py main   100% 16 0 0   100% 6 0   100%
mcpgateway / scripts / validate_env.py (no function)   100% 9 0 3   100% 0 0   100%
mcpgateway / services / a2a_service.py _get_registry_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / a2a_service.py A2AAgentNameConflictError.__init__   100% 7 0 0   100% 2 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.initialize   100% 3 0 0   100% 2 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.shutdown   100% 3 0 0   100% 2 0   100%
mcpgateway / services / a2a_service.py A2AAgentService._get_team_name   100% 5 0 0   100% 2 0   100%
mcpgateway / services / a2a_service.py A2AAgentService._batch_get_team_names   100% 4 0 0   100% 2 0   100%
mcpgateway / services / a2a_service.py A2AAgentService._check_agent_access   100% 10 0 0   100% 8 0   100%
mcpgateway / services / a2a_service.py A2AAgentService._apply_visibility_filter   100% 14 0 0   100% 10 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.register_agent   100% 83 0 0   100% 22 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.list_agents   100% 50 0 0   96% 26 1   99%
mcpgateway / services / a2a_service.py A2AAgentService.list_agents_for_user   100% 37 0 0   100% 14 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.get_agent   100% 9 0 0   100% 6 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.get_agent_by_name   100% 5 0 0   100% 2 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.update_agent   100% 129 0 0   92% 72 6   97%
mcpgateway / services / a2a_service.py A2AAgentService.set_agent_state   100% 21 0 0   100% 8 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.delete_agent   100% 29 0 0   100% 8 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.invoke_agent   100% 93 0 0   97% 30 1   99%
mcpgateway / services / a2a_service.py A2AAgentService.aggregate_metrics   100% 17 0 0   67% 6 2   91%
mcpgateway / services / a2a_service.py A2AAgentService.reset_metrics   100% 9 0 0   100% 2 0   100%
mcpgateway / services / a2a_service.py A2AAgentService._prepare_a2a_agent_for_read   100% 3 0 0   100% 2 0   100%
mcpgateway / services / a2a_service.py A2AAgentService.convert_agent_to_read   100% 31 0 0   100% 14 0   100%
mcpgateway / services / a2a_service.py (no function)   100% 50 0 0   100% 0 0   100%
mcpgateway / services / argon2_service.py Argon2PasswordService.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / services / argon2_service.py Argon2PasswordService.hash_password   100% 9 0 0   100% 2 0   100%
mcpgateway / services / argon2_service.py Argon2PasswordService.verify_password   100% 15 0 0   100% 2 0   100%
mcpgateway / services / argon2_service.py Argon2PasswordService.hash_password_async   100% 1 0 0   100% 0 0   100%
mcpgateway / services / argon2_service.py Argon2PasswordService.verify_password_async   100% 1 0 0   100% 0 0   100%
mcpgateway / services / argon2_service.py Argon2PasswordService.needs_rehash   100% 10 0 0   100% 2 0   100%
mcpgateway / services / argon2_service.py Argon2PasswordService.get_hash_info   100% 23 0 0   86% 14 2   95%
mcpgateway / services / argon2_service.py Argon2PasswordService.__repr__   100% 0 0 6   100% 0 0   100%
mcpgateway / services / argon2_service.py hash_password   100% 1 0 0   100% 0 0   100%
mcpgateway / services / argon2_service.py verify_password   100% 1 0 0   100% 0 0   100%
mcpgateway / services / argon2_service.py hash_password_async   100% 1 0 0   100% 0 0   100%
mcpgateway / services / argon2_service.py verify_password_async   100% 1 0 0   100% 0 0   100%
mcpgateway / services / argon2_service.py needs_rehash   100% 1 0 0   100% 0 0   100%
mcpgateway / services / argon2_service.py (no function)   100% 22 0 1   100% 0 0   100%
mcpgateway / services / audit_trail_service.py AuditTrailService.__init__   100% 0 0 0   100% 0 0   100%
mcpgateway / services / audit_trail_service.py AuditTrailService.log_action   100% 28 0 0   80% 10 2   95%
mcpgateway / services / audit_trail_service.py AuditTrailService._determine_requires_review   100% 8 0 0   100% 6 0   100%
mcpgateway / services / audit_trail_service.py AuditTrailService.log_crud_operation   100% 19 0 0   93% 14 1   97%
mcpgateway / services / audit_trail_service.py AuditTrailService.log_data_access   100% 2 0 0   100% 0 0   100%
mcpgateway / services / audit_trail_service.py AuditTrailService.log_audit   100% 4 0 0   50% 2 1   83%
mcpgateway / services / audit_trail_service.py AuditTrailService.get_audit_trail   100% 25 0 0   86% 14 2   95%
mcpgateway / services / audit_trail_service.py get_audit_trail_service   100% 3 0 0   100% 2 0   100%
mcpgateway / services / audit_trail_service.py (no function)   100% 35 0 0   100% 0 0   100%
mcpgateway / services / cancellation_service.py CancellationService.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / services / cancellation_service.py CancellationService.initialize   100% 10 0 0   100% 4 0   100%
mcpgateway / services / cancellation_service.py CancellationService.shutdown   100% 7 0 0   100% 2 0   100%
mcpgateway / services / cancellation_service.py CancellationService._listen_for_cancellations   100% 42 0 0   100% 10 0   100%
mcpgateway / services / cancellation_service.py CancellationService._cancel_run_local   100% 18 0 0   83% 6 1   96%
mcpgateway / services / cancellation_service.py CancellationService.register_run   100% 3 0 0   100% 0 0   100%
mcpgateway / services / cancellation_service.py CancellationService.unregister_run   100% 4 0 0   100% 2 0   100%
mcpgateway / services / cancellation_service.py CancellationService.cancel_run   100% 26 0 0   100% 8 0   100%
mcpgateway / services / cancellation_service.py CancellationService._publish_cancellation   100% 8 0 0   100% 2 0   100%
mcpgateway / services / cancellation_service.py CancellationService.get_status   100% 2 0 0   100% 0 0   100%
mcpgateway / services / cancellation_service.py CancellationService.is_registered   100% 2 0 0   100% 0 0   100%
mcpgateway / services / cancellation_service.py (no function)   100% 23 0 0   100% 0 0   100%
mcpgateway / services / catalog_service.py CatalogService.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / catalog_service.py CatalogService.load_catalog   100% 20 0 0   88% 8 1   96%
mcpgateway / services / catalog_service.py CatalogService._get_registry_cache   100% 5 0 0   100% 0 0   100%
mcpgateway / services / catalog_service.py CatalogService.get_catalog_servers   100% 64 0 0   100% 28 0   100%
mcpgateway / services / catalog_service.py CatalogService.register_catalog_server   100% 107 0 0   100% 56 0   100%
mcpgateway / services / catalog_service.py CatalogService.check_server_availability   100% 27 0 0   100% 6 0   100%
mcpgateway / services / catalog_service.py CatalogService.bulk_register_servers   100% 15 0 0   100% 8 0   100%
mcpgateway / services / catalog_service.py (no function)   100% 24 0 0   100% 0 0   100%
mcpgateway / services / completion_service.py CompletionService.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / completion_service.py CompletionService.initialize   100% 1 0 0   100% 0 0   100%
mcpgateway / services / completion_service.py CompletionService.shutdown   100% 2 0 0   100% 0 0   100%
mcpgateway / services / completion_service.py CompletionService.handle_completion   100% 17 0 0   100% 6 0   100%
mcpgateway / services / completion_service.py CompletionService._complete_prompt_argument   100% 20 0 0   100% 14 0   100%
mcpgateway / services / completion_service.py CompletionService._complete_resource_uri   100% 9 0 0   100% 6 0   100%
mcpgateway / services / completion_service.py CompletionService.register_completions   100% 1 0 0   100% 0 0   100%
mcpgateway / services / completion_service.py CompletionService.unregister_completions   100% 1 0 0   100% 0 0   100%
mcpgateway / services / completion_service.py (no function)   100% 19 0 0   100% 0 0   100%
mcpgateway / services / dcr_service.py DcrService.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / dcr_service.py DcrService._get_client   100% 1 0 0   100% 0 0   100%
mcpgateway / services / dcr_service.py DcrService._get_timeout   100% 1 0 0   100% 0 0   100%
mcpgateway / services / dcr_service.py DcrService.discover_as_metadata   100% 37 0 0   100% 12 0   100%
mcpgateway / services / dcr_service.py DcrService.register_client   100% 44 0 0   100% 14 0   100%
mcpgateway / services / dcr_service.py DcrService.get_or_register_client   100% 9 0 0   100% 4 0   100%
mcpgateway / services / dcr_service.py DcrService.update_client_registration   100% 23 0 0   100% 8 0   100%
mcpgateway / services / dcr_service.py DcrService.delete_client_registration   100% 20 0 0   100% 6 0   100%
mcpgateway / services / dcr_service.py (no function)   100% 22 0 0   100% 0 0   100%
mcpgateway / services / elicitation_service.py ElicitationService.__init__   100% 6 0 0   100% 0 0   100%
mcpgateway / services / elicitation_service.py ElicitationService.start   100% 3 0 0   50% 2 1   80%
mcpgateway / services / elicitation_service.py ElicitationService.shutdown   100% 13 0 0   67% 6 2   89%
mcpgateway / services / elicitation_service.py ElicitationService.create_elicitation   100% 18 0 0   100% 2 0   100%
mcpgateway / services / elicitation_service.py ElicitationService.complete_elicitation   100% 10 0 0   100% 4 0   100%
mcpgateway / services / elicitation_service.py ElicitationService.get_pending_elicitation   100% 1 0 0   100% 0 0   100%
mcpgateway / services / elicitation_service.py ElicitationService.get_pending_count   100% 1 0 0   100% 0 0   100%
mcpgateway / services / elicitation_service.py ElicitationService.get_pending_for_session   100% 1 0 0   100% 0 0   100%
mcpgateway / services / elicitation_service.py ElicitationService._cleanup_loop   67% 9 3 0   100% 0 0   67%
mcpgateway / services / elicitation_service.py ElicitationService._cleanup_expired   100% 12 0 0   70% 10 3   86%
mcpgateway / services / elicitation_service.py ElicitationService._validate_schema   95% 22 1 0   94% 18 1   95%
mcpgateway / services / elicitation_service.py get_elicitation_service   100% 3 0 0   100% 2 0   100%
mcpgateway / services / elicitation_service.py set_elicitation_service   100% 1 0 0   100% 0 0   100%
mcpgateway / services / elicitation_service.py (no function)   100% 33 0 0   100% 0 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.__init__   100% 4 0 0   100% 0 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.role_service   100% 4 0 0   100% 2 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.validate_email   100% 8 0 0   100% 6 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.validate_password   100% 20 0 0   100% 14 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.get_user_by_email   100% 8 0 0   100% 0 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.create_user   100% 61 0 0   100% 12 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.authenticate_user   100% 42 0 0   100% 14 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.change_password   100% 36 0 0   100% 6 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.create_platform_admin   100% 18 0 0   100% 6 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.update_last_login   100% 4 0 0   100% 2 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService._escape_like   100% 1 0 0   100% 0 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.list_users   100% 45 0 0   100% 22 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.list_users_not_in_team   100% 41 0 0   100% 14 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.get_all_users   100% 8 0 0   100% 4 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.count_users   100% 7 0 0   100% 0 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.get_auth_events   100% 11 0 0   100% 2 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.update_user   98% 63 1 0   83% 42 7   92%
mcpgateway / services / email_auth_service.py EmailAuthService.activate_user   100% 15 0 0   100% 2 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.deactivate_user   100% 15 0 0   100% 2 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.delete_user   96% 48 2 0   100% 10 0   97%
mcpgateway / services / email_auth_service.py EmailAuthService.count_active_admin_users   100% 3 0 0   100% 0 0   100%
mcpgateway / services / email_auth_service.py EmailAuthService.is_last_active_admin   100% 7 0 0   100% 2 0   100%
mcpgateway / services / email_auth_service.py (no function)   100% 55 0 0   100% 0 0   100%
mcpgateway / services / encryption_service.py EncryptionService.__init__   100% 8 0 0   100% 2 0   100%
mcpgateway / services / encryption_service.py EncryptionService.derive_key_argon2id   100% 2 0 0   100% 0 0   100%
mcpgateway / services / encryption_service.py EncryptionService.encrypt_secret   100% 9 0 0   100% 0 0   100%
mcpgateway / services / encryption_service.py EncryptionService.encrypt_secret_async   100% 1 0 0   100% 0 0   100%
mcpgateway / services / encryption_service.py EncryptionService.decrypt_secret   100% 10 0 0   100% 0 0   100%
mcpgateway / services / encryption_service.py EncryptionService.decrypt_secret_async   100% 1 0 0   100% 0 0   100%
mcpgateway / services / encryption_service.py EncryptionService.is_encrypted   100% 14 0 0   100% 6 0   100%
mcpgateway / services / encryption_service.py get_encryption_service   100% 1 0 0   100% 0 0   100%
mcpgateway / services / encryption_service.py (no function)   100% 20 0 0   100% 0 0   100%
mcpgateway / services / event_service.py EventService.__init__   100% 4 0 0   100% 0 0   100%
mcpgateway / services / event_service.py EventService.initialize   100% 8 0 0   100% 4 0   100%
mcpgateway / services / event_service.py EventService.publish_event   100% 9 0 0   100% 6 0   100%
mcpgateway / services / event_service.py EventService.subscribe_events   100% 48 0 0   100% 10 0   100%
mcpgateway / services / event_service.py EventService.event_generator   100% 6 0 0   100% 2 0   100%
mcpgateway / services / event_service.py EventService.shutdown   100% 2 0 0   100% 0 0   100%
mcpgateway / services / event_service.py (no function)   100% 22 0 0   100% 0 0   100%
mcpgateway / services / export_service.py ExportService.__init__   100% 12 0 0   100% 0 0   100%
mcpgateway / services / export_service.py ExportService.initialize   100% 1 0 0   100% 0 0   100%
mcpgateway / services / export_service.py ExportService.shutdown   100% 1 0 0   100% 0 0   100%
mcpgateway / services / export_service.py ExportService._fetch_all_tools   100% 9 0 0   100% 2 0   100%
mcpgateway / services / export_service.py ExportService._fetch_all_prompts   100% 9 0 0   100% 2 0   100%
mcpgateway / services / export_service.py ExportService._fetch_all_resources   100% 9 0 0   100% 2 0   100%
mcpgateway / services / export_service.py ExportService._fetch_all_gateways   100% 9 0 0   100% 2 0   100%
mcpgateway / services / export_service.py ExportService._fetch_all_servers   100% 9 0 0   100% 2 0   100%
mcpgateway / services / export_service.py ExportService.export_configuration   100% 50 0 0   85% 20 3   96%
mcpgateway / services / export_service.py ExportService._export_tools   100% 23 0 0   79% 14 3   92%
mcpgateway / services / export_service.py ExportService._export_gateways   100% 20 0 0   83% 12 2   94%
mcpgateway / services / export_service.py ExportService._export_servers   100% 6 0 0   100% 2 0   100%
mcpgateway / services / export_service.py ExportService._export_prompts   100% 16 0 0   88% 8 1   96%
mcpgateway / services / export_service.py ExportService._export_resources   100% 6 0 0   100% 2 0   100%
mcpgateway / services / export_service.py ExportService._export_roots   100% 6 0 0   100% 2 0   100%
mcpgateway / services / export_service.py ExportService._extract_dependencies   100% 6 0 0   83% 6 1   92%
mcpgateway / services / export_service.py ExportService._validate_export_data   100% 12 0 0   100% 10 0   100%
mcpgateway / services / export_service.py ExportService.export_selective   100% 40 0 0   89% 18 2   97%
mcpgateway / services / export_service.py ExportService._export_selected_tools   100% 13 0 0   88% 8 1   95%
mcpgateway / services / export_service.py ExportService._export_selected_gateways   100% 14 0 0   70% 10 3   88%
mcpgateway / services / export_service.py ExportService._export_selected_servers   100% 9 0 0   100% 4 0   100%
mcpgateway / services / export_service.py ExportService._export_selected_prompts   100% 11 0 0   83% 6 1   94%
mcpgateway / services / export_service.py ExportService._export_selected_resources   100% 8 0 0   100% 4 0   100%
mcpgateway / services / export_service.py ExportService._export_selected_roots   100% 2 0 0   100% 0 0   100%
mcpgateway / services / export_service.py (no function)   100% 39 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py _get_registry_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / gateway_service.py _get_tool_lookup_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / gateway_service.py GatewayNameConflictError.__init__   100% 10 0 0   100% 4 0   100%
mcpgateway / services / gateway_service.py GatewayDuplicateConflictError.__init__   100% 17 0 0   100% 6 0   100%
mcpgateway / services / gateway_service.py GatewayService.__init__   100% 32 0 0   100% 6 0   100%
mcpgateway / services / gateway_service.py GatewayService.normalize_url   100% 9 0 0   100% 4 0   100%
mcpgateway / services / gateway_service.py GatewayService.create_ssl_context   100% 1 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService.initialize   100% 16 0 0   83% 6 1   95%
mcpgateway / services / gateway_service.py GatewayService.shutdown   100% 24 0 0   88% 8 1   97%
mcpgateway / services / gateway_service.py GatewayService._check_gateway_uniqueness   100% 32 0 0   88% 24 3   95%
mcpgateway / services / gateway_service.py GatewayService.register_gateway   98% 189 4 0   89% 56 6   96%
mcpgateway / services / gateway_service.py GatewayService.fetch_tools_after_oauth   100% 113 0 0   100% 50 0   100%
mcpgateway / services / gateway_service.py GatewayService.list_gateways   100% 59 0 0   100% 34 0   100%
mcpgateway / services / gateway_service.py GatewayService.list_gateways_for_user   97% 30 1 0   92% 12 1   95%
mcpgateway / services / gateway_service.py GatewayService.update_gateway   84% 284 45 0   77% 162 22   81%
mcpgateway / services / gateway_service.py GatewayService.get_gateway   100% 7 0 0   100% 4 0   100%
mcpgateway / services / gateway_service.py GatewayService.set_gateway_state   85% 152 23 0   75% 76 11   82%
mcpgateway / services / gateway_service.py GatewayService._notify_gateway_updated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService.delete_gateway   98% 60 1 0   95% 20 1   98%
mcpgateway / services / gateway_service.py GatewayService.forward_request   100% 3 0 0   100% 2 0   100%
mcpgateway / services / gateway_service.py GatewayService._forward_request_to_gateway   90% 67 7 0   83% 30 5   88%
mcpgateway / services / gateway_service.py GatewayService._forward_request_to_all   85% 84 13 0   84% 38 6   84%
mcpgateway / services / gateway_service.py GatewayService._handle_gateway_failure   71% 14 4 0   88% 8 1   77%
mcpgateway / services / gateway_service.py GatewayService.check_health_of_gateways   100% 19 0 0   100% 6 0   100%
mcpgateway / services / gateway_service.py GatewayService.check_health_of_gateways.limited_check   100% 6 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService._check_single_gateway_health   95% 148 8 0   79% 68 14   90%
mcpgateway / services / gateway_service.py GatewayService._check_single_gateway_health.get_httpx_client_factory   0% 1 1 0   100% 0 0   0%
mcpgateway / services / gateway_service.py GatewayService.aggregate_capabilities   100% 10 0 0   90% 10 1   95%
mcpgateway / services / gateway_service.py GatewayService.subscribe_events   100% 2 0 0   100% 2 0   100%
mcpgateway / services / gateway_service.py GatewayService._initialize_gateway   100% 41 0 0   95% 22 1   98%
mcpgateway / services / gateway_service.py GatewayService._get_gateways   100% 4 0 0   100% 2 0   100%
mcpgateway / services / gateway_service.py GatewayService.get_first_gateway_by_url   89% 9 1 0   67% 6 2   80%
mcpgateway / services / gateway_service.py GatewayService._run_leader_heartbeat   92% 13 1 0   100% 4 0   94%
mcpgateway / services / gateway_service.py GatewayService._run_health_checks   65% 40 14 0   43% 14 4   59%
mcpgateway / services / gateway_service.py GatewayService._get_auth_headers   100% 1 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService._notify_gateway_added   100% 2 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService._notify_gateway_activated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService._notify_gateway_deactivated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService._notify_gateway_offline   100% 2 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService._notify_gateway_deleted   100% 2 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService._notify_gateway_removed   100% 2 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService.convert_gateway_to_read   100% 16 0 0   100% 6 0   100%
mcpgateway / services / gateway_service.py GatewayService._prepare_gateway_for_read   100% 6 0 0   100% 6 0   100%
mcpgateway / services / gateway_service.py GatewayService._create_db_tool   100% 1 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService._update_or_create_tools   98% 43 1 0   79% 14 3   93%
mcpgateway / services / gateway_service.py GatewayService._update_or_create_resources   97% 33 1 0   79% 14 3   91%
mcpgateway / services / gateway_service.py GatewayService._update_or_create_prompts   97% 32 1 0   79% 14 3   91%
mcpgateway / services / gateway_service.py GatewayService._refresh_gateway_tools_resources_prompts   88% 147 18 0   79% 58 8   85%
mcpgateway / services / gateway_service.py GatewayService._get_refresh_lock   100% 3 0 0   100% 2 0   100%
mcpgateway / services / gateway_service.py GatewayService.refresh_gateway_manually   100% 21 0 0   100% 6 0   100%
mcpgateway / services / gateway_service.py GatewayService._publish_event   100% 1 0 0   100% 0 0   100%
mcpgateway / services / gateway_service.py GatewayService._validate_tools   100% 31 0 4   100% 12 0   100%
mcpgateway / services / gateway_service.py GatewayService._connect_to_sse_server_without_validation   97% 72 2 0   75% 24 6   92%
mcpgateway / services / gateway_service.py GatewayService.connect_to_sse_server   97% 71 2 0   82% 28 5   93%
mcpgateway / services / gateway_service.py GatewayService.connect_to_sse_server.get_httpx_client_factory   100% 4 0 0   100% 2 0   100%
mcpgateway / services / gateway_service.py GatewayService.connect_to_streamablehttp_server   90% 70 7 0   73% 30 8   85%
mcpgateway / services / gateway_service.py GatewayService.connect_to_streamablehttp_server.get_httpx_client_factory   75% 4 1 0   50% 2 1   67%
mcpgateway / services / gateway_service.py __getattr__   100% 5 0 0   100% 4 0   100%
mcpgateway / services / gateway_service.py (no function)   98% 131 3 0   100% 0 0   98%
mcpgateway / services / grpc_service.py GrpcServiceNameConflictError.__init__   100% 9 0 0   100% 4 0   100%
mcpgateway / services / grpc_service.py GrpcService.__init__   100% 0 0 0   100% 0 0   100%
mcpgateway / services / grpc_service.py GrpcService.register_service   100% 19 0 0   100% 6 0   100%
mcpgateway / services / grpc_service.py GrpcService.list_services   100% 13 0 0   100% 8 0   100%
mcpgateway / services / grpc_service.py GrpcService.get_service   100% 10 0 0   83% 6 1   94%
mcpgateway / services / grpc_service.py GrpcService.update_service   100% 21 0 0   90% 10 1   97%
mcpgateway / services / grpc_service.py GrpcService.set_service_state   90% 10 1 0   50% 2 1   83%
mcpgateway / services / grpc_service.py GrpcService.delete_service   100% 6 0 0   100% 2 0   100%
mcpgateway / services / grpc_service.py GrpcService.reflect_service   100% 12 0 0   100% 2 0   100%
mcpgateway / services / grpc_service.py GrpcService.get_service_methods   100% 9 0 0   100% 6 0   100%
mcpgateway / services / grpc_service.py GrpcService._perform_reflection   97% 61 2 0   88% 26 3   94%
mcpgateway / services / grpc_service.py GrpcService.invoke_method   100% 22 0 0   88% 8 1   97%
mcpgateway / services / grpc_service.py (no function)   86% 37 5 0   100% 0 0   86%
mcpgateway / services / http_client_service.py SharedHttpClient.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / http_client_service.py SharedHttpClient.get_instance   100% 7 0 0   100% 6 0   100%
mcpgateway / services / http_client_service.py SharedHttpClient._initialize   100% 6 0 0   100% 0 0   100%
mcpgateway / services / http_client_service.py SharedHttpClient.client   100% 3 0 0   100% 2 0   100%
mcpgateway / services / http_client_service.py SharedHttpClient.get_pool_stats   100% 5 0 0   100% 4 0   100%
mcpgateway / services / http_client_service.py SharedHttpClient.close   100% 6 0 0   100% 2 0   100%
mcpgateway / services / http_client_service.py SharedHttpClient.shutdown   100% 3 0 0   100% 2 0   100%
mcpgateway / services / http_client_service.py get_http_client   100% 2 0 0   100% 0 0   100%
mcpgateway / services / http_client_service.py get_http_limits   100% 2 0 0   100% 0 0   100%
mcpgateway / services / http_client_service.py get_http_timeout   100% 2 0 0   100% 0 0   100%
mcpgateway / services / http_client_service.py get_admin_timeout   100% 2 0 0   100% 0 0   100%
mcpgateway / services / http_client_service.py get_default_verify   100% 2 0 0   100% 0 0   100%
mcpgateway / services / http_client_service.py get_isolated_http_client   100% 6 0 0   100% 0 0   100%
mcpgateway / services / http_client_service.py (no function)   100% 28 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportStatus.__init__   100% 12 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportStatus.to_dict   100% 1 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportService.__init__   100% 13 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportService.initialize   100% 1 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportService.shutdown   100% 1 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportService.validate_import_data   100% 21 0 0   100% 18 0   100%
mcpgateway / services / import_service.py ImportService._validate_entity_fields   100% 5 0 0   83% 6 1   91%
mcpgateway / services / import_service.py ImportService.import_configuration   100% 27 0 0   100% 8 0   100%
mcpgateway / services / import_service.py ImportService._get_entity_identifier   100% 7 0 0   100% 6 0   100%
mcpgateway / services / import_service.py ImportService._calculate_total_entities   100% 13 0 0   100% 12 0   100%
mcpgateway / services / import_service.py ImportService._process_entities   100% 29 0 0   100% 20 0   100%
mcpgateway / services / import_service.py ImportService._has_auth_data   100% 1 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportService._rekey_auth_data   100% 15 0 0   100% 2 0   100%
mcpgateway / services / import_service.py ImportService._process_single_entity   100% 15 0 0   92% 12 1   96%
mcpgateway / services / import_service.py ImportService._process_tool   100% 39 0 0   92% 12 1   98%
mcpgateway / services / import_service.py ImportService._process_gateway   100% 39 0 0   92% 12 1   98%
mcpgateway / services / import_service.py ImportService._process_server   100% 39 0 0   92% 12 1   98%
mcpgateway / services / import_service.py ImportService._process_prompt   100% 29 0 0   90% 10 1   97%
mcpgateway / services / import_service.py ImportService._process_resource   100% 29 0 0   90% 10 1   97%
mcpgateway / services / import_service.py ImportService._process_tools_bulk   100% 29 0 0   100% 10 0   100%
mcpgateway / services / import_service.py ImportService._process_resources_bulk   100% 29 0 0   100% 10 0   100%
mcpgateway / services / import_service.py ImportService._process_prompts_bulk   100% 29 0 0   100% 10 0   100%
mcpgateway / services / import_service.py ImportService._process_root   100% 15 0 0   100% 6 0   100%
mcpgateway / services / import_service.py ImportService._convert_to_tool_create   100% 4 0 0   100% 2 0   100%
mcpgateway / services / import_service.py ImportService._convert_to_tool_update   100% 4 0 0   100% 2 0   100%
mcpgateway / services / import_service.py ImportService._convert_to_gateway_create   100% 38 0 0   75% 20 5   91%
mcpgateway / services / import_service.py ImportService._convert_to_gateway_update   100% 38 0 0   75% 20 5   91%
mcpgateway / services / import_service.py ImportService._convert_to_server_create   100% 16 0 0   100% 10 0   100%
mcpgateway / services / import_service.py ImportService._convert_to_server_update   100% 14 0 0   90% 10 1   96%
mcpgateway / services / import_service.py ImportService._convert_to_prompt_create   100% 9 0 0   75% 4 1   92%
mcpgateway / services / import_service.py ImportService._convert_to_prompt_update   100% 9 0 0   75% 4 1   92%
mcpgateway / services / import_service.py ImportService._convert_to_resource_create   100% 1 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportService._convert_to_resource_update   100% 1 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportService.get_import_status   100% 1 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportService.list_import_statuses   100% 1 0 0   100% 0 0   100%
mcpgateway / services / import_service.py ImportService.cleanup_completed_imports   100% 10 0 0   83% 6 1   94%
mcpgateway / services / import_service.py ImportService.preview_import   100% 14 0 0   75% 8 2   91%
mcpgateway / services / import_service.py ImportService._analyze_import_item   100% 24 0 0   100% 12 0   100%
mcpgateway / services / import_service.py ImportService._find_gateway_bundles   100% 16 0 0   79% 14 3   90%
mcpgateway / services / import_service.py ImportService._find_server_dependencies   100% 9 0 0   83% 6 1   93%
mcpgateway / services / import_service.py ImportService._detect_import_conflicts   100% 25 0 0   62% 16 6   85%
mcpgateway / services / import_service.py ImportService._get_user_context   100% 13 0 0   100% 4 0   100%
mcpgateway / services / import_service.py ImportService._add_multitenancy_context   100% 11 0 0   50% 8 4   79%
mcpgateway / services / import_service.py ImportService._assign_imported_items_to_team   100% 33 0 0   93% 14 1   98%
mcpgateway / services / import_service.py (no function)   100% 71 0 0   100% 0 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderNameConflictError.__init__   100% 6 0 0   100% 2 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.initialize   100% 3 0 0   50% 2 1   80%
mcpgateway / services / llm_provider_service.py LLMProviderService.shutdown   100% 3 0 0   50% 2 1   80%
mcpgateway / services / llm_provider_service.py LLMProviderService.create_provider   100% 17 0 0   100% 4 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.get_provider   100% 4 0 0   100% 2 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.get_provider_by_slug   100% 4 0 0   100% 2 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.list_providers   100% 11 0 0   100% 4 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.update_provider   100% 39 0 0   96% 26 1   98%
mcpgateway / services / llm_provider_service.py LLMProviderService.delete_provider   100% 6 0 0   100% 0 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.set_provider_state   100% 8 0 0   100% 2 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.create_model   100% 15 0 0   100% 2 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.get_model   100% 4 0 0   100% 2 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.list_models   100% 15 0 0   100% 8 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.update_model   100% 29 0 0   50% 24 12   77%
mcpgateway / services / llm_provider_service.py LLMProviderService.delete_model   100% 6 0 0   100% 0 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.set_model_state   100% 8 0 0   100% 2 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.get_gateway_models   100% 6 0 0   100% 2 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.check_provider_health   100% 49 0 0   100% 14 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.to_provider_response   100% 1 0 0   100% 0 0   100%
mcpgateway / services / llm_provider_service.py LLMProviderService.to_model_response   100% 1 0 0   100% 0 0   100%
mcpgateway / services / llm_provider_service.py (no function)   100% 40 0 0   100% 0 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService.initialize   100% 4 0 0   100% 2 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService.shutdown   100% 5 0 0   100% 2 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._resolve_model   100% 15 0 0   100% 12 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._get_api_key   100% 8 0 0   100% 2 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._build_openai_request   100% 30 0 0   100% 24 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._build_azure_request   100% 21 0 0   100% 12 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._build_anthropic_request   100% 21 0 0   100% 12 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._build_ollama_request   100% 25 0 0   100% 16 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService.chat_completion   100% 29 0 0   100% 14 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService.chat_completion_stream   100% 54 0 0   100% 30 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._transform_openai_response   100% 7 0 0   100% 2 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._transform_anthropic_response   100% 6 0 0   100% 4 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._transform_ollama_response   100% 2 0 0   100% 0 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._transform_anthropic_stream_chunk   100% 10 0 0   100% 6 0   100%
mcpgateway / services / llm_proxy_service.py LLMProxyService._transform_ollama_stream_chunk   100% 6 0 0   100% 2 0   100%
mcpgateway / services / llm_proxy_service.py (no function)   100% 35 0 0   100% 0 0   100%
mcpgateway / services / log_aggregator.py _is_postgresql   100% 1 0 0   100% 0 0   100%
mcpgateway / services / log_aggregator.py LogAggregator.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / log_aggregator.py LogAggregator.aggregate_performance_metrics   100% 36 0 0   79% 14 3   94%
mcpgateway / services / log_aggregator.py LogAggregator.aggregate_all_components_batch   100% 88 0 0   92% 40 3   98%
mcpgateway / services / log_aggregator.py LogAggregator.aggregate_all_components_batch._align_to_window_local   100% 4 0 0   100% 0 0   100%
mcpgateway / services / log_aggregator.py LogAggregator.aggregate_all_components   96% 25 1 0   64% 14 5   85%
mcpgateway / services / log_aggregator.py LogAggregator.get_recent_metrics   100% 22 0 0   70% 10 3   91%
mcpgateway / services / log_aggregator.py LogAggregator.get_degradation_alerts   87% 30 4 0   75% 12 1   83%
mcpgateway / services / log_aggregator.py LogAggregator.backfill   86% 28 4 0   58% 12 3   78%
mcpgateway / services / log_aggregator.py LogAggregator._percentile   100% 12 0 0   100% 6 0   100%
mcpgateway / services / log_aggregator.py LogAggregator._calculate_error_count   100% 2 0 0   100% 0 0   100%
mcpgateway / services / log_aggregator.py LogAggregator._compute_stats_postgresql   100% 12 0 0   100% 4 0   100%
mcpgateway / services / log_aggregator.py LogAggregator._compute_stats_python   100% 16 0 0   100% 4 0   100%
mcpgateway / services / log_aggregator.py LogAggregator._resolve_window_bounds   100% 21 0 0   100% 12 0   100%
mcpgateway / services / log_aggregator.py LogAggregator._upsert_metric   100% 23 0 0   100% 6 0   100%
mcpgateway / services / log_aggregator.py get_log_aggregator   100% 3 0 0   100% 2 0   100%
mcpgateway / services / log_aggregator.py (no function)   100% 29 0 0   100% 0 0   100%
mcpgateway / services / log_storage_service.py LogEntry.__init__   100% 20 0 0   100% 0 0   100%
mcpgateway / services / log_storage_service.py LogEntry.to_dict   100% 1 0 0   100% 0 0   100%
mcpgateway / services / log_storage_service.py LogStorageService.__init__   100% 6 0 0   100% 0 0   100%
mcpgateway / services / log_storage_service.py LogStorageService.add_log   100% 18 0 0   100% 10 0   100%
mcpgateway / services / log_storage_service.py LogStorageService._remove_from_indices   100% 16 0 0   100% 10 0   100%
mcpgateway / services / log_storage_service.py LogStorageService._notify_subscribers   100% 11 0 0   100% 4 0   100%
mcpgateway / services / log_storage_service.py LogStorageService.get_logs   100% 24 0 0   100% 16 0   100%
mcpgateway / services / log_storage_service.py LogStorageService._meets_level_threshold   100% 2 0 0   100% 0 0   100%
mcpgateway / services / log_storage_service.py LogStorageService.subscribe   100% 7 0 0   100% 0 0   100%
mcpgateway / services / log_storage_service.py LogStorageService.get_stats   100% 7 0 0   100% 4 0   100%
mcpgateway / services / log_storage_service.py LogStorageService.clear   100% 6 0 0   100% 0 0   100%
mcpgateway / services / log_storage_service.py (no function)   100% 36 0 0   100% 0 0   100%
mcpgateway / services / logging_service.py CorrelationIdJsonFormatter.add_fields   89% 19 2 0   88% 8 1   89%
mcpgateway / services / logging_service.py _get_file_handler   100% 13 0 0   88% 8 1   95%
mcpgateway / services / logging_service.py _get_text_handler   100% 4 0 0   100% 2 0   100%
mcpgateway / services / logging_service.py StorageHandler.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / logging_service.py StorageHandler.emit   93% 27 2 0   100% 4 0   94%
mcpgateway / services / logging_service.py LoggingService.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / services / logging_service.py LoggingService.initialize   100% 33 0 0   100% 8 0   100%
mcpgateway / services / logging_service.py LoggingService.shutdown   100% 6 0 0   100% 2 0   100%
mcpgateway / services / logging_service.py LoggingService._install_closedresourceerror_filter   100% 4 0 0   100% 0 0   100%
mcpgateway / services / logging_service.py LoggingService._install_closedresourceerror_filter._SuppressClosedResourceErrorFilter.filter   76% 17 4 0   100% 8 0   84%
mcpgateway / services / logging_service.py LoggingService.get_logger   100% 7 0 0   100% 2 0   100%
mcpgateway / services / logging_service.py LoggingService.set_level   100% 5 0 0   100% 2 0   100%
mcpgateway / services / logging_service.py LoggingService.notify   100% 16 0 0   100% 8 0   100%
mcpgateway / services / logging_service.py LoggingService.subscribe   100% 7 0 0   100% 0 0   100%
mcpgateway / services / logging_service.py LoggingService._should_log   100% 1 0 0   100% 0 0   100%
mcpgateway / services / logging_service.py LoggingService._configure_uvicorn_loggers   100% 9 0 0   75% 4 1   92%
mcpgateway / services / logging_service.py LoggingService.configure_uvicorn_after_startup   100% 2 0 0   100% 0 0   100%
mcpgateway / services / logging_service.py LoggingService.get_storage   100% 1 0 0   100% 0 0   100%
mcpgateway / services / logging_service.py (no function)   100% 59 0 2   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPServerConfig.add_auth_to_headers   100% 8 0 0   100% 4 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPServerConfig.validate_url_for_transport   100% 4 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPServerConfig.validate_command_for_stdio   100% 4 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py LLMConfig.validate_config_type   100% 17 0 0   94% 16 1   97%
mcpgateway / services / mcp_client_chat_service.py AzureOpenAIProvider.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py AzureOpenAIProvider.get_llm   100% 11 0 0   83% 6 1   94%
mcpgateway / services / mcp_client_chat_service.py AzureOpenAIProvider.get_model_name   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py OllamaProvider.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py OllamaProvider.get_llm   100% 14 0 0   75% 8 2   91%
mcpgateway / services / mcp_client_chat_service.py OllamaProvider.get_model_name   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py OpenAIProvider.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py OpenAIProvider.get_llm   100% 16 0 0   80% 10 2   92%
mcpgateway / services / mcp_client_chat_service.py OpenAIProvider.get_model_name   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py AnthropicProvider.__init__   100% 5 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py AnthropicProvider.get_llm   100% 11 0 0   67% 6 2   88%
mcpgateway / services / mcp_client_chat_service.py AnthropicProvider.get_model_name   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py AWSBedrockProvider.__init__   100% 5 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py AWSBedrockProvider.get_llm   100% 18 0 0   83% 12 2   93%
mcpgateway / services / mcp_client_chat_service.py AWSBedrockProvider.get_model_name   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py WatsonxProvider.__init__   100% 5 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py WatsonxProvider.get_llm   100% 16 0 0   60% 10 4   85%
mcpgateway / services / mcp_client_chat_service.py WatsonxProvider.get_model_name   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py GatewayProvider.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py GatewayProvider.get_llm   99% 107 1 0   97% 72 2   98%
mcpgateway / services / mcp_client_chat_service.py GatewayProvider.get_model_name   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py LLMProviderFactory.create   100% 6 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py ChatHistoryManager.__init__   100% 7 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py ChatHistoryManager._history_key   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py ChatHistoryManager.get_history   100% 13 0 0   100% 4 0   100%
mcpgateway / services / mcp_client_chat_service.py ChatHistoryManager.save_history   100% 7 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py ChatHistoryManager.append_message   100% 3 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py ChatHistoryManager.clear_history   100% 6 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py ChatHistoryManager._trim_messages   100% 3 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py ChatHistoryManager.get_langchain_messages   100% 12 0 0   88% 8 1   95%
mcpgateway / services / mcp_client_chat_service.py MCPClient.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPClient.connect   100% 23 0 0   83% 12 2   94%
mcpgateway / services / mcp_client_chat_service.py MCPClient.disconnect   100% 12 0 0   75% 4 1   94%
mcpgateway / services / mcp_client_chat_service.py MCPClient.get_tools   100% 13 0 0   100% 4 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPClient.is_connected   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.__init__   100% 9 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.initialize   100% 15 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.chat   100% 20 0 0   100% 6 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.chat_with_metadata   100% 12 0 0   88% 8 1   95%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.chat_stream   100% 28 0 0   71% 14 4   90%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.chat_events   100% 132 0 0   88% 56 7   96%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.chat_events._extract_output   100% 7 0 0   100% 6 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.chat_events._cleanup_expired_pending   100% 8 0 0   100% 4 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.chat_events._noop_cancel_cb   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.get_conversation_history   100% 3 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.clear_history   100% 4 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.shutdown   100% 11 0 0   50% 2 1   92%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.is_initialized   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_client_chat_service.py MCPChatService.reload_tools   100% 13 0 0   100% 2 0   100%
mcpgateway / services / mcp_client_chat_service.py (no function)   100% 210 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py _get_cleanup_timeout   100% 4 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py PooledSession.age_seconds   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py PooledSession.idle_seconds   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py PooledSession.is_closed   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py PooledSession.mark_closed   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.__init__   100% 43 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.__aenter__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.__aexit__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._compute_identity_hash   100% 27 0 0   100% 16 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._make_pool_key   100% 6 0 0   100% 2 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._get_or_create_lock   100% 4 0 0   100% 2 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._get_or_create_pool   100% 6 0 0   100% 2 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._is_circuit_open   100% 8 0 0   100% 4 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._record_failure   100% 5 0 0   100% 2 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._record_success   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.is_valid_mcp_session_id   100% 3 0 0   100% 2 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._sanitize_redis_key_component   100% 3 0 0   100% 2 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._session_mapping_redis_key   100% 3 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._pool_owner_key   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.register_session_mapping   100% 33 0 0   100% 10 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.acquire   100% 92 0 0   100% 32 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.release   100% 29 0 0   100% 14 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._maybe_evict_idle_pool_keys   100% 42 0 0   100% 24 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._validate_session   100% 8 0 0   100% 6 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._run_health_check_chain   100% 40 0 0   100% 14 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._create_session   100% 52 0 0   100% 14 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._close_session   100% 24 0 0   100% 10 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._cleanup_pool_session_owner   100% 13 0 0   100% 6 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.close_all   100% 25 0 0   100% 10 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.register_pool_session_owner   100% 16 0 0   100% 6 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._get_pool_session_owner   100% 16 0 0   100% 8 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.forward_request_to_owner   100% 43 0 0   100% 12 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.start_rpc_listener   100% 36 0 0   100% 14 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._execute_forwarded_request   100% 25 0 0   100% 2 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool._execute_forwarded_http_request   100% 33 0 0   100% 6 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.get_streamable_http_session_owner   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.forward_streamable_http_to_owner   100% 41 0 0   100% 8 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.get_metrics   100% 3 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py MCPSessionPool.session   100% 4 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py get_mcp_session_pool   100% 3 0 0   100% 2 0   100%
mcpgateway / services / mcp_session_pool.py init_mcp_session_pool   100% 10 0 0   100% 2 0   100%
mcpgateway / services / mcp_session_pool.py init_mcp_session_pool.default_handler_factory   100% 1 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py close_mcp_session_pool   100% 9 0 0   100% 2 0   100%
mcpgateway / services / mcp_session_pool.py start_pool_notification_service   100% 7 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py register_gateway_capabilities_for_notifications   100% 6 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py unregister_gateway_from_notifications   100% 6 0 0   100% 0 0   100%
mcpgateway / services / mcp_session_pool.py (no function)   100% 104 0 1   100% 0 0   100%
mcpgateway / services / metrics.py setup_metrics   100% 33 0 0   92% 12 1   98%
mcpgateway / services / metrics.py setup_metrics.update_http_pool_metrics   100% 8 0 0   100% 2 0   100%
mcpgateway / services / metrics.py (no function)   100% 9 0 0   100% 0 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService.__init__   100% 16 0 0   100% 0 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService.start   100% 10 0 0   83% 6 1   94%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService.shutdown   100% 10 0 0   100% 2 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService.record_tool_metric   100% 9 0 0   100% 4 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService.record_resource_metric   100% 9 0 0   100% 4 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService.record_prompt_metric   100% 9 0 0   100% 4 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService.record_server_metric   100% 9 0 0   100% 4 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService.record_a2a_agent_metric   100% 9 0 0   100% 4 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService.record_a2a_agent_metric_with_duration   100% 9 0 0   100% 4 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService._flush_loop   100% 15 0 0   100% 2 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService._flush_all   100% 19 0 0   100% 2 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService._flush_to_db   100% 15 0 0   90% 10 1   96%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService._write_tool_metric_immediately   100% 7 0 0   100% 0 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService._write_resource_metric_immediately   100% 7 0 0   100% 0 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService._write_prompt_metric_immediately   100% 7 0 0   100% 0 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService._write_server_metric_immediately   100% 7 0 0   100% 0 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService._write_a2a_agent_metric_immediately   100% 7 0 0   100% 0 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService._write_a2a_agent_metric_with_duration_immediately   100% 7 0 0   100% 0 0   100%
mcpgateway / services / metrics_buffer_service.py MetricsBufferService.get_stats   100% 3 0 0   100% 0 0   100%
mcpgateway / services / metrics_buffer_service.py get_metrics_buffer_service   100% 3 0 0   100% 2 0   100%
mcpgateway / services / metrics_buffer_service.py (no function)   100% 69 0 0   100% 0 0   100%
mcpgateway / services / metrics_cleanup_service.py delete_metrics_in_batches   100% 12 0 0   100% 2 0   100%
mcpgateway / services / metrics_cleanup_service.py pause_rollup_during_purge   100% 7 0 0   100% 4 0   100%
mcpgateway / services / metrics_cleanup_service.py MetricsCleanupService.__init__   100% 12 0 0   100% 0 0   100%
mcpgateway / services / metrics_cleanup_service.py MetricsCleanupService.start   100% 7 0 0   75% 4 1   91%
mcpgateway / services / metrics_cleanup_service.py MetricsCleanupService.shutdown   100% 9 0 0   50% 2 1   91%
mcpgateway / services / metrics_cleanup_service.py MetricsCleanupService._cleanup_loop   100% 20 0 0   75% 4 1   96%
mcpgateway / services / metrics_cleanup_service.py MetricsCleanupService.cleanup_all   100% 24 0 0   90% 10 1   97%
mcpgateway / services / metrics_cleanup_service.py MetricsCleanupService._cleanup_table   100% 28 0 0   83% 6 1   97%
mcpgateway / services / metrics_cleanup_service.py MetricsCleanupService.cleanup_table   100% 9 0 0   100% 4 0   100%
mcpgateway / services / metrics_cleanup_service.py MetricsCleanupService.get_stats   100% 1 0 0   100% 0 0   100%
mcpgateway / services / metrics_cleanup_service.py MetricsCleanupService.get_table_sizes   100% 3 0 0   100% 0 0   100%
mcpgateway / services / metrics_cleanup_service.py MetricsCleanupService.get_table_sizes._get_sizes   100% 6 0 0   100% 2 0   100%
mcpgateway / services / metrics_cleanup_service.py get_metrics_cleanup_service   100% 3 0 0   100% 2 0   100%
mcpgateway / services / metrics_cleanup_service.py (no function)   100% 44 0 0   100% 0 0   100%
mcpgateway / services / metrics_query_service.py AggregatedMetrics.to_dict   100% 1 0 0   100% 0 0   100%
mcpgateway / services / metrics_query_service.py get_current_hour_start   100% 2 0 0   100% 0 0   100%
mcpgateway / services / metrics_query_service.py _merge_min   100% 3 0 0   100% 2 0   100%
mcpgateway / services / metrics_query_service.py _merge_max   100% 3 0 0   100% 2 0   100%
mcpgateway / services / metrics_query_service.py _merge_weighted_avg   100% 10 0 0   100% 8 0   100%
mcpgateway / services / metrics_query_service.py _merge_last_time   100% 3 0 0   100% 2 0   100%
mcpgateway / services / metrics_query_service.py get_retention_cutoff   100% 9 0 0   100% 2 0   100%
mcpgateway / services / metrics_query_service.py get_current_hour_aggregation   100% 14 0 0   100% 6 0   100%
mcpgateway / services / metrics_query_service.py aggregate_metrics_combined   100% 47 0 0   100% 8 0   100%
mcpgateway / services / metrics_query_service.py get_top_entities_combined   100% 37 0 0   92% 12 1   98%
mcpgateway / services / metrics_query_service.py get_top_performers_combined   100% 2 0 0   100% 0 0   100%
mcpgateway / services / metrics_query_service.py (no function)   100% 41 0 0   100% 0 0   100%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService.__init__   100% 14 0 0   100% 0 0   100%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService.pause   100% 4 0 0   100% 0 0   100%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService.resume   100% 7 0 0   75% 4 1   91%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService.pause_during   100% 4 0 0   100% 0 0   100%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService.start   100% 7 0 0   75% 4 1   91%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService.shutdown   100% 9 0 0   50% 2 1   91%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService._rollup_loop   100% 35 0 0   100% 12 0   100%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService._detect_backfill_hours   100% 17 0 0   100% 6 0   100%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService.rollup_all   100% 20 0 0   100% 2 0   100%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService._rollup_table   100% 36 0 0   75% 12 3   94%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService._aggregate_hour   100% 59 0 0   92% 24 2   98%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService._percentile   100% 8 0 0   100% 4 0   100%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService._upsert_rollup   100% 46 0 0   100% 14 0   100%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService._delete_raw_metrics   100% 2 0 0   100% 0 0   100%
mcpgateway / services / metrics_rollup_service.py MetricsRollupService.get_stats   100% 1 0 0   100% 0 0   100%
mcpgateway / services / metrics_rollup_service.py get_metrics_rollup_service   100% 3 0 0   100% 2 0   100%
mcpgateway / services / metrics_rollup_service.py get_metrics_rollup_service_if_initialized   100% 1 0 0   100% 0 0   100%
mcpgateway / services / metrics_rollup_service.py (no function)   100% 72 0 0   100% 0 0   100%
mcpgateway / services / notification_service.py _empty_notification_type_set   100% 1 0 0   100% 0 0   100%
mcpgateway / services / notification_service.py NotificationService.__init__   100% 13 0 0   100% 0 0   100%
mcpgateway / services / notification_service.py NotificationService.initialize   80% 5 1 0   50% 2 1   71%
mcpgateway / services / notification_service.py NotificationService.set_gateway_service   100% 1 0 0   100% 0 0   100%
mcpgateway / services / notification_service.py NotificationService.shutdown   100% 12 0 0   100% 2 0   100%
mcpgateway / services / notification_service.py NotificationService.register_gateway_capabilities   100% 5 0 0   100% 0 0   100%
mcpgateway / services / notification_service.py NotificationService.unregister_gateway   100% 2 0 0   100% 0 0   100%
mcpgateway / services / notification_service.py NotificationService.supports_list_changed   100% 4 0 0   100% 2 0   100%
mcpgateway / services / notification_service.py NotificationService.create_message_handler   100% 2 0 0   100% 0 0   100%
mcpgateway / services / notification_service.py NotificationService.create_message_handler.message_handler   100% 4 0 0   100% 4 0   100%
mcpgateway / services / notification_service.py NotificationService._handle_notification   100% 14 0 0   100% 8 0   100%
mcpgateway / services / notification_service.py NotificationService._enqueue_refresh   89% 27 3 0   83% 6 1   88%
mcpgateway / services / notification_service.py NotificationService._process_refresh_queue   80% 15 3 0   50% 2 1   76%
mcpgateway / services / notification_service.py NotificationService._execute_refresh   100% 22 0 0   100% 6 0   100%
mcpgateway / services / notification_service.py NotificationService.get_metrics   100% 1 0 0   100% 0 0   100%
mcpgateway / services / notification_service.py get_notification_service   100% 3 0 0   100% 2 0   100%
mcpgateway / services / notification_service.py init_notification_service   100% 3 0 0   100% 0 0   100%
mcpgateway / services / notification_service.py close_notification_service   100% 4 0 0   100% 2 0   100%
mcpgateway / services / notification_service.py (no function)   98% 49 1 0   50% 2 1   96%
mcpgateway / services / oauth_manager.py _get_redis_client   100% 14 0 0   100% 6 0   100%
mcpgateway / services / oauth_manager.py OAuthManager.__init__   100% 4 0 0   100% 0 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._get_client   100% 1 0 0   100% 0 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._generate_pkce_params   100% 3 0 0   100% 0 0   100%
mcpgateway / services / oauth_manager.py OAuthManager.get_access_token   100% 13 0 0   100% 6 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._client_credentials_flow   100% 47 0 0   100% 18 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._password_flow   100% 55 0 0   100% 24 0   100%
mcpgateway / services / oauth_manager.py OAuthManager.get_authorization_url   100% 8 0 0   100% 0 0   100%
mcpgateway / services / oauth_manager.py OAuthManager.exchange_code_for_token   100% 47 0 0   100% 18 0   100%
mcpgateway / services / oauth_manager.py OAuthManager.initiate_authorization_code_flow   100% 7 0 0   100% 2 0   100%
mcpgateway / services / oauth_manager.py OAuthManager.complete_authorization_code_flow   100% 29 0 0   100% 10 0   100%
mcpgateway / services / oauth_manager.py OAuthManager.get_access_token_for_user   100% 3 0 0   100% 2 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._generate_state   100% 7 0 0   100% 0 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._store_authorization_state   100% 38 0 0   100% 8 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._validate_authorization_state   100% 74 0 0   100% 30 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._validate_and_retrieve_state   100% 59 0 0   100% 26 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._create_authorization_url   100% 7 0 0   100% 0 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._create_authorization_url_with_pkce   100% 15 0 0   100% 6 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._exchange_code_for_tokens   100% 58 0 0   100% 28 0   100%
mcpgateway / services / oauth_manager.py OAuthManager.refresh_token   100% 41 0 0   100% 26 0   100%
mcpgateway / services / oauth_manager.py OAuthManager._extract_user_id   100% 9 0 0   100% 8 0   100%
mcpgateway / services / oauth_manager.py (no function)   100% 44 0 0   100% 0 0   100%
mcpgateway / services / observability_service.py utc_now   100% 1 0 0   100% 0 0   100%
mcpgateway / services / observability_service.py ensure_timezone_aware   100% 3 0 0   100% 2 0   100%
mcpgateway / services / observability_service.py parse_traceparent   100% 12 0 0   100% 6 0   100%
mcpgateway / services / observability_service.py generate_w3c_trace_id   100% 1 0 0   100% 0 0   100%
mcpgateway / services / observability_service.py generate_w3c_span_id   100% 1 0 0   100% 0 0   100%
mcpgateway / services / observability_service.py format_traceparent   100% 2 0 0   100% 0 0   100%
mcpgateway / services / observability_service.py ObservabilityService._safe_commit   100% 10 0 0   100% 0 0   100%
mcpgateway / services / observability_service.py ObservabilityService.start_trace   100% 10 0 0   100% 4 0   100%
mcpgateway / services / observability_service.py ObservabilityService.end_trace   100% 16 0 0   100% 6 0   100%
mcpgateway / services / observability_service.py ObservabilityService.get_trace   100% 4 0 0   100% 2 0   100%
mcpgateway / services / observability_service.py ObservabilityService.start_span   100% 7 0 0   100% 2 0   100%
mcpgateway / services / observability_service.py ObservabilityService.end_span   100% 15 0 0   100% 6 0   100%
mcpgateway / services / observability_service.py ObservabilityService.trace_span   100% 8 0 0   100% 0 0   100%
mcpgateway / services / observability_service.py ObservabilityService.trace_tool_invocation   100% 15 0 0   100% 2 0   100%
mcpgateway / services / observability_service.py ObservabilityService.add_event   100% 7 0 0   100% 2 0   100%
mcpgateway / services / observability_service.py ObservabilityService.record_token_usage   100% 23 0 0   100% 18 0   100%
mcpgateway / services / observability_service.py ObservabilityService._estimate_token_cost   100% 10 0 0   100% 4 0   100%
mcpgateway / services / observability_service.py ObservabilityService.trace_a2a_request   100% 17 0 0   100% 4 0   100%
mcpgateway / services / observability_service.py ObservabilityService.record_transport_activity   100% 10 0 0   100% 8 0   100%
mcpgateway / services / observability_service.py ObservabilityService.record_metric   100% 7 0 0   100% 2 0   100%
mcpgateway / services / observability_service.py ObservabilityService.query_traces   100% 56 0 0   100% 50 0   100%
mcpgateway / services / observability_service.py ObservabilityService.query_spans   100% 54 0 0   100% 48 0   100%
mcpgateway / services / observability_service.py ObservabilityService.get_trace_with_spans   100% 1 0 0   100% 0 0   100%
mcpgateway / services / observability_service.py ObservabilityService.delete_old_traces   100% 5 0 0   100% 2 0   100%
mcpgateway / services / observability_service.py (no function)   100% 43 0 0   100% 0 0   100%
mcpgateway / services / performance_service.py _get_admin_stats_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / performance_service.py PerformanceService.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / performance_service.py PerformanceService._get_net_connections_cached   100% 18 0 0   100% 8 0   100%
mcpgateway / services / performance_service.py PerformanceService.get_system_metrics   100% 18 0 0   100% 2 0   100%
mcpgateway / services / performance_service.py PerformanceService.get_worker_metrics   100% 14 0 0   100% 6 0   100%
mcpgateway / services / performance_service.py PerformanceService._get_process_metrics   100% 18 0 0   100% 0 0   100%
mcpgateway / services / performance_service.py PerformanceService.get_gunicorn_metrics   100% 20 0 0   100% 8 0   100%
mcpgateway / services / performance_service.py PerformanceService.get_request_metrics   100% 45 0 0   83% 36 6   93%
mcpgateway / services / performance_service.py PerformanceService.get_database_metrics   100% 12 0 0   50% 2 1   93%
mcpgateway / services / performance_service.py PerformanceService.get_cache_metrics   100% 26 0 0   88% 8 1   97%
mcpgateway / services / performance_service.py PerformanceService.get_dashboard   100% 8 0 0   100% 0 0   100%
mcpgateway / services / performance_service.py PerformanceService.save_snapshot   100% 21 0 0   83% 6 1   96%
mcpgateway / services / performance_service.py PerformanceService.cleanup_old_snapshots   100% 12 0 0   50% 2 1   93%
mcpgateway / services / performance_service.py PerformanceService.get_history   100% 20 0 0   100% 8 0   100%
mcpgateway / services / performance_service.py PerformanceService.create_hourly_aggregate   100% 44 0 0   67% 12 4   93%
mcpgateway / services / performance_service.py get_performance_service   100% 5 0 0   100% 4 0   100%
mcpgateway / services / performance_service.py (no function)   84% 56 9 0   100% 0 0   84%
mcpgateway / services / performance_tracker.py PerformanceTracker.__init__   100% 6 0 0   100% 0 0   100%
mcpgateway / services / performance_tracker.py PerformanceTracker._increment_version   100% 3 0 0   50% 2 1   80%
mcpgateway / services / performance_tracker.py PerformanceTracker.track_operation   100% 18 0 0   75% 4 1   95%
mcpgateway / services / performance_tracker.py PerformanceTracker.record_timing   100% 8 0 0   100% 4 0   100%
mcpgateway / services / performance_tracker.py PerformanceTracker.get_performance_summary   100% 25 0 0   100% 10 0   100%
mcpgateway / services / performance_tracker.py PerformanceTracker.get_performance_summary.percentile   100% 6 0 0   100% 2 0   100%
mcpgateway / services / performance_tracker.py PerformanceTracker.get_operation_stats   100% 6 0 0   100% 4 0   100%
mcpgateway / services / performance_tracker.py PerformanceTracker.clear_stats   100% 8 0 0   75% 4 1   92%
mcpgateway / services / performance_tracker.py PerformanceTracker.set_threshold   100% 2 0 0   100% 0 0   100%
mcpgateway / services / performance_tracker.py PerformanceTracker.check_performance_degradation   100% 15 0 0   100% 6 0   100%
mcpgateway / services / performance_tracker.py get_performance_tracker   100% 3 0 0   100% 2 0   100%
mcpgateway / services / performance_tracker.py (no function)   100% 24 0 0   100% 0 0   100%
mcpgateway / services / permission_service.py PermissionService.__init__   100% 8 0 0   100% 2 0   100%
mcpgateway / services / permission_service.py PermissionService.check_permission   100% 17 0 0   100% 8 0   100%
mcpgateway / services / permission_service.py PermissionService.has_admin_permission   100% 13 0 0   100% 8 0   100%
mcpgateway / services / permission_service.py PermissionService.get_user_permissions   100% 18 0 0   100% 6 0   100%
mcpgateway / services / permission_service.py PermissionService.get_user_roles   100% 11 0 0   100% 6 0   100%
mcpgateway / services / permission_service.py PermissionService.has_permission_on_resource   100% 3 0 0   100% 2 0   100%
mcpgateway / services / permission_service.py PermissionService.check_resource_ownership   100% 10 0 0   90% 10 1   95%
mcpgateway / services / permission_service.py PermissionService.check_admin_permission   100% 5 0 0   100% 2 0   100%
mcpgateway / services / permission_service.py PermissionService.clear_user_cache   100% 6 0 0   100% 2 0   100%
mcpgateway / services / permission_service.py PermissionService.clear_cache   100% 4 0 0   100% 0 0   100%
mcpgateway / services / permission_service.py PermissionService._get_user_roles   100% 13 0 0   100% 4 0   100%
mcpgateway / services / permission_service.py PermissionService._log_permission_check   100% 3 0 0   100% 0 0   100%
mcpgateway / services / permission_service.py PermissionService._get_roles_for_audit   100% 3 0 0   100% 0 0   100%
mcpgateway / services / permission_service.py PermissionService._is_cache_valid   100% 6 0 0   100% 4 0   100%
mcpgateway / services / permission_service.py PermissionService._is_user_admin   100% 5 0 0   100% 2 0   100%
mcpgateway / services / permission_service.py PermissionService._check_team_fallback_permissions   100% 12 0 0   100% 10 0   100%
mcpgateway / services / permission_service.py PermissionService._is_team_member   100% 1 0 0   100% 0 0   100%
mcpgateway / services / permission_service.py PermissionService._get_user_team_role   100% 4 0 0   100% 0 0   100%
mcpgateway / services / permission_service.py PermissionService._check_token_fallback_permissions   100% 3 0 0   100% 2 0   100%
mcpgateway / services / permission_service.py (no function)   100% 28 0 0   100% 0 0   100%
mcpgateway / services / personal_team_service.py PersonalTeamService.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / personal_team_service.py PersonalTeamService.create_personal_team   100% 24 0 0   100% 2 0   100%
mcpgateway / services / personal_team_service.py PersonalTeamService.get_personal_team   100% 6 0 0   100% 0 0   100%
mcpgateway / services / personal_team_service.py PersonalTeamService.ensure_personal_team   100% 11 0 0   100% 4 0   100%
mcpgateway / services / personal_team_service.py PersonalTeamService.is_personal_team   100% 6 0 0   100% 0 0   100%
mcpgateway / services / personal_team_service.py PersonalTeamService.delete_personal_team   100% 3 0 0   100% 2 0   100%
mcpgateway / services / personal_team_service.py PersonalTeamService.get_personal_team_owner   100% 6 0 0   100% 0 0   100%
mcpgateway / services / personal_team_service.py (no function)   100% 14 0 0   100% 0 0   100%
mcpgateway / services / plugin_service.py _get_admin_stats_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / plugin_service.py PluginService.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / plugin_service.py PluginService.get_plugin_manager   100% 1 0 0   100% 0 0   100%
mcpgateway / services / plugin_service.py PluginService.set_plugin_manager   100% 1 0 0   100% 0 0   100%
mcpgateway / services / plugin_service.py PluginService.get_all_plugins   100% 27 0 0   100% 16 0   100%
mcpgateway / services / plugin_service.py PluginService.get_plugin_by_name   100% 16 0 0   92% 12 1   96%
mcpgateway / services / plugin_service.py PluginService.get_plugin_statistics   100% 27 0 0   100% 16 0   100%
mcpgateway / services / plugin_service.py PluginService.search_plugins   100% 11 0 0   100% 8 0   100%
mcpgateway / services / plugin_service.py get_plugin_service   100% 1 0 0   100% 0 0   100%
mcpgateway / services / plugin_service.py (no function)   100% 18 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py _get_jinja_env   100% 3 0 0   100% 2 0   100%
mcpgateway / services / prompt_service.py _compile_jinja_template   100% 1 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py _get_registry_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / prompt_service.py PromptNameConflictError.__init__   100% 7 0 0   100% 2 0   100%
mcpgateway / services / prompt_service.py PromptService.__init__   100% 9 0 0   100% 2 0   100%
mcpgateway / services / prompt_service.py PromptService.initialize   100% 2 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService.shutdown   100% 2 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService.get_top_prompts   100% 13 0 0   100% 6 0   100%
mcpgateway / services / prompt_service.py PromptService.convert_prompt_to_read   100% 23 0 0   100% 4 0   100%
mcpgateway / services / prompt_service.py PromptService._get_team_name   100% 5 0 0   100% 2 0   100%
mcpgateway / services / prompt_service.py PromptService._compute_prompt_name   100% 5 0 0   100% 2 0   100%
mcpgateway / services / prompt_service.py PromptService.register_prompt   100% 57 0 0   94% 16 1   99%
mcpgateway / services / prompt_service.py PromptService.register_prompts_bulk   100% 117 0 0   96% 46 2   99%
mcpgateway / services / prompt_service.py PromptService.list_prompts   100% 63 0 0   97% 36 1   99%
mcpgateway / services / prompt_service.py PromptService.list_prompts_for_user   97% 37 1 0   93% 14 1   96%
mcpgateway / services / prompt_service.py PromptService.list_server_prompts   100% 34 0 0   100% 16 0   100%
mcpgateway / services / prompt_service.py PromptService._record_prompt_metric   100% 5 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService._check_prompt_access   100% 23 0 0   100% 16 0   100%
mcpgateway / services / prompt_service.py PromptService.get_prompt   100% 100 0 0   89% 44 5   97%
mcpgateway / services / prompt_service.py PromptService.update_prompt   100% 107 0 0   93% 58 4   98%
mcpgateway / services / prompt_service.py PromptService.set_prompt_state   100% 40 0 0   100% 12 0   100%
mcpgateway / services / prompt_service.py PromptService.get_prompt_details   100% 8 0 0   100% 2 0   100%
mcpgateway / services / prompt_service.py PromptService.delete_prompt   100% 37 0 0   100% 10 0   100%
mcpgateway / services / prompt_service.py PromptService.subscribe_events   100% 2 0 0   100% 2 0   100%
mcpgateway / services / prompt_service.py PromptService._validate_template   100% 4 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService._get_required_arguments   100% 5 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService._render_template   100% 8 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService._parse_messages   100% 18 0 0   100% 12 0   100%
mcpgateway / services / prompt_service.py PromptService._notify_prompt_added   100% 2 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService._notify_prompt_updated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService._notify_prompt_activated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService._notify_prompt_deactivated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService._notify_prompt_deleted   100% 2 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService._notify_prompt_removed   100% 2 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService._publish_event   100% 1 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py PromptService.aggregate_metrics   100% 11 0 0   100% 6 0   100%
mcpgateway / services / prompt_service.py PromptService.reset_metrics   100% 6 0 0   100% 0 0   100%
mcpgateway / services / prompt_service.py __getattr__   100% 5 0 0   100% 4 0   100%
mcpgateway / services / prompt_service.py (no function)   100% 86 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py _get_registry_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / resource_service.py ResourceURIConflictError.__init__   100% 8 0 0   100% 2 0   100%
mcpgateway / services / resource_service.py ResourceService.__init__   100% 19 0 0   100% 6 0   100%
mcpgateway / services / resource_service.py ResourceService.initialize   100% 2 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService.shutdown   100% 2 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService.get_top_resources   100% 13 0 0   100% 6 0   100%
mcpgateway / services / resource_service.py ResourceService.convert_resource_to_read   100% 46 0 0   100% 12 0   100%
mcpgateway / services / resource_service.py ResourceService._get_team_name   100% 5 0 0   100% 2 0   100%
mcpgateway / services / resource_service.py ResourceService.register_resource   100% 38 0 0   100% 10 0   100%
mcpgateway / services / resource_service.py ResourceService.register_resources_bulk   100% 78 0 0   100% 26 0   100%
mcpgateway / services / resource_service.py ResourceService._check_resource_access   100% 24 0 0   100% 16 0   100%
mcpgateway / services / resource_service.py ResourceService.list_resources   100% 64 0 0   100% 36 0   100%
mcpgateway / services / resource_service.py ResourceService.list_resources_for_user   100% 38 0 0   100% 14 0   100%
mcpgateway / services / resource_service.py ResourceService.list_server_resources   100% 35 0 0   100% 16 0   100%
mcpgateway / services / resource_service.py ResourceService._record_resource_metric   100% 5 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService._record_invoke_resource_metric   100% 5 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService.create_ssl_context   100% 1 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService.invoke_resource   100% 134 0 0   100% 52 0   100%
mcpgateway / services / resource_service.py ResourceService.invoke_resource._get_httpx_client_factory   100% 2 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService.invoke_resource.connect_to_sse_session   100% 24 0 0   100% 6 0   100%
mcpgateway / services / resource_service.py ResourceService.invoke_resource.connect_to_streamablehttp_server   100% 24 0 0   100% 6 0   100%
mcpgateway / services / resource_service.py ResourceService.read_resource   100% 159 0 0   100% 96 0   100%
mcpgateway / services / resource_service.py ResourceService.set_resource_state   100% 40 0 0   100% 12 0   100%
mcpgateway / services / resource_service.py ResourceService.subscribe_resource   100% 13 0 0   100% 4 0   100%
mcpgateway / services / resource_service.py ResourceService.unsubscribe_resource   100% 10 0 0   100% 2 0   100%
mcpgateway / services / resource_service.py ResourceService.update_resource   100% 93 0 0   100% 50 0   100%
mcpgateway / services / resource_service.py ResourceService.delete_resource   100% 40 0 0   100% 8 0   100%
mcpgateway / services / resource_service.py ResourceService.get_resource_by_id   100% 13 0 0   100% 8 0   100%
mcpgateway / services / resource_service.py ResourceService._notify_resource_activated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService._notify_resource_deactivated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService._notify_resource_deleted   100% 2 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService._notify_resource_removed   100% 2 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService.subscribe_events   100% 2 0 0   100% 2 0   100%
mcpgateway / services / resource_service.py ResourceService._detect_mime_type   100% 6 0 0   100% 4 0   100%
mcpgateway / services / resource_service.py ResourceService._read_template_resource   100% 25 0 0   100% 14 0   100%
mcpgateway / services / resource_service.py ResourceService._build_regex   100% 12 0 0   100% 6 0   100%
mcpgateway / services / resource_service.py ResourceService._compile_parse_pattern   100% 1 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService._extract_template_params   100% 3 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService._uri_matches_template   100% 3 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService._notify_resource_added   100% 2 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService._notify_resource_updated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService._publish_event   100% 1 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py ResourceService.list_resource_templates   100% 18 0 0   100% 12 0   100%
mcpgateway / services / resource_service.py ResourceService.aggregate_metrics   100% 11 0 0   100% 6 0   100%
mcpgateway / services / resource_service.py ResourceService.reset_metrics   100% 6 0 0   100% 0 0   100%
mcpgateway / services / resource_service.py __getattr__   100% 5 0 0   100% 4 0   100%
mcpgateway / services / resource_service.py (no function)   100% 110 0 0   100% 0 0   100%
mcpgateway / services / role_service.py RoleService.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / role_service.py RoleService.create_role   100% 23 0 0   100% 12 0   100%
mcpgateway / services / role_service.py RoleService.get_role_by_id   100% 3 0 0   100% 0 0   100%
mcpgateway / services / role_service.py RoleService.get_role_by_name   100% 3 0 0   100% 0 0   100%
mcpgateway / services / role_service.py RoleService.list_roles   100% 14 0 0   100% 8 0   100%
mcpgateway / services / role_service.py RoleService.update_role   97% 35 1 0   92% 26 2   95%
mcpgateway / services / role_service.py RoleService.delete_role   100% 11 0 0   100% 4 0   100%
mcpgateway / services / role_service.py RoleService.assign_role_to_user   100% 18 0 0   100% 10 0   100%
mcpgateway / services / role_service.py RoleService.revoke_role_from_user   100% 7 0 0   100% 2 0   100%
mcpgateway / services / role_service.py RoleService.get_user_role_assignment   100% 7 0 0   100% 2 0   100%
mcpgateway / services / role_service.py RoleService.list_user_roles   100% 10 0 0   100% 4 0   100%
mcpgateway / services / role_service.py RoleService.list_role_assignments   100% 10 0 0   100% 4 0   100%
mcpgateway / services / role_service.py RoleService._would_create_cycle   100% 11 0 0   100% 6 0   100%
mcpgateway / services / role_service.py RoleService.delete_all_user_roles   100% 5 0 0   100% 0 0   100%
mcpgateway / services / role_service.py (no function)   100% 22 0 0   100% 0 0   100%
mcpgateway / services / root_service.py RootService.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / services / root_service.py RootService.initialize   67% 6 2 0   100% 2 0   75%
mcpgateway / services / root_service.py RootService.shutdown   100% 3 0 0   100% 0 0   100%
mcpgateway / services / root_service.py RootService.list_roots   100% 1 0 0   100% 0 0   100%
mcpgateway / services / root_service.py RootService.add_root   100% 12 0 0   100% 2 0   100%
mcpgateway / services / root_service.py RootService.get_root_by_uri   100% 4 0 0   100% 2 0   100%
mcpgateway / services / root_service.py RootService.update_root   100% 10 0 0   75% 4 1   93%
mcpgateway / services / root_service.py RootService.remove_root   100% 6 0 0   100% 2 0   100%
mcpgateway / services / root_service.py RootService.subscribe_changes   100% 7 0 0   100% 0 0   100%
mcpgateway / services / root_service.py RootService._make_root_uri   100% 4 0 0   100% 2 0   100%
mcpgateway / services / root_service.py RootService._notify_root_added   100% 2 0 0   100% 0 0   100%
mcpgateway / services / root_service.py RootService._notify_root_removed   100% 2 0 0   100% 0 0   100%
mcpgateway / services / root_service.py RootService._notify_subscribers   100% 5 0 0   100% 2 0   100%
mcpgateway / services / root_service.py __getattr__   100% 5 0 0   100% 4 0   100%
mcpgateway / services / root_service.py (no function)   100% 27 0 0   100% 0 0   100%
mcpgateway / services / security_logger.py SecurityLogger.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / security_logger.py SecurityLogger.log_authentication_attempt   100% 18 0 0   100% 8 0   100%
mcpgateway / services / security_logger.py SecurityLogger.log_data_access   100% 9 0 0   100% 4 0   100%
mcpgateway / services / security_logger.py SecurityLogger.log_suspicious_activity   100% 4 0 0   100% 0 0   100%
mcpgateway / services / security_logger.py SecurityLogger._count_recent_failures   100% 19 0 0   100% 8 0   100%
mcpgateway / services / security_logger.py SecurityLogger._calculate_auth_threat_score   100% 10 0 0   100% 8 0   100%
mcpgateway / services / security_logger.py SecurityLogger._requires_audit_review   100% 7 0 0   100% 6 0   100%
mcpgateway / services / security_logger.py SecurityLogger._create_security_event   100% 16 0 0   100% 2 0   100%
mcpgateway / services / security_logger.py SecurityLogger._create_audit_trail   100% 16 0 0   100% 2 0   100%
mcpgateway / services / security_logger.py get_security_logger   100% 3 0 0   50% 2 1   80%
mcpgateway / services / security_logger.py (no function)   100% 39 0 0   100% 0 0   100%
mcpgateway / services / server_service.py _get_registry_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / server_service.py ServerNameConflictError.__init__   100% 7 0 0   100% 2 0   100%
mcpgateway / services / server_service.py ServerService.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService.initialize   100% 1 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService.shutdown   100% 2 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService.get_top_servers   100% 13 0 0   100% 6 0   100%
mcpgateway / services / server_service.py ServerService.convert_server_to_read   100% 32 0 0   100% 14 0   100%
mcpgateway / services / server_service.py ServerService._assemble_associated_items   100% 1 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService.register_server   100% 98 0 0   100% 48 0   100%
mcpgateway / services / server_service.py ServerService.list_servers   100% 59 0 0   100% 34 0   100%
mcpgateway / services / server_service.py ServerService.list_servers_for_user   100% 31 0 0   100% 12 0   100%
mcpgateway / services / server_service.py ServerService.get_server   100% 9 0 0   100% 2 0   100%
mcpgateway / services / server_service.py ServerService.update_server   100% 132 0 0   100% 90 0   100%
mcpgateway / services / server_service.py ServerService.set_server_state   100% 40 0 0   100% 10 0   100%
mcpgateway / services / server_service.py ServerService.delete_server   100% 35 0 0   100% 8 0   100%
mcpgateway / services / server_service.py ServerService._publish_event   100% 2 0 0   100% 2 0   100%
mcpgateway / services / server_service.py ServerService.subscribe_events   100% 7 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService._notify_server_added   100% 5 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService._notify_server_updated   100% 5 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService._notify_server_activated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService._notify_server_deactivated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService._notify_server_deleted   100% 2 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService.aggregate_metrics   100% 11 0 0   100% 6 0   100%
mcpgateway / services / server_service.py ServerService.reset_metrics   100% 6 0 0   100% 0 0   100%
mcpgateway / services / server_service.py ServerService.get_oauth_protected_resource_metadata   100% 25 0 0   100% 18 0   100%
mcpgateway / services / server_service.py __getattr__   100% 5 0 0   100% 4 0   100%
mcpgateway / services / server_service.py (no function)   100% 64 0 0   100% 0 0   100%
mcpgateway / services / sso_service.py SSOService.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / sso_service.py SSOService._encrypt_secret   100% 1 0 0   100% 0 0   100%
mcpgateway / services / sso_service.py SSOService._decrypt_secret   100% 4 0 0   100% 2 0   100%
mcpgateway / services / sso_service.py SSOService._decode_jwt_claims   100% 14 0 0   100% 4 0   100%
mcpgateway / services / sso_service.py SSOService.list_enabled_providers   100% 3 0 0   100% 0 0   100%
mcpgateway / services / sso_service.py SSOService.get_provider   100% 3 0 0   100% 0 0   100%
mcpgateway / services / sso_service.py SSOService.get_provider_by_name   100% 3 0 0   100% 0 0   100%
mcpgateway / services / sso_service.py SSOService.create_provider   100% 7 0 0   100% 0 0   100%
mcpgateway / services / sso_service.py SSOService.update_provider   100% 13 0 0   88% 8 1   95%
mcpgateway / services / sso_service.py SSOService.delete_provider   100% 6 0 0   100% 2 0   100%
mcpgateway / services / sso_service.py SSOService.generate_pkce_challenge   100% 3 0 0   100% 0 0   100%
mcpgateway / services / sso_service.py SSOService.get_authorization_url   100% 13 0 0   100% 4 0   100%
mcpgateway / services / sso_service.py SSOService.handle_oauth_callback   100% 27 0 0   100% 8 0   100%
mcpgateway / services / sso_service.py SSOService._exchange_code_for_tokens   100% 8 0 0   100% 2 0   100%
mcpgateway / services / sso_service.py SSOService._get_user_info   100% 41 0 0   89% 28 3   96%
mcpgateway / services / sso_service.py SSOService._normalize_user_info   100% 48 0 0   91% 34 3   96%
mcpgateway / services / sso_service.py SSOService.authenticate_or_create_user   97% 76 2 0   83% 52 9   91%
mcpgateway / services / sso_service.py SSOService._should_user_be_admin   100% 15 0 0   100% 14 0   100%
mcpgateway / services / sso_service.py SSOService._map_groups_to_roles   100% 54 0 0   95% 40 2   98%
mcpgateway / services / sso_service.py SSOService._sync_user_roles   100% 22 0 0   100% 10 0   100%
mcpgateway / services / sso_service.py (no function)   100% 39 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py _should_log   100% 4 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py LogEnricher.enrich   100% 25 0 0   92% 12 1   97%
mcpgateway / services / structured_logger.py LogRouter.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py LogRouter.route   100% 5 0 0   100% 4 0   100%
mcpgateway / services / structured_logger.py LogRouter._log_to_python_logger   100% 7 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py LogRouter._persist_to_database   100% 31 0 0   92% 12 1   98%
mcpgateway / services / structured_logger.py LogRouter._send_to_external   100% 0 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py StructuredLogger.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py StructuredLogger.log   100% 10 0 0   100% 4 0   100%
mcpgateway / services / structured_logger.py StructuredLogger.debug   100% 1 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py StructuredLogger.info   100% 1 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py StructuredLogger.warning   100% 1 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py StructuredLogger.error   100% 1 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py StructuredLogger.critical   100% 1 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py ComponentLogger.get_logger   100% 3 0 0   100% 2 0   100%
mcpgateway / services / structured_logger.py ComponentLogger.clear_loggers   100% 1 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py get_structured_logger   100% 1 0 0   100% 0 0   100%
mcpgateway / services / structured_logger.py (no function)   100% 64 0 0   100% 0 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService._is_secret   100% 5 0 0   100% 2 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService._sanitize_url   100% 5 0 0   100% 4 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService._sanitize_line   100% 3 0 0   100% 2 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService._collect_version_info   100% 1 0 0   100% 0 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService._collect_system_info   100% 7 0 0   100% 0 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService._collect_env_config   100% 1 0 0   100% 0 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService._collect_settings   100% 7 0 0   100% 4 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService._collect_logs   100% 20 0 0   100% 6 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService._create_manifest   100% 1 0 0   100% 0 0   100%
mcpgateway / services / support_bundle_service.py SupportBundleService.generate_bundle   100% 27 0 0   100% 10 0   100%
mcpgateway / services / support_bundle_service.py create_support_bundle   100% 2 0 0   100% 0 0   100%
mcpgateway / services / support_bundle_service.py (no function)   100% 36 0 0   100% 0 0   100%
mcpgateway / services / system_stats_service.py _get_admin_stats_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / system_stats_service.py SystemStatsService.get_comprehensive_stats   100% 8 0 0   100% 0 0   100%
mcpgateway / services / system_stats_service.py SystemStatsService.get_comprehensive_stats_cached   100% 7 0 0   100% 2 0   100%
mcpgateway / services / system_stats_service.py SystemStatsService._get_user_stats   100% 5 0 0   100% 0 0   100%
mcpgateway / services / system_stats_service.py SystemStatsService._get_team_stats   100% 5 0 0   100% 0 0   100%
mcpgateway / services / system_stats_service.py SystemStatsService._get_mcp_resource_stats   100% 11 0 0   100% 0 0   100%
mcpgateway / services / system_stats_service.py SystemStatsService._get_token_stats   100% 5 0 0   100% 0 0   100%
mcpgateway / services / system_stats_service.py SystemStatsService._get_session_stats   100% 9 0 0   100% 0 0   100%
mcpgateway / services / system_stats_service.py SystemStatsService._get_metrics_stats   100% 11 0 0   100% 0 0   100%
mcpgateway / services / system_stats_service.py SystemStatsService._get_security_stats   100% 9 0 0   100% 0 0   100%
mcpgateway / services / system_stats_service.py SystemStatsService._get_workflow_stats   100% 7 0 0   100% 0 0   100%
mcpgateway / services / system_stats_service.py (no function)   100% 19 0 0   100% 0 0   100%
mcpgateway / services / tag_service.py _get_admin_stats_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / tag_service.py TagService.get_all_tags   100% 53 0 0   100% 36 0   100%
mcpgateway / services / tag_service.py TagService._update_stats   100% 15 0 0   100% 10 0   100%
mcpgateway / services / tag_service.py TagService._get_tag_id   100% 5 0 0   100% 4 0   100%
mcpgateway / services / tag_service.py TagService.get_entities_by_tag   100% 29 0 0   100% 20 0   100%
mcpgateway / services / tag_service.py TagService.get_tag_counts   100% 17 0 0   100% 0 0   100%
mcpgateway / services / tag_service.py (no function)   100% 20 0 0   100% 0 0   100%
mcpgateway / services / team_invitation_service.py TeamInvitationService.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / team_invitation_service.py TeamInvitationService._generate_invitation_token   100% 1 0 0   100% 0 0   100%
mcpgateway / services / team_invitation_service.py TeamInvitationService.create_invitation   100% 50 0 0   100% 24 0   100%
mcpgateway / services / team_invitation_service.py TeamInvitationService.get_invitation_by_token   100% 6 0 0   100% 0 0   100%
mcpgateway / services / team_invitation_service.py TeamInvitationService.accept_invitation   100% 50 0 0   100% 18 0   100%
mcpgateway / services / team_invitation_service.py TeamInvitationService.decline_invitation   100% 16 0 0   100% 4 0   100%
mcpgateway / services / team_invitation_service.py TeamInvitationService.revoke_invitation   100% 17 0 0   100% 4 0   100%
mcpgateway / services / team_invitation_service.py TeamInvitationService.get_team_invitations   100% 9 0 0   100% 2 0   100%
mcpgateway / services / team_invitation_service.py TeamInvitationService.get_user_invitations   100% 9 0 0   100% 2 0   100%
mcpgateway / services / team_invitation_service.py TeamInvitationService.cleanup_expired_invitations   100% 11 0 0   100% 2 0   100%
mcpgateway / services / team_invitation_service.py (no function)   100% 20 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService._log_team_member_action   100% 3 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.create_team   100% 47 0 0   100% 8 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_team_by_id   100% 8 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_team_by_slug   100% 8 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.update_team   100% 29 0 0   100% 14 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.delete_team   100% 30 0 0   100% 8 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.add_member_to_team   100% 47 0 0   100% 14 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.remove_member_from_team   100% 34 0 0   100% 10 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.update_member_role   100% 35 0 0   100% 12 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_member   100% 5 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_user_teams   100% 28 0 0   100% 10 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.verify_team_for_user   100% 21 0 0   100% 6 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_team_members   100% 49 0 0   100% 16 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.count_team_owners   100% 3 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService._get_auth_cache   100% 5 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService._get_admin_stats_cache   100% 5 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_user_role_in_team   100% 16 0 0   100% 6 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.list_teams   100% 20 0 0   100% 14 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_all_team_ids   100% 14 0 0   100% 8 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_teams_count   100% 14 0 0   100% 8 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.discover_public_teams   100% 13 0 0   100% 2 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.create_join_request   100% 31 0 0   100% 10 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.list_join_requests   100% 6 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.approve_join_request   100% 31 0 0   100% 4 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.reject_join_request   100% 14 0 0   100% 2 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_user_join_requests   100% 9 0 0   100% 2 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.cancel_join_request   100% 15 0 0   100% 2 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_member_counts_batch   100% 11 0 0   100% 2 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_user_roles_batch   100% 11 0 0   100% 2 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_pending_join_requests_batch   100% 11 0 0   100% 2 0   100%
mcpgateway / services / team_management_service.py TeamManagementService._get_member_count_cache_key   100% 2 0 0   100% 0 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.get_member_counts_batch_cached   100% 43 0 0   100% 16 0   100%
mcpgateway / services / team_management_service.py TeamManagementService.invalidate_team_member_count_cache   100% 10 0 0   100% 4 0   100%
mcpgateway / services / team_management_service.py (no function)   100% 50 0 0   100% 0 0   100%
mcpgateway / services / token_catalog_service.py TokenScope.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / services / token_catalog_service.py TokenScope.is_server_scoped   100% 1 0 0   100% 0 0   100%
mcpgateway / services / token_catalog_service.py TokenScope.has_permission   100% 1 0 0   100% 0 0   100%
mcpgateway / services / token_catalog_service.py TokenScope.to_dict   100% 1 0 0   100% 0 0   100%
mcpgateway / services / token_catalog_service.py TokenScope.from_dict   100% 1 0 0   100% 0 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService._generate_token   100% 15 0 0   100% 6 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService._hash_token   100% 1 0 0   100% 0 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService._validate_scope_containment   100% 16 0 0   94% 16 1   97%
mcpgateway / services / token_catalog_service.py TokenCatalogService.create_token   100% 29 0 0   100% 14 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService.list_user_tokens   100% 9 0 0   100% 4 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService.list_team_tokens   100% 13 0 0   83% 6 1   95%
mcpgateway / services / token_catalog_service.py TokenCatalogService.get_token   100% 5 0 0   100% 2 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService.update_token   100% 26 0 0   100% 16 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService.revoke_token   100% 15 0 0   100% 2 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService.admin_revoke_token   100% 15 0 0   100% 2 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService.is_token_revoked   100% 2 0 0   100% 0 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService.log_token_usage   100% 7 0 0   100% 2 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService.get_token_usage_stats   100% 10 0 0   83% 6 1   94%
mcpgateway / services / token_catalog_service.py TokenCatalogService._get_usage_stats_postgresql   100% 14 0 0   100% 2 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService._get_usage_stats_python   100% 15 0 0   83% 6 1   95%
mcpgateway / services / token_catalog_service.py TokenCatalogService.get_token_revocation   100% 2 0 0   100% 0 0   100%
mcpgateway / services / token_catalog_service.py TokenCatalogService.cleanup_expired_tokens   100% 11 0 0   100% 2 0   100%
mcpgateway / services / token_catalog_service.py (no function)   100% 38 0 0   100% 0 0   100%
mcpgateway / services / token_storage_service.py TokenStorageService.__init__   100% 7 0 0   100% 0 0   100%
mcpgateway / services / token_storage_service.py TokenStorageService.store_tokens   100% 26 0 0   100% 6 0   100%
mcpgateway / services / token_storage_service.py TokenStorageService.get_user_token   100% 18 0 0   100% 10 0   100%
mcpgateway / services / token_storage_service.py TokenStorageService._refresh_access_token   99% 67 1 0   96% 26 1   98%
mcpgateway / services / token_storage_service.py TokenStorageService._refresh_access_token.normalize_resource   88% 8 1 0   75% 4 1   83%
mcpgateway / services / token_storage_service.py TokenStorageService._is_token_expired   100% 6 0 0   100% 4 0   100%
mcpgateway / services / token_storage_service.py TokenStorageService.get_token_info   100% 8 0 0   100% 2 0   100%
mcpgateway / services / token_storage_service.py TokenStorageService.revoke_user_tokens   100% 12 0 0   100% 2 0   100%
mcpgateway / services / token_storage_service.py TokenStorageService.cleanup_expired_tokens   100% 12 0 0   100% 2 0   100%
mcpgateway / services / token_storage_service.py (no function)   100% 19 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py _get_registry_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / tool_service.py _get_tool_lookup_cache   100% 4 0 0   100% 2 0   100%
mcpgateway / services / tool_service.py _compile_jq_filter   100% 1 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py _get_validator_class_and_check   100% 15 0 0   100% 2 0   100%
mcpgateway / services / tool_service.py _canonicalize_schema   100% 1 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py _validate_with_cached_schema   100% 6 0 0   100% 2 0   100%
mcpgateway / services / tool_service.py extract_using_jq   100% 19 0 0   100% 8 0   100%
mcpgateway / services / tool_service.py ToolNameConflictError.__init__   100% 10 0 0   100% 4 0   100%
mcpgateway / services / tool_service.py ToolService.__init__   100% 10 0 0   100% 2 0   100%
mcpgateway / services / tool_service.py ToolService.initialize   100% 2 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService.shutdown   100% 3 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService.get_top_tools   100% 12 0 0   100% 6 0   100%
mcpgateway / services / tool_service.py ToolService._build_tool_cache_payload   100% 5 0 0   100% 2 0   100%
mcpgateway / services / tool_service.py ToolService._pydantic_tool_from_payload   100% 5 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._pydantic_gateway_from_payload   100% 5 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._check_tool_access   100% 23 0 0   100% 16 0   100%
mcpgateway / services / tool_service.py ToolService.convert_tool_to_read   100% 47 0 0   100% 22 0   100%
mcpgateway / services / tool_service.py ToolService._record_tool_metric   100% 5 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._record_tool_metric_by_id   100% 5 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._record_tool_metric_sync   100% 2 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._extract_and_validate_structured_content   100% 46 0 3   100% 16 0   100%
mcpgateway / services / tool_service.py ToolService.register_tool   100% 49 0 0   100% 16 0   100%
mcpgateway / services / tool_service.py ToolService.register_tools_bulk   100% 27 0 0   100% 16 0   100%
mcpgateway / services / tool_service.py ToolService._process_tool_chunk   100% 38 0 0   100% 20 0   100%
mcpgateway / services / tool_service.py ToolService._process_single_tool_for_bulk   100% 55 0 0   100% 14 0   100%
mcpgateway / services / tool_service.py ToolService._create_tool_object   100% 1 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService.list_tools   100% 66 0 0   100% 38 0   100%
mcpgateway / services / tool_service.py ToolService.list_server_tools   100% 31 0 0   100% 16 0   100%
mcpgateway / services / tool_service.py ToolService.list_tools_for_user   100% 56 0 0   100% 32 0   100%
mcpgateway / services / tool_service.py ToolService.get_tool   100% 6 0 0   100% 2 0   100%
mcpgateway / services / tool_service.py ToolService.delete_tool   100% 42 0 0   100% 10 0   100%
mcpgateway / services / tool_service.py ToolService.set_tool_state   100% 49 0 0   100% 18 0   100%
mcpgateway / services / tool_service.py ToolService.invoke_tool   100% 546 0 0   94% 232 13   98%
mcpgateway / services / tool_service.py ToolService.update_tool   100% 112 0 0   100% 66 0   100%
mcpgateway / services / tool_service.py ToolService._notify_tool_updated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._notify_tool_activated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._notify_tool_deactivated   100% 2 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._notify_tool_offline   100% 2 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._notify_tool_deleted   100% 2 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService.subscribe_events   100% 2 0 0   100% 2 0   100%
mcpgateway / services / tool_service.py ToolService._notify_tool_added   100% 2 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._notify_tool_removed   100% 2 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._publish_event   100% 1 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._validate_tool_url   100% 5 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService._check_tool_health   100% 5 0 0   100% 0 0   100%
mcpgateway / services / tool_service.py ToolService.aggregate_metrics   100% 11 0 0   100% 6 0   100%
mcpgateway / services / tool_service.py ToolService.reset_metrics   100% 9 0 0   100% 2 0   100%
mcpgateway / services / tool_service.py ToolService.create_tool_from_a2a_agent   100% 19 0 0   100% 8 0   100%
mcpgateway / services / tool_service.py ToolService.update_tool_from_a2a_agent   100% 20 0 0   100% 10 0   100%
mcpgateway / services / tool_service.py ToolService.delete_tool_from_a2a_agent   100% 9 0 0   100% 4 0   100%
mcpgateway / services / tool_service.py ToolService._invoke_a2a_tool   100% 24 0 0   100% 8 0   100%
mcpgateway / services / tool_service.py ToolService._call_a2a_agent   100% 44 0 0   100% 18 0   100%
mcpgateway / services / tool_service.py __getattr__   100% 5 0 0   100% 4 0   100%
mcpgateway / services / tool_service.py (no function)   100% 135 0 0   100% 0 0   100%
mcpgateway / toolops / toolops_altk_service.py custom_mcp_cf_execute_prompt   100% 11 0 0   100% 0 0   100%
mcpgateway / toolops / toolops_altk_service.py validation_generate_test_cases   100% 35 0 0   71% 14 4   92%
mcpgateway / toolops / toolops_altk_service.py execute_tool_nl_test_cases   100% 22 0 0   100% 6 0   100%
mcpgateway / toolops / toolops_altk_service.py enrich_tool   100% 18 0 0   50% 2 1   95%
mcpgateway / toolops / toolops_altk_service.py (no function)   100% 50 0 1   100% 10 0   100%
mcpgateway / toolops / utils / db_util.py populate_testcases_table   100% 13 0 0   75% 4 1   94%
mcpgateway / toolops / utils / db_util.py query_testcases_table   100% 3 0 0   100% 0 0   100%
mcpgateway / toolops / utils / db_util.py query_tool_auth   100% 8 0 0   100% 0 0   100%
mcpgateway / toolops / utils / db_util.py (no function)   100% 10 0 0   100% 0 0   100%
mcpgateway / toolops / utils / format_conversion.py convert_to_toolops_spec   100% 14 0 0   100% 2 0   100%
mcpgateway / toolops / utils / format_conversion.py post_process_nl_test_cases   100% 5 0 0   100% 4 0   100%
mcpgateway / toolops / utils / format_conversion.py (no function)   100% 4 0 1   100% 0 0   100%
mcpgateway / toolops / utils / llm_util.py get_llm_instance   100% 65 0 0   100% 14 0   100%
mcpgateway / toolops / utils / llm_util.py execute_prompt   100% 9 0 0   100% 0 0   100%
mcpgateway / toolops / utils / llm_util.py (no function)   100% 11 0 1   100% 0 0   100%
mcpgateway / tools / builder / cli.py cli   100% 10 0 0   100% 4 0   100%
mcpgateway / tools / builder / cli.py validate   100% 7 0 0   100% 0 0   100%
mcpgateway / tools / builder / cli.py build   100% 10 0 0   100% 2 0   100%
mcpgateway / tools / builder / cli.py certs   100% 7 0 0   100% 0 0   100%
mcpgateway / tools / builder / cli.py deploy   100% 9 0 0   100% 2 0   100%
mcpgateway / tools / builder / cli.py verify   100% 7 0 0   100% 0 0   100%
mcpgateway / tools / builder / cli.py destroy   100% 11 0 0   100% 4 0   100%
mcpgateway / tools / builder / cli.py version   100% 1 0 0   100% 0 0   100%
mcpgateway / tools / builder / cli.py generate   100% 7 0 0   100% 0 0   100%
mcpgateway / tools / builder / cli.py main   100% 10 0 0   100% 2 0   100%
mcpgateway / tools / builder / cli.py (no function)   100% 35 0 2   100% 0 0   100%
mcpgateway / tools / builder / factory.py DeployFactory.create_deployer   100% 21 0 0   100% 8 0   100%
mcpgateway / tools / builder / factory.py (no function)   100% 10 0 0   100% 0 0   100%
mcpgateway / tools / builder / pipeline.py CICDModule.__init__   100% 2 0 0   100% 0 0   100%
mcpgateway / tools / builder / pipeline.py CICDModule.validate   100% 14 0 0   100% 6 0   100%
mcpgateway / tools / builder / pipeline.py CICDModule.build   100% 0 0 0   100% 0 0   100%
mcpgateway / tools / builder / pipeline.py CICDModule.generate_certificates   100% 0 0 0   100% 0 0   100%
mcpgateway / tools / builder / pipeline.py CICDModule.deploy   100% 0 0 0   100% 0 0   100%
mcpgateway / tools / builder / pipeline.py CICDModule.verify   100% 0 0 0   100% 0 0   100%
mcpgateway / tools / builder / pipeline.py CICDModule.destroy   100% 0 0 0   100% 0 0   100%
mcpgateway / tools / builder / pipeline.py CICDModule.generate_manifests   100% 0 0 0   100% 0 0   100%
mcpgateway / tools / builder / pipeline.py (no function)   100% 23 0 0   100% 0 0   100%
mcpgateway / tools / builder / schema.py BuildableConfig.model_post_init   100% 3 0 0   100% 2 0   100%
mcpgateway / tools / builder / schema.py PluginConfig.validate_name   100% 3 0 0   100% 2 0   100%
mcpgateway / tools / builder / schema.py MCPStackConfig.validate_plugin_names_unique   100% 5 0 0   100% 2 0   100%
mcpgateway / tools / builder / schema.py (no function)   100% 74 0 0   100% 0 0   100%
mcpgateway / tools / cli.py main   100% 1 0 0   100% 0 0   100%
mcpgateway / tools / cli.py (no function)   100% 7 0 2   100% 0 0   100%
mcpgateway / translate.py _PubSub.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / translate.py _PubSub.publish   100% 9 0 0   100% 4 0   100%
mcpgateway / translate.py _PubSub.subscribe   100% 3 0 0   100% 0 0   100%
mcpgateway / translate.py _PubSub.unsubscribe   100% 2 0 0   100% 0 0   100%
mcpgateway / translate.py StdIOEndpoint.__init__   100% 7 0 0   100% 0 0   100%
mcpgateway / translate.py StdIOEndpoint.start   100% 19 0 0   100% 12 0   100%
mcpgateway / translate.py StdIOEndpoint.stop   100% 26 0 0   100% 6 0   100%
mcpgateway / translate.py StdIOEndpoint.is_running   100% 1 0 0   100% 0 0   100%
mcpgateway / translate.py StdIOEndpoint.send   100% 5 0 0   100% 2 0   100%
mcpgateway / translate.py StdIOEndpoint._pump_stdout   100% 11 0 5   100% 4 0   100%
mcpgateway / translate.py SSEEvent.__init__   100% 4 0 0   100% 0 0   100%
mcpgateway / translate.py SSEEvent.parse_sse_line   100% 28 0 0   100% 20 0   100%
mcpgateway / translate.py _build_fastapi   100% 10 0 0   100% 2 0   100%
mcpgateway / translate.py _build_fastapi.get_sse   100% 12 0 0   100% 4 0   100%
mcpgateway / translate.py _build_fastapi.get_sse.event_gen   100% 17 0 0   100% 8 0   100%
mcpgateway / translate.py _build_fastapi.post_message   100% 21 0 0   100% 6 0   100%
mcpgateway / translate.py _build_fastapi.health   100% 1 0 0   100% 0 0   100%
mcpgateway / translate.py _parse_args   100% 27 0 0   100% 0 0   100%
mcpgateway / translate.py _run_stdio_to_sse   100% 15 0 0   100% 2 0   100%
mcpgateway / translate.py _run_stdio_to_sse._shutdown   100% 6 0 0   100% 2 0   100%
mcpgateway / translate.py _run_sse_to_stdio   100% 28 0 0   100% 10 0   100%
mcpgateway / translate.py _run_sse_to_stdio.read_stdout   100% 25 0 0   100% 14 0   100%
mcpgateway / translate.py _run_sse_to_stdio.pump_sse_to_stdio   100% 40 0 0   100% 22 0   100%
mcpgateway / translate.py _run_stdio_to_streamable_http   100% 28 0 0   100% 6 0   100%
mcpgateway / translate.py _run_stdio_to_streamable_http.handle_mcp   100% 1 0 0   100% 0 0   100%
mcpgateway / translate.py _run_stdio_to_streamable_http._shutdown   100% 9 0 0   100% 4 0   100%
mcpgateway / translate.py _run_stdio_to_streamable_http.pump_stdio_to_http   100% 11 0 0   100% 4 0   100%
mcpgateway / translate.py _run_stdio_to_streamable_http.pump_http_to_stdio   0% 4 4 0   0% 2 0   0%
mcpgateway / translate.py _run_streamable_http_to_stdio   100% 29 0 0   100% 12 0   100%
mcpgateway / translate.py _run_streamable_http_to_stdio.read_stdout   100% 30 0 0   100% 14 0   100%
mcpgateway / translate.py _run_streamable_http_to_stdio.pump_streamable_http_to_stdio   100% 30 0 0   100% 16 0   100%
mcpgateway / translate.py _simple_streamable_http_pump   100% 29 0 0   100% 16 0   100%
mcpgateway / translate.py _run_multi_protocol_server   100% 60 0 0   100% 20 0   100%
mcpgateway / translate.py _run_multi_protocol_server.get_sse   100% 14 0 0   100% 6 0   100%
mcpgateway / translate.py _run_multi_protocol_server.get_sse.event_gen   100% 17 0 0   100% 8 0   100%
mcpgateway / translate.py _run_multi_protocol_server.post_message   100% 23 0 0   100% 8 0   100%
mcpgateway / translate.py _run_multi_protocol_server.health   100% 1 0 0   100% 0 0   100%
mcpgateway / translate.py _run_multi_protocol_server.mcp_post   100% 35 0 0   100% 12 0   100%
mcpgateway / translate.py _run_multi_protocol_server.mcp_asgi_wrapper   100% 3 0 0   100% 2 0   100%
mcpgateway / translate.py _run_multi_protocol_server._shutdown   100% 7 0 0   100% 4 0   100%
mcpgateway / translate.py _simple_sse_pump   100% 35 0 0   100% 20 0   100%
mcpgateway / translate.py start_streamable_http_stdio   100% 1 0 0   100% 0 0   100%
mcpgateway / translate.py start_streamable_http_client   100% 1 0 0   100% 0 0   100%
mcpgateway / translate.py start_stdio   100% 1 0 0   100% 0 0   100%
mcpgateway / translate.py start_sse   100% 1 0 0   100% 0 0   100%
mcpgateway / translate.py main   100% 42 0 0   100% 20 0   100%
mcpgateway / translate.py (no function)   100% 76 0 2   100% 0 0   100%
mcpgateway / translate_grpc.py GrpcEndpoint.__init__   100% 11 0 0   100% 0 0   100%
mcpgateway / translate_grpc.py GrpcEndpoint.start   100% 12 0 0   100% 6 0   100%
mcpgateway / translate_grpc.py GrpcEndpoint._discover_services   100% 20 0 0   100% 10 0   100%
mcpgateway / translate_grpc.py GrpcEndpoint._discover_service_details   100% 24 0 0   100% 12 0   100%
mcpgateway / translate_grpc.py GrpcEndpoint.invoke   100% 28 0 0   100% 10 0   100%
mcpgateway / translate_grpc.py GrpcEndpoint.invoke_streaming   100% 35 0 0   100% 14 0   100%
mcpgateway / translate_grpc.py GrpcEndpoint.close   100% 3 0 0   100% 2 0   100%
mcpgateway / translate_grpc.py GrpcEndpoint.get_services   100% 1 0 0   100% 0 0   100%
mcpgateway / translate_grpc.py GrpcEndpoint.get_methods   100% 3 0 0   100% 2 0   100%
mcpgateway / translate_grpc.py GrpcToMcpTranslator.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / translate_grpc.py GrpcToMcpTranslator.grpc_service_to_mcp_server   100% 1 0 0   100% 0 0   100%
mcpgateway / translate_grpc.py GrpcToMcpTranslator.grpc_methods_to_mcp_tools   100% 14 0 0   100% 4 0   100%
mcpgateway / translate_grpc.py GrpcToMcpTranslator.protobuf_to_json_schema   100% 8 0 0   100% 4 0   100%
mcpgateway / translate_grpc.py GrpcToMcpTranslator._protobuf_field_to_json_schema   100% 11 0 0   100% 4 0   100%
mcpgateway / translate_grpc.py expose_grpc_via_sse   100% 13 0 0   100% 0 0   100%
mcpgateway / translate_grpc.py (no function)   100% 39 0 0   100% 0 0   100%
mcpgateway / translate_header_utils.py validate_header_mapping   100% 6 0 0   100% 6 0   100%
mcpgateway / translate_header_utils.py sanitize_header_value   100% 6 0 0   100% 2 0   100%
mcpgateway / translate_header_utils.py parse_header_mappings   100% 20 0 0   100% 10 0   100%
mcpgateway / translate_header_utils.py normalize_headers   100% 1 0 0   100% 0 0   100%
mcpgateway / translate_header_utils.py NormalizedMappings.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / translate_header_utils.py NormalizedMappings.get_env_var   100% 1 0 0   100% 0 0   100%
mcpgateway / translate_header_utils.py NormalizedMappings.__iter__   100% 1 0 0   100% 0 0   100%
mcpgateway / translate_header_utils.py NormalizedMappings.__len__   100% 1 0 0   100% 0 0   100%
mcpgateway / translate_header_utils.py NormalizedMappings.values   100% 1 0 0   100% 0 0   100%
mcpgateway / translate_header_utils.py NormalizedMappings.__bool__   100% 1 0 0   100% 0 0   100%
mcpgateway / translate_header_utils.py extract_env_vars_from_headers   100% 17 0 0   100% 8 0   100%
mcpgateway / translate_header_utils.py (no function)   100% 20 0 0   100% 0 0   100%
mcpgateway / transports / base.py Transport.connect   100% 0 0 0   100% 0 0   100%
mcpgateway / transports / base.py Transport.disconnect   100% 0 0 0   100% 0 0   100%
mcpgateway / transports / base.py Transport.send_message   100% 0 0 0   100% 0 0   100%
mcpgateway / transports / base.py Transport.receive_message   100% 0 0 0   100% 0 0   100%
mcpgateway / transports / base.py Transport.is_connected   100% 0 0 0   100% 0 0   100%
mcpgateway / transports / base.py (no function)   100% 13 0 0   100% 0 0   100%
mcpgateway / transports / redis_event_store.py RedisEventStore.__init__   100% 4 0 0   100% 0 0   100%
mcpgateway / transports / redis_event_store.py RedisEventStore._get_stream_meta_key   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / redis_event_store.py RedisEventStore._get_stream_events_key   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / redis_event_store.py RedisEventStore._get_stream_messages_key   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / redis_event_store.py RedisEventStore._event_index_prefix   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / redis_event_store.py RedisEventStore._event_index_key   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / redis_event_store.py RedisEventStore.store_event   100% 11 0 0   100% 2 0   100%
mcpgateway / transports / redis_event_store.py RedisEventStore.replay_events_after   100% 38 0 0   100% 14 0   100%
mcpgateway / transports / redis_event_store.py (no function)   100% 18 0 2   100% 0 0   100%
mcpgateway / transports / sse_transport.py _create_patched_deliver_cancellation   100% 2 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py _create_patched_deliver_cancellation._patched_deliver_cancellation   100% 9 0 0   100% 6 0   100%
mcpgateway / transports / sse_transport.py apply_anyio_cancel_delivery_patch   100% 15 0 0   100% 4 0   100%
mcpgateway / transports / sse_transport.py remove_anyio_cancel_delivery_patch   100% 10 0 0   100% 2 0   100%
mcpgateway / transports / sse_transport.py _get_sse_cleanup_timeout   100% 4 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py EventSourceResponse.enable_compression   100% 0 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py EventSourceResponse.__call__   100% 10 0 0   100% 4 0   100%
mcpgateway / transports / sse_transport.py EventSourceResponse.__call__.cancel_on_finish   100% 3 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py _build_sse_frame   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py SSETransport._is_valid_session_id   100% 6 0 0   100% 4 0   100%
mcpgateway / transports / sse_transport.py SSETransport.__init__   100% 6 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py SSETransport.connect   100% 2 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py SSETransport.disconnect   100% 4 0 0   100% 2 0   100%
mcpgateway / transports / sse_transport.py SSETransport.send_message   100% 8 0 0   100% 2 0   100%
mcpgateway / transports / sse_transport.py SSETransport.receive_message   100% 10 0 0   100% 4 0   100%
mcpgateway / transports / sse_transport.py SSETransport._get_message_with_timeout   100% 19 0 0   100% 4 0   100%
mcpgateway / transports / sse_transport.py SSETransport.is_connected   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py SSETransport.create_sse_response   100% 4 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py SSETransport.create_sse_response.event_generator   100% 62 0 0   100% 22 0   100%
mcpgateway / transports / sse_transport.py SSETransport.create_sse_response.event_generator.check_rapid_yield   100% 20 0 0   100% 12 0   100%
mcpgateway / transports / sse_transport.py SSETransport.create_sse_response.on_client_close   100% 7 0 0   100% 2 0   100%
mcpgateway / transports / sse_transport.py SSETransport._client_disconnected   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py SSETransport.session_id   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / sse_transport.py (no function)   100% 47 0 0   100% 0 0   100%
mcpgateway / transports / stdio_transport.py StdioTransport.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / transports / stdio_transport.py StdioTransport.connect   100% 9 0 0   100% 0 0   100%
mcpgateway / transports / stdio_transport.py StdioTransport.disconnect   100% 5 0 0   100% 2 0   100%
mcpgateway / transports / stdio_transport.py StdioTransport.send_message   100% 9 0 0   100% 2 0   100%
mcpgateway / transports / stdio_transport.py StdioTransport.receive_message   100% 14 0 0   100% 4 0   100%
mcpgateway / transports / stdio_transport.py StdioTransport.is_connected   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / stdio_transport.py (no function)   100% 15 0 0   100% 0 0   100%
mcpgateway / transports / streamablehttp_transport.py StreamBuffer.__len__   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / streamablehttp_transport.py InMemoryEventStore.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / transports / streamablehttp_transport.py InMemoryEventStore.store_event   100% 20 0 0   100% 8 0   100%
mcpgateway / transports / streamablehttp_transport.py InMemoryEventStore.replay_events_after   100% 15 0 0   100% 10 0   100%
mcpgateway / transports / streamablehttp_transport.py get_db   100% 24 0 0   100% 0 0   100%
mcpgateway / transports / streamablehttp_transport.py get_user_email_from_context   100% 4 0 0   100% 2 0   100%
mcpgateway / transports / streamablehttp_transport.py call_tool   100% 93 0 0   100% 42 0   100%
mcpgateway / transports / streamablehttp_transport.py call_tool._rehydrate_content_items   100% 22 0 0   100% 16 0   100%
mcpgateway / transports / streamablehttp_transport.py call_tool._convert_annotations   100% 7 0 0   100% 6 0   100%
mcpgateway / transports / streamablehttp_transport.py call_tool._convert_meta   100% 7 0 0   100% 6 0   100%
mcpgateway / transports / streamablehttp_transport.py list_tools   100% 25 0 0   100% 6 0   100%
mcpgateway / transports / streamablehttp_transport.py list_prompts   100% 24 0 0   100% 6 0   100%
mcpgateway / transports / streamablehttp_transport.py get_prompt   100% 31 0 0   100% 8 0   100%
mcpgateway / transports / streamablehttp_transport.py list_resources   100% 24 0 0   100% 6 0   100%
mcpgateway / transports / streamablehttp_transport.py read_resource   100% 32 0 0   100% 10 0   100%
mcpgateway / transports / streamablehttp_transport.py list_resource_templates   100% 19 0 0   100% 4 0   100%
mcpgateway / transports / streamablehttp_transport.py set_logging_level   100% 8 0 0   100% 0 0   100%
mcpgateway / transports / streamablehttp_transport.py complete   100% 24 0 0   100% 14 0   100%
mcpgateway / transports / streamablehttp_transport.py SessionManagerWrapper.__init__   100% 11 0 0   100% 4 0   100%
mcpgateway / transports / streamablehttp_transport.py SessionManagerWrapper.initialize   100% 2 0 0   100% 0 0   100%
mcpgateway / transports / streamablehttp_transport.py SessionManagerWrapper.shutdown   100% 2 0 0   100% 0 0   100%
mcpgateway / transports / streamablehttp_transport.py SessionManagerWrapper.handle_streamable_http   100% 168 0 0   100% 60 0   100%
mcpgateway / transports / streamablehttp_transport.py SessionManagerWrapper.handle_streamable_http.send_with_capture   100% 11 0 0   100% 10 0   100%
mcpgateway / transports / streamablehttp_transport.py streamable_http_auth   100% 82 0 0   100% 38 0   100%
mcpgateway / transports / streamablehttp_transport.py (no function)   100% 86 0 0   100% 0 0   100%
mcpgateway / transports / websocket_transport.py WebSocketTransport.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / transports / websocket_transport.py WebSocketTransport.connect   100% 5 0 0   100% 2 0   100%
mcpgateway / transports / websocket_transport.py WebSocketTransport.disconnect   100% 19 0 0   100% 6 0   100%
mcpgateway / transports / websocket_transport.py WebSocketTransport.send_message   100% 7 0 0   100% 2 0   100%
mcpgateway / transports / websocket_transport.py WebSocketTransport.receive_message   100% 13 0 0   100% 2 0   100%
mcpgateway / transports / websocket_transport.py WebSocketTransport.is_connected   100% 1 0 0   100% 0 0   100%
mcpgateway / transports / websocket_transport.py WebSocketTransport._ping_loop   100% 14 0 0   100% 4 0   100%
mcpgateway / transports / websocket_transport.py WebSocketTransport.send_ping   100% 2 0 0   100% 2 0   100%
mcpgateway / transports / websocket_transport.py (no function)   100% 17 0 0   100% 0 0   100%
mcpgateway / utils / analyze_query_log.py load_json_log   100% 10 0 0   100% 4 0   100%
mcpgateway / utils / analyze_query_log.py analyze_logs   100% 25 0 0   100% 12 0   100%
mcpgateway / utils / analyze_query_log.py print_report   100% 31 0 0   100% 14 0   100%
mcpgateway / utils / analyze_query_log.py main   100% 21 0 0   100% 6 0   100%
mcpgateway / utils / analyze_query_log.py (no function)   100% 10 0 2   100% 0 0   100%
mcpgateway / utils / base_models.py to_camel_case   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / base_models.py BaseModelWithConfigDict.to_dict   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / base_models.py (no function)   100% 6 0 0   100% 0 0   100%
mcpgateway / utils / correlation_id.py get_correlation_id   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / correlation_id.py set_correlation_id   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / correlation_id.py clear_correlation_id   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / correlation_id.py generate_correlation_id   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / correlation_id.py extract_correlation_id_from_headers   100% 6 0 0   100% 6 0   100%
mcpgateway / utils / correlation_id.py get_or_generate_correlation_id   100% 5 0 0   100% 2 0   100%
mcpgateway / utils / correlation_id.py validate_correlation_id   100% 10 0 0   100% 6 0   100%
mcpgateway / utils / correlation_id.py (no function)   100% 13 0 0   100% 0 0   100%
mcpgateway / utils / create_jwt_token.py _create_jwt_token   100% 30 0 0   100% 18 0   100%
mcpgateway / utils / create_jwt_token.py create_jwt_token   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / create_jwt_token.py get_jwt_token   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / create_jwt_token.py _decode_jwt_token   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / create_jwt_token.py _parse_args   100% 14 0 0   100% 0 0   100%
mcpgateway / utils / create_jwt_token.py _payload_from_cli   100% 15 0 0   100% 8 0   100%
mcpgateway / utils / create_jwt_token.py main   100% 0 0 118   100% 0 0   100%
mcpgateway / utils / create_jwt_token.py (no function)   100% 20 0 9   100% 0 0   100%
mcpgateway / utils / create_slug.py slugify   100% 6 0 0   100% 2 0   100%
mcpgateway / utils / create_slug.py (no function)   100% 7 0 0   100% 0 0   100%
mcpgateway / utils / db_isready.py _sanitize   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / db_isready.py _format_target   100% 6 0 0   100% 2 0   100%
mcpgateway / utils / db_isready.py wait_for_db_ready   100% 26 0 0   100% 14 0   100%
mcpgateway / utils / db_isready.py wait_for_db_ready._probe   100% 17 0 0   100% 4 0   100%
mcpgateway / utils / db_isready.py _parse_cli   100% 8 0 0   100% 0 0   100%
mcpgateway / utils / db_isready.py main   100% 0 0 33   100% 0 0   100%
mcpgateway / utils / db_isready.py (no function)   100% 34 0 13   100% 0 0   100%
mcpgateway / utils / display_name.py generate_display_name   100% 7 0 0   100% 4 0   100%
mcpgateway / utils / display_name.py (no function)   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / error_formatter.py ErrorFormatter.format_validation_error   100% 9 0 0   100% 2 0   100%
mcpgateway / utils / error_formatter.py ErrorFormatter._get_user_message   100% 5 0 0   100% 4 0   100%
mcpgateway / utils / error_formatter.py ErrorFormatter.format_database_error   100% 27 0 0   100% 26 0   100%
mcpgateway / utils / error_formatter.py (no function)   100% 13 0 0   100% 0 0   100%
mcpgateway / utils / generate_keys.py generate_ed25519_keypair   100% 7 0 0   100% 0 0   100%
mcpgateway / utils / generate_keys.py generate_ed25519_private_key   100% 3 0 0   100% 0 0   100%
mcpgateway / utils / generate_keys.py derive_public_key_from_private   100% 8 0 0   100% 0 0   100%
mcpgateway / utils / generate_keys.py main   100% 3 0 0   100% 0 0   100%
mcpgateway / utils / generate_keys.py (no function)   100% 10 0 2   100% 0 0   100%
mcpgateway / utils / jwt_config_helper.py _read_key_file_cached   100% 13 0 0   100% 2 0   100%
mcpgateway / utils / jwt_config_helper.py _get_validated_config   100% 7 0 0   100% 4 0   100%
mcpgateway / utils / jwt_config_helper.py validate_jwt_algo_and_keys   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / jwt_config_helper.py _validate_asymmetric_keys   100% 12 0 0   100% 10 0   100%
mcpgateway / utils / jwt_config_helper.py get_jwt_private_key_or_secret   100% 7 0 0   100% 4 0   100%
mcpgateway / utils / jwt_config_helper.py get_jwt_public_key_or_secret   100% 7 0 0   100% 4 0   100%
mcpgateway / utils / jwt_config_helper.py clear_jwt_caches   100% 4 0 0   100% 0 0   100%
mcpgateway / utils / jwt_config_helper.py (no function)   100% 16 0 0   100% 0 0   100%
mcpgateway / utils / keycloak_discovery.py discover_keycloak_endpoints   100% 20 0 0   100% 2 0   100%
mcpgateway / utils / keycloak_discovery.py discover_keycloak_endpoints_sync   100% 20 0 0   100% 2 0   100%
mcpgateway / utils / keycloak_discovery.py (no function)   100% 6 0 0   100% 0 0   100%
mcpgateway / utils / metadata_capture.py MetadataCapture.extract_request_context   100% 13 0 0   100% 8 0   100%
mcpgateway / utils / metadata_capture.py MetadataCapture.extract_username   100% 5 0 0   100% 4 0   100%
mcpgateway / utils / metadata_capture.py MetadataCapture.extract_creation_metadata   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / metadata_capture.py MetadataCapture.extract_modification_metadata   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / metadata_capture.py MetadataCapture.determine_source_from_context   100% 5 0 0   100% 4 0   100%
mcpgateway / utils / metadata_capture.py MetadataCapture.sanitize_user_agent   100% 6 0 0   100% 4 0   100%
mcpgateway / utils / metadata_capture.py MetadataCapture.validate_ip_address   100% 5 0 0   100% 4 0   100%
mcpgateway / utils / metadata_capture.py (no function)   100% 17 0 0   100% 0 0   100%
mcpgateway / utils / metrics_common.py build_top_performers   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / metrics_common.py (no function)   100% 3 0 0   100% 0 0   100%
mcpgateway / utils / orjson_response.py ORJSONResponse.render   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / orjson_response.py (no function)   100% 6 0 0   100% 0 0   100%
mcpgateway / utils / pagination.py encode_cursor   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / pagination.py decode_cursor   100% 5 0 0   100% 0 0   100%
mcpgateway / utils / pagination.py generate_pagination_links   100% 5 0 0   100% 2 0   100%
mcpgateway / utils / pagination.py generate_pagination_links.build_url   100% 10 0 0   100% 6 0   100%
mcpgateway / utils / pagination.py offset_paginate   100% 18 0 0   100% 6 0   100%
mcpgateway / utils / pagination.py cursor_paginate   100% 43 0 0   100% 18 0   100%
mcpgateway / utils / pagination.py paginate_query   100% 14 0 0   100% 10 0   100%
mcpgateway / utils / pagination.py unified_paginate   100% 48 0 0   100% 28 0   100%
mcpgateway / utils / pagination.py parse_pagination_params   100% 8 0 0   100% 0 0   100%
mcpgateway / utils / pagination.py (no function)   100% 21 0 0   100% 0 0   100%
mcpgateway / utils / passthrough_headers.py sanitize_header_value   100% 4 0 0   100% 0 0   100%
mcpgateway / utils / passthrough_headers.py validate_header_name   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / passthrough_headers.py get_passthrough_headers   100% 63 0 0   100% 36 0   100%
mcpgateway / utils / passthrough_headers.py compute_passthrough_headers_cached   100% 53 0 0   100% 26 0   100%
mcpgateway / utils / passthrough_headers.py set_global_passthrough_headers   100% 20 0 0   100% 10 0   100%
mcpgateway / utils / passthrough_headers.py (no function)   100% 17 0 0   100% 0 0   100%
mcpgateway / utils / psycopg3_optimizations.py is_psycopg3_backend   100% 7 0 0   100% 2 0   100%
mcpgateway / utils / psycopg3_optimizations.py _format_value_for_copy   100% 9 0 0   100% 8 0   100%
mcpgateway / utils / psycopg3_optimizations.py bulk_insert_with_copy   100% 24 0 0   100% 8 0   100%
mcpgateway / utils / psycopg3_optimizations.py _bulk_insert_fallback   100% 10 0 0   100% 2 0   100%
mcpgateway / utils / psycopg3_optimizations.py execute_pipelined   100% 22 0 0   100% 8 0   100%
mcpgateway / utils / psycopg3_optimizations.py bulk_insert_metrics   100% 6 0 0   100% 4 0   100%
mcpgateway / utils / psycopg3_optimizations.py get_raw_connection   100% 6 0 0   100% 2 0   100%
mcpgateway / utils / psycopg3_optimizations.py (no function)   100% 16 0 0   100% 0 0   100%
mcpgateway / utils / redis_client.py _is_hiredis_available   100% 5 0 0   100% 0 0   100%
mcpgateway / utils / redis_client.py _get_async_parser_class   100% 10 0 0   100% 8 0   100%
mcpgateway / utils / redis_client.py get_redis_client   100% 29 0 0   100% 6 0   100%
mcpgateway / utils / redis_client.py close_redis_client   100% 8 0 0   100% 2 0   100%
mcpgateway / utils / redis_client.py get_redis_client_sync   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / redis_client.py is_redis_available   100% 8 0 0   100% 2 0   100%
mcpgateway / utils / redis_client.py get_redis_parser_info   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / redis_client.py _reset_client   100% 3 0 0   100% 0 0   100%
mcpgateway / utils / redis_client.py (no function)   100% 14 0 0   100% 0 0   100%
mcpgateway / utils / redis_isready.py wait_for_redis_ready   100% 11 0 0   100% 6 0   100%
mcpgateway / utils / redis_isready.py wait_for_redis_ready._probe   100% 18 0 3   100% 4 0   100%
mcpgateway / utils / redis_isready.py _parse_cli   100% 7 0 0   100% 0 0   100%
mcpgateway / utils / redis_isready.py main   100% 0 0 32   100% 0 0   100%
mcpgateway / utils / redis_isready.py (no function)   100% 16 0 6   100% 0 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient.__init__   100% 8 0 0   100% 2 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient._sleep_with_jitter   100% 3 0 0   100% 0 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient._should_retry   100% 10 0 0   100% 8 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient.request   100% 33 0 0   100% 14 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient.get   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient.post   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient.put   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient.delete   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient.stream   100% 39 0 0   100% 16 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient.aclose   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient.__aenter__   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / retry_manager.py ResilientHttpClient.__aexit__   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / retry_manager.py (no function)   100% 24 0 0   100% 0 0   100%
mcpgateway / utils / security_cookies.py CookieTooLargeError.__init__   100% 3 0 0   100% 0 0   100%
mcpgateway / utils / security_cookies.py set_auth_cookie   100% 25 0 0   100% 8 0   100%
mcpgateway / utils / security_cookies.py clear_auth_cookie   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / security_cookies.py set_session_cookie   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / security_cookies.py clear_session_cookie   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / security_cookies.py (no function)   100% 12 0 0   100% 0 0   100%
mcpgateway / utils / services_auth.py _get_passphrase   100% 6 0 0   100% 4 0   100%
mcpgateway / utils / services_auth.py get_key   100% 8 0 0   100% 2 0   100%
mcpgateway / utils / services_auth.py _get_aesgcm   100% 8 0 0   100% 2 0   100%
mcpgateway / utils / services_auth.py clear_crypto_cache   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / services_auth.py encode_auth   100% 9 0 0   100% 2 0   100%
mcpgateway / utils / services_auth.py decode_auth   100% 9 0 0   100% 2 0   100%
mcpgateway / utils / services_auth.py (no function)   100% 15 0 0   100% 0 0   100%
mcpgateway / utils / sqlalchemy_modifier.py _ensure_list   100% 5 0 0   100% 4 0   100%
mcpgateway / utils / sqlalchemy_modifier.py _generate_unique_prefix   100% 4 0 0   100% 0 0   100%
mcpgateway / utils / sqlalchemy_modifier.py _sqlite_tag_any_template   100% 7 0 0   100% 2 0   100%
mcpgateway / utils / sqlalchemy_modifier.py _sqlite_tag_all_template   100% 5 0 0   100% 2 0   100%
mcpgateway / utils / sqlalchemy_modifier.py json_contains_tag_expr   100% 43 0 0   100% 20 0   100%
mcpgateway / utils / sqlalchemy_modifier.py json_contains_expr   100% 40 0 0   100% 22 0   100%
mcpgateway / utils / sqlalchemy_modifier.py (no function)   100% 16 0 0   100% 0 0   100%
mcpgateway / utils / ssl_context_cache.py get_cached_ssl_context   100% 14 0 0   100% 8 0   100%
mcpgateway / utils / ssl_context_cache.py clear_ssl_context_cache   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / ssl_context_cache.py (no function)   100% 5 0 0   100% 0 0   100%
mcpgateway / utils / ssl_key_manager.py SSLKeyManager.__init__   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / ssl_key_manager.py SSLKeyManager.prepare_key_file   100% 24 0 0   100% 4 0   100%
mcpgateway / utils / ssl_key_manager.py SSLKeyManager.cleanup   100% 4 0 0   100% 2 0   100%
mcpgateway / utils / ssl_key_manager.py prepare_ssl_key   100% 1 0 0   100% 0 0   100%
mcpgateway / utils / ssl_key_manager.py (no function)   100% 16 0 0   100% 0 0   100%
mcpgateway / utils / sso_bootstrap.py get_predefined_sso_providers   100% 29 0 0   100% 16 0   100%
mcpgateway / utils / sso_bootstrap.py bootstrap_sso_providers   100% 32 0 0   100% 12 0   100%
mcpgateway / utils / sso_bootstrap.py (no function)   100% 7 0 3   100% 0 0   100%
mcpgateway / utils / token_scoping.py extract_token_scopes_from_request   100% 11 0 0   100% 2 0   100%
mcpgateway / utils / token_scoping.py is_token_server_scoped   100% 3 0 0   100% 2 0   100%
mcpgateway / utils / token_scoping.py get_token_server_id   100% 3 0 0   100% 2 0   100%
mcpgateway / utils / token_scoping.py validate_server_access   100% 6 0 0   100% 4 0   100%
mcpgateway / utils / token_scoping.py (no function)   100% 7 0 0   100% 0 0   100%
mcpgateway / utils / url_auth.py apply_query_param_auth   100% 11 0 0   100% 4 0   100%
mcpgateway / utils / url_auth.py sanitize_url_for_logging   100% 20 0 0   100% 10 0   100%
mcpgateway / utils / url_auth.py sanitize_exception_message   100% 4 0 0   100% 2 0   100%
mcpgateway / utils / url_auth.py sanitize_exception_message.replace_url   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / url_auth.py (no function)   100% 8 0 0   100% 0 0   100%
mcpgateway / utils / validate_signature.py sign_data   100% 8 0 0   100% 2 0   100%
mcpgateway / utils / validate_signature.py _load_public_key_cached   100% 8 0 0   100% 4 0   100%
mcpgateway / utils / validate_signature.py validate_signature   100% 28 0 0   100% 8 0   100%
mcpgateway / utils / validate_signature.py clear_signature_caches   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / validate_signature.py resign_data   100% 10 0 0   100% 6 0   100%
mcpgateway / utils / validate_signature.py (no function)   100% 15 0 9   100% 0 0   100%
mcpgateway / utils / verify_credentials.py verify_jwt_token   100% 29 0 0   100% 16 0   100%
mcpgateway / utils / verify_credentials.py verify_jwt_token_cached   100% 10 0 0   100% 8 0   100%
mcpgateway / utils / verify_credentials.py verify_credentials   100% 3 0 0   100% 0 0   100%
mcpgateway / utils / verify_credentials.py verify_credentials_cached   100% 2 0 0   100% 0 0   100%
mcpgateway / utils / verify_credentials.py require_auth   100% 23 0 0   100% 20 0   100%
mcpgateway / utils / verify_credentials.py verify_basic_credentials   100% 5 0 0   100% 2 0   100%
mcpgateway / utils / verify_credentials.py require_basic_auth   100% 5 0 0   100% 4 0   100%
mcpgateway / utils / verify_credentials.py require_docs_basic_auth   100% 12 0 0   100% 4 0   100%
mcpgateway / utils / verify_credentials.py require_docs_auth_override   100% 10 0 0   100% 8 0   100%
mcpgateway / utils / verify_credentials.py require_auth_override   100% 10 0 0   100% 8 0   100%
mcpgateway / utils / verify_credentials.py require_admin_auth   100% 52 0 0   100% 26 0   100%
mcpgateway / utils / verify_credentials.py (no function)   100% 25 0 0   100% 0 0   100%
mcpgateway / validation / jsonrpc.py JSONRPCError.__init__   100% 5 0 0   100% 0 0   100%
mcpgateway / validation / jsonrpc.py JSONRPCError.to_dict   100% 4 0 0   100% 2 0   100%
mcpgateway / validation / jsonrpc.py validate_request   100% 13 0 0   100% 12 0   100%
mcpgateway / validation / jsonrpc.py validate_response   100% 23 0 0   100% 20 0   100%
mcpgateway / validation / jsonrpc.py (no function)   100% 13 0 0   100% 0 0   100%
mcpgateway / validation / tags.py TagValidator.normalize   100% 4 0 0   100% 0 0   100%
mcpgateway / validation / tags.py TagValidator.validate   100% 10 0 0   100% 8 0   100%
mcpgateway / validation / tags.py TagValidator.validate_list   100% 18 0 0   100% 12 0   100%
mcpgateway / validation / tags.py TagValidator.get_validation_errors   100% 12 0 0   100% 10 0   100%
mcpgateway / validation / tags.py validate_tags_field   100% 11 0 0   100% 8 0   100%
mcpgateway / validation / tags.py (no function)   100% 17 0 0   100% 0 0   100%
mcpgateway / version.py _is_secret   100% 5 0 0   100% 2 0   100%
mcpgateway / version.py _public_env   100% 1 0 0   100% 0 0   100%
mcpgateway / version.py _sanitize_url   100% 10 0 0   100% 6 0   100%
mcpgateway / version.py _database_version   100% 9 0 0   100% 0 0   100%
mcpgateway / version.py _system_metrics   100% 27 0 0   100% 2 0   100%
mcpgateway / version.py _build_payload   100% 2 0 0   100% 0 0   100%
mcpgateway / version.py _html_table   100% 2 0 0   100% 0 0   100%
mcpgateway / version.py _render_html   100% 7 0 0   100% 2 0   100%
mcpgateway / version.py _login_html   100% 1 0 0   100% 0 0   100%
mcpgateway / version.py version_endpoint   100% 26 0 0   100% 12 0   100%
mcpgateway / version.py (no function)   100% 47 0 0   100% 0 0   100%
mcpgateway / wrapper.py _mark_shutdown   100% 2 0 0   100% 2 0   100%
mcpgateway / wrapper.py shutting_down   100% 1 0 0   100% 0 0   100%
mcpgateway / wrapper.py setup_logging   100% 12 0 0   100% 6 0   100%
mcpgateway / wrapper.py convert_url   100% 7 0 0   100% 6 0   100%
mcpgateway / wrapper.py send_to_stdout   100% 16 0 0   100% 6 0   100%
mcpgateway / wrapper.py make_error   100% 4 0 0   100% 2 0   100%
mcpgateway / wrapper.py stdin_reader   100% 21 0 0   100% 6 0   100%
mcpgateway / wrapper.py ndjson_lines   100% 13 0 0   100% 12 0   100%
mcpgateway / wrapper.py sse_events   100% 35 0 0   100% 28 0   100%
mcpgateway / wrapper.py forward_once   100% 56 0 0   100% 38 0   100%
mcpgateway / wrapper.py forward_once._process_line   100% 9 0 0   100% 2 0   100%
mcpgateway / wrapper.py make_request   100% 15 0 0   100% 6 0   100%
mcpgateway / wrapper.py main_async   100% 32 0 0   100% 8 0   100%
mcpgateway / wrapper.py main_async._worker   100% 3 0 0   100% 2 0   100%
mcpgateway / wrapper.py parse_args   100% 12 0 0   100% 2 0   100%
mcpgateway / wrapper.py _install_signal_handlers   100% 5 0 0   100% 4 0   100%
mcpgateway / wrapper.py main   100% 14 0 0   100% 4 0   100%
mcpgateway / wrapper.py (no function)   100% 50 0 2   100% 0 0   100%
Total     99% 51495 266 481   96% 15614 663   99%

No items found using the specified filter.