Skip to main content
Glama

IMAP MCP Server

by non-dirty
coverage.json43.7 kB
{"meta": {"format": 3, "version": "7.6.12", "timestamp": "2025-03-15T19:07:22.241917", "branch_coverage": false, "show_contexts": false}, "files": {"imap_mcp/__init__.py": {"executed_lines": [1, 3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "imap_mcp/app_password.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 60, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 60, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 7, 9, 11, 14, 32, 33, 34, 35, 36, 37, 38, 41, 42, 44, 53, 54, 57, 58, 59, 61, 62, 63, 65, 66, 67, 69, 72, 74, 76, 77, 82, 87, 91, 97, 100, 103, 104, 105, 106, 107, 108, 111, 112, 113, 114, 115, 116, 117, 119, 120, 126, 127, 128, 129, 132, 133], "excluded_lines": [], "functions": {"setup_app_password": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0}, "missing_lines": [32, 33, 34, 35, 36, 37, 38, 41, 42, 44, 53, 54, 57, 58, 59, 61, 62, 63, 65, 66, 67, 69], "excluded_lines": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 27, "excluded_lines": 0}, "missing_lines": [74, 76, 77, 82, 87, 91, 97, 100, 103, 104, 105, 106, 107, 108, 111, 112, 113, 114, 115, 116, 117, 119, 120, 126, 127, 128, 129], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 7, 9, 11, 14, 72, 132, 133], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 60, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 60, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 7, 9, 11, 14, 32, 33, 34, 35, 36, 37, 38, 41, 42, 44, 53, 54, 57, 58, 59, 61, 62, 63, 65, 66, 67, 69, 72, 74, 76, 77, 82, 87, 91, 97, 100, 103, 104, 105, 106, 107, 108, 111, 112, 113, 114, 115, 116, 117, 119, 120, 126, 127, 128, 129, 132, 133], "excluded_lines": []}}}, "imap_mcp/auth_setup.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 76, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 76, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 17, 18, 21, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 58, 64, 66, 67, 68, 71, 74, 75, 76, 77, 78, 79, 82, 91, 92, 93, 94, 95, 96, 97, 100, 101, 103, 106, 107, 108, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 122, 125, 127, 128, 133, 138, 142, 147, 153, 157, 166, 167], "excluded_lines": [], "functions": {"setup_gmail_oauth2": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 51, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 51, "excluded_lines": 0}, "missing_lines": [40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 58, 64, 66, 67, 68, 71, 74, 75, 76, 77, 78, 79, 82, 91, 92, 93, 94, 95, 96, 97, 100, 101, 103, 106, 107, 108, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 122], "excluded_lines": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [127, 128, 133, 138, 142, 147, 153, 157], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 17, 18, 21, 125, 166, 167], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 76, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 76, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 17, 18, 21, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 58, 64, 66, 67, 68, 71, 74, 75, 76, 77, 78, 79, 82, 91, 92, 93, 94, 95, 96, 97, 100, 101, 103, 106, 107, 108, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 122, 125, 127, 128, 133, 138, 142, 147, 153, 157, 166, 167], "excluded_lines": []}}}, "imap_mcp/browser_auth.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 170, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 170, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 21, 22, 23, 26, 27, 28, 29, 32, 39, 41, 43, 44, 46, 47, 48, 51, 52, 55, 56, 58, 66, 67, 69, 72, 73, 74, 76, 78, 80, 81, 82, 84, 85, 87, 119, 122, 139, 142, 145, 152, 153, 162, 165, 166, 167, 169, 170, 172, 176, 179, 181, 184, 186, 187, 189, 190, 193, 194, 195, 198, 200, 201, 203, 204, 206, 209, 212, 213, 214, 218, 219, 221, 228, 242, 243, 245, 246, 247, 249, 250, 251, 253, 254, 255, 256, 258, 260, 261, 263, 264, 266, 267, 268, 271, 292, 293, 294, 295, 296, 297, 298, 299, 300, 303, 304, 307, 308, 310, 311, 313, 314, 315, 318, 319, 325, 326, 327, 329, 332, 341, 342, 343, 344, 345, 346, 347, 350, 351, 353, 356, 357, 358, 360, 361, 362, 364, 365, 367, 368, 369, 370, 371, 373, 376, 378, 380, 381, 386, 391, 397, 402, 408, 411, 413, 422, 423], "excluded_lines": [], "functions": {"create_oauth_app": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [41, 43, 44, 84, 85, 119], "excluded_lines": []}, "create_oauth_app.oauth2callback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0}, "missing_lines": [46, 47, 48, 51, 52, 55, 56, 58, 66, 67, 69, 72, 73, 74, 76, 78, 80, 81, 82], "excluded_lines": []}, "create_oauth_app.success": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [87], "excluded_lines": []}, "run_local_server": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 31, "excluded_lines": 0}, "missing_lines": [139, 142, 145, 152, 153, 162, 165, 166, 167, 169, 170, 172, 176, 179, 181, 193, 194, 195, 198, 200, 201, 203, 204, 206, 209, 212, 213, 214, 218, 219, 221], "excluded_lines": []}, "run_local_server.run_server": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [184, 186, 187, 189, 190], "excluded_lines": []}, "load_client_credentials": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0}, "missing_lines": [242, 243, 245, 246, 247, 249, 250, 251, 253, 254, 255, 256, 258, 260, 261, 263, 264, 266, 267, 268], "excluded_lines": []}, "perform_oauth_flow": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 49, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 49, "excluded_lines": 0}, "missing_lines": [292, 293, 294, 295, 296, 297, 298, 299, 300, 303, 304, 307, 308, 310, 311, 313, 314, 315, 318, 319, 325, 326, 327, 329, 332, 341, 342, 343, 344, 345, 346, 347, 350, 351, 353, 356, 357, 358, 360, 361, 362, 364, 365, 367, 368, 369, 370, 371, 373], "excluded_lines": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [378, 380, 381, 386, 391, 397, 402, 408, 411, 413], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 21, 22, 23, 26, 27, 28, 29, 32, 39, 122, 228, 271, 376, 422, 423], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 170, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 170, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 21, 22, 23, 26, 27, 28, 29, 32, 39, 41, 43, 44, 46, 47, 48, 51, 52, 55, 56, 58, 66, 67, 69, 72, 73, 74, 76, 78, 80, 81, 82, 84, 85, 87, 119, 122, 139, 142, 145, 152, 153, 162, 165, 166, 167, 169, 170, 172, 176, 179, 181, 184, 186, 187, 189, 190, 193, 194, 195, 198, 200, 201, 203, 204, 206, 209, 212, 213, 214, 218, 219, 221, 228, 242, 243, 245, 246, 247, 249, 250, 251, 253, 254, 255, 256, 258, 260, 261, 263, 264, 266, 267, 268, 271, 292, 293, 294, 295, 296, 297, 298, 299, 300, 303, 304, 307, 308, 310, 311, 313, 314, 315, 318, 319, 325, 326, 327, 329, 332, 341, 342, 343, 344, 345, 346, 347, 350, 351, 353, 356, 357, 358, 360, 361, 362, 364, 365, 367, 368, 369, 370, 371, 373, 376, 378, 380, 381, 386, 391, 397, 402, 408, 411, 413, 422, 423], "excluded_lines": []}}}, "imap_mcp/config.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 15, 18, 19, 20, 22, 23, 24, 25, 26, 28, 29, 31, 32, 35, 36, 37, 39, 42, 51, 52, 53, 55, 56, 57, 58, 59, 60, 62, 63, 65, 67, 68, 70, 72, 73, 76, 79, 82, 83, 85, 89, 90, 94, 104, 105, 106, 108, 109, 111, 112, 114, 120, 134, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 155, 156, 157, 160, 161, 162, 163, 167, 177, 178, 181, 182, 183, 184], "summary": {"covered_lines": 84, "num_statements": 86, "percent_covered": 97.67441860465117, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [40, 86], "excluded_lines": [], "functions": {"OAuth2Config.from_dict": {"executed_lines": [31, 32, 35, 36, 37, 39, 42], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [40], "excluded_lines": []}, "ImapConfig.is_gmail": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImapConfig.requires_oauth2": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImapConfig.from_dict": {"executed_lines": [76, 79, 82, 83, 85, 89, 90, 94], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [86], "excluded_lines": []}, "ServerConfig.from_dict": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "load_config": {"executed_lines": [134, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 155, 156, 157, 160, 161, 162, 163, 167, 177, 178, 181, 182, 183, 184], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 15, 18, 19, 20, 22, 23, 24, 25, 26, 28, 29, 51, 52, 53, 55, 56, 57, 58, 59, 60, 62, 63, 67, 68, 72, 73, 104, 105, 106, 108, 109, 111, 112, 120], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"OAuth2Config": {"executed_lines": [31, 32, 35, 36, 37, 39, 42], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [40], "excluded_lines": []}, "ImapConfig": {"executed_lines": [65, 70, 76, 79, 82, 83, 85, 89, 90, 94], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [86], "excluded_lines": []}, "ServerConfig": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 15, 18, 19, 20, 22, 23, 24, 25, 26, 28, 29, 51, 52, 53, 55, 56, 57, 58, 59, 60, 62, 63, 67, 68, 72, 73, 104, 105, 106, 108, 109, 111, 112, 120, 134, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 155, 156, 157, 160, 161, 162, 163, 167, 177, 178, 181, 182, 183, 184], "summary": {"covered_lines": 66, "num_statements": 66, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "imap_mcp/gmail_auth.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 27, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 8, 11, 12, 15, 17, 18, 22, 26, 30, 36, 40, 46, 48, 50, 58, 59, 60, 61, 62, 63, 64, 67, 68], "excluded_lines": [], "functions": {"main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [17, 18, 22, 26, 30, 36, 40, 46, 48, 50, 58, 59, 60, 61, 62, 63, 64], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 8, 11, 12, 15, 67, 68], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 27, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 6, 8, 11, 12, 15, 17, 18, 22, 26, 30, 36, 40, 46, 48, 50, 58, 59, 60, 61, 62, 63, 64, 67, 68], "excluded_lines": []}}}, "imap_mcp/imap_client.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 19, 20, 22, 29, 30, 31, 32, 33, 35, 41, 42, 49, 63, 66, 68, 69, 70, 71, 72, 73, 75, 77, 78, 79, 80, 81, 83, 84, 85, 87, 93, 94, 96, 108, 111, 112, 115, 116, 117, 122, 123, 125, 126, 128, 129, 131, 144, 147, 148, 151, 152, 153, 155, 174, 175, 177, 179, 201, 202, 204, 205, 206, 208, 221, 222, 225, 227, 228, 229, 232, 233, 234, 237, 243, 244, 245, 247, 249, 268, 269, 272, 273, 275, 279, 280, 282, 283, 284, 287, 293, 294, 295, 296, 298, 300, 321, 322, 324, 325, 326, 327, 329, 330, 331, 332, 333, 334, 336, 351, 354, 355, 357, 358, 361, 363, 365, 366, 367, 368, 369, 370, 371, 372, 374, 387, 388, 390, 391, 392, 393, 394, 395, 396, 397], "summary": {"covered_lines": 144, "num_statements": 153, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [50, 53, 54, 56, 60, 64, 119, 276, 356], "excluded_lines": [], "functions": {"ImapClient.__init__": {"executed_lines": [29, 30, 31, 32, 33], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImapClient.connect": {"executed_lines": [41, 42, 49, 63, 66, 68, 69, 70, 71, 72, 73], "summary": {"covered_lines": 11, "num_statements": 17, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [50, 53, 54, 56, 60, 64], "excluded_lines": []}, "ImapClient.disconnect": {"executed_lines": [77, 78, 79, 80, 81, 83, 84, 85], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImapClient.ensure_connected": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImapClient.list_folders": {"executed_lines": [108, 111, 112, 115, 116, 117, 122, 123, 125, 126, 128, 129], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [119], "excluded_lines": []}, "ImapClient.select_folder": {"executed_lines": [144, 147, 148, 151, 152, 153], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImapClient.search": {"executed_lines": [174, 175, 177, 179, 201, 202, 204, 205, 206], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImapClient.fetch_email": {"executed_lines": [221, 222, 225, 227, 228, 229, 232, 233, 234, 237, 243, 244, 245, 247], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImapClient.fetch_emails": {"executed_lines": [268, 269, 272, 273, 275, 279, 280, 282, 283, 284, 287, 293, 294, 295, 296, 298], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [276], "excluded_lines": []}, "ImapClient.mark_email": {"executed_lines": [321, 322, 324, 325, 326, 327, 329, 330, 331, 332, 333, 334], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ImapClient.move_email": {"executed_lines": [351, 354, 355, 357, 358, 361, 363, 365, 366, 367, 368, 369, 370, 371, 372], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [356], "excluded_lines": []}, "ImapClient.delete_email": {"executed_lines": [387, 388, 390, 391, 392, 393, 394, 395, 396, 397], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 19, 20, 22, 35, 75, 87, 96, 131, 155, 208, 249, 300, 336, 374], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ImapClient": {"executed_lines": [29, 30, 31, 32, 33, 41, 42, 49, 63, 66, 68, 69, 70, 71, 72, 73, 77, 78, 79, 80, 81, 83, 84, 85, 93, 94, 108, 111, 112, 115, 116, 117, 122, 123, 125, 126, 128, 129, 144, 147, 148, 151, 152, 153, 174, 175, 177, 179, 201, 202, 204, 205, 206, 221, 222, 225, 227, 228, 229, 232, 233, 234, 237, 243, 244, 245, 247, 268, 269, 272, 273, 275, 279, 280, 282, 283, 284, 287, 293, 294, 295, 296, 298, 321, 322, 324, 325, 326, 327, 329, 330, 331, 332, 333, 334, 351, 354, 355, 357, 358, 361, 363, 365, 366, 367, 368, 369, 370, 371, 372, 387, 388, 390, 391, 392, 393, 394, 395, 396, 397], "summary": {"covered_lines": 120, "num_statements": 129, "percent_covered": 93.02325581395348, "percent_covered_display": "93", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [50, 53, 54, 56, 60, 64, 119, 276, 356], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 19, 20, 22, 35, 75, 87, 96, 131, 155, 208, 249, 300, 336, 374], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "imap_mcp/models.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 13, 22, 23, 25, 26, 27, 28, 29, 30, 37, 39, 42, 43, 44, 46, 47, 49, 50, 60, 61, 64, 65, 66, 67, 72, 74, 75, 76, 79, 80, 81, 83, 84, 85, 86, 87, 89, 90, 120, 121, 122, 124, 125, 127, 138, 139, 140, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 156, 157, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186, 187, 188, 189, 194, 195, 196, 199, 200, 202, 203, 204, 205, 207, 208, 211, 216, 217, 220, 221, 226, 228, 229, 237, 252, 254, 255], "summary": {"covered_lines": 104, "num_statements": 130, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 26, "excluded_lines": 0}, "missing_lines": [31, 33, 35, 70, 99, 100, 102, 103, 105, 106, 107, 108, 109, 111, 129, 130, 131, 133, 134, 135, 190, 191, 212, 213, 232, 233], "excluded_lines": [], "functions": {"decode_mime_header": {"executed_lines": [22, 23, 25, 26, 27, 28, 29, 30, 37, 39], "summary": {"covered_lines": 10, "num_statements": 13, "percent_covered": 76.92307692307692, "percent_covered_display": "77", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [31, 33, 35], "excluded_lines": []}, "EmailAddress.parse": {"executed_lines": [60, 61, 64, 65, 66, 67], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [70], "excluded_lines": []}, "EmailAddress.__str__": {"executed_lines": [74, 75, 76], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EmailAttachment.from_part": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [99, 100, 102, 103, 105, 106, 107, 108, 109, 111], "excluded_lines": []}, "EmailContent.get_best_content": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [129, 130, 131, 133, 134, 135], "excluded_lines": []}, "Email.from_message": {"executed_lines": [171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186, 187, 188, 189, 194, 195, 196, 199, 200, 202, 203, 204, 205, 207, 208, 211, 216, 217, 220, 221, 226, 228, 229, 237], "summary": {"covered_lines": 35, "num_statements": 41, "percent_covered": 85.36585365853658, "percent_covered_display": "85", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [190, 191, 212, 213, 232, 233], "excluded_lines": []}, "Email.summary": {"executed_lines": [254, 255], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 13, 42, 43, 44, 46, 47, 49, 50, 72, 79, 80, 81, 83, 84, 85, 86, 87, 89, 90, 120, 121, 122, 124, 125, 127, 138, 139, 140, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 156, 157, 252], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EmailAddress": {"executed_lines": [60, 61, 64, 65, 66, 67, 74, 75, 76], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [70], "excluded_lines": []}, "EmailAttachment": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [99, 100, 102, 103, 105, 106, 107, 108, 109, 111], "excluded_lines": []}, "EmailContent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [129, 130, 131, 133, 134, 135], "excluded_lines": []}, "Email": {"executed_lines": [171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 186, 187, 188, 189, 194, 195, 196, 199, 200, 202, 203, 204, 205, 207, 208, 211, 216, 217, 220, 221, 226, 228, 229, 237, 254, 255], "summary": {"covered_lines": 37, "num_statements": 43, "percent_covered": 86.04651162790698, "percent_covered_display": "86", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [190, 191, 212, 213, 232, 233], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 13, 22, 23, 25, 26, 27, 28, 29, 30, 37, 39, 42, 43, 44, 46, 47, 49, 50, 72, 79, 80, 81, 83, 84, 85, 86, 87, 89, 90, 120, 121, 122, 124, 125, 127, 138, 139, 140, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 156, 157, 252], "summary": {"covered_lines": 58, "num_statements": 61, "percent_covered": 95.08196721311475, "percent_covered_display": "95", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [31, 33, 35], "excluded_lines": []}}}, "imap_mcp/oauth2.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 13, 15, 18, 19, 20, 23, 76, 90, 112], "summary": {"covered_lines": 17, "num_statements": 49, "percent_covered": 34.69387755102041, "percent_covered_display": "35", "missing_lines": 32, "excluded_lines": 0}, "missing_lines": [38, 43, 46, 47, 49, 52, 59, 60, 61, 62, 64, 65, 66, 67, 70, 71, 73, 86, 87, 99, 108, 109, 125, 133, 134, 135, 137, 138, 139, 140, 141, 143], "excluded_lines": [], "functions": {"get_access_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [38, 43, 46, 47, 49, 52, 59, 60, 61, 62, 64, 65, 66, 67, 70, 71, 73], "excluded_lines": []}, "generate_oauth2_string": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [86, 87], "excluded_lines": []}, "get_authorization_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [99, 108, 109], "excluded_lines": []}, "exchange_code_for_tokens": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [125, 133, 134, 135, 137, 138, 139, 140, 141, 143], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 13, 15, 18, 19, 20, 23, 76, 90, 112], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 13, 15, 18, 19, 20, 23, 76, 90, 112], "summary": {"covered_lines": 17, "num_statements": 49, "percent_covered": 34.69387755102041, "percent_covered_display": "35", "missing_lines": 32, "excluded_lines": 0}, "missing_lines": [38, 43, 46, 47, 49, 52, 59, 60, 61, 62, 64, 65, 66, 67, 70, 71, 73, 86, 87, 99, 108, 109, 125, 133, 134, 135, 137, 138, 139, 140, 141, 143], "excluded_lines": []}}}, "imap_mcp/oauth2_config.py": {"executed_lines": [1, 8, 9, 10, 11, 13, 16, 17, 19, 37, 38, 39, 40, 41, 42, 44, 45, 78, 79, 90, 91, 92, 93, 94, 96, 97, 98, 101, 102, 104, 112, 123, 124, 127, 128, 137, 140, 141, 143, 144, 145, 147, 148, 149, 150, 151, 152, 154, 155, 157, 158, 160, 161, 163, 164, 166, 167, 169, 170], "summary": {"covered_lines": 57, "num_statements": 65, "percent_covered": 87.6923076923077, "percent_covered_display": "88", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [55, 56, 62, 63, 64, 67, 68, 70], "excluded_lines": [], "functions": {"OAuth2Config.__init__": {"executed_lines": [37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OAuth2Config.from_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [55, 56, 62, 63, 64, 67, 68, 70], "excluded_lines": []}, "OAuth2Config.from_server_config": {"executed_lines": [90, 91, 92, 93, 94, 96, 97, 98, 101, 102, 104], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OAuth2Config.load_client_config": {"executed_lines": [123, 124, 127, 128, 137, 140, 141, 143, 144, 145, 147, 148, 149, 150, 151, 152], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OAuth2Config.client_id": {"executed_lines": [157, 158, 160, 161], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OAuth2Config.client_secret": {"executed_lines": [166, 167, 169, 170], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 8, 9, 10, 11, 13, 16, 17, 19, 44, 45, 78, 79, 112, 154, 155, 163, 164], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"OAuth2Config": {"executed_lines": [37, 38, 39, 40, 41, 42, 90, 91, 92, 93, 94, 96, 97, 98, 101, 102, 104, 123, 124, 127, 128, 137, 140, 141, 143, 144, 145, 147, 148, 149, 150, 151, 152, 157, 158, 160, 161, 166, 167, 169, 170], "summary": {"covered_lines": 41, "num_statements": 49, "percent_covered": 83.6734693877551, "percent_covered_display": "84", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [55, 56, 62, 63, 64, 67, 68, 70], "excluded_lines": []}, "": {"executed_lines": [1, 8, 9, 10, 11, 13, 16, 17, 19, 44, 45, 78, 79, 112, 154, 155, 163, 164], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "imap_mcp/resources.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 12, 15, 27, 28, 29, 30, 33, 41, 43, 44, 45, 48, 49, 56, 57, 65, 103, 104, 114, 115, 118, 119, 123, 126, 129, 130, 131, 142, 148, 149, 159, 160, 163, 164, 166, 167, 169, 171, 177, 179, 181, 184, 185, 199, 204, 207, 208, 219, 220, 222, 224, 226, 230, 235, 238, 239, 241, 242, 244, 249, 252, 253, 255, 256, 257, 258], "summary": {"covered_lines": 72, "num_statements": 98, "percent_covered": 73.46938775510205, "percent_covered_display": "73", "missing_lines": 26, "excluded_lines": 0}, "missing_lines": [67, 69, 71, 73, 74, 77, 80, 81, 82, 83, 85, 97, 98, 99, 100, 143, 144, 145, 174, 195, 196, 227, 236, 245, 246, 247], "excluded_lines": [], "functions": {"get_client_from_context": {"executed_lines": [27, 28, 29, 30], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "register_resources": {"executed_lines": [41, 48, 49, 65, 103, 104, 148, 149, 207, 208], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "register_resources.get_folders_impl": {"executed_lines": [43, 44, 45], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "register_resources.get_folders": {"executed_lines": [56, 57], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "register_resources.list_emails_impl": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [67, 69, 71, 73, 74, 77, 80, 81, 82, 83, 85, 97, 98, 99, 100], "excluded_lines": []}, "register_resources.list_emails": {"executed_lines": [114, 115, 118, 119, 123, 126, 129, 130, 131, 142], "summary": {"covered_lines": 10, "num_statements": 13, "percent_covered": 76.92307692307692, "percent_covered_display": "77", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [143, 144, 145], "excluded_lines": []}, "register_resources.search_emails": {"executed_lines": [159, 160, 163, 164, 166, 167, 169, 171, 177, 179, 181, 184, 185, 199, 204], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [174, 195, 196], "excluded_lines": []}, "register_resources.get_email": {"executed_lines": [219, 220, 222, 224, 226, 230, 235, 238, 239, 241, 242, 244, 249, 252, 253, 255, 256, 257, 258], "summary": {"covered_lines": 19, "num_statements": 24, "percent_covered": 79.16666666666667, "percent_covered_display": "79", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [227, 236, 245, 246, 247], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 12, 15, 33], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 12, 15, 27, 28, 29, 30, 33, 41, 43, 44, 45, 48, 49, 56, 57, 65, 103, 104, 114, 115, 118, 119, 123, 126, 129, 130, 131, 142, 148, 149, 159, 160, 163, 164, 166, 167, 169, 171, 177, 179, 181, 184, 185, 199, 204, 207, 208, 219, 220, 222, 224, 226, 230, 235, 238, 239, 241, 242, 244, 249, 252, 253, 255, 256, 257, 258], "summary": {"covered_lines": 72, "num_statements": 98, "percent_covered": 73.46938775510205, "percent_covered_display": "73", "missing_lines": 26, "excluded_lines": 0}, "missing_lines": [67, 69, 71, 73, 74, 77, 80, 81, 82, 83, 85, 97, 98, 99, 100, 143, 144, 145, 174, 195, 196, 227, 236, 245, 246, 247], "excluded_lines": []}}}, "imap_mcp/server.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 18, 22, 25, 26, 37, 38, 40, 42, 43, 45, 47, 49, 50, 53, 56, 57, 60, 71, 72, 75, 78, 86, 89, 92, 93, 96, 97, 115, 118, 120, 121, 126, 131, 136, 138, 139, 141, 144, 145, 148], "summary": {"covered_lines": 51, "num_statements": 57, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [99, 108, 109, 111, 113, 149], "excluded_lines": [], "functions": {"server_lifespan": {"executed_lines": [37, 38, 40, 42, 43, 45, 47, 49, 50, 53, 56, 57], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "create_server": {"executed_lines": [71, 72, 75, 78, 86, 89, 92, 93, 96, 97, 115], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "create_server.server_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [99, 108, 109, 111, 113], "excluded_lines": []}, "main": {"executed_lines": [120, 121, 126, 131, 136, 138, 139, 141, 144, 145], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 18, 22, 25, 26, 60, 118, 148], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [149], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 18, 22, 25, 26, 37, 38, 40, 42, 43, 45, 47, 49, 50, 53, 56, 57, 60, 71, 72, 75, 78, 86, 89, 92, 93, 96, 97, 115, 118, 120, 121, 126, 131, 136, 138, 139, 141, 144, 145, 148], "summary": {"covered_lines": 51, "num_statements": 57, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [99, 108, 109, 111, 113, 149], "excluded_lines": []}}}, "imap_mcp/tools.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 11, 13, 16, 24, 25, 42, 44, 45, 46, 47, 50, 51, 52, 55, 56, 71, 73, 74, 75, 76, 78, 79, 80, 81, 84, 85, 100, 102, 103, 104, 105, 108, 109, 110, 113, 114, 131, 133, 134, 135, 136, 144, 145, 160, 162, 163, 164, 165, 167, 168, 169, 170, 173, 174, 193, 196, 209, 210, 212, 214, 215, 217, 218, 220, 223, 225, 227, 230, 231, 241, 242, 245, 251, 253, 256, 257, 281, 284, 285, 286, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 308, 309, 310, 312, 316], "summary": {"covered_lines": 108, "num_statements": 119, "percent_covered": 90.75630252100841, "percent_covered_display": "91", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [49, 107, 138, 139, 140, 141, 306, 307, 317, 318, 319], "excluded_lines": [], "functions": {"register_tools": {"executed_lines": [24, 25, 55, 56, 84, 85, 113, 114, 144, 145, 173, 174, 256, 257], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "register_tools.move_email": {"executed_lines": [42, 44, 45, 46, 47, 50, 51, 52], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [49], "excluded_lines": []}, "register_tools.mark_as_read": {"executed_lines": [71, 73, 74, 75, 76, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "register_tools.mark_as_unread": {"executed_lines": [100, 102, 103, 104, 105, 108, 109, 110], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [107], "excluded_lines": []}, "register_tools.flag_email": {"executed_lines": [131, 133, 134, 135, 136], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [138, 139, 140, 141], "excluded_lines": []}, "register_tools.delete_email": {"executed_lines": [160, 162, 163, 164, 165, 167, 168, 169, 170], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "register_tools.search_emails": {"executed_lines": [193, 196, 209, 210, 212, 214, 215, 217, 218, 220, 223, 225, 227, 230, 231, 241, 242, 245, 251, 253], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "register_tools.process_email": {"executed_lines": [281, 284, 285, 286, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 308, 309, 310, 312, 316], "summary": {"covered_lines": 26, "num_statements": 31, "percent_covered": 83.87096774193549, "percent_covered_display": "84", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [306, 307, 317, 318, 319], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 11, 13, 16], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 11, 13, 16, 24, 25, 42, 44, 45, 46, 47, 50, 51, 52, 55, 56, 71, 73, 74, 75, 76, 78, 79, 80, 81, 84, 85, 100, 102, 103, 104, 105, 108, 109, 110, 113, 114, 131, 133, 134, 135, 136, 144, 145, 160, 162, 163, 164, 165, 167, 168, 169, 170, 173, 174, 193, 196, 209, 210, 212, 214, 215, 217, 218, 220, 223, 225, 227, 230, 231, 241, 242, 245, 251, 253, 256, 257, 281, 284, 285, 286, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 308, 309, 310, 312, 316], "summary": {"covered_lines": 108, "num_statements": 119, "percent_covered": 90.75630252100841, "percent_covered_display": "91", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [49, 107, 138, 139, 140, 141, 306, 307, 317, 318, 319], "excluded_lines": []}}}}, "totals": {"covered_lines": 638, "num_statements": 1091, "percent_covered": 58.47846012832264, "percent_covered_display": "58", "missing_lines": 453, "excluded_lines": 0}}

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/non-dirty/imap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server