Changelog

Improving AppSignal, one deploy at a time.

Aug 15, 2025

MCP Updates

Added

  • Add the create_incident_note tool for the MCP server. This allows AI Agents to comment on incidents.
    Screenshot 2025-08-14 at 12 20 09

Changed

  • The update_incident MCP Tool now accepts severity as an argument (and sets the severity accordingly).
Aug 11, 2025

Download samples as JSON

Added

  • Allow downloading samples as JSON
  • Include Unassigned option in the assignee filter
  • Add a callout to the instrumentation docs when the trace timeline has a few items

Fixed

  • Fix visual bugs in the integration button dropdown.
Aug 06, 2025

kubernetes and Anomaly updates

Added

  • Add the ability to treat missing data point as 0 for performance and error triggers. If you have traffic in bursts (e.g. a Cron job), there's not always enough data to trigger or close an alert. When checking this checkbox, we will simulate the metric, allowing alerts to close.
    treat missing data point as 0
  • Add container status, uptime, and restart count in the Kubernetes Pods table
  • Add container status and owner reference grouping options in the Kubernetes overview page
  • Add uptime and restart count in the Pod overview tooltip

Changed

  • Update the order of steps in the OpenTelemetry Java installation flow to improve the installation flow experience.
Aug 04, 2025

MCP Discover metrics & Kubernetes state pop-over

Added

  • Add ability for Ai Agents to discover our metrics on our MCP server. Before this discover_metrics endpoint, we had our get_metric_names endpoint, but it was difficult for agents to determine what metric should be used when.

    With this new discover_metrics endpoint, we provide the Agent with a global overview of metric categories, and when they request more information about a category, we describe the metric names/tags/fields, and when to use them.

    We also take custom metrics and dashboards into account. Providing descriptive names for dashboards/description and charts on your dashboards helps the agent use those metrics.

Changed

  • Improve cluster state pop-over. Show state of containers, if there are any.
    Screenshot of Kubernetes Node Overview Pop-over
Jul 31, 2025

Application Updates

Added

  • Add get_metrics_timeseries endpoint to the MCP server. This endpoint exposes timeseries metrics to an AI Agent, enabling queries such as

    Show me the load average for all front-end machines on MyApp/production

    Shell
    Here's a summary of the load averages for the two frontend machines: 1. frontend1: - Load average range: 0.83 - 1.6 - Current load: 0.94 2. frontend2: - Load average range: 2.0 - 3.01 - Current load: 2.18 The frontend-ams1 machine appears to have a significantly higher load compared to frontend1, with load averages consistently above 2.0, while frontend2 stays mostly below 1.5.

    We are still working on metric discovery. Right now you have to be quite specific to get the desired metrics.

  • Add kubernetes volume metrics to node page.

    Kubernetes volume metrics
Jul 29, 2025

Type signatures and improved Capistrano & Hatchbox deploys

Ruby4.6.0

Added

  • Add Sorbet and RBS type signatures for the gem's public APIs. If your editor supports showing type signatures, they will now show up in for the AppSignal Ruby gem.
  • When a deployment tool (Capistrano, Hatchbox.io) provides the REVISION file in the deployed application, AppSignal will now use that to set the revision config.

Changed

  • Improve the YARD documentation for public APIs. This will make the documentation clearer and more useful for developers using the Ruby gem. Private APIs have been hidden from the generated output.
  • When an error occurs while initializing AppSignal or when running a probe, use the error log level to log the error's backtrace.

Fixed

  • When a Hash-like value (such as ActiveSupport::HashWithIndifferentAccess or Sinatra::IndifferentHash) is passed to a transaction helper (such as add_params, add_session_data, ...) it is now converted to a Ruby Hash before setting it as the value or merging it with the existing value. This allows Hash-like objects to be merged, instead of logging a warning and only storing the new value.

    Ruby
    # Example scenario Appsignal.add_params(:key1 => { :abc => "value" }) Appsignal.add_params(ActiveSupport::HashWithIndifferentAccess.new(:key2 => { :def => "value" })) # Params { :key1 => { :abc => "value" }, # Keys from HashWithIndifferentAccess are stored as Strings "key2" => { "def" => "value" } }

View the Ruby gem v4.6.0 changelog for more information.

Jul 22, 2025

Application MCP endpoint

Added

  • Add MCP endpoint to list all applications a user has access to.
  • Add Kubernetes overview page. This page shows your entire Kubernetes cluster state in one glance.
    Kubernetes Overview
Jul 21, 2025

Improve overrides and other changes

JavaScript@appsignal/javascript@1.6.0

Added

  • Add getters for spans. Use the getAction, getNamespace, getError, getTags, getParams, getBreadcrumbs, and getEnvironment methods to access data about the current span. This can be used to make decisions based on the span's properties within decorators or overrides.
  • Allow overrides to ignore spans. Within an override function, returning false will cause AppSignal to ignore the span.

Changed

  • Ignore spans by message after overrides. This allows overrides to modify error messages before ignoring them, allowing the override to cause the span to be ignored, or to prevent it from being ignored.

Deprecated

  • Deprecate @appsignal/core and @appsignal/types packages. Packages depending on these packages should be updated to use @appsignal/javascript instead.

Fixed

  • Use returned span in override. Fix an issue where the span returned from an override function was not being used, instead using the original span. This led to confusing behaviour when the override created a new span instead of modifying the original one.

    To avoid breaking existing overrides that rely on modifying the original span without returning it, if the override function does not return a span, the original span will still be used.

View the AppSignal JavaScript javascript v1.6.0 changelog for more information.

Jul 18, 2025

Webhook headers

Added

  • Add ability to set custom headers for our "Webhook" notifier
Jul 16, 2025

MCP Authentication Tokens

Added

  • Dedicated MCP authentication tokens. Instead of providing your personal AppSignal API key, that has access to all your organizations and applications, we're moving to a dedicated MCP authentication token.

    This token can be scoped to a specific organization and one or more applications. It also has permissions per "toolset", such as error incidents, metrics, and other sections of AppSignal.

    Screenshot of MCP tokens screen

    See our documentation for more information on installing the AppSignal MCP Server.

Jul 10, 2025

MCP Server (beta)

Added

  • Debug your exceptions with the help of AI Agents through our AppSignal MCP Server.

    Screenshot of Claude using the AppSignal MCP Server

    The MCP server is currently in beta, and we're focusing on (local) debugging of error incidents at this stage.

    MCP server endpoints available at this moment are:

    • get_namespaces, which can be filtered by app, and returns a list of namespaces to be used with the get_exception_incidents endpoint
    • get_users, which can be filtered by app, and returns a list of users to be used with the update_incident endpoint
    • get_exception_incidents, which can be filtered by app/namespace/status, and returns a list of incidents
    • get_incident returns detailed incident information
    • update_incidents (bulk) updates an incident with the assigned user and state

    See our documentation for more information on installing the AppSignal MCP Server.

Jul 01, 2025

Improve logger and ignore Rack connection errors

Ruby4.5.17

Fixed

  • When an Appsignal::Logger uses .broadcast_to to broadcast messages to other loggers, broadcast those messages even if the log level of those messages is lower than the logger's threshold. This allows other loggers to set their own logging thresholds.

    When the logger is silenced, messages below the silencing threshold are not broadcasted to other loggers.

  • When an Appsignal::Logger uses .broadcast_to to broadcast messages to other loggers, broadcast the original message received by the logger, without formatting it or converting it to a string.

  • Call the Appsignal::Logger formatter with the original message object given, rather than converting it to a string before calling the formatter.

  • When an error is passed to an Appsignal::Logger as the message, format it regardless of the logging level. Previously it would only be formatted when passed to #error.

  • Ignore Errno::ECONNRESET errors in the Rack wrapper.

View the Ruby gem v4.5.17 changelog for more information.

Jun 18, 2025

Customize namespaces through Plugs for Absinthe routes

Elixir2.15.9

Changed

  • Allow for more customization of trace namespaces during the trace's lifetime. Previously, it was not possible to customize the namespace of Absinthe traces before the Absinthe instrumentation had run. This is now possible, as the Absinthe instrumentation will only set the namespace if it has not been set already.

View the Elixir package v2.15.9 changelog for more information.

Start your free trial

Don’t let the bad bugs bite. Try AppSignal for free.

AppSignal offers a 30-day free trial, no credit card is required. All features are available in all plans. Start monitoring your application in just a few clicks!