Dynatrace SaaS MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DT_API_TOKEN | Yes | Api-Token (dt0c01…) for classic APIs | |
| DT_CLASSIC_URL | Yes | Classic host base URL (e.g., https://asn8731h.sprint.dynatracelabs.com) | |
| DT_PLATFORM_URL | Yes | Platform host base URL (e.g., https://asn8731h.sprint.apps.dynatracelabs.com) | |
| DT_ENABLE_WRITES | No | Set to 'true' to allow create/update/delete operations (default: false) | |
| DT_PLATFORM_TOKEN | Yes | Bearer token (dt0s16…) for platform APIs | |
| DT_HTTP_TIMEOUT_MS | No | Request timeout in milliseconds (default: 30000) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| execute_dqlA | Execute a Dynatrace Query Language (DQL) statement against Grail and return the result records. Use for logs, spans/traces, events, metrics, and entities. Example: 'fetch logs | filter loglevel == "ERROR" | limit 50'. |
| verify_dqlA | Validate a DQL statement without returning data (executes with limit 0). Returns ok=true or the validation error. |
| list_metricsA | List/search metric descriptors (classic Metrics v2). Use a metricSelector like 'builtin:host.*' to filter. On Gen3/Grail tenants this endpoint may be unavailable; use query_metric or execute_dql instead. |
| get_metric_metadataB | Get the descriptor/metadata for a single metric by key (classic Metrics v2). On Gen3/Grail tenants this endpoint may be unavailable; use query_metric or execute_dql instead. |
| query_metricA | Query metric data points via Grail DQL 'timeseries' (Gen3-native, platform token). Builds a timeseries query and executes it against the Grail storage API. Works on all Gen3/Grail tenants with the storage:metrics:read scope. |
| list_hostsA | Queries Smartscape host entities via Grail DQL (Gen3-native). Pass useClassic:true to use the classic Entities v2 API on Gen2 tenants. Optional tag/management-zone filters only work with useClassic:true (Gen2). |
| find_entitiesA | Queries Smartscape entities via Grail DQL (Gen3-native). Pass useClassic:true to use the classic Entities v2 API on Gen2 tenants. The entitySelector must include a type(...) clause for the Grail DQL path; without it, a guidance message is returned. |
| get_entityA | Queries a single Smartscape entity by id via Grail DQL (Gen3-native). Pass useClassic:true to use the classic Entities v2 API on Gen2 tenants. |
| list_entity_typesB | Queries Smartscape entity types via Grail DQL (Gen3-native). Returns guidance on common Grail entity tables. Pass useClassic:true to use the classic Entities v2 API on Gen2 tenants. |
| list_problemsB | List problems (classic Problems v2). Filter by status/severity via problemSelector and a timeframe. |
| get_problemA | Get full details of one problem, including root cause and affected entities. |
| search_logsA | Search logs in Grail via DQL. Builds a 'fetch logs' query with optional filters. For advanced needs use execute_dql. |
| search_spansB | Search distributed-tracing spans in Grail via DQL ('fetch spans'). Filter by service, status, or duration. |
| get_traceA | Fetch all spans for a single trace id (ordered by start time) for latency/root-cause analysis. |
| list_vulnerabilitiesC | List security vulnerabilities (Dynatrace Platform Vulnerabilities v1). Supports optional DQL-style filter expressions, sort, and time range. |
| get_vulnerabilityA | Get full details of a single vulnerability by its ID (Dynatrace Platform Vulnerabilities v1). |
| list_settings_schemasC | List Settings 2.0 schema ids (classic). These identify configurable settings types. |
| get_settings_schemaA | Get the full JSON schema for a Settings 2.0 schemaId. Use this to construct a valid 'value' before writing. |
| list_settings_objectsB | List Settings 2.0 objects, filtered by schema and/or scope. |
| get_settings_objectB | Get one Settings 2.0 object by objectId. |
| validate_settings_objectA | Validate a Settings 2.0 object payload WITHOUT persisting it (validateOnly=true). Returns constraint violations if invalid. Always safe (read-only). |
| create_settings_objectB | Create a Settings 2.0 object (WRITE). Validate first with validate_settings_object. |
| update_settings_objectB | Update an existing Settings 2.0 object by objectId (WRITE). |
| delete_settings_objectA | Delete a Settings 2.0 object by objectId (WRITE, destructive). |
| list_dashboardsA | List Dynatrace dashboards accessible to you (Document Service). Filters to type='dashboard'. Optionally pass pageSize (max 1000). |
| get_dashboardA | Get a dashboard by id — returns combined metadata and content. Fetches metadata from /documents/{id}/metadata and content from /documents/{id}/content, then merges them into { meta, content }. |
| create_dashboardA | Create a new dashboard (WRITE). Sends a multipart/form-data POST per the Document Service spec. The content object is serialized to JSON and sent as the 'content' part with Content-Type application/json. Provide the content inline via 'content' OR from a file via 'contentPath' (not both). Requires DT_ENABLE_WRITES=true. |
| update_dashboardA | Update an existing dashboard (WRITE). Uses PATCH /documents/{id} with multipart/form-data per the spec. Optimistic locking: you must supply the current document version. At least one of name, content, or contentPath must be provided. Requires DT_ENABLE_WRITES=true. |
| delete_dashboardA | Delete (trash) a dashboard by id (WRITE). Optimistic locking: you must supply the current document version. The document is moved to the trash (restorable for 30 days). Requires DT_ENABLE_WRITES=true. |
| list_notebooksB | List Dynatrace notebooks accessible to you (Document Service). Filters to type='notebook'. Optionally pass pageSize (max 1000). |
| get_notebookA | Get a notebook by id — returns combined metadata and content. Fetches metadata from /documents/{id}/metadata and content from /documents/{id}/content, then merges them into { meta, content }. |
| create_notebookA | Create a new notebook (WRITE). Sends a multipart/form-data POST per the Document Service spec. The content object is serialized to JSON and sent as the 'content' part with Content-Type application/json. Provide the content inline via 'content' OR from a file via 'contentPath' (not both). Requires DT_ENABLE_WRITES=true. |
| update_notebookA | Update an existing notebook (WRITE). Uses PATCH /documents/{id} with multipart/form-data per the spec. Optimistic locking: you must supply the current document version. At least one of name, content, or contentPath must be provided. Requires DT_ENABLE_WRITES=true. |
| delete_notebookA | Delete (trash) a notebook by id (WRITE). Optimistic locking: you must supply the current document version. The document is moved to the trash (restorable for 30 days). Requires DT_ENABLE_WRITES=true. |
| list_slosC | List Service-Level Objectives (platform SLO v1). |
| get_sloA | Get one SLO by id (platform SLO v1). |
| evaluate_sloA | Evaluate an SLO by ID and return its compliance result (platform SLO v1). Uses the async evaluation:start / evaluation:poll flow per spec. |
| list_objective_templatesB | List SLO objective templates (platform SLO v1). |
| create_sloB | Create an SLO (WRITE). Body fields per the SLO v1 spec (name, criteria, target, etc.). |
| update_sloC | Update an SLO by id (WRITE). |
| delete_sloA | Delete an SLO by id (WRITE, destructive). |
| list_monitorsA | List all synthetic monitors (browser and network availability). Optionally filter using a monitor-selector expression. |
| get_monitorA | Get the full definition of a single synthetic monitor by its entity ID. |
| list_synthetic_locationsB | List all synthetic locations (both public and private) available for the environment. |
| list_synthetic_nodesA | List all synthetic nodes (ActiveGates capable of running synthetic monitors). |
| create_monitorB | Create a new synthetic monitor definition (WRITE). Pass a full monitor body per the platform synthetic v1 spec (SyntheticMultiProtocolMonitorRequest or SyntheticBrowserMonitorRequest). |
| update_monitorA | Update (replace) a synthetic monitor definition by entity ID (WRITE). Sends a full PUT to /monitors/{monitor-id} per the platform synthetic v1 spec. |
| delete_monitorA | Delete a synthetic monitor definition by entity ID (WRITE, destructive). |
| list_request_attributesA | List all request attribute definitions (classic Config API v1). |
| get_request_attributeA | Get a single request attribute definition by ID (classic Config API v1). |
| create_request_attributeA | Create a new request attribute (WRITE, classic Config API v1). Body must include at minimum: name, dataType, dataSources. |
| update_request_attributeB | Update an existing request attribute by ID (WRITE, classic Config API v1). |
| delete_request_attributeA | Delete a request attribute by ID (WRITE, destructive, classic Config API v1). |
| list_request_namingsA | List all request naming rules (classic Config API v1). |
| get_request_namingB | Get a single request naming rule by ID (classic Config API v1). |
| create_request_namingB | Create a new request naming rule (WRITE, classic Config API v1). Body must include at minimum: naming, enabled, namingPattern, conditions. |
| update_request_namingB | Update an existing request naming rule by ID (WRITE, classic Config API v1). |
| delete_request_namingA | Delete a request naming rule by ID (WRITE, destructive, classic Config API v1). |
| list_custom_servicesA | List all custom service definitions for a given technology (classic Config API v1, read-only). |
| get_custom_serviceA | Get a single custom service definition by technology and ID (classic Config API v1, read-only). |
| list_openpipeline_configurationsA | List all OpenPipeline configurations (one per data type: logs, events, bizevents, metrics, spans, davis, sdlcEvents, securityEvents, etc.). Returns the available data-type configurations with their editable status. |
| get_openpipeline_configurationA | Get the full OpenPipeline configuration for a specific data type (id). Returns all endpoints, pipelines, and routing rules. Use this to inspect or fetch the config before modifying it with update_openpipeline_configuration. |
| list_openpipeline_technologiesA | List all available OpenPipeline technology parsers (grouped by technology category). Each technology entry includes its id, name, matcher condition, and allowed configuration types. |
| get_openpipeline_technology_processorsA | Get the processors available for a specific OpenPipeline technology. Use list_openpipeline_technologies first to find the technology id. |
| verify_openpipeline_dql_processorA | Validate a DQL processor script without mutating any configuration (safe, read-only). Returns validation errors or a success indicator. Use this to author and validate DQL processing scripts before applying them with update_openpipeline_configuration. |
| openpipeline_dql_autocompleteA | Get DQL autocomplete suggestions for a DQL processor script (safe, read-only). Useful when authoring pipeline DQL expressions. |
| verify_openpipeline_matcherA | Validate a matcher (routing condition) expression without mutating any configuration (safe, read-only). Use this to validate routing conditions before applying them with update_openpipeline_configuration. |
| openpipeline_matcher_autocompleteA | Get autocomplete suggestions for a matcher (routing condition) expression (safe, read-only). Useful when authoring pipeline routing conditions. |
| convert_lql_to_dqlA | Convert a legacy LQL (Log Query Language) matcher expression to a DQL (Dynatrace Query Language) equivalent (safe, read-only). Useful when migrating older pipeline routing conditions. |
| preview_openpipeline_processorA | Preview the effect of a pipeline processor on sample data without mutating any configuration (safe, read-only). Returns per-record match and transformed record results. Use this to author and validate processors before applying them with update_openpipeline_configuration. Include a 'sampleData' string field (JSON-encoded record) inside the processor definition. |
| preview_openpipeline_pipelineA | Preview the effect of an ORDERED SEQUENCE of processors by threading a record through each one via repeated /preview/processor API calls (safe, read-only). Each step's output record becomes the next step's input — this is pure-code orchestration, not a bulk API call. Returns a per-step trace (matched, record) and the finalRecord after all steps. Stops at the first step that returns an error. |
| list_openpipeline_processor_typesA | List, per data type, the processor types allowed in each pipeline stage (parsed from each configuration's pipelinesSpecification). Useful for discovering which processor types (e.g. 'fieldsAdd', 'dql', 'drop', 'geoLookup') are valid in a given stage for a given data type. Read-only. |
| update_openpipeline_configurationA | Replace the full OpenPipeline configuration for a specific data type (WRITE, requires DT_ENABLE_WRITES=true). Fetch the current configuration first with get_openpipeline_configuration, modify it, then PUT it back. This replaces the entire configuration object. |
| check_settings_schema_driftA | Compare committed settings-schema versions against the live tenant. Optionally perform a structural key-path diff for a specific schemaId. |
| check_api_spec_driftA | Compare committed OpenAPI specs against the live tenant's catalog. Without args: returns a catalog-level overview of added/removed specs. With a spec stem (e.g. 'platform_slo_v1', 'environment-api-v2'): deep-diffs operations. |
| validate_against_live_schemaA | Validate a settings value against the live schema (read-only, validateOnly). Returns violations, required-missing keys, and a corrected value filtered to known properties. |
| get_server_infoA | Report this MCP server's build identity: version, git commit, build time, write-mode, and target Dynatrace hosts. Use to verify which build is running. |
| list_workflowsB | List Dynatrace Automation (Workflows) workflows via the platform Automation v1 API. Requires automation:workflows:read scope on the platform token. |
| get_workflowA | Get a single Dynatrace Automation workflow by ID (platform Automation v1). Requires automation:workflows:read scope. |
| list_workflow_executionsA | List Dynatrace Automation workflow executions (platform Automation v1). Draft and simple workflow executions are not included. Requires automation:workflows:read scope on the platform token. |
| get_workflow_executionA | Get a single Dynatrace Automation workflow execution by ID (platform Automation v1). Requires automation:workflows:read scope. |
| create_workflowA | Create a Dynatrace Automation workflow (WRITE, platform Automation v1). Requires DT_ENABLE_WRITES=true and automation:workflows:write scope on the platform token. |
| update_workflowA | Update (replace) a Dynatrace Automation workflow by ID (WRITE, platform Automation v1). Requires DT_ENABLE_WRITES=true and automation:workflows:write scope on the platform token. |
| delete_workflowA | Delete a Dynatrace Automation workflow by ID (WRITE, destructive, platform Automation v1). Requires DT_ENABLE_WRITES=true and automation:workflows:write scope on the platform token. |
| run_workflowA | Trigger a run of a Dynatrace Automation workflow (WRITE, platform Automation v1). Creates a new Execution for the workflow. Requires DT_ENABLE_WRITES=true and automation:workflows:run scope on the platform token. |
| list_grail_bucketsA | List all Grail retention bucket definitions (Dynatrace Storage Management v1). Returns the full bucket array including bucketName, table, retentionDays, status, etc. |
| get_grail_bucketA | Get a single Grail retention bucket definition by name (Dynatrace Storage Management v1). |
| create_grail_bucketB | Create a new custom Grail retention bucket (WRITE, Dynatrace Storage Management v1). Requires DT_ENABLE_WRITES=true and the platform scope storage:bucket-definitions:write. |
| update_grail_bucketA | Update a Grail retention bucket by name (WRITE, Dynatrace Storage Management v1). Uses an optimistic-locking PUT; include the current 'version' in the bucket body. Requires DT_ENABLE_WRITES=true and the platform scope storage:bucket-definitions:write. |
| delete_grail_bucketA | Delete a Grail retention bucket by name (WRITE, destructive, Dynatrace Storage Management v1). This permanently removes all data in the bucket. The operation is asynchronous; the bucket status transitions to 'deleting' until complete. Cannot delete buckets whose name starts with 'default_' or 'dt_'. Requires DT_ENABLE_WRITES=true and the platform scope storage:bucket-definitions:write. |
| list_filter_segmentsA | List all Grail filter segments (platform storage filter-segments v1). |
| get_filter_segmentB | Get a filter segment by UID (platform storage filter-segments v1). |
| create_filter_segmentA | Create a new filter segment (WRITE, platform storage filter-segments v1). Requires storage:filter-segments:write scope. |
| update_filter_segmentA | Update (replace) a filter segment by UID (WRITE, platform storage filter-segments v1). All fields are overwritten. Requires storage:filter-segments:write scope. |
| delete_filter_segmentA | Delete a filter segment by UID (WRITE, destructive, platform storage filter-segments v1). Requires storage:filter-segments:delete scope. |
| get_record_deletion_statusA | Get the status of a previously submitted Grail record deletion process. POST /platform/storage/record/v1/delete:status with the taskId from execute_record_deletion. Returns one of: finished, submitted, processing, unknown, or failed, plus optional progress and message fields. Required scopes: storage:records:delete, storage:events:read, storage:logs:read, storage:bizevents:read, storage:spans:read, storage:buckets:read. |
| execute_record_deletionA | DESTRUCTIVE — permanently deletes Grail records matching the given DQL query and optional timeframe. Data that is deleted CANNOT be restored. Timeframe length is limited to 24 hours; end time must be at least 4 hours in the past. Subsequent requests are queued and executed in order. Returns a taskId to track deletion progress via get_record_deletion_status. Requires DT_ENABLE_WRITES=true. Required scopes: storage:records:delete, storage:events:read, storage:logs:read, storage:bizevents:read, storage:spans:read, storage:buckets:read. Allowed query commands: fetch, fields, fieldsAdd, fieldsRemove, filter, parse. |
| cancel_record_deletionA | Cancel a Grail record deletion process that is in progress or queued. Cancels subtasks that have not started yet; already-deleted data is NOT restored. Requires DT_ENABLE_WRITES=true. Required scopes: storage:records:delete, storage:events:read, storage:logs:read, storage:bizevents:read, storage:spans:read, storage:buckets:read. |
| list_self_notificationsA | List self-notifications (platform notification v1). Returns paginated results array. |
| get_self_notificationB | Get a single self-notification by ID (platform notification v1). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mnmozi/dynatrace-mcp-saas'
If you have feedback or need assistance with the MCP directory API, please join our Discord server