Axiom MCP
Vendor MCP26 toolsOAuth 2.1/DCRAnalyticsDeveloper ToolsMonitoringAxiom is a cloud-native data analytics and observability platform for ingesting, storing, and querying logs, events, traces, and metrics at scale. The MCP...
Axiom MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'axiommcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Axiom MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'axiommcp_check_monitors',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "axiommcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Axiom MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="axiommcp_check_monitors",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Send feedback — Share feedback about the Axiom MCP server experience, such as a misleading tool description, a confusing result or error message, a missing capability, or praise for something that worked well
- Update notifier, monitor, dashboard chart — Update an existing notifier by ID using a full notifier JSON payload
- Search metrics — Search tag values across all metrics in a dataset (kind otel-metrics-v1) for a specific entity name (a service, host, or region) and return the metric names associated with it, along with type, temporality, and unit metadata
- Query metrics, dataset — Query OTel metrics from Axiom using MPL (Metrics Processing Language), not APL, over a given time range (defaults to the last 30 minutes)
- List notifiers, metrics, metric tags — List all notifiers (notification channels such as email, Slack, PagerDuty) configured in the workspace
- Get saved queries, monitor history, metric tag values — List all saved APL queries in the Axiom workspace
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
axiommcp_check_monitors#List all monitors and their current status, showing which are firing or healthy.0 params
List all monitors and their current status, showing which are firing or healthy.
axiommcp_create_dashboard#Create a new dashboard in the Axiom workspace from a full dashboard JSON document. The document must include name, owner, charts, layout, refreshTime, schemaVersion, and the dashboard time window; sections are optional.3 params
Create a new dashboard in the Axiom workspace from a full dashboard JSON document. The document must include name, owner, charts, layout, refreshTime, schemaVersion, and the dashboard time window; sections are optional.
dashboardJsonstringrequiredThe full dashboard document as a JSON string. Include name, owner, charts (array), layout (array), refreshTime (15, 60, or 300), schemaVersion (2), timeWindowStart, and timeWindowEnd. Optional: Add sections as an ordered array of {id, title, defaultCollapsed?}. Use a unique UUID for each section id. Assign charts with chart.sectionId. Omit sectionId for ungrouped charts and all SmartFilter charts.messagestringoptionalOptional audit/change note for this operation.uidstringoptionalOptional custom UID for the dashboard. If omitted, the server generates one.axiommcp_create_monitor#Create a new Axiom monitor using a JSON payload for Threshold, MatchEvent, or AnomalyDetection. Provide name, type, intervalMinutes, rangeMinutes, notifierIds, and at least one of aplQuery or mplQuery.1 param
Create a new Axiom monitor using a JSON payload for Threshold, MatchEvent, or AnomalyDetection. Provide name, type, intervalMinutes, rangeMinutes, notifierIds, and at least one of aplQuery or mplQuery.
monitorJsonstringrequiredThe full monitor configuration as a JSON string. Must include name, type, intervalMinutes, rangeMinutes, and at least one of aplQuery or mplQuery. Include notifierIds to set notifiers; omit notifierIds during update to keep existing notifiers.axiommcp_create_notifier#Create a new Axiom notifier using a JSON payload. The payload must include name and properties; configure one notification channel such as email, slack, webhook, customWebhook, pagerduty, opsgenie, discord, discordWebhook, or microsoftTeams. For custom webhooks, use properties.customWebhook with required url and body, plus optional headers and secretHeaders; body supports Go-template variables such as .Action, .MonitorID, .Body, .Title, and .Value.1 param
Create a new Axiom notifier using a JSON payload. The payload must include name and properties; configure one notification channel such as email, slack, webhook, customWebhook, pagerduty, opsgenie, discord, discordWebhook, or microsoftTeams. For custom webhooks, use properties.customWebhook with required url and body, plus optional headers and secretHeaders; body supports Go-template variables such as .Action, .MonitorID, .Body, .Title, and .Value.
notifierJsonstringrequiredThe full notifier configuration as a JSON string. Must include name and properties. Configure one channel inside properties, such as email, slack, webhook, customWebhook, pagerduty, opsgenie, discord, discordWebhook, or microsoftTeams. For customWebhook, include required url and body, plus optional headers and secretHeaders; body supports Go-template variables such as .Action, .MonitorID, .Body, .Title, and .Value.axiommcp_delete_dashboard#Delete a dashboard by ID.1 param
Delete a dashboard by ID.
dashboardUidstringrequiredThe dashboard UID (stable external identifier). You can find UIDs using the `listDashboards()` tool.axiommcp_delete_monitor#Delete a monitor by ID.1 param
Delete a monitor by ID.
monitorIdstringrequiredThe monitor ID. You can find an list of monitors using the `checkMonitors()` tool.axiommcp_delete_notifier#Delete a notifier by ID.1 param
Delete a notifier by ID.
notifierIdstringrequiredThe notifier ID. You can find notifier IDs using the `listNotifiers()` tool.axiommcp_export_dashboard#Export a dashboard configuration as JSON for backup or sharing.1 param
Export a dashboard configuration as JSON for backup or sharing.
dashboardUidstringrequiredThe dashboard UID (stable external identifier). You can find UIDs using the `listDashboards()` tool.axiommcp_get_dashboard#Get details and configuration of a specific dashboard by ID.1 param
Get details and configuration of a specific dashboard by ID.
dashboardIdstringrequiredThe dashboard UID. You can find a list of dashboards using the `listDashboards()` tool.axiommcp_get_dataset_fields#List all fields in an events or traces dataset. Use this to understand the schema before writing APL queries. Do not use for otel-metrics-v1 datasets — use listMetrics() instead.1 param
List all fields in an events or traces dataset. Use this to understand the schema before writing APL queries. Do not use for otel-metrics-v1 datasets — use listMetrics() instead.
datasetNamestringrequiredThe dataset name.axiommcp_get_metric_tag_values#Get all values for a specific tag within a metrics dataset (kind otel-metrics-v1) over a given time range. Useful for discovering filter values before querying with queryMetrics.4 params
Get all values for a specific tag within a metrics dataset (kind otel-metrics-v1) over a given time range. Useful for discovering filter values before querying with queryMetrics.
datasetNamestringrequiredThe dataset name. You can find an list of datasets using the `listDatasets()` tool.tagstringrequiredThe tag name to list values for.endTimestringoptionalEnd time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now".startTimestringoptionalStart time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now-30m".axiommcp_get_monitor_history#Get the alert history for a specific monitor, including when it fired and resolved.3 params
Get the alert history for a specific monitor, including when it fired and resolved.
monitorIdstringrequiredThe monitor ID. You can find an list of monitors using the `checkMonitors()` tool.endTimestringoptionalEnd time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now".startTimestringoptionalStart time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now-30m".axiommcp_get_saved_queries#List all saved APL queries in the Axiom workspace.0 params
List all saved APL queries in the Axiom workspace.
axiommcp_list_dashboards#List all dashboards in the Axiom workspace.0 params
List all dashboards in the Axiom workspace.
axiommcp_list_datasets#List all available datasets. The "kind" column determines which tools to use next:
- events / otel.traces / other: use queryDataset() (APL) and getDatasetFields()
- otel-metrics-v1: start with listMetrics() to inspect metric definitions and choose query strategy, then use queryMetrics(), searchMetrics(), listMetricTags(), and getMetricTagValues() — do NOT use queryDataset() or getDatasetFields() for these0 params
List all available datasets. The "kind" column determines which tools to use next: - events / otel.traces / other: use queryDataset() (APL) and getDatasetFields() - otel-metrics-v1: start with listMetrics() to inspect metric definitions and choose query strategy, then use queryMetrics(), searchMetrics(), listMetricTags(), and getMetricTagValues() — do NOT use queryDataset() or getDatasetFields() for these
axiommcp_list_metric_tags#List all tag keys (dimensions) available in a metrics dataset (kind otel-metrics-v1) over a given time range. Tags can be used to filter and group metrics queries.3 params
List all tag keys (dimensions) available in a metrics dataset (kind otel-metrics-v1) over a given time range. Tags can be used to filter and group metrics queries.
datasetNamestringrequiredThe dataset name. You can find an list of datasets using the `listDatasets()` tool.endTimestringoptionalEnd time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now".startTimestringoptionalStart time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now-30m".axiommcp_list_metrics#List all available metric names with metadata (type, temporality, and unit) in a metrics dataset (kind otel-metrics-v1) over a given time range, defaulting to the last 30 minutes. Start here when query semantics matter.3 params
List all available metric names with metadata (type, temporality, and unit) in a metrics dataset (kind otel-metrics-v1) over a given time range, defaulting to the last 30 minutes. Start here when query semantics matter.
datasetNamestringrequiredThe dataset name. You can find an list of datasets using the `listDatasets()` tool.endTimestringoptionalEnd time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now".startTimestringoptionalStart time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now-30m".axiommcp_list_notifiers#List all notifiers (notification channels such as email, Slack, PagerDuty) configured in the workspace.0 params
List all notifiers (notification channels such as email, Slack, PagerDuty) configured in the workspace.
axiommcp_query_dataset#Query Axiom datasets using Axiom Processing Language (APL). Use for events, otel.traces, and other non-metrics datasets. Returns query results including matching events.3 params
Query Axiom datasets using Axiom Processing Language (APL). Use for events, otel.traces, and other non-metrics datasets. Returns query results including matching events.
aplstringrequiredThe APL query to execute.endTimestringoptionalEnd time for the query (ISO 8601 or 'now').startTimestringoptionalStart time for the query (ISO 8601 or relative like '-1h').axiommcp_query_metrics#Query OTel metrics from Axiom using MPL (Metrics Processing Language), not APL, over a given time range (defaults to the last 30 minutes). Use for otel-metrics-v1 datasets.4 params
Query OTel metrics from Axiom using MPL (Metrics Processing Language), not APL, over a given time range (defaults to the last 30 minutes). Use for otel-metrics-v1 datasets.
datasetNamestringrequiredThe dataset name. You can find an list of datasets using the `listDatasets()` tool.mplstringrequiredThe metrics query string. Format: <dataset>:<metric> | <operations>endTimestringoptionalEnd time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now".startTimestringoptionalStart time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now-30m".axiommcp_search_metrics#Search tag values across all metrics in a dataset (kind otel-metrics-v1) for a specific entity name (a service, host, or region) and return the metric names associated with it, along with type, temporality, and unit metadata. Use a time window of at least 3 hours, since recently-ingested data can take up to 2 hours to become searchable.4 params
Search tag values across all metrics in a dataset (kind otel-metrics-v1) for a specific entity name (a service, host, or region) and return the metric names associated with it, along with type, temporality, and unit metadata. Use a time window of at least 3 hours, since recently-ingested data can take up to 2 hours to become searchable.
datasetNamestringrequiredThe dataset name. You can find an list of datasets using the `listDatasets()` tool.valuestringrequiredThe entity name to search for across all tag values (e.g. a service name "checkout-service", a host "prod-worker-1", a region "us-east-1"). The search matches this exact string against tag values -- use the canonical name as it appears in your infrastructure.endTimestringoptionalEnd time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now".startTimestringoptionalStart time for the query range. A fixed (RFC3339) or relative (now, now-5m) time value. Defaults to "now-30m".axiommcp_send_feedback#Share feedback about the Axiom MCP server experience, such as a misleading tool description, a confusing result or error message, a missing capability, or praise for something that worked well. Never include sensitive information (log or query contents, dataset values, credentials, tokens, or personal data).3 params
Share feedback about the Axiom MCP server experience, such as a misleading tool description, a confusing result or error message, a missing capability, or praise for something that worked well. Never include sensitive information (log or query contents, dataset values, credentials, tokens, or personal data).
categorystringrequiredThe kind of feedback: tool-description (misleading/unclear description), tool-result (confusing or unhelpful output), error-message (error did not help recovery), missing-capability (something you needed does not exist), performance (slow or resource-heavy), praise (something worked well), or other.feedbackstringrequiredThe feedback itself. Keep it generic and actionable. NEVER include sensitive information: no log or query contents, dataset values, credentials, tokens, personal data, or anything from the user's environment.toolNamestringoptionalOptional: the name of the MCP tool the feedback is about, e.g. queryDataset.axiommcp_update_dashboard#Update an existing dashboard by UID with a full replacement dashboard JSON document (not just its name or description). Supports optimistic concurrency via the version and overwrite parameters.5 params
Update an existing dashboard by UID with a full replacement dashboard JSON document (not just its name or description). Supports optimistic concurrency via the version and overwrite parameters.
dashboardJsonstringrequiredThe full dashboard document as a JSON string. Include name, owner, charts (array), layout (array), refreshTime (15, 60, or 300), schemaVersion (2), timeWindowStart, and timeWindowEnd. Optional: Add sections as an ordered array of {id, title, defaultCollapsed?}. Use a unique UUID for each section id. Assign charts with chart.sectionId. Omit sectionId for ungrouped charts and all SmartFilter charts.dashboardUidstringrequiredThe dashboard UID (stable external identifier). You can find UIDs using the `listDashboards()` tool.messagestringoptionalOptional audit/change note for this operation.overwritebooleanoptionalWhen true (default), bypasses version checks and applies last-write-wins. When false, the version parameter is required.versionnumberoptionalThe current dashboard version number. Required when overwrite is false. Get this from exportDashboard().axiommcp_update_dashboard_chart#Patch a single chart in an existing dashboard by chart ID using a JSON merge-patch document, rather than individual chart fields. Supports optimistic concurrency via the version and overwrite parameters.6 params
Patch a single chart in an existing dashboard by chart ID using a JSON merge-patch document, rather than individual chart fields. Supports optimistic concurrency via the version and overwrite parameters.
chartIdstringrequiredThe chart ID inside the dashboard charts array.chartPatchJsonstringrequiredA JSON merge-patch object for a single dashboard chart. Include only fields to change. Set sectionId to an existing section UUID to move the chart into that section, or set sectionId to null to make it ungrouped. Keep SmartFilter charts ungrouped. If id is present, it matches chartId.dashboardUidstringrequiredThe dashboard UID (stable external identifier). You can find UIDs using the `listDashboards()` tool.messagestringoptionalOptional audit/change note for this operation.overwritebooleanoptionalWhen true (default), bypasses version checks and applies last-write-wins. When false, the version parameter is required.versionnumberoptionalThe current dashboard version number. Required when overwrite is false. Get this from exportDashboard().axiommcp_update_monitor#Update an existing Axiom monitor by ID using a full monitor JSON payload. Omit notifierIds to keep the monitor's existing notifiers, or set notifierIds to [] to remove them. Use checkMonitors() to find monitor IDs before updating.2 params
Update an existing Axiom monitor by ID using a full monitor JSON payload. Omit notifierIds to keep the monitor's existing notifiers, or set notifierIds to [] to remove them. Use checkMonitors() to find monitor IDs before updating.
monitorIdstringrequiredThe monitor ID. You can find an list of monitors using the `checkMonitors()` tool.monitorJsonstringrequiredThe full monitor configuration as a JSON string. Must include name, type, intervalMinutes, rangeMinutes, and at least one of aplQuery or mplQuery. Include notifierIds to set notifiers; omit notifierIds during update to keep existing notifiers.axiommcp_update_notifier#Update an existing notifier by ID using a full notifier JSON payload. The payload must include name and properties; configure one channel inside properties.2 params
Update an existing notifier by ID using a full notifier JSON payload. The payload must include name and properties; configure one channel inside properties.
notifierIdstringrequiredThe notifier ID. You can find notifier IDs using the `listNotifiers()` tool.notifierJsonstringrequiredThe full notifier configuration as a JSON string. Must include name and properties. Configure one channel inside properties, such as email, slack, webhook, customWebhook, pagerduty, opsgenie, discord, discordWebhook, or microsoftTeams. For customWebhook, include required url and body, plus optional headers and secretHeaders; body supports Go-template variables such as .Action, .MonitorID, .Body, .Title, and .Value.