mcp-instana 0.1.1__py3-none-any.whl → 0.2.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. {mcp_instana-0.1.1.dist-info → mcp_instana-0.2.1.dist-info}/METADATA +460 -139
  2. mcp_instana-0.2.1.dist-info/RECORD +59 -0
  3. src/application/application_analyze.py +373 -160
  4. src/application/application_catalog.py +3 -1
  5. src/application/application_global_alert_config.py +653 -0
  6. src/application/application_metrics.py +6 -2
  7. src/application/application_resources.py +3 -1
  8. src/application/application_settings.py +966 -370
  9. src/application/application_topology.py +6 -2
  10. src/automation/action_catalog.py +416 -0
  11. src/automation/action_history.py +338 -0
  12. src/core/server.py +159 -9
  13. src/core/utils.py +2 -2
  14. src/event/events_tools.py +602 -275
  15. src/infrastructure/infrastructure_analyze.py +7 -3
  16. src/infrastructure/infrastructure_catalog.py +3 -1
  17. src/infrastructure/infrastructure_metrics.py +6 -2
  18. src/infrastructure/infrastructure_resources.py +7 -5
  19. src/infrastructure/infrastructure_topology.py +5 -3
  20. src/prompts/__init__.py +16 -0
  21. src/prompts/application/__init__.py +1 -0
  22. src/prompts/application/application_alerts.py +54 -0
  23. src/prompts/application/application_catalog.py +26 -0
  24. src/prompts/application/application_metrics.py +57 -0
  25. src/prompts/application/application_resources.py +26 -0
  26. src/prompts/application/application_settings.py +75 -0
  27. src/prompts/application/application_topology.py +30 -0
  28. src/prompts/events/__init__.py +1 -0
  29. src/prompts/events/events_tools.py +161 -0
  30. src/prompts/infrastructure/infrastructure_analyze.py +72 -0
  31. src/prompts/infrastructure/infrastructure_catalog.py +53 -0
  32. src/prompts/infrastructure/infrastructure_metrics.py +45 -0
  33. src/prompts/infrastructure/infrastructure_resources.py +74 -0
  34. src/prompts/infrastructure/infrastructure_topology.py +38 -0
  35. src/prompts/settings/__init__.py +0 -0
  36. src/prompts/settings/custom_dashboard.py +157 -0
  37. src/prompts/website/__init__.py +1 -0
  38. src/prompts/website/website_analyze.py +35 -0
  39. src/prompts/website/website_catalog.py +40 -0
  40. src/prompts/website/website_configuration.py +105 -0
  41. src/prompts/website/website_metrics.py +34 -0
  42. src/settings/__init__.py +1 -0
  43. src/settings/custom_dashboard_tools.py +417 -0
  44. src/website/__init__.py +0 -0
  45. src/website/website_analyze.py +433 -0
  46. src/website/website_catalog.py +171 -0
  47. src/website/website_configuration.py +770 -0
  48. src/website/website_metrics.py +241 -0
  49. mcp_instana-0.1.1.dist-info/RECORD +0 -30
  50. src/prompts/mcp_prompts.py +0 -900
  51. src/prompts/prompt_loader.py +0 -29
  52. src/prompts/prompt_registry.json +0 -21
  53. {mcp_instana-0.1.1.dist-info → mcp_instana-0.2.1.dist-info}/WHEEL +0 -0
  54. {mcp_instana-0.1.1.dist-info → mcp_instana-0.2.1.dist-info}/entry_points.txt +0 -0
  55. {mcp_instana-0.1.1.dist-info → mcp_instana-0.2.1.dist-info}/licenses/LICENSE.md +0 -0
@@ -0,0 +1,53 @@
1
+ from typing import Optional
2
+
3
+ from src.prompts import auto_register_prompt
4
+
5
+
6
+ class InfrastructureCatalogPrompts:
7
+ """Class containing infrastructure catalog related prompts"""
8
+
9
+ @auto_register_prompt
10
+ @staticmethod
11
+ def get_available_payload_keys_by_plugin_id(plugin_id: str) -> str:
12
+ """Retrieve available payload keys for a specific plugin"""
13
+ return f"Get payload keys for plugin ID: {plugin_id}"
14
+
15
+ @auto_register_prompt
16
+ @staticmethod
17
+ def get_infrastructure_catalog_metrics(plugin: str, filter: Optional[str] = None) -> str:
18
+ """
19
+ Get the list of available metrics for a specified plugin, supporting metric exploration for dashboards and queries.
20
+
21
+ Args:
22
+ plugin (str): Plugin (e.g., host, JVM, Kubernetes)
23
+ filter (Optional[str], optional): Filter string for narrowing down metrics
24
+ """
25
+ return f"""
26
+ Get infrastructure catalog metrics:
27
+ - Plugin: {plugin}
28
+ - Filter: {filter or 'None'}
29
+ """
30
+
31
+ @auto_register_prompt
32
+ @staticmethod
33
+ def get_tag_catalog(plugin: str) -> str:
34
+ """Get available tags for a specific plugin"""
35
+ return f"Get tag catalog for plugin: {plugin}"
36
+
37
+ @auto_register_prompt
38
+ @staticmethod
39
+ def get_tag_catalog_all() -> str:
40
+ """Retrieve the complete list of tags available across all monitored entities"""
41
+ return "Get all tag catalogs"
42
+
43
+ @classmethod
44
+ def get_prompts(cls):
45
+ """Return all prompts defined in this class"""
46
+ return [
47
+ ('get_available_payload_keys_by_plugin_id', cls.get_available_payload_keys_by_plugin_id),
48
+ ('get_infrastructure_catalog_metrics', cls.get_infrastructure_catalog_metrics),
49
+ ('get_tag_catalog', cls.get_tag_catalog),
50
+ ('get_tag_catalog_all', cls.get_tag_catalog_all),
51
+ ]
52
+
53
+
@@ -0,0 +1,45 @@
1
+ """
2
+ Infrastructure Metrics MCP Prompts Module
3
+
4
+ This module provides infrastructure metrics-specific MCP prompts for Instana monitoring.
5
+ """
6
+
7
+ from typing import Callable, List, Optional, Tuple
8
+
9
+ from src.prompts import auto_register_prompt
10
+
11
+
12
+ class InfrastructureMetricsPrompts:
13
+ """Class containing prompts for infrastructure metrics in Instana."""
14
+
15
+ @auto_register_prompt
16
+ @staticmethod
17
+ def get_infrastructure_metrics(
18
+ offline: bool,
19
+ rollup: int,
20
+ plugin: str,
21
+ window_size: Optional[int] = None,
22
+ query: Optional[str] = None,
23
+ metrics: Optional[List] = None,
24
+ snapshot_ids: Optional[List] = None,
25
+ to: Optional[int] = None,
26
+ ) -> str:
27
+ """Retrieve infrastructure metrics for plugin and query with a given time frame"""
28
+ return f"""
29
+ Get infrastructure metrics:
30
+ - Plugin: {plugin}
31
+ - Query: {query}
32
+ - Metrics: {metrics}
33
+ - Snapshot IDs: {snapshot_ids or 'None'}
34
+ - Offline: {offline or 'False'}
35
+ - Window size: {window_size or '1 hour'}
36
+ - To: {to or 'current time'}
37
+ - Rollup: {rollup or '60 seconds'}
38
+ """
39
+
40
+ @classmethod
41
+ def get_prompts(cls):
42
+ """Get all prompts defined in this class"""
43
+ return [
44
+ ('get_infrastructure_metrics', cls.get_infrastructure_metrics),
45
+ ]
@@ -0,0 +1,74 @@
1
+ from typing import Optional
2
+
3
+ from src.prompts import auto_register_prompt
4
+
5
+
6
+ class InfrastructureResourcesPrompts:
7
+ """Class containing infrastructure resources related prompts"""
8
+
9
+ @auto_register_prompt
10
+ @staticmethod
11
+ def get_infrastructure_monitoring_state() -> str:
12
+ """Get an overview of the current Instana monitoring state"""
13
+ return "Get infrastructure monitoring state"
14
+
15
+ @auto_register_prompt
16
+ @staticmethod
17
+ def get_infrastructure_plugin_payload(
18
+ snapshot_id: str,
19
+ payload_key: str,
20
+ to_time: Optional[int] = None,
21
+ window_size: Optional[int] = None
22
+ ) -> str:
23
+ """Get raw plugin payload data for a specific snapshot entity"""
24
+ return f"""
25
+ Get plugin payload:
26
+ - Snapshot ID: {snapshot_id}
27
+ - Payload key: {payload_key}
28
+ - To time: {to_time or 'current time'}
29
+ - Window size: {window_size or '1 hour'}
30
+ """
31
+
32
+ @auto_register_prompt
33
+ @staticmethod
34
+ def get_infrastructure_metrics_snapshot(
35
+ snapshot_id: str,
36
+ to_time: Optional[int] = None,
37
+ window_size: Optional[int] = None
38
+ ) -> str:
39
+ """Get detailed information for a single infrastructure snapshot"""
40
+ return f"""
41
+ Get infrastructure snapshot:
42
+ - Snapshot ID: {snapshot_id}
43
+ - To time: {to_time or 'current time'}
44
+ - Window size: {window_size or '1 hour'}
45
+ """
46
+
47
+ @auto_register_prompt
48
+ @staticmethod
49
+ def post_infrastructure_metrics_snapshot(
50
+ snapshot_ids: list[str],
51
+ to_time: Optional[int] = None,
52
+ window_size: Optional[int] = None,
53
+ detailed: Optional[bool] = False,
54
+ ) -> str:
55
+ """Fetch details of multiple snapshots by their IDs"""
56
+ return f"""
57
+ Get multiple infrastructure snapshots:
58
+ - Snapshot IDs: {snapshot_ids}
59
+ - To time: {to_time or 'current time'}
60
+ - Window size: {window_size or '1 hour'}
61
+ - Detailed: {detailed or 'False'}
62
+ """
63
+
64
+ @classmethod
65
+ def get_prompts(cls):
66
+ """Return all prompts defined in this class"""
67
+ return [
68
+ ('get_infrastructure_monitoring_state', cls.get_infrastructure_monitoring_state),
69
+ ('get_infrastructure_plugin_payload', cls.get_infrastructure_plugin_payload),
70
+ ('get_infrastructure_metrics_snapshot', cls.get_infrastructure_metrics_snapshot),
71
+ ('post_infrastructure_metrics_snapshot', cls.post_infrastructure_metrics_snapshot),
72
+ ]
73
+
74
+
@@ -0,0 +1,38 @@
1
+ from typing import Optional
2
+
3
+ from src.prompts import auto_register_prompt
4
+
5
+
6
+ class InfrastructureTopologyPrompts:
7
+ """Class containing infrastructure topology related prompts"""
8
+
9
+ @auto_register_prompt
10
+ @staticmethod
11
+ def get_related_hosts(
12
+ snapshot_id: str,
13
+ to_time: Optional[int] = None,
14
+ window_size: Optional[int] = None
15
+ ) -> str:
16
+ """Get hosts related to a specific snapshot"""
17
+ return f"""
18
+ Get related hosts:
19
+ - Snapshot ID: {snapshot_id}
20
+ - To time: {to_time or '1 hour'}
21
+ - Window size: {window_size or '1 hour'}
22
+ """
23
+
24
+ @auto_register_prompt
25
+ @staticmethod
26
+ def get_topology(include_data: Optional[bool] = False) -> str:
27
+ """Retrieve the complete infrastructure topology"""
28
+ return f"Get complete topology with include_data: {include_data or 'False'}"
29
+
30
+ @classmethod
31
+ def get_prompts(cls):
32
+ """Return all prompts defined in this class"""
33
+ return [
34
+ ('get_related_hosts', cls.get_related_hosts),
35
+ ('get_topology', cls.get_topology),
36
+ ]
37
+
38
+
File without changes
@@ -0,0 +1,157 @@
1
+ from typing import Any, Dict, List, Optional
2
+
3
+ from src.prompts import auto_register_prompt
4
+
5
+
6
+ class CustomDashboardPrompts:
7
+ """Class containing custom dashboard related prompts"""
8
+
9
+ @auto_register_prompt
10
+ @staticmethod
11
+ def create_dashboard(title: str,
12
+ widgets: Optional[List[Dict[str, Any]]] = None,
13
+ access_rules: Optional[List[Dict[str, Any]]] = None,
14
+ description: Optional[str] = None,
15
+ tags: Optional[List[str]] = None) -> str:
16
+ """Create a new custom dashboard with specified configuration"""
17
+ return f"""
18
+ Create a new custom dashboard with:
19
+ - Title: {title}
20
+ - Description: {description or 'None'}
21
+ - Widgets: {widgets or 'None'}
22
+ - Access rules: {access_rules or 'None'}
23
+ - Tags: {tags or 'None'}
24
+ """
25
+
26
+ @auto_register_prompt
27
+ @staticmethod
28
+ def get_dashboard_list(limit: Optional[int] = None,
29
+ tags: Optional[List[str]] = None,
30
+ search: Optional[str] = None) -> str:
31
+ """Retrieve a list of all custom dashboards"""
32
+ return f"""
33
+ Get custom dashboards list:
34
+ - Limit: {limit or 'None'}
35
+ - Tags filter: {tags or 'None'}
36
+ - Search: {search or 'None'}
37
+ """
38
+
39
+ @auto_register_prompt
40
+ @staticmethod
41
+ def get_dashboard_details(dashboard_id: str) -> str:
42
+ """Get detailed information about a specific custom dashboard"""
43
+ return f"""
44
+ Get custom dashboard details:
45
+ - Dashboard ID: {dashboard_id}
46
+ """
47
+
48
+ @auto_register_prompt
49
+ @staticmethod
50
+ def update_dashboard(dashboard_id: str,
51
+ title: Optional[str] = None,
52
+ widgets: Optional[List[Dict[str, Any]]] = None,
53
+ access_rules: Optional[List[Dict[str, Any]]] = None,
54
+ description: Optional[str] = None,
55
+ tags: Optional[List[str]] = None) -> str:
56
+ """Update an existing custom dashboard configuration"""
57
+ return f"""
58
+ Update custom dashboard:
59
+ - Dashboard ID: {dashboard_id}
60
+ - Title: {title or 'None'}
61
+ - Description: {description or 'None'}
62
+ - Widgets: {widgets or 'None'}
63
+ - Access rules: {access_rules or 'None'}
64
+ - Tags: {tags or 'None'}
65
+ """
66
+
67
+ @auto_register_prompt
68
+ @staticmethod
69
+ def delete_dashboard(dashboard_id: str) -> str:
70
+ """Delete a custom dashboard"""
71
+ return f"""
72
+ Delete custom dashboard:
73
+ - Dashboard ID: {dashboard_id}
74
+ """
75
+
76
+ @auto_register_prompt
77
+ @staticmethod
78
+ def get_shareable_users(dashboard_id: str) -> str:
79
+ """Get list of users who can be granted access to a custom dashboard"""
80
+ return f"""
81
+ Get shareable users for dashboard:
82
+ - Dashboard ID: {dashboard_id}
83
+ """
84
+
85
+ @auto_register_prompt
86
+ @staticmethod
87
+ def get_shareable_api_tokens(dashboard_id: str) -> str:
88
+ """Get list of API tokens that can access a custom dashboard"""
89
+ return f"""
90
+ Get shareable API tokens for dashboard:
91
+ - Dashboard ID: {dashboard_id}
92
+ """
93
+
94
+ @auto_register_prompt
95
+ @staticmethod
96
+ def create_metric_widget(title: str,
97
+ metric_name: str,
98
+ time_range: Optional[str] = None,
99
+ aggregation: Optional[str] = None,
100
+ filters: Optional[Dict[str, Any]] = None) -> str:
101
+ """Create a metric widget for a custom dashboard"""
102
+ return f"""
103
+ Create metric widget:
104
+ - Title: {title}
105
+ - Metric: {metric_name}
106
+ - Time range: {time_range or 'last 1 hour'}
107
+ - Aggregation: {aggregation or 'None'}
108
+ - Filters: {filters or 'None'}
109
+ """
110
+
111
+ @auto_register_prompt
112
+ @staticmethod
113
+ def create_chart_widget(title: str,
114
+ chart_type: str,
115
+ metrics: List[str],
116
+ time_range: Optional[str] = None,
117
+ group_by: Optional[str] = None) -> str:
118
+ """Create a chart widget for a custom dashboard"""
119
+ return f"""
120
+ Create chart widget:
121
+ - Title: {title}
122
+ - Chart type: {chart_type}
123
+ - Metrics: {metrics}
124
+ - Time range: {time_range or 'last 1 hour'}
125
+ - Group by: {group_by or 'None'}
126
+ """
127
+
128
+ @auto_register_prompt
129
+ @staticmethod
130
+ def create_application_dashboard(application_name: str,
131
+ include_metrics: Optional[List[str]] = None,
132
+ include_topology: Optional[bool] = None,
133
+ time_range: Optional[str] = None) -> str:
134
+ """Create a comprehensive dashboard for a specific application"""
135
+ return f"""
136
+ Create application dashboard:
137
+ - Application: {application_name}
138
+ - Metrics: {include_metrics or 'None'}
139
+ - Include topology: {include_topology or 'None'}
140
+ - Time range: {time_range or 'last 1 hour'}
141
+ """
142
+
143
+ @classmethod
144
+ def get_prompts(cls):
145
+ """Return all prompts defined in this class"""
146
+ return [
147
+ ('create_dashboard', cls.create_dashboard),
148
+ ('get_dashboard_list', cls.get_dashboard_list),
149
+ ('get_dashboard_details', cls.get_dashboard_details),
150
+ ('update_dashboard', cls.update_dashboard),
151
+ ('delete_dashboard', cls.delete_dashboard),
152
+ ('get_shareable_users', cls.get_shareable_users),
153
+ ('get_shareable_api_tokens', cls.get_shareable_api_tokens),
154
+ ('create_metric_widget', cls.create_metric_widget),
155
+ ('create_chart_widget', cls.create_chart_widget),
156
+ ('create_application_dashboard', cls.create_application_dashboard),
157
+ ]
@@ -0,0 +1 @@
1
+ # Website prompts module
@@ -0,0 +1,35 @@
1
+ from typing import Optional
2
+
3
+ from src.prompts import auto_register_prompt
4
+
5
+
6
+ class WebsiteAnalyzePrompts:
7
+ """Class containing website analyze related prompts"""
8
+
9
+ @auto_register_prompt
10
+ @staticmethod
11
+ def get_website_beacon_groups(payload: Optional[dict] = None, fill_time_series: Optional[bool] = None) -> str:
12
+ """Retrieve grouped website beacon metrics for analyzing performance across different dimensions like page URLs, browsers, or geographic locations"""
13
+ return f"""
14
+ Get website beacon groups with payload:
15
+ - Payload: {payload or 'None (will use default payload)'}
16
+ - Fill time series: {fill_time_series or 'None'}
17
+ """
18
+
19
+ @auto_register_prompt
20
+ @staticmethod
21
+ def get_website_beacons(payload: Optional[dict] = None, fill_time_series: Optional[bool] = None) -> str:
22
+ """Retrieve individual website beacon metrics providing detailed information about specific beacon events"""
23
+ return f"""
24
+ Get website beacons with payload:
25
+ - Payload: {payload or 'None (will use default payload)'}
26
+ - Fill time series: {fill_time_series or 'None'}
27
+ """
28
+
29
+ @classmethod
30
+ def get_prompts(cls):
31
+ """Return all prompts defined in this class"""
32
+ return [
33
+ ('get_website_beacon_groups', cls.get_website_beacon_groups),
34
+ ('get_website_beacons', cls.get_website_beacons),
35
+ ]
@@ -0,0 +1,40 @@
1
+ from typing import Optional
2
+
3
+ from src.prompts import auto_register_prompt
4
+
5
+
6
+ class WebsiteCatalogPrompts:
7
+ """Class containing website catalog related prompts"""
8
+
9
+ @auto_register_prompt
10
+ @staticmethod
11
+ def get_website_catalog_metrics() -> str:
12
+ """Retrieve all available metric definitions for website monitoring to discover what metrics are available"""
13
+ return """
14
+ Get website catalog metrics to discover available website monitoring metrics.
15
+ """
16
+
17
+ @auto_register_prompt
18
+ @staticmethod
19
+ def get_website_catalog_tags() -> str:
20
+ """Retrieve all available tags for website monitoring to discover what tags are available for filtering beacons"""
21
+ return """
22
+ Get website catalog tags to discover available website monitoring tags for filtering.
23
+ """
24
+
25
+ @auto_register_prompt
26
+ @staticmethod
27
+ def get_website_tag_catalog() -> str:
28
+ """Retrieve all available tags for website monitoring to discover what tags are available for filtering beacons"""
29
+ return """
30
+ Get website tag catalog to discover available website monitoring tags for filtering.
31
+ """
32
+
33
+ @classmethod
34
+ def get_prompts(cls):
35
+ """Return all prompts defined in this class"""
36
+ return [
37
+ ('get_website_catalog_metrics', cls.get_website_catalog_metrics),
38
+ ('get_website_catalog_tags', cls.get_website_catalog_tags),
39
+ ('get_website_tag_catalog', cls.get_website_tag_catalog),
40
+ ]
@@ -0,0 +1,105 @@
1
+ from typing import Optional, Union
2
+
3
+ from src.prompts import auto_register_prompt
4
+
5
+
6
+ class WebsiteConfigurationPrompts:
7
+ """Class containing website configuration related prompts"""
8
+
9
+ @auto_register_prompt
10
+ @staticmethod
11
+ def get_websites() -> str:
12
+ """Retrieve all configured websites in your Instana environment"""
13
+ return """
14
+ Get all websites to see configured website monitoring setups.
15
+ """
16
+
17
+ @auto_register_prompt
18
+ @staticmethod
19
+ def get_website(website_id: str) -> str:
20
+ """Retrieve configuration details for a specific website"""
21
+ return f"""
22
+ Get website configuration:
23
+ - Website ID: {website_id}
24
+ """
25
+
26
+ @auto_register_prompt
27
+ @staticmethod
28
+ def create_website(payload: Union[dict, str]) -> str:
29
+ """Create a new website configuration in your Instana environment"""
30
+ return f"""
31
+ Create website with configuration:
32
+ - Payload: {payload}
33
+ """
34
+
35
+ @auto_register_prompt
36
+ @staticmethod
37
+ def delete_website(website_id: str) -> str:
38
+ """Delete a website configuration from your Instana environment"""
39
+ return f"""
40
+ Delete website:
41
+ - Website ID: {website_id}
42
+ """
43
+
44
+ @auto_register_prompt
45
+ @staticmethod
46
+ def rename_website(website_id: str, payload: Union[dict, str]) -> str:
47
+ """Rename a website configuration in your Instana environment"""
48
+ return f"""
49
+ Rename website:
50
+ - Website ID: {website_id}
51
+ - Rename payload: {payload}
52
+ """
53
+
54
+ @auto_register_prompt
55
+ @staticmethod
56
+ def get_website_geo_location_configuration(website_id: str) -> str:
57
+ """Retrieve geo-location configuration for a specific website"""
58
+ return f"""
59
+ Get website geo-location configuration:
60
+ - Website ID: {website_id}
61
+ """
62
+
63
+ @auto_register_prompt
64
+ @staticmethod
65
+ def update_website_geo_location_configuration(website_id: str, payload: Union[dict, str]) -> str:
66
+ """Update geo-location configuration for a specific website"""
67
+ return f"""
68
+ Update website geo-location configuration:
69
+ - Website ID: {website_id}
70
+ - Configuration payload: {payload}
71
+ """
72
+
73
+ @auto_register_prompt
74
+ @staticmethod
75
+ def get_website_ip_masking_configuration(website_id: str) -> str:
76
+ """Retrieve IP masking configuration for a specific website"""
77
+ return f"""
78
+ Get website IP masking configuration:
79
+ - Website ID: {website_id}
80
+ """
81
+
82
+ @auto_register_prompt
83
+ @staticmethod
84
+ def update_website_ip_masking_configuration(website_id: str, payload: Union[dict, str]) -> str:
85
+ """Update IP masking configuration for a specific website"""
86
+ return f"""
87
+ Update website IP masking configuration:
88
+ - Website ID: {website_id}
89
+ - Configuration payload: {payload}
90
+ """
91
+
92
+ @classmethod
93
+ def get_prompts(cls):
94
+ """Return all prompts defined in this class"""
95
+ return [
96
+ ('get_websites', cls.get_websites),
97
+ ('get_website', cls.get_website),
98
+ ('create_website', cls.create_website),
99
+ ('delete_website', cls.delete_website),
100
+ ('rename_website', cls.rename_website),
101
+ ('get_website_geo_location_configuration', cls.get_website_geo_location_configuration),
102
+ ('update_website_geo_location_configuration', cls.update_website_geo_location_configuration),
103
+ ('get_website_ip_masking_configuration', cls.get_website_ip_masking_configuration),
104
+ ('update_website_ip_masking_configuration', cls.update_website_ip_masking_configuration),
105
+ ]
@@ -0,0 +1,34 @@
1
+ from typing import Optional
2
+
3
+ from src.prompts import auto_register_prompt
4
+
5
+
6
+ class WebsiteMetricsPrompts:
7
+ """Class containing website metrics related prompts"""
8
+
9
+ @auto_register_prompt
10
+ @staticmethod
11
+ def get_website_beacon_metrics_v2(payload: Optional[dict] = None) -> str:
12
+ """Retrieve website beacon metrics using the v2 API including page load times, error rates, etc., over a given time frame"""
13
+ return f"""
14
+ Get website beacon metrics v2 with payload:
15
+ - Payload: {payload or 'None (will use default payload)'}
16
+ """
17
+
18
+ @auto_register_prompt
19
+ @staticmethod
20
+ def get_website_page_load(page_id: str, timestamp: int) -> str:
21
+ """Retrieve detailed beacon information for a specific page load event"""
22
+ return f"""
23
+ Get website page load details:
24
+ - Page ID: {page_id}
25
+ - Timestamp: {timestamp}
26
+ """
27
+
28
+ @classmethod
29
+ def get_prompts(cls):
30
+ """Return all prompts defined in this class"""
31
+ return [
32
+ ('get_website_beacon_metrics_v2', cls.get_website_beacon_metrics_v2),
33
+ ('get_website_page_load', cls.get_website_page_load),
34
+ ]
@@ -0,0 +1 @@
1
+ # Settings Module for Instana MCP