Skip to content
Scalekit Docs

Axiom MCP

Vendor MCP26 toolsOAuth 2.1/DCRAnalyticsDeveloper ToolsMonitoring

Axiom 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

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. 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>
  3. 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.actions
    const connector = 'axiommcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { 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 call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'axiommcp_check_monitors',
    toolInput: {},
    })
    console.log(result)

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

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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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).

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.

NameTypeRequiredDescription
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.