Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/dynatrace-oss/dtctl/agents-mdgit clone --depth 1 https://github.com/dynatrace-oss/dtctlWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/dynatrace-oss/dtctl/agents-md)<a href="https://agentmods.dev/instructions/dynatrace-oss/dtctl/agents-md"><img src="https://agentmods.dev/badge/instructions/dynatrace-oss/dtctl/agents-md.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.06742 | $0.06742 |
| Opus 5 | $0.03371 | $0.03371 |
| Sonnet 5 | $0.01348 | $0.01348 |
| Haiku 4.5 | $0.00674 | $0.00674 |
Grade A, and why
dtctl AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 502 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AI Agent Development Guide
kubectl-inspired CLI for Dynatrace (dashboards, workflows, SLOs, etc). Go + Cobra framework.
Pattern: dtctl <verb> <resource> [flags]
Quick Start
- Read docs/dev/API_DESIGN.md Design Principles (lines 17-110)
- Check IMPLEMENTATION_STATUS.md for feature matrix
- Copy patterns from
pkg/resources/slo/orpkg/resources/workflow/
Architecture
cmd/ # Cobra commands (get, describe, create, delete, apply, exec, ctx, doctor, commands, plugin)
# plus the embedding entrypoint: run.go (cmd.Run + per-invocation isolation),
# session.go, capabilities.go, stdio.go, blocked.go (docs/dev/SERVICE_ENGINE_DESIGN.md)
pkg/
├── client/ # Shim over sdk/session's client; keeps CLI-only extras (typed errors, pagination, OTel injection) and pins the dtctl/<version> User-Agent
├── config/ # Shim over sdk/session — the config model/keyring implementation lives in the sdk
├── auth/ # Shim over sdk/session's OAuth machinery + CLI-owned scope-composition tables
├── safety/ # Shim over sdk/session's safety checker
├── plugin/ # kubectl-style exec plugin resolution/discovery (docs/dev/PLUGIN_CONVENTIONS.md)
├── resources/ # Resource handlers — thin CLI wrappers that delegate to sdk/api/
├── output/ # Formatters (table, JSON, YAML, charts, agent envelope, color control)
├── exec/ # DQL query execution
├── vfs/ # Virtual-filesystem seam: user-supplied file paths resolve against the host disk (CLI) or per-request virtual files (engine)
├── engine/ # Embeddable service engine: one dtctl command line per request — multi-tenant session, virtual files, CLI-identical output
└── serve/ # `dtctl serve <protocol>` — reference servers over pkg/engine, one subcommand per protocol (`serve http` today; wired in main, outside the invocation lock). Experimental: registered only when DTCTL_EXPERIMENTAL_SERVE is set
sdk/ # Separate Go module (github.com/dynatrace-oss/dtctl/sdk)
├── session/ # The session layer (docs/dev/CONFIG_CONTRACT.md): config model + load/save, credential stores, OAuth flow/refresh + cross-process lock, client-from-context with parameterized User-Agent, safety semantics
├── api/ # Typed API wrappers (one package per Dynatrace API surface)
│ # apispec/ is the odd one out: it reads the environment's *own* API index and
│ # OpenAPI documents (docs/dev/GENERIC_API_ACCESS.md)
├── httpclient/ # HTTP client, response helpers, pagination, typed errors
├── auth/ # Token type detection
├── urls/ # Environment URL validation/normalization
├── agentmode/ # AI agent environment detection
└── inventory/ # Environment data-inventory discovery over a caller-supplied DQL Runner
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 502 lines · 6,742 tokens per session scan A 67b425b644b8
dtctl AGENTS.md is an instructions file published in the GitHub repository dynatrace-oss/dtctl (182 stars, last pushed yesterday), licensed Apache-2.0. It adds 6,742 tokens to every session, about $0.0337 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other instructions, from other repositories
dynatrace-mcp copilot-instructions.md
Instructions for dynatrace-oss/dynatrace-mcp, covering dynatrace mcp server, guidelines, repo structure, coding guidelines and dependencies.
dynatrace-mcp typescript.instructions.md
Instructions for dynatrace-oss/dynatrace-mcp, covering mcp server – typescript agent instructions, reference documentation, project-specific patterns, console.error for logging and implementing mcp tools.
dynatrace-mcp mcp-tools.instructions.md
Instructions for dynatrace-oss/dynatrace-mcp: Always use the tool() helper function (see src/index.ts) instead of calling server.registerTool() directly.
dynatrace-mcp package-json.instructions.md
Instructions for dynatrace-oss/dynatrace-mcp, covering package.json instructions, dependency versioning and no overrides.
dynatrace-mcp changelog.instructions.md
Instructions for dynatrace-oss/dynatrace-mcp, covering what belongs in the changelog, style guidelines, content guidelines and examples.
dynatrace-mcp build.instructions.md
Instructions for dynatrace-oss/dynatrace-mcp, a project described as: MCP server for Dynatrace Observability.