The AppSignal MCP connector routes your AI agent's tool calls to AppSignal's own MCP server through Scalekit. Each user signs in to AppSignal once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 29 tools.
- Tools
- 29
- What they doRead · write · destructive
- 16 · 11 · 216 read11 write2 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet 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>Create the AppSignal MCP connection
In AgentKit > Connections, create an AppSignal MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for AppSignal MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'appsignalmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize AppSignal MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'appsignalmcp_get_applications',toolInput: { context: 'YOUR_CONTEXT' },})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "appsignalmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize AppSignal MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={"context":"YOUR_CONTEXT"},tool_name="appsignalmcp_get_applications",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolappsignalmcp_discover_metricsRetrieve metric categories and dashboards, the metrics available within a specific category, or the visuals configured on a specific dashboard.Read-onlyDiscover Metrics
Retrieve metric categories and dashboards, the metrics available within a specific category, or the visuals configured on a specific dashboard.
Inputs
app_environmentstringrequired- Environment (e.g. "production", "staging"). Not case-sensitive.
app_namestringrequired- Name of the AppSignal application (e.g. "AppSignal" or "Project Name")
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
metric_subjectstring- What to inspect. One of: - a metric category name (e.g. "performance_metrics", "host_metrics", "custom_metrics") - "dashboard:<dashboard_id>" to list the visuals on a specific dashboard Omit this argument to get the overview of all categories and dashboards.
appsignalmcp_get_anomaly_incidentsList AppSignal anomaly detection alerts, filtered by state or trigger ID, with page/per_page pagination.Read-onlyGet Anomaly Incidents
List AppSignal anomaly detection alerts, filtered by state or trigger ID, with page/per_page pagination.
Inputs
app_environmentstringrequired- Environment to list alerts from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found
app_namestringrequired- Name of the AppSignal application to list alerts from (e.g. "AppSignal" or "Project Name")
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
pageinteger- Page number for pagination (1-based, defaults to 1). Each page shows 50 alerts. Use this to view beyond the first page
per_pageinteger- Number of alerts per page (defaults to 50). Use this to request fewer results per page
statestring- Optional state to filter by. Valid values: "open", "closed", "warmup", "cooldown", "archived". Shows all states if not specified
trigger_idstring- Optional trigger ID to filter incidents by. Only returns incidents generated by this specific trigger. Use get_triggers to find trigger IDs.
appsignalmcp_get_app_resourcesDiscover available resources in an AppSignal application: users, notifiers, namespaces, dashboards, log sources, log views, log line actions, deploy markers, and uptime monitors.Read-onlyGet App Resources
Discover available resources in an AppSignal application: users, notifiers, namespaces, dashboards, log sources, log views, log line actions, deploy markers, and uptime monitors.
Inputs
app_environmentstringrequired- Environment to get resources from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application to get resources from (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
deploy_marker_namespacestring- Optional filter for the "deploy_markers" section: only return deploys for this namespace (e.g. "web", "background"). Ignored when deploy_markers is not requested.
deploy_marker_revisionstring- Optional filter for the "deploy_markers" section: only return deploys whose revision starts with this value. A short revision (e.g. "abc1234") from a previous call works. Ignored when deploy_markers is not requested.
sectionsarray- Optional list of resource sections to retrieve. Valid values: "users", "notifiers", "namespaces", "dashboards", "log_sources", "log_views", "log_line_actions", "deploy_markers", "uptime_monitors". If not specified, returns all sections.
appsignalmcp_get_applicationsRetrieve all AppSignal applications the user has access to.Read-onlyGet Applications
Retrieve all AppSignal applications the user has access to.
Inputs
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
appsignalmcp_get_check_in_triggers<usecase>Use this tool when you need to: - View all configured check-in (cron/heartbeat) monitors in an application - Check whether a scheduled job or service is checking in on time - Inspect one check-in monitor's full configuration and recent run history - Find a monitor's ID for updating it Pass no `id`/`identifier` to list all check-in triggers.Read-onlyGet Check In Triggers
<usecase>Use this tool when you need to: - View all configured check-in (cron/heartbeat) monitors in an application - Check whether a scheduled job or service is checking in on time - Inspect one check-in monitor's full configuration and recent run history - Find a monitor's ID for updating it Pass no `id`/`identifier` to list all check-in triggers. Pass an `id` or `identifier` to inspect one trigger, which also returns its recent runs (individual check-in occurrences, e.g. missed/late/finished).</usecase> <instructions>List check-in triggers, or inspect one with its recent runs. List all check-in triggers: { "app_name": "AppSignal", "app_environment": "production" } Filter the list by kind: { "app_name": "AppSignal", "app_environment": "production", "kind": "cron" } Inspect one trigger by identifier (its human-facing name): { "app_name": "AppSignal", "app_environment": "production", "identifier": "nightly-export" } Inspect one trigger by ID, filtering its runs by state: { "app_name": "AppSignal", "app_environment": "production", "id": "trigger_id", "state": "missed" }</instructions>
Inputs
app_environmentstringrequired- Environment to list check-in triggers from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application to list check-in triggers from (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
idstring- ID of a specific check-in trigger to inspect. When given (or `identifier` is), the response is that one trigger's full configuration plus its recent runs, instead of the trigger list.
identifierstring- Identifier (human-facing name, e.g. "nightly-export") of a specific check-in trigger to inspect. Alternative to `id` -- use whichever you already know. When given, the response is that one trigger's full configuration plus its recent runs, instead of the trigger list.
kindstring- Optional kind to filter the trigger list by. Ignored when `id` or
`identifier` is given.
one of
cronheartbeat pageinteger- Page number for pagination (1-based, defaults to 1). Paginates the trigger list when listing, or the run history when inspecting one trigger via `id`/`identifier`.
statestring- Optional state to filter a trigger's recent runs by. Only applies when
inspecting one trigger via `id`/`identifier` -- ignored when listing.
one of
newstartedfinishedmissedlateunexpected
appsignalmcp_get_exception_incidentsList and search AppSignal exceptions and errors, filtered by date range, states, namespaces, or deploy revision, with page/per_page pagination.Read-onlyGet Exception Incidents
List and search AppSignal exceptions and errors, filtered by date range, states, namespaces, or deploy revision, with page/per_page pagination.
Inputs
app_environmentstringrequired- Environment to list incidents from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found
app_namestringrequired- Name of the AppSignal application to list incidents from (e.g. "AppSignal" or "Project Name")
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
endstring- End of time range to search (ISO 8601 format, e.g. "2023-07-07T23:59:59Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time like "2026-06-26T20") are rejected. Required if start is provided
namespacesstring- Optional comma-separated list of namespaces to filter by (e.g. "web,background"). Shows all namespaces if not specified
new_onlyboolean- When true, returns only the errors that were *first seen* in the window, instead of every error that occurred in it. Anchored by whichever of these is given, in order: start (errors first seen after that time, optionally bounded by end), revision (the errors that deploy introduced), or the most recent deploy. Defaults to false.
pageinteger- Page number for pagination (1-based, defaults to 1). Each page shows 50 incidents. Use this to view beyond the first page
per_pageinteger- Number of incidents per page (defaults to 50). Use this to request fewer results per page
querystring- Optional case-insensitive keyword search across both the exception name and the action name (e.g. "UsersController#create" matches incidents in that action). Supports "*" as a wildcard (e.g. "UsersController*"). Shows all incidents if not specified
revisionstring- Optional deploy revision to scope incidents to a specific deploy. Use "last" to filter by the most recent deploy, or pass a revision hash (e.g. a git SHA). A short revision prefix works too (matched case-insensitively); if it matches more than one deploy, the most recent wins. Use get_app_resources(sections: ["deploy_markers"]) to list available revisions. Ignored when start/end (timeframe) is provided.
startstring- Start of time range to search (ISO 8601 format, e.g. "2023-07-01T00:00:00Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time like "2026-06-26T20") are rejected. If omitted, shows incidents since last deploy
statesstring- Optional comma-separated list of states to filter by. Valid values: "open", "closed", "wip" (work in progress). Shows all states if not specified
appsignalmcp_get_incidentGet detailed information about a specific AppSignal incident by incident number.Read-onlyGet Incident
Get detailed information about a specific AppSignal incident by incident number.
Inputs
app_environmentstringrequired- Environment where the incident occurred (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application where the incident occurred (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
numbernumberrequired- The incident number to retrieve. This is the numeric ID shown in AppSignal URLs and API responses.
appsignalmcp_get_log_linesQuery log lines for an AppSignal application using AppSignal's expression query syntax.Read-onlyGet Log Lines
Query log lines for an AppSignal application using AppSignal's expression query syntax.
Inputs
app_environmentstringrequired- Environment to query logs from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application to query logs from (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
querystringrequired- Expression query to filter log lines. Can be an empty string to retrieve all logs. Supports: =, !=, :, !:, >, <, >=, <=, AND, OR, parentheses. Examples: "severity=error", "message:timeout AND hostname=web-1", ""
endstring- End of time range (ISO 8601 format, e.g. "2025-01-01T11:00:00Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time like "2026-06-26T20") are rejected. Defaults to now.
limitinteger- Maximum number of log lines to return (1-100, default 50).
orderstring- Sort order for results. "desc" returns newest first (default), "asc" returns oldest first.one of
ascdesc source_idsarray- IDs of log sources to query. If omitted, all sources for the application are queried. Use get_app_resources(sections: ["log_sources"]) to find available source IDs.
startstring- Start of time range (ISO 8601 format, e.g. "2025-01-01T10:00:00Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time like "2026-06-26T20") are rejected. Defaults to one query window ago. Must be within your account's query window of end.
appsignalmcp_get_metric_namesRetrieve all metric names for the given AppSignal application.Read-onlyGet Metric Names
Retrieve all metric names for the given AppSignal application.
Inputs
app_environmentstringrequired- Environment to get metric names from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application to get metric names from (e.g. "AppSignal" or "Project Name").
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
appsignalmcp_get_metrics_listRetrieve aggregated metric data for a given time range, metric, type, and tag combinations.Read-onlyGet Metrics List
Retrieve aggregated metric data for a given time range, metric, type, and tag combinations.
Inputs
app_environmentstringrequired- Environment containing the metric (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application containing the metric (e.g. "AppSignal" or "Project Name").
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
endstringrequired- End of time range to search (ISO 8601 format, e.g. "2023-07-07T23:59:59Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time) are rejected.
metric_namestringrequired- Name of the metric to get aggregated metric data for. Use get_metric_names to find available metrics.
metric_typestringrequired- The metric type/field to query. Valid values: count, counter, gauge, mean, p90, p95. Use get_metric_tags to find the available type for your metric.one of
countcountergaugemeanp90p95 startstringrequired- Start of time range to search (ISO 8601 format, e.g. "2023-07-01T00:00:00Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time) are rejected.
tagsarray- Tag combinations to filter metrics. Each tag has a 'key' and 'value'. You can use wildcards '*' for partial matches on values. Use get_metric_tags to find valid combinations for your metric.
appsignalmcp_get_metrics_timeseriesRetrieve timeseries data for a given time range, metric, type, and tag combinations.Read-onlyGet Metrics Timeseries
Retrieve timeseries data for a given time range, metric, type, and tag combinations.
Inputs
app_environmentstringrequired- Environment containing the metric (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application containing the metric (e.g. "AppSignal" or "Project Name").
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
endstringrequired- End of time range to search (ISO 8601 format, e.g. "2023-07-07T23:59:59Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time) are rejected.
metric_namestringrequired- Name of the metric to get timeseries data for. Use get_metric_names to find available metrics.
metric_typestringrequired- The metric type/field to query. Valid values: count, counter, gauge, mean, p90, p95. Use get_metric_tags to find the available type for your metric.one of
countcountergaugemeanp90p95 startstringrequired- Start of time range to search (ISO 8601 format, e.g. "2023-07-01T00:00:00Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time) are rejected.
tagsarray- Tag combinations to filter metrics. Each tag has a 'key' and 'value'. You can use wildcards '*' for partial matches on values. Use get_metric_tags to find valid combinations for your metric.
appsignalmcp_get_more_toolsCheck for additional tools whenever a task might benefit from specialized capabilities.Read-onlyGet More Tools
Check for additional tools whenever a task might benefit from specialized capabilities.
Inputs
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
descriptionstringrequired- A description of your goal and what kind of tool would help accomplish it.
notesstring- What happened, in enough detail for a human to act on. Required to file feedback.
outcomestring- How a task or tool call went, if there is a clear answer. Omit when there isn't one.one of
successpartialfailed
appsignalmcp_get_performancePerformance overview: sample-based performance incidents and slow actions from traces.Read-onlyGet Performance
Performance overview: sample-based performance incidents and slow actions from traces.
Inputs
app_environmentstringrequired- Environment to query (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
endstring- End of time range (ISO 8601 format, e.g. "2025-01-07T23:59:59Z"). Must be a complete date-time including the time of day. Required if start is provided.
namespacesstring- Optional comma-separated list of namespaces to filter by (e.g. "web,background"). Shows all namespaces if not specified. Applies to both performance incidents and OTel actions.
pageinteger- Page number for pagination (1-based, defaults to 1). Each page shows 50 incidents. Paginates sample-based incidents only; OTel actions are returned as a complete ranked list.
per_pageinteger- Number of incidents per page (defaults to 50). Use this to request fewer results per page. Paginates sample-based incidents only.
revisionstring- Optional deploy revision to scope incidents to a specific deploy. Use "last" for the most recent deploy, or pass a revision hash. Only applies to sample-based incidents. Ignored when start/end is provided.
startstring- Start of time range (ISO 8601 format, e.g. "2025-01-01T00:00:00Z"). Must be a complete date-time including the time of day. For sample-based incidents, defaults to the most recent deploy. For OTel actions, defaults to 24 hours ago.
statesstring- Optional comma-separated list of states to filter by. Valid values: "open", "closed", "wip" (work in progress). Only applies to sample-based performance incidents, ignored for OTel actions.
appsignalmcp_get_tracesQuery performance and error traces, inspect span trees, and view span details.Read-onlyGet Traces
Query performance and error traces, inspect span trees, and view span details.
Inputs
app_environmentstringrequired- Environment name (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
action_namestring- The action name to find traces for (e.g. "BlogPostsController#index", "Sidekiq::SomeWorker#perform", "SampleTimelineQuery"). Required to list performance traces. Not needed when passing trace_id, or for error traces (use digest instead).
digeststring- The exception incident digest to find error traces for. Get this value from get_incident or get_exception_incidents. When provided, queries error traces instead of performance traces, and takes precedence over namespace/action_name.
endstring- End of time range (ISO 8601 format, e.g. "2025-01-01T11:00:00Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time like "2026-06-26T20") are rejected. Defaults to now. Performance trace list mode only.
include_sensitiveboolean- When true, includes HTTP headers, the request environment, request parameters, and session data in span detail output. Only applies in span detail mode (requires span_id). Defaults to false.
limitinteger- Maximum number of traces to return (1-100, default 25). List mode only.
min_duration_msinteger- Minimum trace duration in milliseconds (performance trace list mode only). Only return traces slower than this threshold.
namespacestring- The namespace to search in (e.g. "web", "background", "graphql"). Required to list performance traces. Not needed when passing trace_id, or for error traces (use digest instead).
span_idstring- The span ID to inspect within a trace. Requires trace_id. Returns full span details including attributes, events, and resource info. Use trace mode first (with trace_id, without span_id) to find span IDs.
startstring- Start of time range (ISO 8601 format, e.g. "2025-01-01T10:00:00Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time like "2026-06-26T20") are rejected. Defaults to 24 hours ago. Performance trace list mode only.
tagsarray- Optional tag filters to narrow the trace list to traces matching all given key/value pairs (e.g. [{"key": "original_class", "value": "RestClient::NotFound"}]). Matches span tags shown in span detail mode. List mode only (ignored when trace_id is provided).
trace_idstring- The trace ID to inspect. When provided, returns the full span tree for this trace. Works on its own: namespace and action_name are not needed. Combine with span_id to get detailed information about a specific span. Find trace IDs with list mode, or take them from logs or other tools.
appsignalmcp_get_triggersList anomaly detection triggers for an AppSignal application.Read-onlyGet Triggers
List anomaly detection triggers for an AppSignal application.
Inputs
app_environmentstringrequired- Environment to list triggers from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application to list triggers from (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
kindstring- Optional trigger kind to filter by (e.g. 'Advanced', 'HostCPUUsage', 'Performance'; see manage_trigger's kind enum for the full list of valid values).
metric_namestring- Optional metric name to filter triggers by. Only returns triggers monitoring this specific metric.
pageinteger- Page number for pagination (1-based, defaults to 1). Each page shows 50 triggers.
tagsarray- Optional tags to filter triggers by. Only returns triggers with matching tag filters.
appsignalmcp_create_dashboard_visualCreate a visual component (timeseries or Big Number tile) on an AppSignal dashboard.WriteCreate Dashboard Visual
Create a visual component (timeseries or Big Number tile) on an AppSignal dashboard.
Inputs
app_environmentstringrequired- Environment containing the dashboard (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application containing the dashboard (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
dashboard_idstringrequired- ID of the dashboard where you want to add the visual. Use manage_dashboard to create dashboards if needed.
titlestringrequired- Title for the visual component. This will be displayed as the chart title and should clearly describe what metrics are being shown.
descriptionstring- Optional description providing additional context about what the visual shows.
displaystring- Timeseries visuals only. Display type: "line" (default), "area", or "area_relative".one of
lineareaarea_relative draw_null_as_zeroboolean- Timeseries visuals only. Whether to draw null/missing data points as zero values. Default: false (gaps will be shown for missing data).
formatstring- Format for displaying values. One of: number, percent, duration, throughput, size.one of
numberpercentdurationthroughputsize format_inputstring- Unit of the incoming value. Only applies when format is "size", and is ignored for every other format. One of: bit, byte, kilobit, kilobyte, megabyte.one of
bitbytekilobitkilobytemegabyte line_labelstring- Timeseries visuals only. Customizable label for lines in the chart. Supports replacements: %name%, %field%, %tag% (where tag is the tag name). Defaults to %name% if not specified.
metricobject- Big Number (type: "number") visuals only. Single metric to display. Requires: name (the metric name), field (one of mean, p90, p95, count, gauge, counter), aggregate (one of max, min, avg, sum, first, last), and optional tags. Required when type is "number".
metricsarray- Timeseries visuals only. Array of metrics to display. Each metric requires: name (the metric name), fields (array of field aggregations: mean, p90, p95, count, gauge, counter), and optional tags (tag filters/groupings). Required when type is "timeseries".
min_y_axisnumber- Timeseries visuals only. Minimum value for the Y-axis. Useful for setting a baseline or zoom level.
tagsarray- Timeseries visuals only. Global tags applied to every metric in this visual. Individual metric tags will be merged with these.
typestring- Visual type. One of: timeseries, number. Defaults to "timeseries". "timeseries": line/area chart with one or more metrics over time (use the `metrics` field). "number": single-value KPI tile with one aggregated metric (use the `metric` field).one of
timeseriesnumber
appsignalmcp_manage_check_in_trigger<usecase>Use this tool when you need to: - Create a new check-in (cron/heartbeat) monitor for a scheduled job or service - Update an existing check-in monitor's configuration (schedule, wait time, notifiers, etc.) - Delete a check-in monitor that is no longer needed Unlike anomaly detection triggers, check-in triggers are not versioned -- an update changes the existing record in place.WriteManage Check In Trigger
<usecase>Use this tool when you need to: - Create a new check-in (cron/heartbeat) monitor for a scheduled job or service - Update an existing check-in monitor's configuration (schedule, wait time, notifiers, etc.) - Delete a check-in monitor that is no longer needed Unlike anomaly detection triggers, check-in triggers are not versioned -- an update changes the existing record in place. Only the fields you provide are changed; omitted fields keep their current value.</usecase> <instructions>Create, update, or delete a check-in trigger. The `action` field selects the operation. To create a new cron monitor: { "app_name": "AppSignal", "app_environment": "production", "action": "upsert", "identifier": "nightly-export", "kind": "cron", "syntax": "0 0 * * *", "timezone": "UTC", "wait_time_minutes": 10, "notifier_ids": ["notifier_id_1"] } To create a new heartbeat monitor: { "app_name": "AppSignal", "app_environment": "production", "action": "upsert", "identifier": "background-worker", "kind": "heartbeat", "wait_time_minutes": 5 } To update an existing monitor (only the given fields change): { "app_name": "AppSignal", "app_environment": "production", "action": "upsert", "id": "existing_trigger_id", "wait_time_minutes": 15 } To delete a monitor (provide its ID or identifier): { "app_name": "AppSignal", "app_environment": "production", "action": "delete", "id": "existing_trigger_id" } Use get_check_in_triggers() to find an existing trigger's ID or identifier. Use get_app_resources(sections: ["notifiers"]) to find notifier IDs.</instructions>
Inputs
actionstringrequired- Operation to perform:
- "upsert": create a new monitor, or update an existing one when `id`/`identifier` is provided
- "delete": permanently remove a monitor and its check-in history (requires `id` or `identifier`)
one of
upsertdelete app_environmentstringrequired- Environment to create/update the check-in trigger in (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application to create/update the check-in trigger in (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
descriptionstring- Description of what this check-in monitor tracks.
idstring- For "upsert": ID of an existing check-in trigger to update. If provided (or `identifier` is), the existing trigger is updated in place. If neither is provided, a new trigger is created. For "delete": ID of the trigger to remove. Either `id` or `identifier` is required.
identifierstring- For "upsert" on create: the new monitor's identifier (required) -- the human-facing name a scheduled job or service will check in as. For "upsert" on update: when `id` is also given, this renames the trigger. When `id` is omitted, `identifier` is used instead to look up the trigger to update, and is left unchanged. For "delete": identifier of the trigger to remove. Either `id` or `identifier` is required.
kindstring- The monitor kind. Required on create. "cron" monitors expect check-ins
on a schedule (`syntax` required); "heartbeat" monitors expect
check-ins at least every `wait_time_minutes`.
one of
cronheartbeat notifier_idsarray- List of notifier IDs to alert when a check-in is missed or late. Use get_app_resources(sections: ["notifiers"]) to find available notifier IDs.
syntaxstring- Cron schedule expression (e.g. "0 0 * * *"). Required when `kind` is "cron", on both create and update.
timezonestring- Timezone the cron `syntax` is evaluated in (e.g. "UTC", "America/New_York"). Defaults to "UTC" on create if not provided.
wait_time_minutesinteger- Grace period, in minutes, after the expected check-in time before a run is marked missed. Required on create.
appsignalmcp_manage_dashboardCreate or update an AppSignal dashboard (title and description only).WriteManage Dashboard
Create or update an AppSignal dashboard (title and description only).
- Idempotent
Inputs
app_environmentstringrequired- Environment to create/update the dashboard in (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application to create/update the dashboard in (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
titlestringrequired- Title of the dashboard. This will be displayed as the main heading and should clearly describe the dashboard's purpose.
descriptionstring- Optional description of the dashboard's purpose and contents. Use this to provide context about what metrics or data the dashboard shows.
idstring- Dashboard ID for updating an existing dashboard. If provided, the tool will update the existing dashboard. If not provided, a new dashboard will be created.
appsignalmcp_manage_incident_noteCreate or update a note on an AppSignal incident.WriteManage Incident Note
Create or update a note on an AppSignal incident. Supports linking GitHub issues via URL.
- Idempotent
Inputs
app_environmentstringrequired- Environment containing the incident (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application containing the incident (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contentstringrequired- Content of the note. Markdown formatting is supported. Include a full GitHub issue URL (e.g. https://github.com/owner/repo/issues/123) to automatically link that issue to the incident when GitHub is configured.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
numbernumberrequired- The incident number to add or update a note on. This is the numeric ID shown in AppSignal URLs and API responses.
idstring- Optional id of an existing note to update. When provided, the note's content is replaced instead of creating a new note. You can only edit notes you authored.
appsignalmcp_manage_log_line_actionCreate or update a log line action (trigger, filter, or metrics type).WriteManage Log Line Action
Create or update a log line action (trigger, filter, or metrics type).
- Idempotent
Inputs
actionstringrequired- Operation to perform:
- "upsert": create a new action, or update an existing one when `id` is provided
- "reorder": change the execution order of actions (requires `action_ids`)
- "delete": remove an action (requires `id`)
one of
upsertreorderdelete app_environmentstringrequired- Environment name. Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application. Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
action_idsarray- Ordered list of log line action IDs. Required for "reorder". The first ID in the list becomes the first action executed during log ingestion. Any action IDs not included will be appended at the end in their current relative order. Use get_app_resources(sections: ["log_line_actions"]) to find action IDs.
action_typestring- Type of action. Required when creating a new action ("upsert" without `id`). Cannot be changed on update.
- "trigger": Creates alerts/incidents when matched
- "filter": Discards matching log lines
- "metrics": Extracts metrics from matching log lines
one of
triggerfiltermetrics idstring- ID of an existing log line action. For "upsert", provide to update that action instead of creating a new one. Required for "delete". Use get_app_resources(sections: ["log_line_actions"]) to find action IDs.
log_line_metricsarray- Metric definitions for "metrics" type actions ("upsert" only). Required when creating a metrics action. When updating, replaces all existing metric definitions. Each metric needs a name and metric_type. The field is required for gauge and distribution types.
namestring- Name of the log line action. Required when creating a new action ("upsert" without `id`). Example: "Drop health checks", "Track error count", "Alert on fatal errors"
querystring- Query expression to match against log lines. Required when creating a new action ("upsert" without `id`). Example: "severity == "error"", "message contains "healthcheck""
source_idsarray- List of log source IDs this action applies to. If empty or not provided, the action applies to all log sources. Use get_app_resources(sections: ["log_sources"]) to find source IDs.
appsignalmcp_manage_note<usecase>Use this tool when you need to: - Add a comment or note to an incident for documentation purposes - Add a comment or note about a performance action (identified by namespace + action name), shared across every trace and incident for that action, and outliving individual trace data - Provide status updates or investigation findings - Add context, analysis, or resolution steps - Document troubleshooting attempts or findings - Edit a note you previously added (pass its "id" to update it in place instead of creating another note) - Link a GitHub issue to an incident: include the full issue URL (e.g.WriteManage Note
<usecase>Use this tool when you need to: - Add a comment or note to an incident for documentation purposes - Add a comment or note about a performance action (identified by namespace + action name), shared across every trace and incident for that action, and outliving individual trace data - Provide status updates or investigation findings - Add context, analysis, or resolution steps - Document troubleshooting attempts or findings - Edit a note you previously added (pass its "id" to update it in place instead of creating another note) - Link a GitHub issue to an incident: include the full issue URL (e.g. https://github.com/owner/repo/issues/123) anywhere in the note and, if the application has GitHub configured, we'll automatically create the backlink on the incident. This is the way to attach an issue you created yourself (e.g. via another tool) without using the "Send to GitHub" button. GitHub linking only applies to incident notes, not trace action notes.</usecase> <instructions>Create or update a note by providing: - The application name and environment (format: <app_name>/<app_environment>) - Either "number" (an incident number) OR both "namespace" and "action_name" (a performance trace action, as used by get_traces / get_performance) -- not both, and not neither - The note content (markdown supported) - Optionally, the "id" of an existing note to update it instead of creating a new one. You can only edit notes you authored. The id is returned when a note is created. A note on a performance incident is automatically stored against that incident's trace action instead -- it's shared across every trace and incident for that action, and outlives the incident and its trace data. To create a note on incident #123 in AppSignal's production environment: { "app_name": "AppSignal", "app_environment": "production", "number": 123, "content": "Investigated the database timeout. Increased pool size from 5 to 15." } To add a note to the "GET /orders" action in the "web" namespace: { "app_name": "AppSignal", "app_environment": "production", "namespace": "web", "action_name": "GET /orders", "content": "Added an index on orders.customer_id." } To link a GitHub issue you already created, include its URL in an incident note: { "app_name": "AppSignal", "app_environment": "production", "number": 123, "content": "Tracking the fix in https://github.com/appsignal/appsignal/issues/456" } To update an existing note (e.g. to append a link later), pass its id: { "app_name": "AppSignal", "app_environment": "production", "number": 123, "id": "65f0c0ffee0000000000abcd", "content": "Root cause found. Fix tracked in https://github.com/appsignal/appsignal/issues/456" }</instructions>
Inputs
app_environmentstringrequired- Environment containing the incident or action (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application containing the incident or action (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contentstringrequired- Content of the note. Markdown formatting is supported. For an incident note, include a full GitHub issue URL (e.g. https://github.com/owner/repo/issues/123) to automatically link that issue to the incident when GitHub is configured.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
action_namestring- The action name of the performance trace action to add or update a note on.
idstring- Optional id of an existing note to update. When provided, the note's content is replaced instead of creating a new note. You can only edit notes you authored.
namespacestring- The namespace of the performance trace action to add or update a note on (e.g. "web", "background", "graphql"). Required together with action_name; provide this pair OR number, not both.
numbernumber- The incident number to add or update a note on. This is the numeric ID shown in AppSignal URLs and API responses. Provide this OR namespace/action_name, not both.
appsignalmcp_manage_triggerCreate or update an anomaly detection trigger to monitor a metric threshold.WriteManage Trigger
Create or update an anomaly detection trigger to monitor a metric threshold. Triggers are immutable: updating one archives the old trigger and creates a new one, so all fields must be provided on both create and update.
- Idempotent
Inputs
actionstringrequired- Operation to perform:
- "upsert": create a new trigger, or archive-and-recreate an existing one when `id` is provided
- "archive": stop monitoring and close associated alerts/incidents (requires `id`)
one of
upsertarchive app_environmentstringrequired- Environment to create/update the trigger in (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application to create/update the trigger in (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
comparison_operatorstringrequired- The comparison operator for the threshold condition. Required for "upsert".
Valid operators: <, >, <=, >=, ==, !=
one of
<><=>===!= condition_valuenumberrequired- The threshold value to compare against. Required for "upsert". For example, 500.0 for "response time > 500ms" or 80.0 for "disk usage > 80%".
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
cooldown_durationintegerrequired- Number of minutes the condition must no longer be met before an alert is closed. Required for "upsert". Use 0 for immediate closing.
fieldstringrequired- The metric field to compare against. Required for "upsert". Common values:
- "gauge": Current value
- "mean": Average value
- "p90"/"p95": Percentile values
- "counter": Cumulative count
- "count": Number of data points
one of
gaugemeanp90p95countercount kindstringrequired- The trigger kind/classification. Required for "upsert". Use "Advanced" for custom metrics.
one of
AdvancedHostCPUUsageHostDiskIOHostDiskUsageHostLoadAverageHostMemoryUsageHostNetworkTrafficHostSwapUsageUptimeMonitorUptimeMonitorSslExpirationQueueTimePerformanceThroughputExceptionRateExceptionCountTracePerformanceTracePerformanceActionTraceThroughputTraceErrorRateTraceErrorCount metric_namestringrequired- The metric this trigger monitors. Required for "upsert". Use get_metric_names() to discover available metrics for the application.
warmup_durationintegerrequired- Number of minutes the condition must be met before an alert is opened. Required for "upsert". Use 0 for immediate alerting, higher values to avoid false positives.
dashboard_idstring- Dashboard ID to link in notifications. Use get_app_resources(sections: ["dashboards"]) to find available dashboard IDs.
descriptionstring- Description of what this trigger monitors and what to do when it fires.
formatstring- The data format of the metric (e.g. "duration", "size", "number", "percent").
format_inputstring- The input size for the "size" format (e.g. "kilobyte", "megabyte").
idstring- ID of an existing trigger. For "upsert", provide to archive that trigger and create a new one with the same version chain. Required for "archive".
namestring- Display name for the trigger. If not provided, the metric name is used.
no_match_is_zeroboolean- If true, treat missing metric data as 0. Useful for counters that may not report when there's no activity. Defaults to false.
notifier_idsarray- List of notifier IDs to send alerts to. Use get_app_resources(sections: ["notifiers"]) to find available notifier IDs. Defaults to empty list if not provided.
tagsarray- Tag filters to scope which metrics are included. Values support wildcards (*). Example: [{"key": "hostname", "value": "web*"}]
appsignalmcp_manage_uptime_monitor<usecase>Use this tool when you need to: - Create an uptime monitor that checks a URL every minute from one or more regions - Update an existing monitor's URL, name, regions, notifiers, headers, warmup or body check - Delete an uptime monitor that is no longer needed An update changes the existing monitor in place.WriteManage Uptime Monitor
<usecase>Use this tool when you need to: - Create an uptime monitor that checks a URL every minute from one or more regions - Update an existing monitor's URL, name, regions, notifiers, headers, warmup or body check - Delete an uptime monitor that is no longer needed An update changes the existing monitor in place. Only the fields you provide are changed; omitted fields keep their current value.</usecase> <instructions>Create, update, or delete an uptime monitor. The `action` field selects the operation. To create a monitor (checked from all regions when `regions` is omitted): { "app_name": "AppSignal", "app_environment": "production", "action": "upsert", "name": "API health", "url": "https://api.example.com/health", "notifier_ids": ["notifier_id_1"] } To update an existing monitor (only the given fields change): { "app_name": "AppSignal", "app_environment": "production", "action": "upsert", "id": "existing_monitor_id", "regions": ["europe"], "warmup_duration": 5 } To delete a monitor: { "app_name": "AppSignal", "app_environment": "production", "action": "delete", "id": "existing_monitor_id" } Use get_app_resources(sections: ["uptime_monitors"]) to find a monitor's ID and its current settings. Use get_app_resources(sections: ["notifiers"]) to find notifier IDs.</instructions>
Inputs
actionstringrequired- Operation to perform:
- "upsert": create a new monitor, or update an existing one when `id` is provided
- "delete": permanently remove a monitor (requires `id`)
one of
upsertdelete app_environmentstringrequired- Environment of the application (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application the uptime monitor belongs to (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
check_body_contentstring- Text the response body must contain for the check to pass.
descriptionstring- Description of the monitor, shown in the app.
headersobject- Request headers to send with each check, as an object of header name to value (e.g. {"Authorization": "Bearer ..."}). Replaces all current headers on update; pass {} to remove them.
idstring- For "upsert": ID of an existing monitor to update. If omitted, a new monitor is created. For "delete": ID of the monitor to remove (required).
monitor_ssl_expirationboolean- Whether to alert when the SSL certificate is about to expire. HTTPS URLs only.
namestring- Name of the monitor, also shown on public status pages. Required on create.
notifier_idsarray- Notifier IDs to alert when the URL is down. Replaces the current notifiers on update; pass [] to remove all. Use get_app_resources(sections: ["notifiers"]) to find notifier IDs.
regionsarray- Regions to check the URL from. Defaults to all regions (europe, north-america, asia-pacific, south-america) on create. On update, replaces the current regions.
urlstring- URL to check, starting with http:// or https://. Required on create.
warmup_durationinteger- Minutes the URL must be failing before an alert is opened. Defaults to 0 on create.
appsignalmcp_reorder_log_line_actionsReorder log line actions to change their execution order during log ingestion.WriteReorder Log Line Actions
Reorder log line actions to change their execution order during log ingestion.
- Idempotent
Inputs
action_idsarrayrequired- Ordered list of log line action IDs defining the new execution order.
app_environmentstringrequired- The environment of the AppSignal app (e.g. production, staging).
app_namestringrequired- The name of the AppSignal app.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
appsignalmcp_update_dashboard_visualUpdate a visual component on an AppSignal dashboard.WriteUpdate Dashboard Visual
Update a visual component on an AppSignal dashboard.
- Idempotent
Inputs
app_environmentstringrequired- Environment containing the visual (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application containing the visual (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
visual_idstringrequired- ID of the visual component to update. You can find visual IDs from dashboard listings (discover_metrics) or create responses.
descriptionstring- New description. If not provided, the current description is kept. Set to an empty string to remove the description.
displaystring- Timeseries visuals only. Display type: "line", "area", or "area_relative". If not provided, the current display type is kept.one of
lineareaarea_relative draw_null_as_zeroboolean- Timeseries visuals only. Whether to draw null/missing data points as zero values. If not provided, current setting is kept.
formatstring- Format for displaying values. One of: number, percent, duration, throughput, size. If not provided, the current format is kept.one of
numberpercentdurationthroughputsize format_inputstring- Unit of the incoming value. Only applies when format is "size", and is cleared for every other format. One of: bit, byte, kilobit, kilobyte, megabyte. If not provided, the current format_input is kept.one of
bitbytekilobitkilobytemegabyte line_labelstring- Timeseries visuals only. Customizable label for lines in the chart. Supports replacements: %name%, %field%, %tag%. If not provided, current line_label is kept.
metricobject- Big Number (type: "number") visuals only. Replaces the entire metric definition. If not provided, the existing metric is kept.
metricsarray- Timeseries visuals only. Replaces the entire array of metrics. If not provided, existing metrics are kept.
min_y_axisnumber- Timeseries visuals only. Minimum value for the Y-axis. If not provided, current min_y_axis is kept.
tagsarray- Timeseries visuals only. Global tags applied to every metric in this visual. If provided, these replace existing global tags.
titlestring- New title. If not provided, the current title is kept.
appsignalmcp_update_incidentsBulk update AppSignal incidents: change state, severity, assign or unassign team members.WriteUpdate Incidents
Bulk update AppSignal incidents: change state, severity, assign or unassign team members.
Inputs
app_environmentstringrequired- Environment containing the incidents (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found. Common values are "production", "staging", "development".
app_namestringrequired- Name of the AppSignal application containing the incidents (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
assign_usersarray- List of user IDs to assign as handlers for these incidents. These users must be members of the application.
incidentsarray- List of incident numbers to update. These are the numeric IDs shown in the AppSignal UI and incident lists.
severitystring- New severity level to set for all listed incidents.one of
untriagedcriticalhighlownoneinformational statestring- New state to set for all listed incidents.one of
openclosedwip unassign_usersarray- List of user IDs to remove as handlers from these incidents. Only removes the listed users, others remain assigned.
appsignalmcp_archive_triggerArchive an anomaly detection trigger by providing the trigger ID.DestructiveArchive Trigger
Archive an anomaly detection trigger by providing the trigger ID. This closes all associated alerts and incidents.
Inputs
app_environmentstringrequired- Environment name. Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application. Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
idstringrequired- ID of the trigger to archive. Use get_triggers() to find trigger IDs.
appsignalmcp_delete_log_line_actionDelete a log line action by providing the action ID.DestructiveDelete Log Line Action
Delete a log line action by providing the action ID.
Inputs
app_environmentstringrequired- Environment name. Not case-sensitive. Closest matches are suggested if not found.
app_namestringrequired- Name of the AppSignal application. Not case-sensitive.
contextstringrequired- Describe why you are calling this tool and how it fits into your overall task
idstringrequired- ID of the log line action to delete. Use get_app_resources(sections: ["log_line_actions"]) to find action IDs.
No tools match.