Skip to main content
Glama
asafkiv

AppDynamics MCP Server

by asafkiv

AppDynamics MCP Server

A Model Context Protocol server that gives LLM clients (Cursor, Claude Desktop, etc.) full access to your AppDynamics monitoring data — plus the ability to create and manage dashboards and health rules.

Features

30 tools across 8 categories:

  • Discovery: List and search applications by name

  • Health Monitoring: Full health rule CRUD, violations, and anomaly detection

  • Application Performance: Business transactions, service endpoints, and their metrics

  • Infrastructure: Tiers, nodes, and backend/remote service dependencies

  • Diagnostics: Transaction snapshots and error events

  • Root Cause Analysis: Automated composite diagnosis across all signal types

  • Metrics: Browse the metric tree and query any metric with rollup support

  • Dashboards: Full CRUD — list, view, create, update, add widgets, clone, delete, export, import, auto-build, per-rule health status widgets

Key capabilities

  • Natural language friendly: Accept application names, not just IDs

  • Historical time ranges: Query any past window, not just "the last N minutes" — see Time Ranges

  • Metric tree browser: Discover available metrics interactively, including custom/machine-agent metrics

  • Rollup control: Per-widget rollup for time-series vs. aggregate metric views

  • Dashboard auto-builder: Create full multi-section dashboards from a single prompt

  • HealthListWidget scoping: Each widget can be pinned to a specific health rule (not "all rules")

  • Health rule CRUD: Create, update, enable/disable, and delete health rules — including custom metrics scoped to a specific tier or node

  • Smart defaults: Sensible time ranges and result limits out of the box

Related MCP server: Observe MCP Server

Time Ranges

Every time-aware tool accepts durationInMins, startTime, and endTime. Timestamps may be ISO 8601 (2026-08-03T14:00:00Z) or epoch milliseconds; bare epoch-seconds values are detected and converted.

Arguments supplied

Window queried

AppDynamics range type

(none)

The tool's default lookback, ending now

BEFORE_NOW

durationInMins

Last N minutes

BEFORE_NOW

startTime + endTime

Exactly that window

BETWEEN_TIMES

endTime + durationInMins

N minutes before that point

BEFORE_TIME

startTime + durationInMins

N minutes after that point

AFTER_TIME

// "What did response time look like during yesterday's incident?"
{
  "application": "Checkout",
  "metricPath": "Overall Application Performance|Average Response Time (ms)",
  "startTime": "2026-08-02T12:00:00Z",
  "endTime":   "2026-08-02T15:00:00Z"
}

Contradictory input is rejected with an actionable message rather than silently guessing — supplying durationInMins together with both endpoints, an inverted window (endTime before startTime), or an unparseable timestamp all return an error.

Tools supporting time ranges: appd_get_metric_data, appd_get_health_violations, appd_get_anomalies, appd_get_errors, appd_get_snapshots, appd_get_bt_performance, appd_get_service_endpoint_performance, appd_diagnose_issue.

Note: AppDynamics rolls older data into coarser buckets. A narrow window far in the past may return nothing even though a wider window over the same period returns an aggregate — this is controller-side retention granularity, not a query error.

Quick Start

1. Install dependencies

npm install

2. Configure environment

Copy .env.example to .env and fill in your credentials:

cp .env.example .env

Required variables:

Variable

Description

APPD_URL

Controller base URL (e.g., https://mycompany.saas.appdynamics.com)

APPD_CLIENT_NAME

OAuth client name or API key

APPD_CLIENT_SECRET

OAuth client secret

APPD_ACCOUNT_NAME

Account name (for clientName@accountName format)

3. Add to your MCP client

Cursor (~/.cursor/mcp.json):

{
  "mcpServers": {
    "appdynamics": {
      "command": "npx",
      "args": ["tsx", "src/index.ts"],
      "cwd": "/path/to/appdynamics-mcp-server",
      "env": {
        "APPD_URL": "https://your-controller.saas.appdynamics.com",
        "APPD_CLIENT_NAME": "your-client-name",
        "APPD_CLIENT_SECRET": "your-client-secret",
        "APPD_ACCOUNT_NAME": "your-account-name"
      }
    }
  }
}

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "appdynamics": {
      "command": "npx",
      "args": ["tsx", "/path/to/appdynamics-mcp-server/src/index.ts"],
      "env": {
        "APPD_URL": "https://your-controller.saas.appdynamics.com",
        "APPD_CLIENT_NAME": "your-client-name",
        "APPD_CLIENT_SECRET": "your-client-secret",
        "APPD_ACCOUNT_NAME": "your-account-name"
      }
    }
  }
}

Tools Reference

Discovery

Tool

Description

appd_get_applications

List all monitored applications (with optional name filter)

Health Monitoring

Tool

Description

appd_get_health_rules

List health rules or get details of a specific rule

appd_create_health_rule

Create a new health rule with warning and/or critical conditions. Supports OVERALL_APPLICATION_PERFORMANCE, BUSINESS_TRANSACTION_PERFORMANCE, TIER_NODE_HEALTH, and CUSTOM entity types. Use affectedTier or affectedNode to scope rules to a specific tier/node for custom metrics.

appd_update_health_rule

Update an existing health rule's name, conditions, thresholds, or scope

appd_delete_health_rule

Permanently delete a health rule

appd_enable_health_rule

Enable or disable a health rule

appd_get_health_violations

Get health rule violations for one or all apps

appd_get_anomalies

Get anomaly events (open-only by default)

Application Performance

Tool

Description

appd_get_business_transactions

List BTs for an application

appd_get_bt_performance

Get response time, throughput, errors for a BT

appd_get_service_endpoints

List service endpoints (API-level granularity), discovered via the metric tree

appd_get_service_endpoint_performance

Get performance metrics for a service endpoint (by name, plus optional tier)

Infrastructure

Tool

Description

appd_get_tiers_and_nodes

Get tiers with their nodes (agents, machines, IPs)

appd_get_backends

List backend dependencies (databases, APIs, caches, queues)

Diagnostics

Tool

Description

appd_get_snapshots

Get transaction snapshots (deep diagnostic captures)

appd_get_errors

Get error and exception events

Root Cause Analysis

Tool

Description

appd_diagnose_issue

Automated root cause analysis — fetches violations, anomalies, error events, and snapshots in parallel, then returns ranked candidates, a merged timeline, error breakdown, and investigation steps. Accepts a historical window; the baseline automatically becomes the equivalent window immediately before it

Metrics

Tool

Description

appd_browse_metric_tree

Browse the metric hierarchy to discover available metrics, including custom machine-agent metrics

appd_get_metric_data

Query any metric by path, over any time range. Supports rollup control: true returns a single aggregated value, false returns individual time-series data points

Dashboards

Tool

Description

appd_get_dashboards

List all custom dashboards

appd_get_dashboard

Get full dashboard definition with widgets

appd_create_dashboard

Create a new dashboard with optional widgets

appd_update_dashboard

Update dashboard properties and/or widgets

appd_add_widget_to_dashboard

Add a single widget without replacing existing ones

appd_clone_dashboard

Clone a dashboard with a new name

appd_delete_dashboard

Delete a dashboard (permanent)

appd_export_dashboard

Export dashboard as portable JSON

appd_import_dashboard

Create a new dashboard from a saved JSON definition

appd_save_dashboard_file

Build a complete dashboard JSON file locally without creating anything in AppDynamics — ready to edit and import

appd_auto_build_dashboard

Auto-discover tiers, BTs, and health rules, then create a complete multi-section dashboard in one shot

Dashboard widget types

Widget type

Description

TIMESERIES_GRAPH

Time-series line chart for one or more metrics

METRIC_VALUE

Single aggregated number (gauge tile) — stored as METRIC_LABEL in AppDynamics

GAUGE

Gauge dial

PIE

Pie chart

HEALTH_LIST

Health rule status (green/yellow/red circles). Set healthRuleIds: [id] to pin a widget to specific health rules; omit to show all rules for the application. Display options: showPie: true renders a pie chart, add innerRadius: 30-40 for a donut, showList: false hides the rule list under the chart.

TEXT

Static text / label — stored as LABEL in AppDynamics

Widgets are saved first, then their metric bindings are attached in a second pass using the server-assigned widget ids — this is what makes graphs actually render data. Metric paths are bound in one of three forms (each verified against the dashboard rendering API): Business Transaction metrics with btIds use BT criteria; app-scope metrics (Overall Application Performance, Backends, Service Endpoints, …) use the application-aggregate criteria, optionally scoped per tier via tierIds; node metrics (JVM, Hardware Resources, or Application Infrastructure Performance|Tier|… paths) use node-level criteria with the node-relative path.

Example Conversations

"What's the health status of my production apps?" → Uses appd_get_applications + appd_get_health_violations + appd_get_anomalies

"Show me the slowest business transactions for the Orders app" → Uses appd_get_business_transactions + appd_get_bt_performance

"What databases does the Payment service connect to?" → Uses appd_get_backends with typeFilter="JDBC"

"Create a health rule that fires when Custom Metrics|RequestCount > 1000 on the WebTier" → Uses appd_create_health_rule with affectedEntityType="TIER_NODE_HEALTH", affectedTier="WebTier", metricPath="Custom Metrics|RequestCount"

"Create a dashboard for the Checkout app with response time and error rate" → Uses appd_get_applicationsappd_browse_metric_treeappd_create_dashboard

"Build me a full monitoring dashboard for the Orders app" → Uses appd_auto_build_dashboard — auto-discovers all tiers, BTs, and health rules, creates a complete dashboard in one shot

"Create one health widget per URL Monitor service, each scoped to its own rule" → Uses appd_create_health_rule (one per service) + appd_create_dashboard with healthRuleIds on each HEALTH_LIST widget

"Clone the production monitoring dashboard for staging" → Uses appd_get_dashboardsappd_clone_dashboard

"Why is my Payment app slow? Diagnose the last hour" → Uses appd_diagnose_issue with application="Payment", durationInMins=60 — returns ranked root cause candidates, merged event timeline, error class breakdown, and step-by-step investigation guide

"Are there any errors spiking in the Orders app right now?" → Uses appd_diagnose_issue with application="Orders", focus="errors"

"What went wrong during yesterday's outage between 14:00 and 15:00?" → Uses appd_diagnose_issue with startTime/endTime — degradation is measured against the 14:00-preceding hour, so the report reflects that incident rather than current state

"Pull the snapshots captured during last Tuesday's slowdown" → Uses appd_get_snapshots with startTime/endTime

Health Rules — Custom Metrics

Custom metrics reported by machine agents are stored per-node under:

Application Infrastructure Performance|{Tier}|Individual Nodes|{Node}|Custom Metrics|{MetricName}

When creating health rules for custom metrics, use affectedEntityType=TIER_NODE_HEALTH and provide the relative metric path (not the full absolute path):

affectedEntityType: "TIER_NODE_HEALTH"
affectedNode: "my-server-hostname"          # scope to specific node
metricPath: "Custom Metrics|MyMetric"       # relative path only

Architecture

src/
├── index.ts              # Entry point, registers all tools
├── types.ts              # TypeScript interfaces
├── constants.ts          # Shared constants
├── services/
│   ├── auth.ts           # OAuth2 token management
│   └── api-client.ts     # Authenticated HTTP client
├── utils/
│   ├── error-handler.ts  # Error → MCP response
│   ├── app-resolver.ts   # App name → ID resolution
│   ├── time-range.ts     # Shared time-range parsing → AppD query params
│   ├── concurrency.ts    # Bounded fan-out across apps/tiers
│   └── formatting.ts     # Response formatting
└── tools/                # One file per tool domain
    ├── applications.ts
    ├── health-rules.ts        # CRUD + enable/disable
    ├── health-violations.ts
    ├── anomalies.ts
    ├── business-transactions.ts
    ├── bt-performance.ts
    ├── service-endpoints.ts
    ├── service-endpoint-paths.ts # pure SEP metric-tree paths + matching
    ├── tiers-nodes.ts
    ├── backends.ts
    ├── snapshots.ts
    ├── errors.ts
    ├── metrics.ts             # browse + query with rollup
    ├── dashboards.ts          # full CRUD + auto-build + HealthListWidget scoping
    ├── root-cause.ts
    └── root-cause-analysis.ts # pure correlation, scoring, narration

Development

# Run in dev mode (auto-reload)
npm run dev

# Build TypeScript
npm run build

# Run built version
npm start

# Unit tests — payload builders and root-cause analysis vs. ground-truth
# fixtures, plus SEP metric paths, application resolution, time-range
# resolution, response truncation, token caching, bounded concurrency,
# and error handling
npm test

# End-to-end verification: drives the MCP server against the live controller,
# creates test dashboards, and asserts the persisted widget shapes.
# Requires APPD_* env vars.
node scripts/verify-dashboard-fixes.mjs

CI runs the typecheck, the unit tests, and a server-startup smoke check on every push and pull request, plus a gitleaks secret scan over the full history. See .github/workflows/ci.yml.

Authentication

The server supports two authentication modes:

  1. OAuth2 Client Credentials (recommended): Set APPD_CLIENT_NAME, APPD_CLIENT_SECRET, and optionally APPD_ACCOUNT_NAME. The server acquires and caches tokens automatically.

  2. API Key: Set only APPD_CLIENT_NAME (as the API key). No secret needed.

Token handling details:

  • Tokens are cached until 5 minutes before expiry.

  • Concurrent callers share a single in-flight token request, so a cold start issues one OAuth exchange rather than one per parallel tool call.

  • A 401 invalidates the cached token and retries the request once with a fresh one — a token revoked before its advertised expiry recovers automatically instead of failing every call until the cache times out.

  • Credentials are never written to logs or error messages; OAuth failures log only the HTTP status code.

Never commit credentials. Keep them in .env (gitignored) or your MCP client's env block. If a secret is ever committed, rotate it in the AppDynamics controller — removing it from git history alone does not invalidate it.

Reliability

  • Bounded fan-out: tools that sweep every application or tier cap simultaneous requests (MAX_CONCURRENT_REQUESTS, default 6) instead of firing one request per entity at once, which trips controller rate limiting on large accounts.

  • Budgeted truncation: oversized responses are trimmed to the largest prefix that fits CHARACTER_LIMIT, and the note reports how many of the total items were kept.

  • Capped error bodies: upstream error payloads (including HTML error pages) are collapsed to a single line and truncated before being surfaced.

License

ISC

Available Tools

30 tools
appd_add_widget_to_dashboardAdd Widget to DashboardA

Add a single widget to an existing dashboard without replacing existing widgets.

This fetches the current dashboard, appends the new widget, and saves it.

Widget types (use exact names):

  • "TIMESERIES_GRAPH": Time-series chart (needs applicationId + metricPath)

  • "METRIC_VALUE": Single metric number (needs applicationId + metricPath)

  • "HEALTH_LIST": Health status list (needs applicationId + entityType)

  • "TEXT": Static text label (needs text)

Args:

  • dashboardId (number): Dashboard ID

  • widget: Widget object with type, title, height, width, x, y, and type-specific fields

Returns: The updated dashboard with the new widget added.

ParametersJSON Schema
NameRequiredDescriptionDefault
widgetYesThe widget to add to the dashboard.
dashboardIdYesThe ID of the dashboard to add a widget to.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses internal process (fetches, appends, saves) and confirms non-destructive behavior, supplementing annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured: purpose sentence, process summary, widget type list with requirements, and parameter summary. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all necessary aspects: parameters, widget types, process, and returns. References sibling tools. No output schema needed; description is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds significant value beyond schema by explaining widget types, required fields, and referencing sibling tools for metric paths, compensating for nested object complexity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Add a single widget to an existing dashboard without replacing existing widgets.' Verb and resource are specific, and it distinguishes from siblings like appd_update_dashboard.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides when-to-use context and lists widget types with required fields, implying when each type is appropriate. Could explicitly mention alternatives but is still clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_auto_build_dashboardAuto-Build DashboardA

Automatically build a complete monitoring dashboard for an application.

Discovers the application's tiers, business transactions, and health rules, then creates a fully populated multi-section dashboard in AppDynamics.

Focus modes:

  • "comprehensive" (default): Overview + business transactions + infrastructure + health

  • "performance": Overview + business transactions

  • "infrastructure": Overview + tier-level graphs

  • "health": Overview + health status

Args:

  • applicationName (string): Application name or numeric ID

  • dashboardName (string, optional): Dashboard name. Defaults to "{AppName} - Auto Dashboard"

  • focus (string, optional): comprehensive | performance | infrastructure | health

  • timeRangeMinutes (number, optional): Time window in minutes. Default: 60

Returns: The created dashboard name and ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoDashboard focus: "comprehensive" (default), "performance", "infrastructure", or "health".
dashboardNameNoDashboard name. Defaults to "{AppName} - Auto Dashboard".
applicationNameYesApplication name or numeric ID.
timeRangeMinutesNoTime window in minutes for metric graphs. Default: 60.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate write behavior (readOnlyHint=false) and non-idempotent (idempotentHint=false). The description adds context by explaining the automatic discovery and creation process. It does not mention potential duplicate dashboards due to non-idempotency, but the core behavior is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and structured: a one-sentence intro, a bullet-style list of focus modes, and a clear arg list. Every sentence adds value, and the key purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool of this complexity (4 parameters, multiple focus modes, no output schema), the description covers all essential aspects: what it does, how to configure it, and what is returned. It is complete enough for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description enhances this by explaining defaults (dashboardName defaults to '{AppName} - Auto Dashboard', timeRangeMinutes defaults to 60) and the focus enum options with use-case descriptions. This adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'automatically build a complete monitoring dashboard for an application'. It details what it discovers (tiers, BTs, health rules) and the outcome (multi-section dashboard), which distinguishes it from sibling tools like appd_create_dashboard that likely create empty dashboards.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides focus modes and default values, giving context on when to use different configurations. However, it does not explicitly state when not to use this tool or suggest alternatives, so the guidance is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_browse_metric_treeBrowse Metric TreeA
Read-onlyIdempotent

Browse the AppDynamics metric tree to discover available metric paths.

Call without metricPath to see top-level folders, then drill into specific folders by providing their path.

Common top-level folders:

  • Overall Application Performance

  • Application Infrastructure Performance

  • Business Transaction Performance

  • Backends

  • Errors

  • Service Endpoints

Custom metrics (submitted by machine agents) live under: 'Application Infrastructure Performance|{Tier}|Individual Nodes|{Node}|Custom Metrics' Use rollup=false when browsing node-level paths to ensure per-node data is returned.

Args:

  • application (string|number): App name or ID

  • metricPath (string, optional): Parent path to browse (omit for top-level)

  • rollup (boolean, optional): Aggregate across entities (default: true). Set false for node-level browsing.

Returns: Array of child metric nodes with name, type (folder or leaf), and full path.

ParametersJSON Schema
NameRequiredDescriptionDefault
rollupNoWhether to aggregate (roll up) metric data across all entities matching the path. Default true (aggregated). Set to false when browsing node-level or custom metric paths.
metricPathNoParent metric path to browse. Omit to see the top-level folders. Use pipe-separated paths like 'Overall Application Performance' or 'Application Infrastructure Performance|Tier1'. Custom metrics live under 'Application Infrastructure Performance|{Tier}|Individual Nodes|{Node}|Custom Metrics'.
applicationYesApplication name or numeric ID.

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds value by explaining that browsing reveals metric paths without modifying data, and that rollup controls aggregation behavior. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with bullet points for top-level folders and custom metrics. It is front-loaded with the purpose, and every sentence serves a clear function. There is no redundancy or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description explicitly states what is returned ('Array of child metric nodes with name, type (folder or leaf), and full path'). Combined with thorough parameter guidance and usage context, the tool is fully self-contained for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the input schema already describes the parameters with 100% coverage, the description adds extra meaning: example paths for metricPath, clarification that rollup defaults to true and when to set false, and the structure of custom metrics. This significantly aids correct usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Browse the AppDynamics metric tree to discover available metric paths.' This clearly identifies the verb (browse) and resource (metric tree), and distinguishes it from sibling tools like appd_get_metric_data which retrieves data rather than exploring paths.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: call without metricPath for top-level, then drill down with specific paths. It also explains when to set rollup=false (node-level browsing) and lists common top-level folders. This provides clear context for when and how 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.

appd_clone_dashboardClone DashboardA

Clone an existing dashboard with a new name.

Creates an exact copy of the source dashboard (including all widgets) with the specified new name.

Args:

  • dashboardId (number): Source dashboard ID to clone

  • newName (string): Name for the cloned dashboard

Returns: The newly created dashboard with its new ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
newNameYesName for the cloned dashboard.
dashboardIdYesThe ID of the source dashboard to clone.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide safety profile (non-readOnly, non-destructive, non-idempotent). Description adds that it copies all widgets and returns a new dashboard with new ID. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise two-sentence summary followed by args list and return statement. No unnecessary words, well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple clone operation. Mentions return value despite no output schema. Could mention prerequisites like permissions, but not essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. Description restates parameter meanings with slight rephrasing, adding minimal value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it clones a dashboard, creating an exact copy with a new name. It distinguishes from siblings like create_dashboard (new from scratch) or update_dashboard (modify existing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use or not use this tool versus alternatives like create_dashboard. Usage is implied but not contrasted with similar operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_create_dashboardCreate DashboardA

Create a new custom dashboard in AppDynamics.

You can create a blank dashboard and add widgets later using appd_add_widget_to_dashboard, or provide widgets upfront.

Widget types (use exact names):

  • "TIMESERIES_GRAPH": Time-series line/area chart (needs applicationId + metricPath)

  • "METRIC_VALUE": Single metric number display (needs applicationId + metricPath)

  • "HEALTH_LIST": Health rule status list (needs applicationId, entityType like 'POLICY')

  • "TEXT": Static text label or title (needs text)

  • "PIE": Pie chart (needs applicationId + metricPath)

  • "GAUGE": Gauge display (needs applicationId + metricPath)

Grid layout: width max is 12 (full row). Height is in grid units (2-4 typical). Use appd_browse_metric_tree to discover metric paths for widgets.

Args:

  • name (string): Dashboard name

  • description (string, optional): Description

  • height/width (number, optional): Canvas size (default: 768x1024)

  • widgets (array, optional): Widgets to place on the dashboard

  • template (boolean, optional): Create as template

Returns: The created dashboard object with its new ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDashboard name.
widthNoDashboard canvas width in pixels. Default: 1024.
heightNoDashboard canvas height in pixels. Default: 768.
widgetsNoArray of widgets to place on the dashboard. Can be empty to create a blank dashboard, then add widgets later with appd_add_widget_to_dashboard.
templateNoIf true, create as a template dashboard.
descriptionNoDashboard description.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-readOnly and non-destructive. The description adds behavioral context by explaining widget creation flow, grid layout constraints, and that the tool returns the created dashboard object with new ID. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with bullet points for widget types and grid layout. Front-loaded with main purpose. Efficient but somewhat lengthy due to detailed widget explanations; every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers essential aspects: widget types, grid layout, references to sibling tools, and return value. Lacks error handling or prerequisites information, but for a creation tool with rich annotations, it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds significant value beyond schema by explaining widget types with examples, grid layout (max 12), and referencing appd_browse_metric_tree. It clarifies optionality and provides usage patterns not in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new custom dashboard in AppDynamics' with specific verb (create) and resource (dashboard). It distinguishes from sibling tools like appd_add_widget_to_dashboard and appd_auto_build_dashboard by explaining how to provide widgets upfront or create a blank dashboard for later addition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear guidance on when to use this tool (to create a dashboard) and mentions alternatives (use appd_add_widget_to_dashboard for adding widgets later, appd_browse_metric_tree for metric paths). Lacks explicit 'when not to use' statements, but differentiation from siblings is effective.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_create_health_ruleCreate Health RuleA

Create a new health rule for an application.

Supports APM and SIM (Server & Infrastructure Monitoring) entity types. At least one critical condition is required.

Args:

  • application (string|number): App name or ID

  • name (string): Health rule name

  • enabled (boolean, default true)

  • affectedEntityType: BUSINESS_TRANSACTION_PERFORMANCE | APPLICATION_PERFORMANCE | TIER_NODE_HEALTH | TIER_NODE_TRANSACTION_PERFORMANCE | BACKEND_CALL_PERFORMANCE | SERVICE_ENDPOINT_PERFORMANCE | CUSTOM

  • affectedTier (string, optional): Scope to a specific tier (TIER_NODE_HEALTH / TIER_NODE_TRANSACTION_PERFORMANCE only)

  • affectedNode (string, optional): Scope to a specific node (takes precedence over affectedTier)

  • customEntityType (string, optional): Entity type for CUSTOM rules — use "SERVER" for SIM nodes

  • customEntityName (string, optional): Entity name for CUSTOM rules — use the server/node hostname

  • criticalConditions (array): at least one condition with metricPath, threshold, operator

  • warningConditions (array, optional): same structure

  • conditionAggregationType (ALL|ANY, default ALL)

  • useDataFromLastNMinutes (default 30)

  • waitTimeAfterViolation (default 30)

APM custom metrics (machine agent on APM app): use affectedEntityType=TIER_NODE_HEALTH with affectedTier or affectedNode. metricPath must be RELATIVE to the entity (e.g. "Custom Metrics|MyMetric").

SIM / URL Monitor metrics: use affectedEntityType=CUSTOM, customEntityType="SERVER", customEntityName=. metricPath must be the FULL absolute path starting with "Application Infrastructure Performance|...". Operators supported: GREATER_THAN, LESS_THAN, GREATER_THAN_EQUALS, LESS_THAN_EQUALS, EQUALS, NOT_EQUALS. Example: { metricPath: "Application Infrastructure Performance|Root|Individual Nodes|myhost|Custom Metrics|URL Monitor|SvcA|Status", threshold: 4, operator: "NOT_EQUALS" }

Returns: Created health rule object with assigned ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHealth rule name.
enabledNoWhether the rule is enabled.
applicationYesApplication name or numeric ID.
affectedNodeNoScope to a specific node (TIER_NODE_HEALTH / TIER_NODE_TRANSACTION_PERFORMANCE only). Takes precedence over affectedTier when both are provided.
affectedTierNoScope to a specific tier (TIER_NODE_HEALTH / TIER_NODE_TRANSACTION_PERFORMANCE only). Use when custom metrics only exist on nodes in a particular tier.
customEntityNameNoEntity name for CUSTOM (SIM) rules. Use the server hostname (e.g. ip-10-0-1-163.eu-west-1.compute.internal).
customEntityTypeNoEntity type for CUSTOM (SIM) rules. Use "SERVER" for Server & Infrastructure Monitoring nodes.
warningConditionsNoWarning threshold conditions.
affectedEntityTypeYesEntity type the health rule applies to.
criticalConditionsYesCritical threshold conditions (at least one required).
waitTimeAfterViolationNoWait time in minutes before re-alerting.
useDataFromLastNMinutesNoEvaluation window in minutes.
conditionAggregationTypeNoALL = all conditions must be met; ANY = any condition triggers.ALL

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true. The description adds behavioral details: it creates a new rule, returns the object with ID, requires at least one condition, and explains metric path differences per entity type. No contradictions. Could mention permissions, but overall good.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat long but well-structured with sections for APM, SIM, operators, and an example. It front-loads the core purpose and requirements (application, name, entity type, critical conditions). Every sentence serves a purpose, though could be slightly tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 13 parameters and no output schema, the description covers creation details well: return value, entity types, metric path rules, and conditions structure. It addresses both common and edge cases (CUSTOM entity for SIM). Missing error handling (e.g., duplicate name) but covers essential context for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3), but the description adds significant value beyond the schema. It explains metric path formats for APM (relative) vs SIM (absolute), provides an example, clarifies that affectedNode overrides affectedTier, and notes which entity types require which parameters. This substantially aids correct parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Create a new health rule for an application' with specific supported entity types (APM, SIM) and a clear requirement for at least one critical condition. It distinguishes from siblings like update/enable/delete health rules, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive guidance: it explains when to use different entity types (APM vs SIM), how to construct metric paths for each, and includes examples. While it doesn't explicitly state when not to use the tool, the context of creation vs updating is clear from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_delete_dashboardDelete DashboardA
DestructiveIdempotent

Delete a custom dashboard. This action is PERMANENT and cannot be undone.

Consider using appd_export_dashboard first to create a backup.

Args:

  • dashboardId (number): Dashboard ID to delete

Returns: Confirmation of deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
dashboardIdYesThe numeric ID of the dashboard to delete.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true; description reinforces permanence with 'PERMANENT and cannot be undone' and mentions return value. Adds context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one sentence for purpose, a caution, and a brief Args section. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple deletion tool with one parameter, the description covers purpose, parameter, return type, and a precaution. Adequate given no output schema and annotations present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and parameter description is clear. Description repeats schema info without adding new semantics. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Delete a custom dashboard' with specific verb and resource. Distinct from sibling tools like get, update, clone, import, export.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Suggests using appd_export_dashboard first for backup, providing explicit context. No explicit when-not-to-use but the guidance is helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_delete_health_ruleDelete Health RuleA
DestructiveIdempotent

Permanently delete a health rule by ID.

This action cannot be undone. Use appd_get_health_rules to confirm the ID before deleting.

Args:

  • application (string|number): App name or ID

  • healthRuleId (number): ID of the health rule to delete

Returns: Confirmation message.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationYesApplication name or numeric ID.
healthRuleIdYesID of the health rule to delete.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds that the action is permanent and returns a confirmation message, complementing annotations (destructiveHint, readOnlyHint, idempotentHint). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise: 6 lines covering purpose, warning, args, and return. Front-loaded main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete-by-ID tool with 2 params and no output schema, the description covers essentials: what, irreversibility, how to find ID, return type. Sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and descriptions in schema already cover the parameters. The description repeats the schema info without adding new semantic detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'delete' and the resource 'health rule', and distinguishes from sibling tools like create, update, enable, and get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly warns about irreversibility and advises using appd_get_health_rules to confirm the ID before deletion. Could further mention when not to use, but guidance is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_diagnose_issueDiagnose Issue (Root Cause Analysis)A
Read-onlyIdempotent

Perform a two-phase automated root cause analysis for an application.

Phase 1 (topology): Fetches health violations, anomalies, error events, transaction snapshots, business transactions, tiers, nodes, and backends in parallel — correlating them into ranked root cause candidates.

Phase 2 (metrics with baseline): For each affected tier, backend, and node, fetches metrics for BOTH the current window AND a prior equivalent baseline window. Anomaly flags (isSlow, isCpuSaturated, hasGcPressure) are computed as percentage degradation vs baseline — no hardcoded absolute thresholds. Example: a backend normally at 50ms now at 600ms is flagged (+1100%); one normally at 2000ms now at 2100ms is not (+5%).

Use this when you need to quickly understand why an application is behaving badly without manually calling many separate tools.

Args:

  • application (string|number): App name or numeric ID

  • durationInMins (number, optional): Lookback window in minutes (default: 60)

  • focus (string, optional): Narrow diagnosis to 'performance', 'errors', 'availability', or 'all' (default)

Returns: A structured diagnostic report with summary, causalityChain (ordered root→effect), tierMetrics, backendAnalysis, infrastructureInsights (all with baseline comparison), ranked root cause candidates, timeline, error breakdown, sample snapshots (with sqlQueries/httpCalls/errorStackTrace), and metric-aware investigation steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoNarrow the diagnosis focus. 'performance' = slow/stall events + snapshots + anomalies; 'errors' = error events + crash events + snapshots; 'availability' = health violations + anomalies; 'all' (default) = everything.
applicationYesApplication name or numeric ID.
durationInMinsNoTime window to analyse in minutes. Defaults to 60.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds extensive behavioral detail beyond annotations: it explains the two-phase process (parallel topology fetch then metrics with baseline comparison), the use of percentage degradation for anomaly flags (with concrete example), and the absence of hardcoded thresholds. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is fairly long but well-structured with clear phase breakdowns and an example. It front-loads the core purpose and phases. Every sentence provides useful information (purpose, phases, mechanism, return format). Could be slightly more concise by merging redundant statements about default focus, but overall effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, lack of output schema, and absence of nested objects, the description thoroughly covers what the tool does and what it returns (structured diagnostic report with causalityChain, tierMetrics, etc.). It explains the algorithm, anomaly detection method, and even includes an example. This is more than adequate for an agent to understand the tool's behavior and outputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and parameter descriptions in the schema are already clear. The tool description restates these parameters without adding significant new semantic value. It recites defaults (e.g., durationInMins defaults to 60) and explains focus options, but these are already in the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool performs a two-phase automated root cause analysis for applications, clearly distinguishing it from sibling tools that are individual data-fetching tools (like appd_get_anomalies, appd_get_errors). The verb 'diagnose' combined with 'root cause analysis' precisely conveys the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises using this tool 'when you need to quickly understand why an application is behaving badly without manually calling many separate tools.' This provides a clear use case. It does not explicitly state when not to use it, but the context of the sibling tools implies it is for comprehensive analysis rather than single-metric queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_enable_health_ruleEnable / Disable Health RuleA
Idempotent

Enable or disable a health rule without changing any other settings.

Fetches the current rule, sets the enabled flag, and PUTs it back.

Args:

  • application (string|number): App name or ID

  • healthRuleId (number): ID of the health rule

  • enabled (boolean): true to enable, false to disable

Returns: Updated health rule object.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYestrue to enable the rule, false to disable it.
applicationYesApplication name or numeric ID.
healthRuleIdYesID of the health rule.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the internal fetch-modify-PUT process, which adds context beyond the annotations. It confirms idempotentHint and non-destructive behavior, and contradicts nothing in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences with no wasted words: purpose, mechanism, arguments, return. Front-loaded with the main action, clear and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple toggle operation and complete schema coverage, the description adequately covers behavior and return. It could mention error conditions or prerequisites, but overall it's sufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% parameter description coverage. The description repeats the parameter types but adds no new semantic information beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool enables or disables a health rule without changing other settings. It uses a specific verb-resource pair and distinguishes from sibling tools like appd_update_health_rule, which modifies other settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool by stating 'without changing any other settings,' differentiating it from update_health_rule. However, it does not explicitly name the alternative tool or provide guidance on when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_export_dashboardExport Dashboard JSONA
Read-onlyIdempotent

Export a dashboard as a portable JSON definition.

The exported JSON can be used to recreate the dashboard in another controller or back it up.

Args:

  • dashboardId (number): Dashboard ID to export

Returns: Complete dashboard JSON definition suitable for import.

ParametersJSON Schema
NameRequiredDescriptionDefault
dashboardIdYesThe numeric ID of the dashboard to export.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive. Description adds that output is suitable for import, but doesn't disclose any potential edge cases, authentication needs, or limitations. Adds marginal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, front-loaded with the main action. No redundant or extraneous information. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers essential: what it does, why (backup/transfer), and what it returns (JSON for import). No detail on output schema, but given simple tool and existing annotations, it's adequate. Minor gap: no mention of validation or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter (dashboardId) already described. Description repeats the parameter info without adding new meaning such as how to obtain the ID or format constraints. Baseline 3 due to high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it exports a dashboard as a portable JSON definition, with explicit purpose: backup or recreate in another controller. Distinguishes from siblings like appd_get_dashboard and appd_save_dashboard_file by focusing on portable JSON for reuse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for backup or transfer, but lacks explicit when-to-use or when-not-to-use compared to sibling tools like appd_save_dashboard_file or appd_get_dashboard. No direct alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_anomaliesGet Anomaly EventsA
Read-onlyIdempotent

Retrieve anomaly detection events for a specific application or all applications. By default, returns only currently open anomalies.

Set includeAll to true to see all events including closed ones.

Args:

  • application (string|number, optional): App name or ID. Omit for all apps.

  • durationInMins (number, optional): Lookback in minutes (default: 1440 = 24h)

  • severities (string, optional): Comma-separated severity levels (default: 'INFO,WARN,ERROR')

  • includeAll (boolean, optional): If true, includes all events including closed anomalies

Returns: Array of anomaly events. When querying all apps, results are grouped by application.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeAllNoIf true, includes all events (opens, closes, upgrades, downgrades). If false (default), only shows currently open anomalies.
severitiesNoComma-separated severity levels. Defaults to 'INFO,WARN,ERROR'.
applicationNoApplication name or numeric ID. If omitted, checks all applications.
durationInMinsNoTime range in minutes to look back. Defaults to 1440 (24 hours).

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive. Description adds valuable specifics: default returns open anomalies only, includeAll retrieves closed ones, defaults for severity and duration, and return grouping when querying all apps. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Efficient structure: purpose first, then parameter explanations, then return description. No waste; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameters explained with defaults, return value described (array, grouping for all apps). No output schema, but description provides sufficient info. Complete for tool complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers parameters 100%, but description adds context like 'Omit for all apps' and explains includeAll behavior. Adds meaningful guidance beyond schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it retrieves anomaly events with scope (specific app or all apps) and default behavior (open only). Distinguishes from sibling tools like appd_get_health_violations or appd_get_errors by focusing on anomalies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides default behavior and explains key parameter (includeAll) that changes scope. Lacks explicit 'when not to use' or direct alternatives, but tool name and sibling context make usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_applicationsList AppDynamics ApplicationsA
Read-onlyIdempotent

List all business applications monitored by AppDynamics.

Optionally filter by name using a case-insensitive partial match. Returns application ID, name, and description for each app.

Use this tool first to discover application IDs needed by other tools.

Args:

  • nameFilter (string, optional): Filter by application name

Returns: Array of applications with id, name, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameFilterNoOptional: filter applications by name (case-insensitive partial match)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds value by specifying return fields (id, name, description) and filter behavior (case-insensitive partial match), which are not in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct (5 sentences), each sentence adds unique value. The main purpose is front-loaded, and there is no redundant or irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 optional parameter, no output schema), the description fully covers its purpose, return structure, and usage context. Annotations provide safety guarantees, and the description adds enough detail for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter. The description adds the detail that filtering is 'case-insensitive partial match', providing additional semantic clarity beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all business applications monitored by AppDynamics' and specifies optional filtering by name. It also distinguishes itself from sibling tools by stating 'Use this tool first to discover application IDs needed by other tools.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context for when to use this tool ('Use this tool first to discover application IDs needed by other tools') and mentions the optional filter. However, it does not specify when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_backendsGet Backends / Remote ServicesA
Read-onlyIdempotent

List all backend (remote service) dependencies detected for an application.

Backends are external services your application calls — databases (JDBC), HTTP APIs, caches (Redis, Memcached), message queues (JMS, Kafka), etc.

This is one of AppDynamics' most powerful features for dependency mapping and troubleshooting. Slow backends are a common root cause of application performance issues.

Args:

  • application (string|number): App name or ID

  • typeFilter (string, optional): Filter by exit point type (e.g., "HTTP", "JDBC", "CACHE")

Returns: Array of backends with id, name, exitPointType, and connection properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeFilterNoOptional: filter backends by exit point type (e.g., 'HTTP', 'JDBC', 'CACHE', 'JMS'). Case-insensitive.
applicationYesApplication name or numeric ID.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds context about types of backends (databases, HTTP, etc.) and the return format, providing additional behavioral clarity beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose, bulleted args, and return format. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description adequately specifies the return structure. However, it lacks details on pagination or limits, which would be helpful but not critical for a simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by providing examples (e.g., 'HTTP', 'JDBC', 'CACHE') for typeFilter and clarifying that application accepts name or ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('backend dependencies'), and clearly distinguishes from sibling tools (like get_business_transactions) by stating it lists external services called by the application.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for dependency mapping and troubleshooting backend slow performance, but does not explicitly state when not to use this tool or provide specific alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_bt_performanceGet BT Performance MetricsA
Read-onlyIdempotent

Get performance metrics for a specific business transaction (BT).

Retrieves average response time, calls per minute, errors per minute, slow calls, very slow calls, and stall count for the specified BT.

Use appd_get_business_transactions first to find the BT ID.

Args:

  • application (string|number): App name or ID

  • btId (number): Business transaction ID

  • durationInMins (number, optional): Lookback in minutes (default: 60)

Returns: BT details plus metric data for each performance metric.

ParametersJSON Schema
NameRequiredDescriptionDefault
btIdYesThe numeric ID of the business transaction.
applicationYesApplication name or numeric ID.
durationInMinsNoTime range in minutes to look back. Defaults to 60.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint; the description adds value by enumerating the specific metrics returned (e.g., errors per minute, stall count) and clarifies it is a read operation. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is compact, starts with the core purpose, uses a clear bullet-style for args, and every sentence adds value. No extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description summarizes return value as BT details plus metric data for each listed metric. It omits the structure of BT details but is adequate for a simple data retrieval tool with 3 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. The description adds context for each parameter: application can be name or ID, btId comes from lookup, durationInMins defaults to 60. This goes beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves performance metrics for a specific business transaction, listing the exact metrics (average response time, calls per minute, etc.) and differentiating it from sibling like appd_get_business_transactions which finds the BT ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly advises to use appd_get_business_transactions first to obtain the BT ID, providing a clear prerequisite. However, it does not directly contrast with alternatives like appd_get_metric_data, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_business_transactionsList Business TransactionsA
Read-onlyIdempotent

List all business transactions (BTs) for a given application.

BTs are the key unit of monitoring in AppDynamics — each represents a distinct user request or workflow. Use this to discover BT IDs neeed by appd_get_bt_performance.

Args:

  • application (string|number): App name or IF

  • tierFilter (string, optional): Filter by tier name

Returns: Array of BTs with id, name, tierName, entryPointType.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierFilterNoOptional: filter BTs by tier name (case-insensitive partial match).
applicationYesApplication name or numeric ID.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and destructiveHint semantics. Description adds that it returns an array with id, name, tierName, entryPointType, and frames the tool as a discovery step for performance queries. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise two-paragraph structure: purpose, context, usage guidance, then args and returns. Every sentence adds value; no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage, parameters, return structure, and links to sibling. Lacks info on pagination, sorting, or any limits, but is adequate for a simple list tool with good annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are well-described in the schema. Description repeats param details but does not add significant meaning beyond what is already provided in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists business transactions for an application, with specific verb and resource. Distinguishes from siblings by noting it provides BT IDs needed by appd_get_bt_performance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using this tool to discover BT IDs for appd_get_bt_performance, providing clear context. Does not mention when not to use or list alternatives, but the guidance is direct and helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_dashboardGet Dashboard DetailsA
Read-onlyIdempotent

Get the full definition of a specific dashboard, including all widgets and their configurations.

This reveals what metrics and entities the dashboard monitors — useful for understanding what a team cares about, or for cloning/modifying dashboards.

Args:

  • dashboardId (number): Dashboard ID (from appd_get_dashboards)

Returns: Complete dashboard object with widgets, layout, and data source configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
dashboardIdYesThe numeric ID of the dashboard.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations clearly mark the tool as readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds additional behavioral insight: 'reveals what metrics and entities the dashboard monitors' and describes the return object. This goes beyond annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: 5 lines including Args and Returns sections. Every sentence serves a purpose, and the main action is front-loaded. No unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one parameter and no output schema, the description adequately explains the return value (complete dashboard object with widgets, layout, and data source configuration). It also provides the ID source. While it could mention permissions or rate limits, annotations cover the safety profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes 'dashboardId' as a numeric ID. The description adds the origin hint ('from appd_get_dashboards'), which adds context beyond the schema. Given 100% schema coverage, this is a meaningful addition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the full definition of a specific dashboard' with explicit verb and resource. It mentions 'including all widgets and their configurations' for specificity. However, it does not explicitly differentiate from sibling tools like appd_get_dashboards (which lists dashboards) or other get tools, though the context of retrieving a single dashboard is implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context: 'useful for understanding what a team cares about, or for cloning/modifying dashboards.' It also hints at the appropriate source of the ID ('from appd_get_dashboards'). However, it does not explicitly state when not to use this tool or suggest alternatives among the many sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_dashboardsList DashboardsA
Read-onlyIdempotent

List all custom dashboards in AppDynamics.

Returns dashboard summaries including id, name, creator, and timestamps. Use nameFilter to search for specific dashboards.

Args:

  • nameFilter (string, optional): Filter by dashboard name

Returns: Array of dashboard summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameFilterNoOptional: filter dashboards by name (case-insensitive partial match).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds value by detailing return fields (id, name, creator, timestamps) and filtering behavior, which is beyond the annotation scope. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences efficiently convey purpose, return value, and optional parameter. No wasted words; front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the annotations covering safety and idempotence, the schema covering the parameter, and the description covering return fields, the tool definition is complete for a simple list operation. No output schema needed as return values are described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a clear description of the nameFilter parameter. The description reiterates the parameter's purpose but does not add new meaning beyond the schema, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Title 'List Dashboards' and description 'List all custom dashboards' clearly state the action and resource. The description specifies what is returned (summaries with id, name, creator, timestamps) and the optional filtering, distinguishing it from other dashboard tools like create, delete, or clone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description mentions using nameFilter to search for specific dashboards, but does not explicitly state when to use this tool over siblings (e.g., appd_get_dashboard for a single dashboard, or other get tools). Usage context is implied but not differentiated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_errorsGet Error EventsA
Read-onlyIdempotent

Retrieve error and exception events for an application.

Returns ERROR, APPLICATION_ERROR, and APPLICATION_CRASH events from the AppDynamics events API. These represent exceptions, application errors, and crashes detected by the agent.

Args:

  • application (string|number): App name or ID

  • durationInMins (number, optional): Lookback in minutes (default: 60)

Returns: Array of error events with severity, summary, timestamp, and affected entity details.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationYesApplication name or numeric ID.
durationInMinsNoTime range in minutes to look back. Defaults to 60.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds context about return event types and fields (severity, summary, timestamp), which supplements the annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with sections (Args, Returns) but is somewhat verbose with bullet points. It is clear and well-organized, though slightly longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description provides return field names (severity, summary, timestamp, affected entity), which is helpful. It covers purpose and parameters adequately for a read-only query tool, though does not mention pagination or limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema already documents parameters. The description adds minor value by specifying the default for durationInMins and confirming application accepts both name and ID, but does not significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves error and exception events, listing specific types (ERROR, APPLICATION_ERROR, APPLICATION_CRASH). It distinguishes from sibling tools that handle different entities like dashboards or health rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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 appd_get_health_violations or appd_get_snapshots. It implies usage for error events but lacks 'when not to use' or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_health_rulesList Health RulesA
Read-onlyIdempotent

List health rules configured for an application, or get details of a specific health rule.

Health rules define the thresholds and conditions that trigger violations. Understanding what health rules exist and their configuration is essential context for interpreting violations.

Without healthRuleId: returns a summary list of all health rules (id, name, type, enabled, affected entity type). With healthRuleId: returns the full configuration of that specific health rule including evaluation criteria.

Args:

  • application (string|number): App name or ID

  • healthRuleId (number, optional): Specific health rule ID for details

Returns: Array of health rules or single detailed health rule object.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationYesApplication name or numeric ID.
healthRuleIdNoOptional: specific health rule ID to get detailed info.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds behavioral details: returns summary list vs full configuration, explains what fields are returned in each case, and provides background on health rules. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise and well-structured: purpose sentence, background, mode-specific behavior, parameter list, expected output. No redundant sentences; all information earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description compensates by explaining return content (summary vs detailed) and mentions fields like id, name, type. Sufficient for a 2-parameter tool with clear behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with descriptions (100% coverage). Description repeats parameter info almost identically, adding minimal new semantic value beyond clarifying the behavior difference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it can list health rules or get details of a specific rule. The two modes are explained with different outcomes, distinguishing it from sibling tools like create/delete/update health rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context for when to use each mode ('Without healthRuleId' vs 'With healthRuleId'). Mentions that understanding health rules is essential for interpreting violations, but does not explicitly state when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_health_violationsGet Health Rule ViolationsA
Read-onlyIdempotent

Retrieve health rule violations for a specific application or all applications.

If application is not provided, returns violations across all monitored applications. Supports application lookup by name or numeric ID.

Args:

  • application (string|number, optional): App name or ID. Omit for all apps.

  • durationInMins (number, optional): Lookback window in minutes (default: 1440 = 24h)

Returns: Array of health rule violations with severity, status, affected entity, and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationNoApplication name or numeric ID. If omitted, checks all applications.
durationInMinsNoTime range in minutes to look back. Defaults to 1440 (24 hours).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's verb 'retrieve' is consistent. The description adds useful context beyond annotations by stating the return format: 'Array of health rule violations with severity, status, affected entity, and timestamps.' It does not contradict annotations. A higher score would require disclosure of potential limitations like pagination or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: two short paragraphs and a bulleted list of arguments. It is front-loaded with the main purpose and immediately provides essential usage details. Every sentence adds value, and there is no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 optional parameters, no nested objects or output schema), the description is sufficiently complete. It explains the return format and key fields. It does not cover edge cases or error responses, but the annotations (readOnlyHint, etc.) provide safety assurances. A score of 5 would require addressing potential errors or performance implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's parameter section essentially restates the schema descriptions (e.g., 'App name or ID. Omit for all apps.' and 'Lookback window in minutes (default: 1440 = 24h)'). It adds no new meaning beyond what is already in the schema, so no points above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Retrieve health rule violations for a specific application or all applications.' It specifies the resource (health rule violations) and the action (retrieve), and distinguishes from siblings like appd_get_health_rules (which retrieves rules, not violations). The optional application parameter and default behavior are explicitly mentioned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool, including the optional application parameter and default lookback window. It explains that omitting application returns violations for all apps. However, it does not explicitly mention when not to use it or suggest alternative tools, though the sibling list and name make the distinction clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_metric_dataGet Metric DataA
Read-onlyIdempotent

Query any metric from the AppDynamics metric tree.

This is a generic tool that can retrieve any metric — infrastructure (CPU, memory, disk), application performance, custom metrics, etc.

Use appd_browse_metric_tree to discover available metric paths first.

Custom metrics: Machine agent custom metrics are stored per-node, not aggregated at tier level. To query them, use rollup=false and a node-level path: 'Application Infrastructure Performance|{Tier}|Individual Nodes|{Node}|Custom Metrics|{MetricName}' Wildcard example: 'Application Infrastructure Performance||Individual Nodes||Custom Metrics|MyMetric' with rollup=false

Args:

  • application (string|number): App name or ID

  • metricPath (string): Full metric path (pipe-separated)

  • durationInMins (number, optional): Lookback in minutes (default: 60)

  • rollup (boolean, optional): Aggregate across entities (default: true). Set false for custom/per-node metrics.

Returns: Array of metric data objects with timestamps, min, max, avg, count, sum values.

ParametersJSON Schema
NameRequiredDescriptionDefault
rollupNoWhether to aggregate (roll up) metric data across all entities matching the path. Default true (aggregated). Set to false for custom metrics or per-node metrics — custom metrics live at node level and return empty data when rolled up.
metricPathYesThe metric path to query. Use appd_browse_metric_tree to discover available paths. Examples: 'Overall Application Performance|Average Response Time (ms)', 'Application Infrastructure Performance|*|Hardware Resources|CPU|%Busy'. For custom metrics use: 'Application Infrastructure Performance|{Tier}|Individual Nodes|{Node}|Custom Metrics|{MetricName}'.
applicationYesApplication name or numeric ID.
durationInMinsNoTime range in minutes to look back. Defaults to 60.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and idempotentHint=true, so the tool is clearly non-destructive. The description adds important behavioral context: it retrieves data, explains custom metric storage per-node, and requires specific paths and rollup=false for those. It also describes the return format (array of metric data objects). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with sections, bullet points, and examples. It starts with the core purpose, then provides usage guidance, custom metric details, and a parameter list. Every sentence is informative. Despite length, it remains focused and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains return values (timestamps, min, max, avg, count, sum). It covers both standard and custom metrics, references the sibling discovery tool, and provides navigation patterns. For a tool with 4 parameters and good annotations, this is a complete and informative description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by providing concrete examples for metricPath (including wildcard patterns), explaining the default duration (60 minutes), and clarifying the rollup parameter's effect on aggregation and custom metrics. These details go beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Query any metric from the AppDynamics metric tree.' It distinguishes itself from sibling tools like appd_browse_metric_tree (which discovers paths) and appd_get_anomalies (which retrieves anomalies). The tool is presented as a generic, all-encompassing metric retrieval tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends using appd_browse_metric_tree first to discover metric paths. It also explains when to use rollup=true vs false, especially for custom metrics. While it doesn't list explicit alternatives or exclusions, it provides clear context for different scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_service_endpoint_performanceGet Service Endpoint PerformanceA
Read-onlyIdempotent

Get performance metrics for a specific service endpoint.

Retrieves average response time, calls per minute, and errors per minute for the specified service endpoint.

Use appd_get_service_endpoints first to find the SEP ID.

Args:

  • application (string|number): App name or ID

  • sepId (number): Service endpoint ID

  • durationInMins (number, optional): Lookback in minutes (default: 60)

Returns: Performance metrics for the service endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
sepIdYesService endpoint ID.
applicationYesApplication name or numeric ID.
durationInMinsNoTime range in minutes to look back. Defaults to 60.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value beyond these by explicitly listing the specific metrics retrieved (average response time, calls per minute, errors per minute) and noting the default duration. This enriches the agent's understanding of the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences for purpose and return, one for prerequisite, then a clean Args section. No extraneous information. Every sentence adds value, and the structure is clear and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description lists the three returned metrics (average response time, calls/min, errors/min), providing sufficient context. It also includes the prerequisite step. It lacks details on error handling or edge cases (e.g., invalid sepId), but for a straightforward read-only metrics tool, this is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters (application, sepId, durationInMins). The description repeats these in an Args section, adding the default for durationInMins but no deeper semantic meaning beyond what the schema provides. Thus, it meets the baseline for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves performance metrics (average response time, calls per minute, errors per minute) for a specific service endpoint. It uses a specific verb ('Get') and identifies the resource ('service endpoint performance'), distinguishing it from sibling tools like appd_get_bt_performance or appd_get_backends.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear prerequisite: 'Use appd_get_service_endpoints first to find the SEP ID.' It implies when to use this tool (after obtaining SEP ID) but does not explicitly contrast with alternatives or state when not to use it. The context is clear enough for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_service_endpointsList Service EndpointsA
Read-onlyIdempotent

List service endpoints (SEPs) for an application.

Service endpoints represent individual API endpoints or servlet mappings within your application tiers. They provide more granular performance data than business transactions — you can see which specific URL paths or service methods are slow.

Args:

  • application (string|number): App name or ID

  • tierFilter (string, optional): Filter by tier name

Returns: Array of service endpoints with id, name, tier info, and type.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierFilterNoOptional: filter by tier name (case-insensitive).
applicationYesApplication name or numeric ID.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint, idempotentHint, destructiveHint) already indicate safe, read-only behavior. Description adds no contradictions and states return format, but does not elaborate on behavioral details beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, front-loaded with purpose, followed by contextual explanation, argument list, and return summary. Five sentences with zero redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, parameters, return structure sufficiently. No output schema, but return description is clear. Lacks mention of pagination or limits, but acceptable for a simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so description adds minimal value beyond schema (repeats parameter types and filter purpose). No additional constraints or examples provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states 'List service endpoints (SEPs) for an application' and explains they provide granular performance data versus business transactions, aiding differentiation from sibling tools like get_business_transactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear use case: to see specific URL paths or service methods that are slow. Implicitly contrasts with business transactions for broader view, but does not mention alternatives like get_service_endpoint_performance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_snapshotsGet Transaction SnapshotsA
Read-onlyIdempotent

Retrieve transaction snapshots (slow, error, stall) for an application.

Snapshots are deep diagnostic captures of individual requests. They show call graphs, SQL queries, HTTP calls, and more for requests that were slow, errored, or stalled.

Args:

  • application (string|number): App name or ID

  • durationInMins (number, optional): Lookback in minutes (default: 30)

  • guids (string, optional): Specific snapshot GUIDs

  • dataCollectorName/Type/Value (string, optional): Data collector filters

  • maxResults (number, optional): Max snapshots to return (default: 20, max: 100)

Returns: Array of snapshot objects with timing, error details, and diagnostic info.

ParametersJSON Schema
NameRequiredDescriptionDefault
guidsNoComma-separated request GUIDs to retrieve specific snapshots.
maxResultsNoMaximum number of snapshots to return. Defaults to 20.
applicationYesApplication name or numeric ID.
durationInMinsNoTime range in minutes to look back. Defaults to 30.
dataCollectorNameNoFilter by data collector name.
dataCollectorTypeNoFilter by data collector type.
dataCollectorValueNoFilter by data collector value.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and destructiveHint. The description adds significant behavioral context beyond those: snapshots are deep diagnostic captures showing call graphs, SQL, HTTP calls, and return an array with timing and error details. No contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short, front-loaded with purpose, and well-structured with an Args list. Every sentence adds value with no waste. Efficient use of space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters and no output schema, the description covers purpose, snapshot content, and return type. However, it lacks guidance on how data collector filters interact or parameter relationships. Minor gap but mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description repeats parameter info and adds default/max values (e.g., maxResults defaults to 20, max 100) already present in schema. No additional semantics beyond what schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Retrieve transaction snapshots (slow, error, stall) for an application,' using a specific verb and resource. It clearly distinguishes from sibling tools by focusing on diagnostic captures rather than health rules, dashboards, or other entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what snapshots are but provides no guidance on when to use this tool versus alternatives like appd_get_errors or appd_get_health_violations. Usage context is implied through resource type, but no explicit when-to-use or when-not-to-use is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_get_tiers_and_nodesGet Tiers and NodesA
Read-onlyIdempotent

Retrieve the tiers and nodes (infrastructure topology) for an application.

Shows each tier with its type, agent type, and associated nodes. Nodes include machine details, agent versions, and IP addresses.

Args:

  • application (string|number): App name or ID

Returns: Array of tiers, each with a nested array of nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationYesApplication name or numeric ID.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint. Description adds value by detailing the response structure (array of tiers with nested nodes, including machine details and IP addresses). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one line for purpose, one for content details, then structured Args and Returns. Front-loaded with key information. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main purpose, parameters, and return structure. Lacks mention of pagination, error handling, or dynamic nature (openWorldHint), but for a simple retrieval tool it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'application', schema already describes it as name or numeric ID. Description repeats this without adding new semantic information. High schema coverage (100%) means baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly specifies the verb 'retrieve' and resource 'tiers and nodes', and distinguishes from sibling 'get' tools by focusing on infrastructure topology. Adds detail about tier types and node attributes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for retrieving application topology, but no explicit guidance on when to use this vs sibling tools like get_applications or get_backends. No exclusions or alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_import_dashboardImport Dashboard from JSONA

Create a new dashboard from a JSON definition string.

Accepts the JSON output of appd_export_dashboard (or any saved dashboard JSON file) and creates a new dashboard from it. The original ID is always discarded — AppDynamics assigns a fresh one.

Typical workflow:

  1. appd_export_dashboard → save JSON to a file

  2. Edit the file if needed (rename, adjust metrics, etc.)

  3. appd_import_dashboard with the file contents → new dashboard created

Args:

  • dashboardJson (string): Full dashboard JSON (paste contents of an exported file)

  • dashboardName (string, optional): Override the name from the JSON

Returns: The newly created dashboard with its new ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
dashboardJsonYesFull dashboard JSON definition — paste the contents of an exported dashboard file.
dashboardNameNoOverride the dashboard name from the JSON.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false. Description adds that the original ID is always discarded and a new one is assigned, which is key behavioral info beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

No fluff: one sentence purpose, a paragraph on function and workflow, then args list. Well-structured and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers inputs, workflow, and return value (new dashboard with new ID). No output schema, but description addresses it. Could be slightly more explicit about when to use vs siblings, but sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions. The description's 'Args' section largely repeats schema, adding minimal extra value. Baseline 3 is appropriate as schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Create a new dashboard from a JSON definition string' and explains it uses JSON output from export tools, distinguishing it from siblings like appd_create_dashboard (create from scratch) and appd_clone_dashboard (duplicate existing). Discarding original ID reinforces purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes typical workflow with export-edit-import, and accepts 'JSON output of appd_export_dashboard or any saved dashboard JSON file'. Provides usage context but does not explicitly compare with alternatives like appd_create_dashboard for when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_save_dashboard_fileSave Dashboard Definition to FileA

Build a complete AppDynamics dashboard JSON definition and save it to a local file — without creating anything in AppDynamics yet.

The saved file can be:

  • Inspected or edited before importing

  • Version-controlled alongside your code

  • Imported with appd_import_dashboard at any time

The file format is identical to appd_export_dashboard output and is directly importable.

Widget types (use exact names):

  • "TIMESERIES_GRAPH": Time-series chart (needs applicationId + metricPath)

  • "METRIC_VALUE": Single metric number (needs applicationId + metricPath)

  • "HEALTH_LIST": Health status list (needs applicationId + entityType)

  • "TEXT": Static label or section heading (needs text)

  • "PIE": Pie chart (needs applicationId + metricPath)

  • "GAUGE": Gauge (needs applicationId + metricPath)

Grid layout: width max is 12 (full row). Height is in grid units (1–4 typical). Use appd_browse_metric_tree to discover metric paths.

Args:

  • name (string): Dashboard name

  • filePath (string, optional): Where to write the file. Default: ./dashboard-{name}.json

  • description (string, optional): Dashboard description

  • height/width (number, optional): Canvas size in pixels (default: 768×1024)

  • widgets (array, optional): Widget definitions

Returns: Absolute path of the saved file and a widget summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDashboard name.
widthNoCanvas width in pixels. Default: 1024.
heightNoCanvas height in pixels. Default: 768.
widgetsNoWidgets to include. Same format as appd_create_dashboard.
filePathNoFile path to save the JSON. Default: ./dashboard-{slugified-name}.json
descriptionNoDashboard description.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations show readOnlyHint=false and destructiveHint=false, meaning it writes to file system but is not destructive. The description states it saves to a file and does not create anything in AppDynamics, but does not disclose potential side effects like overwriting existing files, file system permissions needed, or the exact path resolution behavior (slugified name). This is adequate but could be improved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and workflow. It uses bullet points for widget types and a clear list for args. However, it is somewhat verbose and repeats some schema details (e.g., widget parameter descriptions). Overall well-structured but could be trimmed slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool complexity (6 parameters, no output schema), the description covers the core workflow, widget types, grid layout, and relationships with sibling tools (e.g., appd_browse_metric_tree, appd_import_dashboard). The return value (absolute path and widget summary) is mentioned but not detailed, which is acceptable without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds significant value: it explains widget types with exact names, grid layout constraints (max width 12, height 1-4 typical), default file path behavior (slugified name), and references appd_browse_metric_tree for metric paths. This goes beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: building a dashboard JSON definition and saving it to a local file without creating anything in AppDynamics. It distinguishes from siblings like appd_import_dashboard and appd_create_dashboard by emphasizing the offline, file-based workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool (offline dashboard creation and later import) and contrasts with appd_export_dashboard. It references appd_browse_metric_tree for metric discovery. It could be more explicit about when not to use (e.g., if you want immediate creation), but the context from sibling tools provides clear alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_update_dashboardUpdate DashboardA
Idempotent

Update an existing dashboard's properties and/or widgets.

IMPORTANT: If you provide widgets, this REPLACES all existing widgets. To add a single widget without losing existing ones, use appd_add_widget_to_dashboard instead.

Args:

  • dashboardId (number): Dashboard ID

  • name (string, optional): New name

  • description (string, optional): New description

  • height/width (number, optional): New canvas size

  • widgets (array, optional): Complete widget set (replaces existing)

Returns: The updated dashboard object.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew dashboard name.
widthNoNew canvas width.
heightNoNew canvas height.
widgetsNoComplete set of widgets. NOTE: This replaces ALL existing widgets.
dashboardIdYesThe ID of the dashboard to update.
descriptionNoNew dashboard description.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotentHint=true and non-destructive behavior. The description adds valuable context: widget replacement behavior, return value ('Returns: The updated dashboard object'), and parameter semantics. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately sized with a clear structure: purpose, important warning, args listing, return value. It is front-loaded with key information. Could be slightly more concise but remains effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, 100% schema coverage, no output schema, the description covers return value and the critical widget replacement behavior. It also mentions an alternative tool. Slightly missing explicit mention of idempotency (covered by annotation) but otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds extra meaning by summarizing parameters and highlighting the replacement semantics for widgets, which is not fully captured in the schema description. This provides added clarity beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an existing dashboard's properties and/or widgets,' using a specific verb and resource. It distinguishes from sibling tool appd_add_widget_to_dashboard by noting that providing widgets replaces all existing ones, making it clear when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly warns that providing widgets replaces all existing widgets and directs users to appd_add_widget_to_dashboard for adding a single widget without losing others. This provides clear when-to-use and when-not-to-use guidance with a named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appd_update_health_ruleUpdate Health RuleA
Idempotent

Update an existing health rule by ID.

Fetches the current rule, merges the provided fields, then PUTs the updated rule back. Only fields you supply are changed; unspecified fields retain their current values.

Args:

  • application (string|number): App name or ID

  • healthRuleId (number): ID of the health rule to update

  • name, enabled, affectedEntityType, criticalConditions, warningConditions, conditionAggregationType, useDataFromLastNMinutes, waitTimeAfterViolation — all optional

Returns: Updated health rule object.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew health rule name.
enabledNoEnable or disable the rule.
applicationYesApplication name or numeric ID.
affectedNodeNoScope to a specific node (TIER_NODE_HEALTH / TIER_NODE_TRANSACTION_PERFORMANCE only). Takes precedence over affectedTier when both are provided.
affectedTierNoScope to a specific tier (TIER_NODE_HEALTH / TIER_NODE_TRANSACTION_PERFORMANCE only). Use when custom metrics only exist on nodes in a particular tier.
healthRuleIdYesID of the health rule to update.
customEntityNameNoEntity name for CUSTOM (SIM) rules. Use the server hostname.
customEntityTypeNoEntity type for CUSTOM (SIM) rules. Use "SERVER" for SIM nodes.
warningConditionsNoWarning conditions.
affectedEntityTypeNoEntity type.
criticalConditionsNoCritical conditions.
waitTimeAfterViolationNoRe-alert wait time in minutes.
useDataFromLastNMinutesNoEvaluation window in minutes.
conditionAggregationTypeNoALL or ANY.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the key behavioral trait beyond annotations: a two-step fetch-merge-put process, ensuring idempotency (annotations idempotentHint=true). It aligns with all annotations (readOnlyHint=false, destructiveHint=false) and adds value by explaining how partial updates are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core operation and merge logic, then lists args. While clear, the arg list is redundant given the schema. Minor waste could be trimmed, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given many sibling health rule tools and no output schema, the description lacks details about the return object structure (only 'Updated health rule object'). Prerequisites like existence of the rule and application are implied but not stated. Completeness is adequate but has gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description's arg list merely reiterates parameter names and types from the schema without adding new meaning or usage hints. It does not compensate beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an existing health rule by ID' with a specific verb (update) and resource (health rule). It distinguishes from siblings like create_health_rule and delete_health_rule by focusing on modification of an existing rule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the merge pattern ('Only fields you supply are changed') and the read-modify-update process. However, it does not explicitly state when to use this tool vs alternatives like enable/disable or create, leaving usage context implicit 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. Dates show when Glama detected each change.

  1. 30 tool updatesv2.0.0
    • First observedappd_add_widget_to_dashboard
    • First observedappd_auto_build_dashboard
    • First observedappd_browse_metric_tree
    • First observedappd_clone_dashboard
    • First observedappd_create_dashboard
    • First observedappd_create_health_rule
    • First observedappd_delete_dashboard
    • First observedappd_delete_health_rule
    • First observedappd_diagnose_issue
    • First observedappd_enable_health_rule
    • First observedappd_export_dashboard
    • First observedappd_get_anomalies
    • First observedappd_get_applications
    • First observedappd_get_backends
    • First observedappd_get_bt_performance
    • First observedappd_get_business_transactions
    • First observedappd_get_dashboard
    • First observedappd_get_dashboards
    • First observedappd_get_errors
    • First observedappd_get_health_rules
    • First observedappd_get_health_violations
    • First observedappd_get_metric_data
    • First observedappd_get_service_endpoint_performance
    • First observedappd_get_service_endpoints
    • First observedappd_get_snapshots
    • First observedappd_get_tiers_and_nodes
    • First observedappd_import_dashboard
    • First observedappd_save_dashboard_file
    • First observedappd_update_dashboard
    • First observedappd_update_health_rule

TDQS

A4.1/5.0
Disambiguation4/5

Most tools have clear distinct purposes, but there is some overlap between appd_add_widget_to_dashboard, appd_create_dashboard, and appd_update_dashboard regarding widget management. Descriptions help differentiate them, so only minor ambiguity remains.

Naming Consistency5/5

All tools follow a consistent 'appd_verb_noun' pattern (e.g., appd_get_applications, appd_create_dashboard). There are no deviations or mixed conventions.

Tool Count3/5

With 30 tools, the server is on the heavy side. While each tool serves a specific purpose for a comprehensive monitoring platform, the count exceeds the typical 3-15 range and may feel overwhelming.

Completeness4/5

The tool surface covers core CRUD operations for dashboards and health rules, plus extensive querying capabilities. Minor gaps exist (e.g., no tools to create/delete applications or modify business transactions), but major workflows are well-supported.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    Not graded
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with Datadog's observability platform through natural language.
    72
    -
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    A Model Context Protocol server that provides access to Observe API functionality, enabling LLMs to execute OPAL queries, manage datasets/monitors, and leverage vector search for documentation and troubleshooting runbooks.
    1
    -
  • A
    license
    B
    quality
    F
    maintenance
    A Model Context Protocol server that enables AI assistants to query Prometheus metrics, discover available data, and analyze system performance through natural language interactions.
    5
    85
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that enables AI agents to interact directly with Prometheus metrics data through natural language queries.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/asafkiv/appdynamics-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server