Scout Monitoring MCP
OfficialThe Scout Monitoring MCP server enables AI assistants to access and analyze application performance and error data from Scout APM, helping developers identify and fix performance issues directly in their code.
Core Capabilities:
Application Management: List and filter Scout APM applications by last active date
Performance Metrics: Retrieve individual metric data (response time, throughput, error rates) for applications and timeseries metrics for specific endpoints
Endpoint Analysis: Get all endpoints with aggregated performance metrics to identify high latency, high throughput, or high error rate areas
Trace Analysis: Access recent traces filtered by endpoint or retrieve detailed individual traces with all spans and execution information for deep-dive debugging
Error Monitoring: Get recent error groups with optional filtering by endpoint or specific error group, including detailed backtraces
Performance Insights: Identify N+1 queries, memory bloat, slow queries, and other performance problems with specific details
Configuration Resources: Access setup instructions and configuration templates for supported frameworks (Rails, Django, Flask, FastAPI) and available Scout APM metrics
Use Cases:
Debug performance bottlenecks and errors with line-of-code precision
Optimize database queries and eliminate N+1 problems
Generate performance reports and integrate with development workflows to create GitHub issues, JIRA tickets, and PRs
Set up monitoring for new applications with framework-specific guidance
Provides access to Scout APM performance monitoring data for Django applications, including traces, errors, endpoint metrics, and performance insights
Provides access to Scout APM performance monitoring data for FastAPI applications, including traces, errors, endpoint metrics, and performance insights
Can be combined with AI assistants to create GitHub issues based on Scout APM error and performance data
Can be combined with AI assistants to create GitLab issues based on Scout APM error and performance data
Can be combined with AI assistants to create Jira tickets with detailed error and performance information from Scout APM
Provides access to Scout APM performance monitoring data for Laravel applications, including traces, errors, endpoint metrics, and performance insights
Provides access to Scout APM performance monitoring data for PHP applications, including traces, errors, endpoint metrics, and performance insights
Provides access to Scout APM performance monitoring data for Python applications, including traces, errors, endpoint metrics, and performance insights
Provides access to Scout APM performance monitoring data for Ruby applications, including traces, errors, endpoint metrics, and performance insights
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Scout Monitoring MCPshow me the slowest endpoints in my Rails app from the last 24 hours"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Scout Monitoring MCP
This puts Scout Monitoring's performance and error data directly in the hands of your AI Assistant. For Rails, Django, FastAPI, Laravel and more. Use it to get traces and errors with line-of-code information that the AI can use to target fixes right in your editor and codebase. N+1 queries, slow endpoints, slow queries, memory bloat, throughput issues - all your favorite performance problems surfaced and explained right where you are working.
If this makes your life a tiny bit better, why not :star: it?!
Setup Wizard
The simplest way to configure and start using the Scout MCP is with our interactive setup wizard. It handles all the prereqs and installation steps for you.
Run via npx:
npx @scout_apm/wizardBuild and run from source:
cd ./wizard
npm install
npm run build
node dist/wizard.jsThe wizard will guide you through:
Selecting your AI coding platform (Cursor, Claude Code, Claude Desktop)
Entering your Scout API key
Automatically configuring the MCP server settings
Supported Platforms
The wizard currently supports setup for:
Cursor - Automatically configures MCP settings
Claude Code (CLI) - Provides the correct command to run
Claude Desktop - Updates the configuration file for Windows/Mac
For all others, it will output JSON that you can copy/paste into your AI Assistant's MCP configuration.
Related MCP server: OpenTelemetry MCP Server
Prerequisites
The Wizard is a great way to get started, but you can also set things up manually. You will need to have or create a Scout Monitoring account and obtain an API key.
Install the Scout Agent in your application and send Scout data!
Visit settings to get or create an API key
This is not your "Agent Key"; it's the "API Key" that can be created on the Settings page
This is a read-only key that can only access data in your account
Install Docker. Instructions below assume you can start a Docker container
The MCP server will not currently start without an API key set, either in the environment or by a command-line argument on startup.
Installation
We recommend using the provided Docker image to run the MCP server. It is intended to be started by your AI Assistant and configured with your Scout API key. Many local clients allow specifying a command to run the MCP server in some location. A few examples are provided below.
The Docker image is available on Docker Hub.
Of course, you can always clone this repo and run the MCP server directly; uv or other
environment management tools are recommended.
Configure a local Client (e.g. Claude/Cursor/VS Code Copilot)
If you would like to configure the MCP manually, this usually just means supplying a command to run the MCP server with your API key in the environment to your AI Assistant's config. Here is the shape of the JSON (the top-level key varies):
{
"mcpServers": {
"scout-apm": {
"command": "docker",
"args": ["run", "--rm", "-i", "--env", "SCOUT_API_KEY", "scoutapp/scout-mcp-local"],
"env": { "SCOUT_API_KEY": "your_scout_api_key_here"}
}
}
}claude mcp add scoutmcp -e SCOUT_API_KEY=your_scout_api_key_here -- docker run --rm -i -e SCOUT_API_KEY scoutapp/scout-mcp-localMAKE SURE to update the SCOUT_API_KEY value to your actual api key in
Arguments in the Cursor Settings > MCP
We recommend the "Add an MCP server to your workspace" option
Add the following to your claude config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"scout-apm": {
"command": "docker",
"args": ["run", "--rm", "-i", "--env", "SCOUT_API_KEY", "scoutapp/scout-mcp-local"],
"env": { "SCOUT_API_KEY": "your_scout_api_key_here"}
}
}
}Using the Scout Monitoring MCP
Scout's MCP is intended to put error and performance data directly in the... hands? of your AI Assistant. Use it to get traces and errors with line-of-code information that the AI can use to target fixes right in your editor.
Most assistants will show you both raw tool calls and perform analysis. Desktop assistants can readily create custom JS applications to explore whatever data you desire. Assistants integrated into code editors can use trace data and error backtraces to make fixes right in your codebase.
Combine Scout's MCP with your AI Assistant's other tools to:
Create rich GitHub/GitLab issues based on errors and performance data
Make JIRA fun - have your AI Assistant create tickets with all the details
Generate PRs that fix specific errors and performance problems
Tools
The Scout MCP provides the following tools for accessing Scout APM data:
list_apps- List available Scout APM applications, with optional filtering by last active dateget_app_metrics- Get individual metric data (response_time, throughput, etc.) for a specific applicationget_app_endpoints- Get all endpoints for an application with aggregated performance metricsget_endpoint_metrics- Get timeseries metrics for a specific endpoint in an applicationget_app_endpoint_traces- Get recent traces for an app filtered to a specific endpointget_app_trace- Get an individual trace with all spans and detailed execution informationget_app_error_groups- Get recent error groups for an app, optionally filtered by endpointget_app_insights- Get performance insights including N+1 queries, memory bloat, and slow queries
Resources
The Scout MCP provides configuration templates as resources that your AI assistant can read and apply:
scoutapm://config-resources/{framework}- Setup instructions for supported framework or library (rails, django, flask, fastapi)scoutapm://config-resources/list- List all available configuration templatesscoutapm://metrics- List of all available metrics for Scout APM
Useful Prompts
Setup & Configuration
"Help me set up Scout monitoring for my Rails application"
"Create a Scout APM config file for my Django project with key ABC123"
Performance & Monitoring
"Summarize the available tools in the Scout Monitoring MCP."
"Find the slowest endpoints for app
my-app-namein the last 7 days. Generate a table with the results including the average response time, throughput, and P95 response time.""Show me the highest-frequency errors for app
Fooin the last 24 hours. Get the latest error detail, examine the backtrace and suggest a fix.""Get any recent n+1 insights for app
Bar. Pull the specific trace by id and help me optimize it based on the backtrace data."
Token Usage
We are currently more interested in expanding available information than strictly
controlling response size from our MCP tools. If your AI Assistant has a configurable
token limit (e.g. Claude Code export MAX_MCP_OUTPUT_TOKENS=50000), we recommend
setting it generously high, e.g. 50,000 tokens.
Local Development
We use uv and taskipy to manage environments and run tasks for this project.
Run with Inspector
uv run task devConnect within inspector to add API key, set to STDIO transport
Build the Docker image
docker build -t scout-mcp-local .Release
Branch and bump versions with
uv run python bump_versions.pyGet that merged
Create a GitHub release with the new version (
gh release create v2025.11.3 --generate-notes --draft)
For the bots:
mcp-name: com.scoutapm/scout-mcp-local
Available Tools
13 toolsget_app_endpointsA
Get all endpoints for a specific application. Also gets aggregated performance
metrics withing the window of "from_" to "to". Useful for identifying high
throughput, high latency or high error rate endpoints accross the application with a
single call.
These endpoints can be used in other tools to fetch endpoint-specific metrics,
traces or errors.
Args:
app_id (int): The ID of the Scout APM application.
from_ (str): The start datetime in ISO 8601 format.
to (str): The end datetime in ISO 8601 format.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| from_ | Yes | ||
| to | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It accurately describes a read operation (getting endpoints and metrics) with no side effects mentioned. It does not discuss permissions or rate limits, but for a simple read tool, the description is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and includes a helpful note about reuse. The Args section is somewhat verbose but adds necessary detail. Overall, it's concise enough without missing key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (not shown), the description does not need to detail return values. It covers the tool's purpose, parameters, and usage context well, though it could mention what the aggregated metrics look like or any pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description explains all three parameters (app_id, from_, to) in detail, adding meaning beyond the schema titles. It specifies that from_ and to are ISO 8601 datetimes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets all endpoints for an application and also aggregated performance metrics. This distinguishes it from siblings like get_app_endpoint_traces (traces) and get_app_metrics (metrics only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at when to use the tool (identifying high throughput, latency, error rate) and mentions endpoints can be used in other tools. However, it does not explicitly state when not to use or compare against alternatives like get_app_endpoint_traces.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_endpoint_tracesA
Get recent traces for an app filtered to a specific endpoint.
Args:
app_id (int): The ID of the Scout APM application.
endpoint_id (str): The ID of the endpoint to filter traces.
from_ (str): The start datetime in ISO 8601 format.
to (str): The end datetime in ISO 8601 format.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| from_ | Yes | ||
| to | Yes | ||
| endpoint_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description only states the basic action without disclosing behavioral traits such as read-only nature, rate limits, data freshness, or response structure. This leaves significant gaps for agent decision-making.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence plus an Args block. The main sentence is front-loaded. The Args block, while somewhat redundant with the schema, aids quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema available, the description need not explain return values. However, it lacks usage nuance (e.g., time range limits, result set size). The 4 required parameters are fully listed, but the description does not set expectations for what constitutes 'recent' or how results are ordered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description includes an Args section that adds type and brief descriptions for each parameter (e.g., 'The ID of the Scout APM application'). This compensates for the schema's lack of descriptions, though it does not cover all details like allowable formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recent traces filtered by app and endpoint, using specific verbs and resource names. It implicitly distinguishes from siblings like get_app_trace (singular) and get_app_error_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., get_app_trace for a single trace). Usage is implied from the description but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_error_groupsC
Get recent error_groups for an app, optionally filtered to a specific endpoint or
group.
Args:
app_id (int): The ID of the Scout APM application.
endpoint_id (str | None): The ID of the endpoint to filter errors. If None,
fetches all errors for the app.
error_group_id (str | None): The ID of the error group to filter errors.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| from_ | Yes | ||
| to | Yes | ||
| endpoint_id | No | ||
| error_group_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It does not disclose important behavioral traits such as: whether the tool requires specific authentication, pagination behavior, or what happens if date range parameters are omitted (they are required but not explained). The missing from_ and to parameters are critical for safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but includes a redundant Args list that duplicates schema info without adding value. It fails to mention key parameters (from_, to), indicating poor scoping. Conciseness is undermined by incompleteness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to explain return values. However, it still fails to document all input parameters (missing from_, to) and does not account for the conflict between 'recent' and required date ranges. Essential context is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It lists three parameters (app_id, endpoint_id, error_group_id) but neglects the two required parameters from_ and to. While it clarifies optional filters, the omission of vital time range parameters severely limits its usefulness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the action (get) and resource (error_groups for an app), and mentions optional filters. However, it omits the required date range parameters (from_, to) present in the schema, which are essential to understand the scope of data returned. The phrase 'recent' conflicts with the explicit time range parameters, reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings (e.g., get_app_endpoint_traces, get_app_trace). There is no mention of appropriate contexts, prerequisites, or alternatives. The description is purely functional with no usage strategy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_insightsA
Get or generate all insights for an application (cached for 5 minutes).
Returns performance insights including N+1 queries, memory bloat, and slow queries.
Each insight type includes count, new_count, and items array with specific details.
If insight_type is provided, only that type will be returned.
Args:
app_id (int): The ID of the Scout APM application.
insight_type: (str | None): Type of insight to filter (n_plus_one, memory_bloat,
slow_query) If None (the default), all types will
be returned.
limit (int | None): Maximum number of items per insight type (default: 20).
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| insight_type | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must cover behavioral traits. It mentions caching (5 minutes) and the ability to filter by insight_type, but does not disclose read-only nature, authentication needs, rate limits, or error behavior for invalid app_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief overview, a list of insight types, and a docstring-style parameter section. It is concise yet informative, though some sentences could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (not shown), the description does not need to detail return values. It covers caching, filtering, and parameter details adequately. Missing information about pagination or error handling prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage, so the description must compensate. It clearly explains each parameter: app_id as the application ID, insight_type with allowed values (n_plus_one, memory_bloat, slow_query) and default, and limit as max items per type with default 20. This adds essential meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves or generates performance insights for an application, listing specific types like N+1 queries, memory bloat, and slow queries. It distinguishes itself from sibling tools (e.g., get_app_endpoints, get_app_metrics) by focusing on application-level performance insights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for getting performance insights but does not provide explicit when-to-use or when-not-to-use guidance relative to siblings. No exclusions or alternatives are mentioned, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_jobsA
Get all background jobs for a specific application. Also gets aggregated performance
metrics within the window of "from_" to "to". Useful for identifying high
throughput, high latency or high error rate jobs across the application with a
single call.
Each job includes: full_name, name, queue, job_id, throughput, execution_time,
time_consumed, latency.
Args:
app_id (int): The ID of the Scout APM application.
from_ (str): The start datetime in ISO 8601 format.
to (str): The end datetime in ISO 8601 format.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| from_ | Yes | ||
| to | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly describes the tool as a read operation returning job details and metrics, but it doesn't explicitly state it is read-only or mention behavior on invalid dates. The field list adds transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a brief purpose and use case, a list of returned fields, and a clear parameter list. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lists key fields. It covers purpose, parameters, return content, and a use case. For a simple listing tool, it is complete and informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description fully explains each parameter: app_id is the application ID, from_ and to are start/end datetimes in ISO 8601 format. This adds essential meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets all background jobs for a specific application and also aggregated performance metrics. It names specific fields and use case, making the tool's purpose unambiguous and distinct from siblings like get_app_job_traces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the tool is useful for identifying high throughput, latency, or error rate jobs with a single call, providing clear usage context. However, it does not explicitly mention when not to use it or compare to alternatives like get_app_job_traces.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_job_tracesA
Get recent traces for an app filtered to a specific background job.
Each trace includes: id, time, duration, name, queue, metric_name, context.
Args:
app_id (int): The ID of the Scout APM application.
job_id (str): The Base64-encoded job ID.
from_ (str): The start datetime in ISO 8601 format.
to (str): The end datetime in ISO 8601 format.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| from_ | Yes | ||
| to | Yes | ||
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states traces are 'recent' and filtered to a job, but does not clarify recency bounds, pagination, response limits, or error states. Listing trace fields adds some value but edges are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose sentence, trace field list, and parameter docs. It is front-loaded and efficient, though the 'Each trace includes' line could be integrated with output schema info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 required parameters, no annotations, and an output schema, the description provides adequate parameter semantics but misses overall context like usage scenarios, pagination, or error handling. It is sufficient but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully documents each parameter: app_id ('ID of the Scout APM application'), job_id ('Base64-encoded job ID'), from_ and to (ISO 8601 datetime). This adds meaning beyond schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get recent traces for an app filtered to a specific background job,' specifying the verb (get), resource (traces), and scope (app and job). This distinguishes it from siblings like get_app_trace (single trace) and get_app_jobs (list jobs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks guidance on when to use this tool versus alternatives. No mention of prerequisites, fallbacks, or context like 'use for debugging job performance' or 'for a single trace use get_app_trace instead.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_metricsA
Get individual metric data for a specific application.
Args:
app_id (int): The ID of the Scout APM application.
metric (str): The metric to retrieve (e.g., "response_time", "throughput").
from_ (str): The start datetime in ISO 8601 format.
to (str): The end datetime in ISO 8601 format.| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| metric | Yes | ||
| from_ | Yes | ||
| to | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, and the description does not disclose behavioral traits such as required permissions, rate limits, or what happens if the metric is unavailable. For a tool with no annotations, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat verbose, using a Python docstring style with parameter listings. It could be more concise, but the information is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered. However, it lacks context on prerequisites, authentication, or limitations. Given the complexity and sibling tools, this description is minimally adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description adds significant meaning by explaining each parameter: app_id, metric, from_, and to. It specifies that from_ and to should be in ISO 8601 format, which is valuable beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get individual metric data for a specific application,' specifying both the action and resource. It effectively distinguishes from sibling tools like get_app_endpoints and get_app_insights by focusing on metric data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly guide when to use this tool versus alternatives like get_endpoint_metrics or get_job_metrics. The purpose is implied but lacks explicit when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_traceB
Get an individual trace with all spans.
Args:
app_id (int): The ID of the Scout APM application.
trace_id (int): The ID of the trace to retrieve.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| trace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully convey behavior, but it only states the operation is a retrieval. It does not disclose any potential side effects, authentication requirements, rate limits, or data volume implications, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear structure: purpose sentence followed by parameter list. However, the parameter list could be more compact, and the overall length is appropriate without excess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the output schema exists (so return values don't need explanation), the description lacks context about trace semantics, error handling, or data completeness. For a simple retrieval, it is minimally adequate but leaves room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes 'Args' that briefly explain each parameter (app_id and trace_id as IDs), adding meaning beyond the schema's minimal titles and types. This compensates for the schema's low description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('individual trace with all spans'), making the purpose immediately understandable. It distinguishes from sibling tools like 'get_app_endpoint_traces' by focusing on general traces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of context, prerequisites, or exclusions, leaving the agent to infer usage through the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_endpoint_metricsB
Get a single timeseries metric for a specific endpoint in an application.
Args:
app_id (int): The ID of the Scout APM application.
endpoint (str): The endpoint path (e.g., "/users", "/orders").
metric (str): The metric to retrieve (e.g., "response_time", "throughput").
from_ (str): The start datetime in ISO 8601 format.
to (str): The end datetime in ISO 8601 format.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| endpoint | Yes | ||
| metric | Yes | ||
| from_ | Yes | ||
| to | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It implies a read operation but does not mention auth, rate limits, return format, or any edge cases. The description is silent on most behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear header and a structured list. No extraneous text. However, the parameter list could be integrated more naturally, and the description is slightly terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description adequately covers the main action. However, it lacks details about time range constraints, data granularity, or empty result handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful explanations for all 5 parameters (e.g., 'The ID of the Scout APM application.'), which goes beyond the schema's bare titles. This compensates for the low schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a single timeseries metric for a specific endpoint, using a specific verb and resource. It does not explicitly differentiate from sibling tools like get_app_metrics, but the specificity reduces ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., get_app_metrics for multiple metrics). There are no conditionals or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_metricsB
Get a single timeseries metric for a specific background job in an application.
Valid job metrics: throughput, execution_time, latency, errors, allocations.
Args:
app_id (int): The ID of the Scout APM application.
job_id (str): The Base64-encoded job ID.
metric (str): The metric to retrieve (e.g., "execution_time", "throughput").
from_ (str): The start datetime in ISO 8601 format.
to (str): The end datetime in ISO 8601 format.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| job_id | Yes | ||
| metric | Yes | ||
| from_ | Yes | ||
| to | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behaviors. It only states it retrieves a single timeseries metric but does not mention authorization needs, rate limits, error handling, or what happens if the job is missing. The return format is also not described despite an output schema existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear first sentence and a brief list of valid metrics. The Args block is slightly verbose but acceptable given the lack of schema descriptions. No unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 required parameters and an output schema, the description covers the purpose and parameters adequately. However, it omits details about the output format (e.g., data points or single value) and error scenarios, leaving gaps for a data-retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description adds value by listing and describing each parameter (app_id, job_id, metric, from_, to) and providing valid metric values. However, from_ and to lack format details beyond 'ISO 8601'. Overall, it compensates partially for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a single timeseries metric for a specific background job', specifying the verb and resource. It lists valid metrics, distinguishing it from sibling tools like get_app_jobs (list jobs) and get_app_job_traces (traces).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when a specific job's metric is needed) but lacks explicit when-not-to-use or alternatives. No mention of when to choose this over get_app_metrics or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scout_setup_instructionsA
Get step-by-step instructions to instrument Scout APM in a framework.
Always use this tool first when asked to setup/instrument/configure
Scout APM in an application. This provides official, tested configuration
instructions that should be followed exactly.
Supported frameworks:
- Web: bottle, dash, django, falcon, fastapi, flask, hug, rails, starlette
- Background Jobs: celery, dramatiq, huey, rq
- Database: sqlalchemy
Args:
framework: The framework or library name (e.g., "fastapi", "django", "celery")
Returns:
Complete setup instructions including installation, configuration, and examples.
| Name | Required | Description | Default |
|---|---|---|---|
| framework | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description implies a read-only operation by retrieving instructions, with no mention of side effects or destructive actions. It could benefit from explicitly stating it does not modify any state, but the behavior is transparent enough for an instruction-gathering tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, usage instruction, supported frameworks list, and parameter details. It is concise without unnecessary information. The supported frameworks list adds some length but is relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown), the description does not need to detail return values. It mentions 'Complete setup instructions including installation, configuration, and examples.' Overall, it provides sufficient context for the tool's function and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single 'framework' parameter with 0% coverage (no description). The description compensates by listing supported frameworks and giving an example ('fastapi', 'django', 'celery'), adding context that the schema lacks. It could be improved by providing a full list of accepted values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides step-by-step setup instructions for Scout APM in a framework. It distinguishes from sibling tools that retrieve app data, not configuration instructions. The verb 'Get' and resource 'setup instructions' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises 'Always use this tool first when asked to setup/instrument/configure Scout APM in an application.' It provides a list of supported frameworks, aiding tool selection. While it doesn't mention when not to use it or alternatives, the guidance is clear for its intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageA
Get usage and billing data for the current billing period.
Returns billing period dates, pricing style, APM transaction counts (with limit if applicable), node counts (for per-node pricing), error counts (if error monitoring is enabled), and log bytes used (if logs integration is enabled).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the transparency burden. It explicitly states this is a read operation and details the returned fields, including conditional fields like 'with limit if applicable'. No side effects or auth needs are mentioned, but for a simple get tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two clearly worded sentences with no unnecessary information. It front-loads the core purpose and then lists the returned data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description sufficiently explains what the tool returns. It covers all mentioned data categories and is complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100%. The description does not need to add parameter meaning, and the baseline for 0-parameter tools is 4. No extra parameter information is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves usage and billing data for the current billing period. It lists specific data points returned, distinguishing it from sibling tools that focus on app-specific metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving billing information but provides no explicit when-to-use or when-not-to-use guidelines, nor does it reference alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_appsA
List available Scout APM applications. Provide an optional `active_since` ISO 8601
to filter to only apps that have reported data since that time. Defaults to the
metric retention period of thirty days.
Args:
active_since (str): ISO 8601 datetime string to filter apps active since that
time.
| Name | Required | Description | Default |
|---|---|---|---|
| active_since | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the filtering capability and default period, but does not mention any side effects. Since it's a read-only listing tool, the transparency is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences and an explicit 'Args' block. It is well-structured and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one optional parameter and an output schema present, the description provides sufficient context: purpose, parameter usage, and default behavior. No details about output are needed due to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning by specifying 'ISO 8601 datetime string to filter apps active since that time', compensating for the schema's lack of parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List available Scout APM applications', specifying both the action (list) and resource (applications). It is distinct from sibling tools which are all 'get_*' operations for specific details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the optional parameter 'active_since' and its default behavior (thirty-day retention). It provides clear guidance on filtering, though it does not explicitly compare to alternatives or state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.1- Added
get_app_job_traces - Added
get_app_jobs - Added
get_job_metrics - Added
get_usage
9 tool updates
v1.0.0- Changed
get_app_endpoint_traces1 field changed- added
Input schema / titleAdded value: +"get_app_endpoint_tracesArguments"
- Changed
get_app_endpoints1 field changed- added
Input schema / titleAdded value: +"get_app_endpointsArguments"
- Changed
get_app_error_groups1 field changed- added
Input schema / titleAdded value: +"get_app_error_groupsArguments"
- Changed
get_app_insights1 field changed- added
Input schema / titleAdded value: +"get_app_insightsArguments"
- Changed
get_app_metrics1 field changed- added
Input schema / titleAdded value: +"get_app_metricArguments"
- Changed
get_app_trace1 field changed- added
Input schema / titleAdded value: +"get_app_traceArguments"
- Changed
get_endpoint_metrics1 field changed- added
Input schema / titleAdded value: +"get_endpoint_metricArguments"
- Added
get_scout_setup_instructions - Changed
list_apps1 field changed- added
Input schema / titleAdded value: +"list_scout_appsArguments"
8 tool updates
- First observed
get_app_endpoint_traces - First observed
get_app_endpoints - First observed
get_app_error_groups - First observed
get_app_insights - First observed
get_app_metrics - First observed
get_app_trace - First observed
get_endpoint_metrics - First observed
list_apps
TDQS
Scored across 13 tools
The tools are mostly distinct by resource type—apps, endpoints, jobs, traces, errors, insights—but the metric tools (get_app_metrics, get_endpoint_metrics, get_job_metrics) share a very similar shape and could be confused at a glance. The endpoint path vs endpoint ID difference between get_endpoint_metrics and get_app_endpoint_traces adds another minor selection trap.
Most tools follow a readable get_<resource>_<detail> pattern and are consistently snake_case. However, list_apps breaks the get_* convention, and the placement of app is inconsistent (get_endpoint_metrics vs get_app_endpoint_traces, get_job_metrics vs get_app_job_traces).
Thirteen tools is well-scoped for an APM monitoring server. Each tool covers a meaningful query surface—setup, apps, metrics, endpoints, jobs, traces, errors, insights, and usage—without padding or redundant duplicates.
The server covers the core APM read workflows: instrumentation setup, app discovery, endpoint and job metrics, traces, error groups, insights, and billing. Minor gaps exist, such as no direct app-wide trace listing and no separate per-error detail endpoint, but agents can likely work around these using endpoint-filtered traces or error groups.
Maintenance
Related MCP Connectors
- HeystackOAuthdev.heystack
Observability for AI apps: investigate traces, logs, LLM usage, replays and crashes; manage alerts.
Investigate errors, track deployments, analyze performance, and manage application monitoring
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
- SuperlogOAuthsh.superlog
Open-source agent that observes and fixes your application. Query logs, traces, metrics, incidents.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables AI assistants to interact with New Relic monitoring and observability data through programmatic access to New Relic APIs. Supports APM management, NRQL queries, alert policies, synthetic monitoring, dashboards, infrastructure monitoring, and deployment tracking.26281 PyPI6MIT
- FlicenseAqualityDmaintenanceEnables AI agents to query Prometheus metrics and Loki logs for intelligent alert investigation and troubleshooting. Provides service discovery, metric querying, log searching, and correlation tools to help identify root causes of issues.9-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to query and fetch error and performance monitoring data from AppSignal through the Model Context Protocol. Supports searching and retrieving detailed information about application errors and performance samples with flexible filtering options.5MIT
- FlicenseAqualityDmaintenanceEnables AI agents to access New Relic logs and APM data through the NerdGraph API. It allows users to execute NRQL queries, retrieve application performance metrics, and analyze transaction traces using natural language.61-