Scout Monitoring MCP
OfficialThis server exposes Scout Monitoring's application performance and error data to AI assistants, enabling setup guidance and deep performance investigation.
Setup Scout APM: Get official step-by-step instrumentation instructions for frameworks like Rails, Django, Flask, FastAPI, Celery, and SQLAlchemy.
Discover applications: List Scout APM apps, filtered by activity date.
Analyze app metrics: Retrieve timeseries data (response time, throughput, etc.) for an app, endpoint, or background job.
Inspect endpoints & jobs: List all endpoints and background jobs with aggregated performance metrics to spot slow or high-throughput areas.
Examine traces: Fetch recent traces per endpoint or job, and pull detailed individual traces with all spans for line-of-code analysis.
Diagnose errors: Get recent error groups, optionally filtered by endpoint or group.
Detect anomalies: List and inspect anomaly events (response time spikes, throughput drops) with smart-monitor and deploy context.
Surface performance insights: Retrieve N+1 queries, memory bloat, and slow query insights.
Check usage: View billing period usage, transaction/node/error counts, and log bytes.
Access config resources: Read framework-specific setup templates and the list of available metrics.
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)
Publishing the release pushes the v* tag, and CI publishes the Docker image, the PyPI package, and then the
MCP Registry entries:
server.json→com.scoutapm/scout-mcp-local(this server; its version is bumped bybump_versions.py)server.remote.json→com.scoutapm/scout-monitoring(the hosted server athttps://scoutapm.com/mcp). Bump itsversionby hand when you change its metadata; unchanged versions are skipped.
MCP Registry key
The registry verifies we own the com.scoutapm/* namespace through a DNS TXT record at the scoutapm.com apex
holding an Ed25519 public key. CI signs in with the matching private key from the MCP_REGISTRY_PRIVATE_KEY
repository secret. To rotate it:
openssl genpkey -algorithm Ed25519 -out key.pem
# Public key for the TXT record: replace the existing v=MCPv1 record, don't add a second one
echo "v=MCPv1; k=ed25519; p=$(openssl pkey -in key.pem -pubout -outform DER | tail -c 32 | base64)"
# Private key (hex) for the MCP_REGISTRY_PRIVATE_KEY secret
openssl pkey -in key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n'For the bots:
mcp-name: com.scoutapm/scout-mcp-local
Available Tools
15 toolsget_app_anomaly_eventB
Get a single anomaly event by ID, with smart_monitor and deploy context.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | ||
| anomaly_event_id | 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 are provided, so the description carries the full burden. It adds useful context about the response ('with smart_monitor and deploy context'), but does not disclose read-only nature, required permissions, error behavior (e.g., not found), or rate limits. For a simple read this is adequate but thin.
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?
A single, front-loaded sentence with zero waste. It tells the agent the operation, scope, and a key piece of response context without filler.
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?
Complexity is low (two integer parameters) and an output schema exists, so return values need not be explained. However, with 0% schema description coverage and no annotations, the description should at least clarify the required app_id or error behavior; it omits both.
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 compensate but does not. It says 'by ID' without naming app_id or anomaly_event_id, leaving the agent to infer both from parameter titles alone. Only the anomaly event ID is loosely implied.
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?
States a specific verb ('Get') and resource ('single anomaly event by ID'). The word 'single' implicitly distinguishes it from the plural sibling get_app_anomaly_events, though the sibling is not named explicitly.
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?
Usage is implied: retrieve one anomaly event when you already have its ID. There is no explicit statement of when to use this versus get_app_anomaly_events or any other retrieval sibling, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_anomaly_eventsA
List anomaly events for a Scout APM application within a timeframe.
Anomaly events flag statistically significant deviations in a metric (e.g. response time spike, throughput drop) detected against a learned baseline.
Args: app_id: The ID of the Scout APM application. from_: Start datetime in ISO 8601 format. to: End datetime in ISO 8601 format. state: Filter by state - "open", "closed", or "all". metric: Filter by metric (e.g. response_time, throughput, error_rate). endpoint: Filter by endpoint (controller path).
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| from_ | Yes | ||
| state | No | ||
| app_id | Yes | ||
| metric | No | ||
| endpoint | 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 the full burden. 'List' implies a read-only query and the definition of anomaly events (deviations vs. a learned baseline) adds real semantic value, but it says nothing about pagination, result caps, ordering, or whether the timeframe is bounded by retention limits.
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 purpose and definition are front-loaded in the first two sentences, then an Args block delivers the parameter detail that the schema omits. The Args block is somewhat redundant in an MCP context but earns its place given zero schema coverage; nothing is padded.
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 present, return values need not be explained, and the description covers purpose, event semantics, and all six parameters. Remaining gaps are pagination/result limits and default behavior for the optional filters, which matter for a list tool with a required time range.
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 compensate and largely does: it documents all six parameters, gives ISO 8601 format for from_/to, supplies the state enum values ('open', 'closed', 'all') that the schema lacks, and explains endpoint as a controller path. metric is only exemplified (response_time, throughput, error_rate) rather than enumerated, and defaults are unstated.
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?
Opens with a specific verb+resource ('List anomaly events') scoped to a Scout APM application and a timeframe, and the second sentence defines what an anomaly event is. It does not distinguish itself from the sibling get_app_anomaly_event (singular), leaving the list-vs-detail split implicit rather than explicit.
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?
Usage is implied by the timeframe requirement and the filter arguments (state, metric, endpoint), which tell an agent roughly what this tool is for. There is no explicit when-to-use/when-not guidance and no routing to the sibling single-event tool, so the agent must infer the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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 |
|---|---|---|---|
| to | Yes | ||
| from_ | Yes | ||
| app_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 carries the full disclosure burden. It explains that results include aggregated performance metrics within the from_/to window and that returned endpoints feed other tools, but it does not cover limits, pagination, permissions, or other operational behavior. The output schema exists, so detailed return-value documentation is less necessary.
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 use case, then adds the follow-on tool context and parameter meanings. It is appropriately sized, though minor spelling errors and the Args block slightly reduce polish.
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?
For a simple three-parameter read tool with an output schema, the description provides enough context to call it correctly: the application ID, time window, and what the response represents. Missing details about pagination or operational limits are minor given the output schema and retrieval-only nature.
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 compensate, and it does: it explains app_id as the Scout APM application ID and defines from_ and to as ISO 8601 start and end datetimes. It does not add constraints such as timezone handling or maximum window size, but all three required parameters are semantically covered.
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 states a specific verb and resource: get all endpoints for an application, plus aggregated performance metrics for a time window. It is clear enough to distinguish this from app-level or endpoint-specific metric tools, though it does not explicitly name sibling tools such as get_app_metrics or get_endpoint_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?
It explains when the tool is useful: identifying high-throughput, high-latency, or high-error-rate endpoints across an application in one call. It also points to follow-on tools for endpoint-specific metrics, traces, and errors, but does not explicitly name those alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_endpoint_tracesC
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 |
|---|---|---|---|
| to | Yes | ||
| from_ | Yes | ||
| app_id | 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, so the description carries the full behavioral burden. It only says 'recent traces' without defining recency, limits, pagination, ordering, or whether this is a read-only operation beyond the verb 'Get'. It does not disclose what happens if the endpoint has no traces or how many are returned.
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 and front-loaded with the core purpose, followed by a compact Args list. Every sentence has a purpose, though the list format is slightly mechanical rather than prose-integrated.
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?
An output schema exists, so return values do not need explanation. For a four-parameter read tool without annotations, however, the description should add more behavioral context such as pagination or recency semantics. It is minimally complete but leaves notable gaps for correct invocation.
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 compensate. It documents all four parameters with brief meanings and specifies that from_ and to are ISO 8601 datetimes, which adds value. But it still does not explain the format or origin of endpoint_id, constraints on app_id, or whether the time range is inclusive.
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 states a specific verb and resource: getting recent traces for an app filtered to a specific endpoint. This distinguishes it from get_app_trace (single trace) and get_app_job_traces (job traces), so an agent can select it based on the name and first sentence. However, it does not explicitly call out those siblings.
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?
There is no explicit when-to-use or when-not-to-use guidance. The phrase 'filtered to a specific endpoint' implies usage, but the description never says whether to use this instead of get_app_trace or get_app_job_traces, nor does it mention prerequisites or limitations.
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 |
|---|---|---|---|
| to | Yes | ||
| from_ | Yes | ||
| app_id | 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 carries the full burden of behavioral disclosure. 'Get' implies a read operation, but the description does not state whether the call is read-only, how results are ordered or paginated, or what 'recent' means in terms of time scope even though from_ and to are required parameters.
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 and front-loaded: the purpose sentence comes first, followed by a compact Args block. Some phrasing is redundant, such as 'filter errors' being repeated for both optional parameters, but overall it is efficient.
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 description is incomplete for a five-parameter tool with zero schema description coverage. Although an output schema exists, so return values need not be explained, the description fails to document the required from_ and to parameters and supplies no safety or pagination context, so the agent lacks information needed to call the tool correctly.
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 compensate for all five parameters. It documents app_id, endpoint_id, and error_group_id, but it omits the required from_ and to parameters entirely, leaving the agent without any explanation of the mandatory time-range arguments.
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 states a specific verb and resource: 'Get recent error_groups for an app'. It distinguishes the optional endpoint/error-group filtering scope. However, it does not explicitly differentiate this tool from nearby siblings like get_app_anomaly_events or get_app_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 explains that endpoint_id and error_group_id are optional and that omitting endpoint_id fetches all errors for the app. That implies when to use the filters, but it gives no guidance on when to choose this tool over sibling tools or on prerequisites such as required permissions.
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 |
|---|---|---|---|
| limit | No | ||
| app_id | Yes | ||
| insight_type | 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 the description carries the full burden, and it does real work: it discloses the 5-minute cache, that the operation may 'generate' insights rather than just read them, and the shape of each returned insight (count, new_count, items). It omits auth requirements, latency/cost of cache misses, and pagination behavior.
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?
Purpose, return shape, and filtering are front-loaded in three tight sentences. The Args block partly repeats the prose but is justified given 0% schema coverage, and the parenthetical cache note is worth its tokens.
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?
An output schema exists, so the description is not obligated to explain return values, and it still usefully names the insight categories. What remains unaddressed for a read tool with zero annotations is error behavior on an invalid insight_type and the cost implications of the generate-on-miss path.
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%, yet the description documents all three parameters: app_id's meaning (Scout APM application), the enumerated valid insight_type values (n_plus_one, memory_bloat, slow_query) which appear nowhere in the schema, and limit with an effective default of 20. This is exactly the compensation the low coverage requires.
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?
States a specific verb and resource ('Get or generate all insights for an application') and immediately enumerates what an insight is (N+1 queries, memory bloat, slow queries), which differentiates it from get_app_metrics or get_app_endpoints. It never explicitly contrasts itself with those siblings, keeping it below a 5.
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 'If insight_type is provided, only that type will be returned' line is filter behavior, not guidance on when to pick this tool over get_app_metrics or get_app_anomaly_events. Usage is only implied by the resource name; there are no when/when-not statements or named alternatives.
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 |
|---|---|---|---|
| to | Yes | ||
| from_ | Yes | ||
| app_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 exist, so the description carries the full burden. 'Get all' implies a read-only operation, and the enumerated fields give a sense of the shape, but there is no mention of result limits, pagination, window-size caps, or permission requirements. Since an output schema exists, return-value documentation is not strictly needed, which keeps this at a middling 3.
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?
Purpose and use case are front-loaded, followed by the returned field list and an Args block. The Args duplication earns its place given 0% schema coverage. Slightly padded by restating field names, but no significant waste.
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 present, the description needn't explain return values, yet it does. For a three-parameter read tool the core is covered, but nothing is said about how large a window is allowed, how many jobs are returned, or whether results are capped — gaps an agent could hit in practice.
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 compensate, and it does: it documents all three parameters with types and meaning, including that from_ and to are ISO 8601 datetimes and that app_id is the Scout APM application ID. Format details (ISO 8601) and the aggregation window semantics add real value beyond the bare 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?
States a specific verb and resource: get all background jobs for a given application, plus aggregated performance metrics in a time window. It distinguishes itself from metric-oriented siblings by naming the job-level fields returned (queue, job_id, throughput, latency). It doesn't explicitly contrast with get_job_metrics or get_app_job_traces, but the resource is clear.
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 gives an implied use case: identifying high-throughput, high-latency, or high-error-rate jobs in one call. It does not mention when to prefer get_job_metrics, get_app_job_traces, or get_app_metrics, nor any prerequisites or exclusions. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_job_tracesB
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 |
|---|---|---|---|
| to | Yes | ||
| from_ | Yes | ||
| app_id | 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?
No annotations are provided, so the description carries the full burden. It does disclose the return shape (id, time, duration, name, queue, metric_name, context), which is genuine added information even though an output schema exists. It says nothing about whether the call is read-only, how many traces 'recent' returns, or whether results are paginated or truncated — material gaps for a list 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 one-line purpose is front-loaded, the trace field list is compact, and the Args block maps directly onto the required parameters. Mild redundancy with the schema titles (app_id, to, from_) is acceptable because the description adds types and formats the schema lacks.
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?
An output schema exists, so the return-field list is arguably redundant and return values needn't be re-explained. The missing pieces are the ones that actually affect correct invocation: result count limits for 'recent', pagination, and how from_/to interact with that window.
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 must compensate, and it largely does: it names all four parameters with types and formats (int app ID, Base64-encoded job ID, ISO 8601 from_/to). It does not explain timezone expectations or whether from_/to are inclusive, which prevents a full 5.
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?
States a specific verb and resource ('Get recent traces') plus a scoping qualifier ('filtered to a specific background job'), so the agent knows what it returns. It does not distinguish itself from the near-identical sibling get_app_trace (singular) or get_app_endpoint_traces, which is the one gap keeping this below a 5.
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?
There is no guidance on when to use this versus get_app_trace, get_app_endpoint_traces, or get_app_jobs, nor any prerequisites. The word 'recent' combined with required from_/to args is not reconciled, leaving the agent to infer whether the date window or the 'recent' cap governs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_metricsB
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 |
|---|---|---|---|
| to | Yes | ||
| from_ | Yes | ||
| app_id | Yes | ||
| metric | 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 at all, the description carries the full behavioral burden, yet it discloses nothing about authentication requirements, rate limits, time-range bounds, or metric granularity/resolution. 'Get' implies a read, but that is inference rather than disclosure.
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?
One-sentence summary up front followed by a compact Args block; no filler. The docstring scaffolding is slightly redundant for a structured schema, but nothing is wasted.
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?
An output schema exists so return values needn't be described, and all four params are explained. However, for a metrics query tool amid many sibling metric/trace tools, missing valid metric enumeration and sibling routing leaves an agent guessing about scope.
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% and the schema titles are nearly meaningless ('From', 'To'), but the description defines all four parameters: app_id as a Scout APM application ID, metric with concrete examples, and from_/to as ISO 8601 datetimes. It stops short of enumerating the valid metric set or stating timezone assumptions.
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?
States a specific verb and resource: 'Get individual metric data for a specific application.' This implicitly separates it from endpoint/job-level metric siblings, but it never names those alternatives or explains the scope distinction explicitly.
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 on when to use this instead of get_endpoint_metrics, get_job_metrics, or get_app_insights. The only hint is an 'e.g.' list of two metric names, which is a parameter example rather than a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_traceA
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?
No annotations are provided, so the description carries the full burden. It does add genuinely useful behavior (the result includes all spans), but it says nothing about permissions, whether the call is read-only (only implied by "Get"), size limits on span payloads, or not-found behavior. Moderate transparency for a read 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?
One front-loaded sentence gives the purpose, followed by a compact Args block. Efficient, though the Args entries partially restate what the schema titles already convey.
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 present, return values need not be explained, and both inputs are documented in the description. What's missing is how this tool relates to the listing siblings and how to obtain a valid trace_id – minor but real gaps for a 2-param 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 description coverage is 0% – the schema only supplies titles like "App Id" and "Trace Id". The description compensates by documenting both parameters with types and intent (the Scout APM application ID and the trace to retrieve), which is exactly the gap-filling needed here.
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?
States a specific verb ("Get") and resource ("an individual trace with all spans"), which distinguishes it from the plural listing siblings like get_app_job_traces and get_app_endpoint_traces by implying a single trace. The sibling differentiation is only implicit rather than named, so it falls short of a 5.
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 word "individual" hints that this is the single-trace counterpart to the sibling listing tools, but the description never states when to use this versus get_app_job_traces or get_app_endpoint_traces, nor any prerequisites such as where a trace_id comes from. Usage is only inferable.
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 |
|---|---|---|---|
| to | Yes | ||
| from_ | Yes | ||
| app_id | Yes | ||
| metric | Yes | ||
| endpoint | 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 are provided, so the description carries the full behavioral burden, yet it discloses nothing about permissions, rate limits, metric granularity/resolution, behavior on unknown endpoints or invalid metric names, or empty-result handling. Only 'timeseries' hints at the shape of the data, and the output schema would cover the return contract — the operational behavior is left unstated.
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 purpose sentence is front-loaded and the Args block is tight, one line per parameter with no filler. The format is a standard docstring-style listing — efficient, though slightly formulaic rather than deliberately structured for an agent.
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 present, the return contract need not be described, and all five required parameters are explained. What is missing for a 5-parameter, zero-annotation analytics query tool is guidance on time range constraints, metric validity, and how this differs from the app-level and job-level metric siblings.
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% (bare titles only), so the description must compensate, and it largely does: it explains app_id as the Scout APM application ID, gives concrete endpoint path examples ('/users', '/orders'), gives metric examples ('response_time', 'throughput'), and specifies ISO 8601 for both from_ and to. It does not enumerate the valid metric names or state whether endpoint must be an exact path match, which keeps it from a 5.
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 first sentence names a specific verb and resource ('Get a single timeseries metric') scoped to 'a specific endpoint in an application', which is enough to tell it apart from get_app_metrics or get_job_metrics on subject matter alone. It stops short of explicitly naming a sibling or stating the boundary condition, so it is clear but not fully differentiating.
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?
There is no when-to-use section, no prerequisites, and no mention of the sibling tools (get_app_metrics, get_job_metrics, get_app_endpoint_traces) that cover adjacent scopes. The agent must infer that endpoint-level timeseries is the right choice here purely from the tool name and purpose sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_metricsA
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 |
|---|---|---|---|
| to | Yes | ||
| from_ | Yes | ||
| app_id | Yes | ||
| job_id | Yes | ||
| metric | 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 are provided, so the description must carry the full burden. It does supply useful behavioral context: a list of valid metrics, Base64 encoding for job_id, and ISO 8601 datetime format. However, it omits key behaviors such as read-only nature, error handling, or permissions.
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 a clear purpose sentence, followed by a concise list of valid metrics, and then a structured Args section. Every sentence adds value with no redundancy.
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 complexity (5 required parameters, no annotations, no schema descriptions) and the presence of an output schema, the description provides enough detail for correct invocation. It could be more complete with notes on error handling or metric case sensitivity, but overall it is sufficient.
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%, and the description fully compensates by describing each parameter: app_id type and meaning, job_id encoding, metric examples, and datetime formats for from_ and to. This adds significant meaning beyond the schema's bare titles.
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 states a specific verb ('Get') and resource ('timeseries metric') scoped to a specific background job in an application. It implicitly distinguishes from app-level and endpoint-level metric tools, making the purpose clear.
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?
Usage is implied by the phrase 'for a specific background job', but the description does not explicitly state when to use this tool versus siblings like get_app_metrics or get_endpoint_metrics. No alternatives or exclusions are mentioned.
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?
With no annotations, the description carries the full burden and does well: it discloses that the output is official, tested, and should be followed exactly, and it lists supported frameworks. It does not specify what happens when an unsupported framework is requested, which is the main remaining behavioral gap.
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 usage, then structured into supported frameworks, Args, and Returns sections. The explicit Args/Returns headers are slightly redundant given the schema and output schema, but the supported-framework list earns its space by compensating for missing schema descriptions.
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?
For a one-parameter lookup tool with no annotations and 0% schema coverage, the description supplies the purpose, invocation trigger, full supported-value list, and expected output type. The existing output schema covers return-format detail, so nothing essential is missing.
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 compensate, and it does by explaining the framework argument, giving concrete examples ('fastapi', 'django', 'celery'), and enumerating the full set of supported values across web, background-job, and database categories.
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?
States a specific verb and resource: retrieve step-by-step instructions for instrumenting Scout APM in a framework. It is clearly distinguished from every sibling tool, which are all analytics/data-retrieval tools rather than setup guidance.
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?
Explicitly says 'Always use this tool first when asked to setup/instrument/configure Scout APM in an application' and instructs that official tested configuration should be followed exactly. No alternative setup tool exists among the siblings, so the routing guidance is complete.
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?
No annotations are provided, so the description carries the behavioral burden: it implies a read operation via 'Get' and 'Returns' and discloses conditional return fields such as limits, per-node pricing, error monitoring, and logs integration. It does not state permissions, rate limits, or other operational constraints.
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 two sentences, front-loaded with the core action and scope. The second sentence efficiently enumerates the key returned categories without unnecessary detail.
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 zero parameters and an output schema present, the description is largely complete: it identifies the billing-period scope and summarizes the returned data. It could do slightly more to clarify usage context or operational safety, but the output schema carries the return-shape burden.
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 there are no parameter semantics to explain. The baseline for zero parameters is 4, and the description does not create confusion about inputs.
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 uses a specific verb and resource: retrieving usage and billing data for the current billing period. It clearly covers billing-period dates, pricing style, APM transactions, nodes, errors, and logs, which distinguishes it from the app-telemetry siblings, though it does not explicitly name those siblings.
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?
Usage is implied by the phrase 'current billing period' and the billing/usage focus, so an agent can infer this is the account-level billing tool. However, there is no explicit when-to-use guidance, no exclusions, and no comparison to alternatives.
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 exist, so the description carries the full burden. 'List' implies a read, and the retention-default sentence is genuinely useful behavioral context, but auth requirements, rate limits, result shape/size, and whether inactive apps are ever returned are all unstated. The presence of an output schema offsets the return-value gap only partially.
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 prose is front-loaded and the purpose and default land in the first two sentences. The Args block partially restates the prose, costing a little redundancy, but nothing is padded.
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?
For a one-optional-parameter list tool with an output schema available, the description covers purpose, filter semantics, format, and default behavior. Missing permission/auth context keeps it from being 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 must compensate and largely does: it names the parameter, gives its format (ISO 8601 datetime string), and explains both its filtering effect and the server-side default. Only the mismatch between schema default of null and the stated thirty-day default is unexplained.
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?
States a specific verb and resource ('List available Scout APM applications'), which is enough to distinguish it from the get_app_* siblings that all operate on a single named app. It does not explicitly name a sibling or rule one out, so it stops short of a 5.
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?
It explains the purpose of the single optional filter and its default window (thirty-day metric retention), which implies the sensible usage pattern. It never states when to omit the filter, when to prefer a different tool, or what prerequisites exist, so guidance is implied rather than explicit.
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.
2 tool updates
v2026.9.28- Added
get_app_anomaly_event - Added
get_app_anomaly_events
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 15 tools
The tools mostly target distinct resources and actions, and descriptions clarify scope. There is some potential confusion among the metric/trace families (app, job, endpoint metrics; app trace vs job/endpoint traces), but the naming and parameter descriptions make them separable.
All tools use snake_case with a predictable verb_noun pattern, mostly get_* or list_*, and the singular/plural distinction is meaningful. The set is consistently readable and follows a clear convention throughout.
Fifteen tools is well-scoped for an APM monitoring server covering apps, metrics, traces, jobs, endpoints, errors, anomalies, insights, usage, and setup. Each tool appears to earn its place without excessive surface area.
The surface covers the major monitoring workflows: discovering apps, inspecting metrics and traces across apps/jobs/endpoints, error groups, anomalies, insights, usage, and setup instructions. Minor gaps remain around drilling into individual error group details or deeper error diagnostics, but most workflows are workable.
Maintenance
Related MCP Connectors
Scout Monitoring data for AI assistants: slow endpoints, traces, N+1 queries, and errors.
- 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
Manage uptime monitors and incidents and search logs, metrics and traces from an AI assistant.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables 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.26406 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
- AlicenseAqualityDmaintenanceEnables 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.61MIT