io.github.ryanmat/logicmonitor
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AWX_URL | No | Ansible Automation Platform controller URL (e.g., `https://aap.example.com`) | |
| AWX_TOKEN | No | AAP personal access token | |
| HF_DEVICE | No | Torch device for inference (cpu, cuda, mps, auto) | auto |
| LM_PORTAL | Yes | LogicMonitor portal hostname (e.g., `company.logicmonitor.com`) | |
| LM_AGE_KEY | No | Path to the age identity that decrypts the vault (multi-portal) | |
| LM_TIMEOUT | No | Request timeout in seconds (range: 5-300) | 30 |
| TF_TIMEOUT | No | Terraform command timeout in seconds | 300 |
| AWX_TIMEOUT | No | Request timeout in seconds for AAP API calls | 30 |
| WATSONX_URL | No | IBM watsonx.ai endpoint URL | https://us-south.ml.cloud.ibm.com |
| HF_CACHE_DIR | No | HuggingFace model cache directory | |
| HF_LLM_MODEL | No | HuggingFace LLM model name or path | ibm-granite/granite-3.3-2b-instruct |
| HF_TTM_MODEL | No | HuggingFace TTM model name or path | ibm-granite/granite-timeseries-ttm-r2 |
| LM_ACCESS_ID | No | LMv1 API access ID (for ingestion APIs) | |
| LM_HTTP_HOST | No | HTTP server bind address | 0.0.0.0 |
| LM_HTTP_PORT | No | HTTP server port | 8080 |
| LM_LOG_LEVEL | No | Logging level: `debug`, `info`, `warning`, or `error` | warning |
| LM_TRANSPORT | No | Transport mode: `stdio` (local) or `http` (remote) | stdio |
| LM_ACCESS_KEY | No | LMv1 API access key (for ingestion APIs) | |
| LM_VAULT_FILE | No | Path to the age-encrypted portal vault (multi-portal) | |
| AWX_VERIFY_SSL | No | Verify SSL certificates for AAP connections | true |
| LM_API_VERSION | No | API version | 3 |
| LM_MAX_RETRIES | No | Max retries for rate-limited/server error requests (range: 0-10) | 3 |
| AWX_MAX_RETRIES | No | Max retries for failed AAP API requests | 3 |
| LM_BEARER_TOKEN | No | API Bearer token (min 10 characters) | |
| LM_CORS_ORIGINS | No | Comma-separated CORS origins (default: none) | |
| LM_MULTI_PORTAL | No | Serve many customer portals from one server, selected at runtime via `use_portal`. Stdio-only. | false |
| LM_PORTALS_FILE | No | Plaintext JSON portal map (multi-portal, testing only; the encrypted vault wins when both are set) | |
| WATSONX_API_KEY | No | IBM Cloud API key for watsonx.ai (enables Granite TTM + NL summaries) | |
| WATSONX_TIMEOUT | No | Request timeout in seconds for watsonx.ai API calls | 60 |
| LM_ENABLED_TOOLS | No | Comma-separated tool names or glob patterns to enable (e.g., `get_*,triage`). Mutually exclusive with `LM_DISABLED_TOOLS`. | |
| TF_WORKSPACE_DIR | No | Root directory for Terraform workspaces (enables Terraform tools) | |
| LM_DISABLED_TOOLS | No | Comma-separated tool names or glob patterns to disable (e.g., `delete_*`). Mutually exclusive with `LM_ENABLED_TOOLS`. | |
| LM_MCP_CATEGORIES | No | Comma-separated category names to include: `read`, `write`, `delete`, `export`, `import`, `session`, `workflow`. Composes by intersection with `LM_ENABLED_TOOLS`/`LM_DISABLED_TOOLS` -- only narrows, never expands. Useful for clients with tool-count limits (e.g., Cursor's 40-tool cap). | |
| LM_HTTP_AUTH_TOKEN | No | Require this bearer token on `/mcp` and `/api/v1/*` (min 16 chars). Health endpoints and `/` stay open for probes. HTTP transport only. | |
| LM_SESSION_ENABLED | No | Enable session context tracking | true |
| WATSONX_PROJECT_ID | No | IBM watsonx.ai project ID | |
| LM_FIELD_VALIDATION | No | Field validation: `off`, `warn`, or `error` | warn |
| TF_TERRAFORM_BINARY | No | Path to the terraform binary | terraform |
| LM_SESSION_HISTORY_SIZE | No | Number of tool calls to keep in history | 50 |
| LM_SESSION_PERSIST_PATH | No | File path for persistent session variables (survives restarts) | |
| TF_AUTO_APPROVE_ENABLED | No | Enable terraform apply/destroy operations | false |
| LM_ENABLE_WRITE_OPERATIONS | No | Enable write operations (create, update, delete) | false |
| LM_HEALTH_CHECK_CONNECTIVITY | No | Include LM API ping in health checks | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| completions | {} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_devicesC | List devices (resources) from LogicMonitor with optional filtering |
| get_deviceB | Get detailed information about a specific device (resource) |
| get_device_groupsB | List device/resource groups from LogicMonitor |
| get_device_groupA | Get detailed information about a specific device/resource group, including appliesTo expression and parent ID |
| create_deviceB | Create a new device/resource (requires write permission) |
| update_deviceA | Update an existing device/resource (requires write permission). Custom properties are merged with existing properties (not replaced). |
| delete_deviceA | Delete a device/resource (requires write permission). Soft delete by default. |
| recover_deviceA | Recover a soft-deleted device/resource (requires write permission). Only works within the recovery window. |
| bulk_delete_devicesA | Delete multiple devices/resources in one operation (max 100, requires write permission). Soft delete by default. |
| create_device_groupB | Create a new device/resource group (requires write permission) |
| update_device_groupA | Update a device/resource group (requires write permission). Custom properties are merged with existing. |
| delete_device_groupB | Delete a device/resource group (requires write permission). Shows impact. |
| get_alertsA | Get alerts from LogicMonitor with optional filtering For Kubernetes clusters, use group_id (from get_device_groups) instead of device — the device name filter does not work reliably for K8s resources. Common mistakes: startEpoch/endEpoch use SECONDS not milliseconds. String filter values need double quotes (e.g., monitorObjectName:"hostname"). |
| get_alert_detailsB | Get detailed information about a specific alert |
| acknowledge_alertA | Acknowledge an alert (requires write permission) Common mistakes: alert_id works with or without the LMA prefix. |
| add_alert_noteA | Add a note to an alert without acknowledging (requires write permission) |
| bulk_acknowledge_alertsA | Acknowledge multiple alerts at once (max 100, requires write permission) |
| list_sdtsC | List scheduled downtimes from LogicMonitor |
| create_sdtA | Create a scheduled downtime (requires write permission) Common mistakes: duration_minutes is MINUTES not hours/seconds. DeviceSDT needs device_id, DeviceGroupSDT needs device_group_id. DeviceDataSourceSDT needs device_id + datasource_id. Cloud resources (collector_id=-2) may not support DeviceSDT; use DeviceGroupSDT on their parent group instead. |
| delete_sdtB | Delete a scheduled downtime (requires write permission) |
| update_sdtA | Update a scheduled downtime (requires write permission). Uses fetch-modify-PUT to preserve unmodified fields. |
| bulk_create_device_sdtB | Create SDT for multiple devices/resources (max 100, requires write permission) |
| bulk_delete_sdtA | Delete multiple SDTs at once (max 100, requires write permission) |
| get_active_sdtsB | Get currently active SDTs |
| get_upcoming_sdtsA | Get SDTs scheduled to start within a time window |
| get_collectorsC | List collectors from LogicMonitor |
| get_collectorA | Get detailed information about a specific collector |
| get_collector_groupsB | List collector groups |
| get_collector_groupA | Get details about a specific collector group |
| update_collectorB | Update a collector (requires write permission). Change group, description, failback, or escalation chain. |
| delete_collectorA | Delete a collector (requires write permission). Blocks if devices are still assigned. |
| create_collector_groupA | Create a collector group (requires write permission) |
| update_collector_groupB | Update a collector group (requires write permission) |
| delete_collector_groupA | Delete a collector group (requires write permission). Blocks if collectors are still assigned. |
| get_device_datasourcesA | Get datasources applied to a device (resource) Common mistakes: Returns device-datasource associations not definitions. The ID returned here is device_datasource_id for use with get_device_data. |
| get_device_instancesA | Get instances of a datasource on a device (resource) |
| add_device_instanceA | Add a monitored instance to a datasource on a device (requires write permission). Used for datasources without Active Discovery (e.g. ServiceStatus). |
| update_device_instanceB | Update a monitored instance on a device (requires write permission) |
| delete_device_instanceA | Delete a monitored instance from a datasource on a device (requires write permission) |
| get_device_dataA | Get metric data for a device/resource datasource instance Common mistakes: Returns most recent data unless period/start/end specified. Requires device_datasource_id (from get_device_datasources) not the datasource definition ID. |
| get_graph_dataC | Get graph image data for visualization |
| get_dashboardsB | List dashboards from LogicMonitor |
| get_dashboardB | Get detailed information about a specific dashboard |
| get_dashboard_widgetsB | Get widgets configured on a dashboard |
| get_widgetB | Get details about a specific widget |
| create_dashboardA | Create a dashboard, optionally from template (requires write permission) |
| update_dashboardB | Update an existing dashboard (requires write permission) |
| delete_dashboardA | Delete a dashboard (requires write permission) |
| add_widgetB | Add a widget to a dashboard (requires write permission). For text widgets: use 'content' (not 'html') as the config key. For bigNumber widgets: dataPoints need 'name' field, include 'bigNumberItems' array, colorThresholds use 'relation'/'threshold', aggregateFunction is lowercase (e.g., 'average'). For cgraph widgets: deviceDisplayName/deviceGroupFullPath/instanceName must be GlobMatchToggle objects {'value': '...', 'isGlob': true}, dataPoints need 'display' object, graphInfo needs 'aggregate': false when using topX. For deviceSLA widgets: required config fields are 'groupName' (not deviceGroupFullPath), 'deviceName', 'dataSourceFullName', 'metric', 'threshold'. Also required: 'daysInWeek' (e.g., '1,2,3,4,5,6,7'), 'periodInOneDay' (e.g., '0:00-23:59'), 'displayType' (0=availability, 1=timeline), 'calculationMethod' (0=percent, 1=actual), 'unmonitoredTimeAlertStatus' (0=ignore, 1=warning, 2=error, 3=critical). |
| update_widgetB | Update a widget (requires write permission) |
| delete_widgetA | Delete a widget from a dashboard (requires write permission) |
| get_dashboard_groupsB | List dashboard groups |
| get_dashboard_groupB | Get details about a specific dashboard group |
| create_dashboard_groupA | Create a dashboard group in LogicMonitor (requires write permission) |
| delete_dashboard_groupB | Delete a dashboard group from LogicMonitor (requires write permission) |
| update_dashboard_groupB | Update a dashboard group (requires write permission) |
| get_websitesC | List websites from LogicMonitor |
| get_websiteB | Get detailed information about a specific website |
| get_website_groupsB | List website groups |
| get_website_dataB | Get synthetic check data for a website |
| create_websiteA | Create a website check in LogicMonitor (requires write permission) |
| update_websiteB | Update a website check in LogicMonitor (requires write permission) |
| delete_websiteA | Delete a website check from LogicMonitor (requires write permission) |
| create_website_groupA | Create a website group in LogicMonitor (requires write permission) |
| delete_website_groupA | Delete a website group from LogicMonitor (requires write permission) |
| get_reportsC | List reports from LogicMonitor |
| get_reportB | Get detailed information about a specific report |
| get_report_groupsC | List report groups |
| get_scheduled_reportsB | Get reports with schedules configured |
| run_reportA | Run/execute a report (requires write permission) |
| get_report_executionA | Poll the status of a report generation task started by run_report (returns status and result URL when finished) |
| create_reportA | Create a new report (requires write permission) |
| update_report_scheduleA | Update a report's schedule (requires write permission) |
| delete_reportB | Delete a report (requires write permission) |
| get_escalation_chainsC | List escalation chains |
| get_escalation_chainA | Get details about a specific escalation chain |
| get_recipient_groupsB | List recipient groups |
| get_recipient_groupB | Get details about a specific recipient group |
| create_escalation_chainB | Create an escalation chain (requires write permission) |
| update_escalation_chainB | Update an escalation chain (requires write permission) |
| delete_escalation_chainA | Delete an escalation chain (requires write permission) |
| create_recipient_groupA | Create a recipient group (requires write permission) |
| update_recipient_groupA | Update a recipient group (requires write permission) |
| delete_recipient_groupA | Delete a recipient group (requires write permission) |
| get_integrationsA | List LogicMonitor integrations (Custom HTTP Delivery, Slack, PagerDuty, etc.). Returns a short summary per integration. |
| get_integrationA | Get a specific integration's full definition. Field set depends on integration type; password/OAuth secret fields are masked. |
| create_http_integrationA | Create a Custom HTTP Delivery integration (type=http). Required fields: name, url. Use extra_fields for OAuth, actionNotes*, updateData*, or the 'extra' UI metadata blob. (requires write permission) |
| update_http_integrationA | Update a Custom HTTP Delivery integration via PATCH. Only fields explicitly provided are sent; omitted fields keep their current server values. (requires write permission) |
| delete_integrationA | Delete an integration by ID. Works for any integration type (http, slack-2, pagerduty, etc.). (requires write permission) |
| get_alert_rulesB | List alert rules |
| get_alert_ruleA | Get details about a specific alert rule |
| create_alert_ruleA | Create an alert rule in LogicMonitor (requires write permission) |
| update_alert_ruleB | Update an alert rule in LogicMonitor (requires write permission) |
| delete_alert_ruleA | Delete an alert rule from LogicMonitor (requires write permission) |
| get_usersA | List users from LogicMonitor |
| get_userA | Get details about a specific user |
| get_rolesB | List roles |
| get_roleA | Get details about a specific role |
| create_userB | Create a user in LogicMonitor (requires write permission) |
| update_userB | Update a user in LogicMonitor (requires write permission) |
| delete_userA | Delete a user from LogicMonitor (requires write permission) |
| get_access_groupsB | List access groups |
| get_access_groupA | Get details about a specific access group |
| get_api_tokensB | List API tokens |
| get_api_tokenA | Get details about a specific API token |
| get_device_propertiesC | Get all properties of a device (resource) |
| get_device_propertyA | Get a specific property of a device (resource) |
| update_device_propertyB | Update or create a device/resource property (requires write permission) |
| get_datasourcesC | List datasources from LogicMonitor |
| get_datasourceC | Get details about a specific datasource |
| create_datasourceA | Create a DataSource via REST API from a full definition dict (requires write permission). Accepts REST API format (same as export_datasource output). Use for round-tripping exports or building definitions from scratch. For LM Exchange format, use import_datasource. Script DataSource datapoints require appropriate type values. |
| update_datasourceA | RAW UPDATE -- full-replace semantics. Any field omitted from |
| delete_datasourceA | Delete a DataSource definition (requires write permission). Existing collected data is retained. |
| get_configsourcesC | List ConfigSources |
| get_configsourceB | Get details about a specific ConfigSource |
| get_configsource_update_reasonsB | Get update history and audit trail for a ConfigSource |
| get_device_configB | List config versions collected for a device instance |
| get_device_config_versionA | Get a specific config version with full content and diffs |
| collect_device_configB | Trigger an on-demand config collection for a device instance |
| get_eventsourcesB | List EventSources |
| get_eventsourceB | Get details about a specific EventSource |
| get_device_eventsourcesA | Get EventSources applied to a device (resource). Returns device-level EventSource associations. |
| update_device_eventsourceA | Update a device-level EventSource association (requires write permission). Use to enable or disable alerting for an EventSource on a specific device. |
| get_propertysourcesC | List PropertySources |
| get_propertysourceA | Get details about a specific PropertySource |
| get_topologysourcesC | List TopologySources |
| get_topologysourceC | Get details about a specific TopologySource |
| get_logsourcesC | List LogSources |
| get_logsourceB | Get details about a specific LogSource |
| get_device_logsourcesA | Get LogSources applied to a device (resource) |
| get_netscansC | List network scans |
| get_netscanB | Get details about a specific network scan |
| run_netscanB | Execute a network scan (requires write permission) |
| get_oidsB | List OID definitions |
| get_oidC | Get details about a specific OID |
| get_servicesB | List Service Insight business services (deviceType 6 devices, including APM trace services) |
| get_serviceA | Get details about a specific Service Insight service |
| get_service_groupsA | List Service Insight service groups (BizService device groups) |
| get_ops_notesC | List ops notes |
| get_ops_noteB | Get details about a specific ops note |
| add_ops_noteB | Add an ops note (requires write permission) |
| update_ops_noteB | Update an ops note (requires write permission) |
| delete_ops_noteA | Delete an ops note (requires write permission) |
| get_audit_logsC | Get audit logs from LogicMonitor |
| get_api_token_auditB | Get API token usage audit logs |
| get_login_auditB | Get login/authentication audit logs |
| get_change_auditB | Get configuration change audit logs |
| get_topology_mapC | Get network topology map data |
| get_device_neighborsB | Get neighboring devices/resources based on topology |
| get_device_interfacesB | Get network interfaces for a device (resource) |
| get_network_flowsB | Get network flow data (NetFlow/sFlow) |
| get_device_connectionsC | Get device/resource relationships and connections |
| get_batchjobsC | List batch jobs |
| get_batchjobA | Get details about a specific batch job |
| get_device_batchjobsA | List BatchJob datasources applied to a device (resource); per-run output lives in instance data via get_device_data |
| get_scheduled_downtime_jobsC | Get batch jobs related to SDT automation |
| get_cost_recommendationsB | Get cost optimization recommendations. Category filter takes the category description string from get_cost_recommendation_categories |
| get_idle_resourcesA | Get idle/underutilized cloud resources (resolved from idle-type cost recommendation categories) |
| get_cost_recommendation_categoriesA | Get cost recommendation categories with counts and savings |
| get_cost_recommendationA | Get a specific cost recommendation by ID (v224 API) |
| get_otlp_metric_namesA | [PREVIEW] List metric names ingested via native OpenTelemetry (OTLP). Requires the OTLP Metrics feature flag; returns a friendly notice when unavailable |
| get_otlp_metric_labelsB | [PREVIEW] List label names on native OTLP metrics, optionally narrowed to one metric |
| get_otlp_label_valuesA | [PREVIEW] List values observed for one native OTLP metric label (e.g. all service_name values) |
| query_otlp_metricsA | [PREVIEW] Run a PromQL range query against native OTLP metrics. Returns a time-series matrix |
| export_datasourceA | Export a datasource definition (REST API format). Output can be used with create_datasource or update_datasource. |
| export_dashboardB | Export a dashboard definition |
| export_alert_ruleB | Export an alert rule definition |
| export_escalation_chainB | Export an escalation chain definition |
| export_configsourceA | Export a ConfigSource definition (REST API format). Output can be used with create_configsource or update_configsource. |
| export_eventsourceA | Export an EventSource definition (REST API format). Output can be used with create_eventsource or update_eventsource. |
| export_propertysourceA | Export a PropertySource definition (REST API format). Output can be used with create_propertysource or update_propertysource. |
| export_logsourceA | Export a LogSource definition (REST API format). Output can be used with create_logsource or update_logsource. |
| export_diagnosticsourceA | Export a DiagnosticSource definition (REST API format). Output can be used with create_diagnosticsource or update_diagnosticsource. |
| export_remediationsourceA | Export a RemediationSource definition (REST API format). Output can be used with create_remediationsource or update_remediationsource. |
| import_datasourceA | Import a DataSource from LM Exchange JSON format via multipart upload (requires write permission). This expects LM Exchange format, not REST API format. For REST API format definitions (e.g., from export_datasource), use create_datasource instead. |
| create_configsourceA | Create a ConfigSource via REST API from a full definition dict (requires write permission). Accepts REST API format (same as export_configsource output). For LM Exchange format, use import_configsource. |
| update_configsourceA | RAW UPDATE -- full-replace semantics. Any field omitted from |
| delete_configsourceA | Delete a ConfigSource definition (requires write permission). Existing collected data is retained. |
| create_eventsourceA | Create an EventSource via REST API from a full definition dict (requires write permission). Accepts REST API format (same as export_eventsource output). For LM Exchange format, use import_eventsource. |
| update_eventsourceA | RAW UPDATE -- full-replace semantics. Any field omitted from |
| delete_eventsourceA | Delete an EventSource definition (requires write permission). Existing collected data is retained. |
| import_configsourceA | Import a ConfigSource from LM Exchange JSON format via multipart upload (requires write permission). For REST API format definitions (e.g., from export_configsource), use create_configsource instead. |
| import_eventsourceA | Import an EventSource from LM Exchange JSON format via multipart upload (requires write permission). For REST API format definitions (e.g., from export_eventsource), use create_eventsource instead. |
| create_propertysourceA | Create a PropertySource via REST API from a full definition dict (requires write permission). Accepts REST API format (same as export_propertysource output). Use for round-tripping exports or building definitions from scratch. For LM Exchange format, use import_propertysource. |
| update_propertysourceA | RAW UPDATE -- full-replace semantics. Any field omitted from |
| delete_propertysourceA | Delete a PropertySource definition (requires write permission). Existing collected data is retained. |
| import_propertysourceA | Import a PropertySource from LM Exchange JSON format via multipart upload (requires write permission). For REST API format definitions (e.g., from export_propertysource), use create_propertysource instead. |
| create_logsourceA | Create a LogSource via REST API from a full definition dict (requires write permission). Accepts REST API format (same as export_logsource output). For LM Exchange format, use import_logsource. |
| update_logsourceA | RAW UPDATE -- full-replace semantics. Any field omitted from |
| delete_logsourceA | Delete a LogSource definition (requires write permission). Existing collected data is retained. |
| import_logsourceA | Import a LogSource from LM Exchange JSON format via multipart upload (requires write permission). For REST API format definitions (e.g., from export_logsource), use create_logsource instead. |
| create_topologysourceA | Create a TopologySource via REST API from a full definition dict (requires write permission). Accepts REST API format. For LM Exchange format, use import_topologysource. |
| update_topologysourceA | RAW UPDATE -- full-replace semantics. Any field omitted from |
| delete_topologysourceA | Delete a TopologySource definition (requires write permission). Existing collected data is retained. |
| import_topologysourceA | Import a TopologySource from LM Exchange JSON format via multipart upload (requires write permission). For REST API format definitions, use create_topologysource instead. |
| import_diagnosticsourceA | Import a DiagnosticSource from LM Exchange JSON format via multipart upload (requires write permission). For REST API format definitions (e.g., from export_diagnosticsource), use create_diagnosticsource instead. |
| import_jobmonitorB | Import a JobMonitor from JSON (requires write permission) |
| import_appliesto_functionA | Import an AppliesTo function from JSON (requires write permission) |
| ingest_logsA | Ingest log entries into LogicMonitor (requires LMv1 auth) |
| push_metricsB | Push custom metrics into LogicMonitor (requires LMv1 auth) |
| correlate_alertsA | Correlate alerts by device, datasource, and temporal proximity. Groups alerts into clusters to identify related issues. |
| get_alert_statisticsA | Aggregate alert counts by severity, device, datasource, and time bucket. Returns statistical summary over a time window. |
| get_metric_anomaliesB | Detect metric anomalies using z-score analysis. Identifies data points deviating significantly from the mean. |
| save_baselineB | Save a metric baseline from historical data. Computes mean, min, max, stddev per datapoint and stores as a session variable for later comparison. |
| compare_to_baselineA | Compare current metrics against a stored baseline. Reports deviation percentage and status (normal, elevated, reduced, anomalous) per datapoint. |
| forecast_metricC | Forecast when a metric will breach a threshold using linear regression. Analyzes historical data to predict trend direction and estimated breach time. |
| correlate_metricsA | Compute Pearson correlation between multiple metric series. Builds an NxN correlation matrix and highlights strong correlations (|r| > 0.7). Maximum 10 sources. |
| detect_change_pointsB | Detect regime shifts in metric data using the CUSUM algorithm. Identifies points where the mean value changes significantly. |
| score_alert_noiseA | Score alert noise level using Shannon entropy and flap detection. Produces a score from 0 (quiet) to 100 (extremely noisy) with recommendations for tuning. |
| detect_seasonalityA | Detect periodic patterns in metric data using autocorrelation. Identifies dominant periods (1h, 4h, 12h, 24h, 168h) and peak activity hours. |
| calculate_availabilityA | Calculate availability percentage from alert history. Computes SLA-style uptime metrics, MTTR, and per-device breakdown from cleared and active alerts. Common mistakes: hours_back defaults to 720 (30 days). Narrow scope with device_id/group_id for performance. |
| analyze_blast_radiusA | Analyze the blast radius of a device failure using topology data. Traverses neighbors to identify downstream impact and scores overall blast radius (0-100). |
| correlate_changesA | Cross-reference alert spikes with audit/change logs. Identifies changes that may have triggered alert increases using configurable correlation windows. |
| score_device_healthA | Score health of a specific device-datasource instance using z-score analysis. For full device health reports across all datasources, use the health_check composite tool instead. |
| calculate_error_budgetA | Calculate SLO error budget consumption and projected exhaustion date. Computes remaining budget, burn rate, and status (healthy/warning/critical/exhausted) based on actual availability vs target SLO. |
| classify_trendB | Classify metric trends as stable, increasing, decreasing, cyclic, or volatile. Uses linear regression slope, coefficient of variation, and autocorrelation. |
| get_session_contextA | Get current session context (last results, variables, history) |
| set_session_variableA | Set a user-defined session variable for use across tool calls |
| get_session_variableB | Get a user-defined session variable |
| delete_session_variableA | Delete a user-defined session variable |
| clear_session_contextA | Clear all session context (last results, variables, and history) |
| list_session_historyB | List recent tool call history |
| get_trace_servicesA | List APM trace services (deviceType:6). Entry point for discovering traced services. |
| get_trace_serviceA | Get detailed information about a specific APM trace service |
| get_trace_service_alertsC | Get alerts for an APM trace service |
| get_trace_service_datasourcesA | List datasources applied to an APM service (e.g. LogicMonitor_APM_Services, _Operations) |
| get_trace_operationsA | List operations (endpoints/routes) for an APM service datasource |
| get_trace_service_metricsA | Get APM service-level RED metrics (Duration, ErrorOperationCount, OperationCount) |
| get_trace_operation_metricsA | Get per-operation RED metrics (Duration, ErrorOperationCount, OperationCount) |
| get_trace_service_propertiesA | Get properties for an APM service (OTel attributes, namespace, metadata) |
| get_diagnosticsourcesB | List DiagnosticSources from LogicMonitor |
| get_diagnosticsourceA | Get details about a specific DiagnosticSource including datapoints |
| execute_diagnosticA | Execute a DiagnosticSource script on a target device. Performs pre-execution checks (collector version, device status, script review) before triggering manual execution. Poll get_diagnostic_remediation_results for status and output. Requires write permission. |
| create_diagnosticsourceA | Create a DiagnosticSource via REST API from a full definition dict (requires write permission). Accepts REST API format (same as export_diagnosticsource output). For LM Exchange format, use import_diagnosticsource. |
| update_diagnosticsourceA | RAW UPDATE -- full-replace semantics. Any field omitted from |
| delete_diagnosticsourceA | Delete a DiagnosticSource definition (requires write permission). Action chains referencing it lose that stage. |
| get_remediationsourcesC | List RemediationSources from LogicMonitor |
| get_remediationsourceA | Get details about a specific RemediationSource including the Groovy script |
| execute_remediationA | Execute a RemediationSource script on a target device. Performs pre-execution checks (collector version, device status, script review) before triggering manual execution. Requires write permission. |
| create_remediationsourceA | Create a RemediationSource via REST API from a full definition dict (requires write permission). Accepts REST API format (same as export_remediationsource output). RemediationSources have no LM Exchange import endpoint. |
| update_remediationsourceA | RAW UPDATE -- full-replace semantics. Any field omitted from |
| delete_remediationsourceA | Delete a RemediationSource definition (requires write permission). Action chains referencing it lose that stage. |
| get_diagnostic_remediation_assignmentsA | List the diagnostic and remediation sources assigned to a specific resource or alert (Automated Diagnostics & Remediation). Unlike get_diagnosticsources/get_remediationsources, this resolves which modules actually apply to the target. |
| get_diagnostic_remediation_resultsA | Get structured execution results for diagnostic and remediation source runs: status, trigger type, executor, script output, and timing. Provide exactly one of alert_id or host_id. Time window params are epoch milliseconds; result timestamps are epoch seconds. |
| get_action_chainsA | List action chains: ordered DiagnosticSource/RemediationSource stages that action rules trigger on alerts (Automated Diagnostics & Remediation) |
| get_action_chainA | Get details about a specific action chain including its stages |
| create_action_chainA | Create an action chain from ordered diagnostic/remediation stages (requires write permission). Each stage references a DiagnosticSource or RemediationSource by ID. |
| update_action_chainA | Update an action chain via PATCH; only provided fields are sent (requires write permission) |
| delete_action_chainA | Delete an action chain (requires write permission). Action rules referencing it stop triggering. |
| get_action_rulesA | List action rules: alert conditions (severity, device groups, datasource matchers) that trigger action chains |
| get_action_ruleA | Get details about a specific action rule |
| create_action_ruleA | Create an action rule binding an action chain to alert conditions (requires write permission) |
| update_action_ruleA | Update an action rule via PATCH; only provided fields are sent (requires write permission) |
| delete_action_ruleA | Delete an action rule (requires write permission) |
| set_action_rule_statusA | Enable or disable an action rule without touching its matchers (requires write permission) |
| triageA | Composite triage: correlates alerts, clusters by device/time, scores noise, assesses blast radius, and checks recent changes. Returns a prioritized incident report. |
| health_checkA | Composite health check: resolves a device, scores health across datasources, detects anomalies, checks alerts, and calculates availability. Returns a single device health report. |
| capacity_planA | Composite capacity planning: forecasts metric breach dates, classifies trends, detects seasonality and change points. Returns per-datasource capacity projections. |
| portal_overviewA | Composite portal overview: aggregates alert statistics, collector health, maintenance windows, noise scores, and dead devices into a shift-handoff report. |
| diagnoseA | Composite diagnosis: given an alert or device, gathers alert details, device context, correlated alerts, recent changes, blast radius, and health score. Returns a diagnosis report with probable root cause and recommendations. |
| search_toolsA | Search available MCP tools by keyword or category. Use this to discover which tools are available for a task. |
| update_logicmoduleA | Safe partial update for LogicMonitor source types (configsource, datasource, eventsource, logsource, propertysource, topologysource). Exports the current full definition, deep-merges your |
| get_referenceA | Get LogicMonitor reference content (schemas, enums, filter syntax, guides). Mirrors content from MCP Resources for clients without full Resource support (Copilot cloud agent, OpenAI Codex, Cline). Categories: schema, enums, filters, syntax, guide. Pass list=true (or omit both category and name) to discover all available (category, name) pairs. |
| get_workflowA | Get LogicMonitor workflow guidance text (incident_triage, rca_workflow, remediate_workflow, etc.). Mirrors MCP Prompt content for clients without Prompt support. Prefer the composite workflow tools (triage, diagnose, health_check, capacity_plan, portal_overview) when they exist -- those execute the procedure. Pass list=true to discover available workflows. |
| terraform_generateA | Export an existing LogicMonitor resource as Terraform HCL configuration using the logicmonitor/logicmonitor provider. Supports device, device_group, collector, alert_rule, escalation_chain, dashboard, datasource, sdt, website, role, and report_group resource types. |
| get_interface_metricsA | Pull interface-level metrics (in/out bytes, errors, discards, utilization, status) for a device's interface over a time window. Answers 'how is this port performing?' Resolves the Interface-family DataSource and the instance matching the interface name before fetching datapoints. |
| get_top_talkersA | Rank NetFlow flows on an exporter by bandwidth, packets, or flow count. Group by source IP, destination IP, protocol, application, or source->destination pair. Answers 'what is consuming my WAN?' |
| detect_alert_burstA | Sliding-window detector for mass alert events: N alerts from the same DataSource across M+ devices within T seconds. Answers 'did a bunch of stuff break at once?' Used for detecting cascading failures like mass interface-down events during a site outage. |
| get_link_flapsA | Identify interfaces with repeated up/down transitions in a time window. Answers 'which ports are unstable?' Common causes: bad cable, duplex mismatch, bad SFP, PoE power cycling, WAN instability. |
| get_collector_healthA | Enriched collector status with time-since-last-contact, downstream device count, dependent alert count, and optional CollectorDown history. Leading indicator for site-level events. Prefer this over |
| get_power_eventsA | Filter alerts for UPS/PDU power-event signatures across APC, Liebert, and Eaton DataSources ('on battery', 'runtime remaining', 'input voltage lost') over a time window. Returns events matched by DataSource or alert name substring with counts per pattern. |
| detect_site_outageA | Composite workflow for site outage detection. Chains CollectorDown detection, mass-interface-down burst analysis, UPS on-battery events, and downstream device silence into a single site-outage verdict with confidence score, scope, and affected device list. Designed to catch the class of site-outage that generic AIOps correlation misses. Pass a device group ID representing the site. |
| audit_network_monitoring_coverageA | Portal audit that counts UPS/PDU devices onboarded, interface DataSources applied, SNMP credentials configured, and NetFlow exporters set up. Returns a prioritized gap list with onboarding recommendations — turns 'you can't detect X' into 'here's how to enable detection of X.' |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| incident_triage | Analyze active alerts, identify patterns, and suggest root cause |
| capacity_review | Review resource utilization and identify capacity concerns |
| health_check | Generate environment health summary with key metrics |
| alert_summary | Generate alert digest grouped by severity or resource |
| sdt_planning | Plan scheduled downtime for maintenance windows |
| cost_optimization | Review cloud costs, identify idle resources, and find savings opportunities |
| audit_review | Review recent activity, failed logins, and configuration changes |
| alert_correlation | Correlate alerts by device, time, and network topology |
| collector_health | Review collector status, versions, and group distribution |
| troubleshoot_device | Investigate a specific device with alerts, properties, and datasource status |
| top_talkers | Identify noisiest devices or datasources by alert volume |
| rca_workflow | Root cause analysis workflow with correlation, topology, and timeline |
| capacity_forecast | Resource utilization trending and capacity planning |
| remediate_workflow | Diagnose a LogicMonitor alert and remediate via Ansible Automation Platform |
| remediation | RemediationSource execution workflow with pre-execution safety checklist |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Alert Schema | LogicMonitor alert object fields, types, and descriptions |
| Device Schema | LogicMonitor device object fields, types, and descriptions |
| SDT Schema | LogicMonitor SDT (Scheduled Downtime) object fields |
| Dashboard Schema | LogicMonitor dashboard object fields |
| Collector Schema | LogicMonitor collector object fields |
| Escalation Chain Schema | LogicMonitor escalation chain object fields |
| Report Schema | LogicMonitor report object fields |
| Website Schema | LogicMonitor website check object fields |
| DataSource Schema | LogicMonitor DataSource definition fields |
| User Schema | LogicMonitor user object fields |
| Audit Log Schema | LogicMonitor audit log entry fields |
| Alert Severity Values | Valid severity levels: critical(4), error(3), warning(2), info(1) |
| Device Status Values | Valid device status values: normal(0), dead(1), etc. |
| SDT Type Values | Valid SDT types: DeviceSDT, DeviceGroupSDT, etc. |
| Alert Cleared Status | Alert cleared status values: true, false |
| Alert Acknowledged Status | Alert acknowledgment status values: true, false |
| Collector Build Types | Collector build version types: EA, GD, MGD |
| Alert Filter Fields | Filter fields and operators for alert queries |
| Device Filter Fields | Filter fields and operators for device queries |
| SDT Filter Fields | Filter fields and operators for SDT queries |
| Filter Operators | LogicMonitor API filter operators: :, ~, >, <, !:, !~, >:, <: |
| Tool Categories | All LogicMonitor MCP tools organized by domain category |
| Common Query Examples | Common filter patterns and query examples for LogicMonitor API |
| MCP Server Orchestration Guide | Patterns for combining LogicMonitor with other MCP servers |
| Best Practices Guide | Scenario-based best practices for alert noise, device health, availability, and remediation |
| Example Tool Responses | Realistic example output from key tools to help understand response formats |
TDQS
Scored across 273 tools
Many tools follow a clear resource+action pattern, but overlapping families exist, such as get_services vs get_trace_services, get_collectors vs get_collector_health, and get_datasources vs get_device_datasources, which can cause misselection. Descriptions often clarify the distinction, but the sheer 273-tool surface makes it easy to pick the wrong variant anyway.
The CRUD tools consistently use verb_noun patterns like get_, create_, update_, delete_, import_, and export_, but listing is inconsistent—list_sdts vs get_datasources—and several composite tools use plain nouns or phrases like triage, health_check, and detect_site_outage, breaking the pattern.
273 tools is far beyond the 50+ threshold for an extreme mismatch. Even for a broad platform like LogicMonitor, the surface is overwhelming and includes many near-duplicate variants such as raw update_* tools versus update_logicmodule and numerous get_* list/detail pairs.
The server covers a very wide domain—devices, alerts, dashboards, reports, traces, network, OTLP, and audit—but notable gaps remain: roles, API tokens, and access groups are read-only, website groups have no update tool, integration creation is limited to HTTP delivery, and batch jobs have no lifecycle operations beyond retrieval.