Skip to main content
Glama
OctopusDeploy

Octopus Deploy MCP Server

Official

Octopus Deploy Official MCP Server

Octopus makes it easy to deliver software to Kubernetes, multi-cloud, on-prem infrastructure, and anywhere else. Automate the release, deployment, and operations of your software and AI workloads with a tool that can handle CD at scale in ways no other tool can.

Model Context Protocol (MCP) allows the AI assistants you use in your day to day work, like Claude Code, or ChatGPT, to connect to the systems and services you own in a standardized fashion, allowing them to pull information from those systems and services to answer questions and perform tasks.

The Octopus MCP Server provides your AI assistant with powerful tools that allow it to inspect, query, and diagnose problems within your Octopus instance, transforming it into your ultimate DevOps wingmate. For a list of supported use-cases and sample prompts, see our documentation.

Octopus Server Compatibility

Most tools exposed by the MCP Server use stable APIs that have been available from at least version 2021.1 of Octopus Server. Tools that are newer will specify the minimum supported version in the documentation. Alternatively, you can use the command line argument --list-tools-by-version to check how specific tools relate to versions of Octopus.

🚀 Installation

Install via Docker

Credentials must be supplied via environment variables to avoid exposing them in the host process list (ps aux / /proc/<pid>/cmdline). The Octopus server URL can still be supplied via the --server-url flag.

docker run -i --rm -e OCTOPUS_API_KEY=your-key -e OCTOPUS_SERVER_URL=https://your-octopus.com octopusdeploy/mcp-server

Full example configuration (for Claude Desktop, Claude Code, and Cursor):

{
  "mcpServers": {
    "octopus-deploy": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "OCTOPUS_SERVER_URL",
        "-e",
        "OCTOPUS_API_KEY",
        "octopusdeploy/mcp-server"
      ],
      "env": {
        "OCTOPUS_SERVER_URL": "https://your-octopus.com",
        "OCTOPUS_API_KEY": "YOUR_API_KEY"
      }
    },
  }
}

For Apple Mac users, you might need to add the following arguments in the configuration to force Docker to use the Linux platform:

"--platform",
"linux/amd64",

We are planning to release a native ARM build shortly so that those arguments will not be required anymore.

Install via Node

Requirements

  • Node.js >= v20.0.0

  • Octopus Deploy instance that can be accessed by the MCP server via HTTPS

  • Octopus Deploy API Key or Access Token (see Authentication below)

Configuration

Full example configuration (for Claude Desktop, Claude Code, and Cursor):

Read-only mode (default, recommended for production):

{
  "mcpServers": {
    "octopusdeploy": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@octopusdeploy/mcp-server"],
      "env": {
        "OCTOPUS_SERVER_URL": "https://your-octopus.com",
        "OCTOPUS_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Write mode enabled (for development/testing):

{
  "mcpServers": {
    "octopusdeploy": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@octopusdeploy/mcp-server", "--no-read-only"],
      "env": {
        "OCTOPUS_SERVER_URL": "https://your-octopus.com",
        "OCTOPUS_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

The Octopus MCP Server is typically configured within your AI Client of choice.

It is packaged as an npm package and executed via Node's npx command. Credentials (API key or access token) must be supplied via environment variables — they are not accepted as command-line arguments to avoid exposing secrets in the process list. The Octopus server URL may be supplied via either the OCTOPUS_SERVER_URL environment variable or the --server-url flag.

OCTOPUS_API_KEY=API-KEY \
OCTOPUS_SERVER_URL=https://your-octopus.com \
npx -y @octopusdeploy/mcp-server

Or with the server URL on the command line:

OCTOPUS_API_KEY=API-KEY \
npx -y @octopusdeploy/mcp-server --server-url https://your-octopus.com

Authentication

The MCP server supports two authentication methods. Both are supplied via environment variables — credentials are not accepted on the command line because flags are visible in the host process list to any local user.

API keys are the standard authentication method for Octopus Deploy. You can generate one from your Octopus Deploy user profile.

OCTOPUS_API_KEY=API-XXXXXXXXXXXXXXXXXXXXXXXXXX \
OCTOPUS_SERVER_URL=https://your-octopus.com \
npx -y @octopusdeploy/mcp-server

Access Token / Bearer Token (automated scenarios only)

The server also supports short-lived access tokens (Bearer tokens) as an alternative to API keys. This authentication method is intended only for automated scenarios where an external system issues a short-lived token to the MCP server (e.g., CI/CD pipelines, automated orchestration, or machine-to-machine workflows). Do not use long-lived Bearer tokens — use API keys instead for interactive or long-running sessions.

OCTOPUS_ACCESS_TOKEN=your-short-lived-token \
OCTOPUS_SERVER_URL=https://your-octopus.com \
npx -y @octopusdeploy/mcp-server

Full example configuration with an access token:

{
  "mcpServers": {
    "octopusdeploy": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@octopusdeploy/mcp-server"],
      "env": {
        "OCTOPUS_SERVER_URL": "https://your-octopus.com",
        "OCTOPUS_ACCESS_TOKEN": "YOUR_TOKEN"
      }
    }
  }
}

If both an API key and an access token are provided, the access token takes precedence. The active authentication method is recorded in the log file (configurable with --log-file) so operators can confirm which credential is in use.

Configuration Options

The Octopus MCP Server supports several command-line options to customize which tools are available.

If you are not sure which tools you require, we recommend running without any additional command-line options and using the provided defaults.

Toolsets

Use the --toolsets parameter to enable specific groups of tools:

# Enable all toolsets (default)
npx -y @octopusdeploy/mcp-server

# Enable only specific toolsets
npx -y @octopusdeploy/mcp-server --toolsets projects,deployments

# Enable all toolsets explicitly
npx -y @octopusdeploy/mcp-server --toolsets all

Available toolsets:

  • core - Basic operations (always enabled)

  • projects - Project operations

  • deployments - Deployment operations

  • releases - Release management

  • tasks - Task operations

  • tenants - Multi-tenancy operations

  • kubernetes - Kubernetes operations

  • machines - Deployment target operations

  • certificates - Certificate operations

  • accounts - Account operations

Read-Only Mode

The server runs in read-only mode by default for security. Most tools are read-only operations, but some tools can perform write operations (like creating releases and deployments).

Write-enabled tools:

  • create_release - Create new releases

  • deploy_release - Deploy releases to environments and tenants

To use write-enabled tools, you must explicitly disable read-only mode:

# Run in read-only mode (default) - write tools are disabled
npx -y @octopusdeploy/mcp-server

# Disable read-only mode to enable write operations
npx -y @octopusdeploy/mcp-server --no-read-only

Security Note: When disabling read-only mode, ensure you use an API key with appropriate, least-privilege permissions. Write operations can create releases and trigger deployments in your Octopus instance.

Complete Examples

All examples below assume OCTOPUS_API_KEY is set in the environment. The --server-url flag is shown for clarity but can also be provided via OCTOPUS_SERVER_URL.

# Development setup with only core and project tools
npx -y @octopusdeploy/mcp-server --toolsets core,projects --server-url https://your-octopus.com

# Full production setup with all tools (read-only by default)
npx -y @octopusdeploy/mcp-server --toolsets all --server-url https://your-octopus.com

# Development setup with write operations enabled
npx -y @octopusdeploy/mcp-server --no-read-only --server-url https://your-octopus.com

Other command line arguments

  • --log-level <level> - Minimum log level (info, error)

  • --log-file <path> - Log file path or filename. If not specified, logs are written to console only

  • -q, --quiet - Disable file logging, only log errors to console

  • --list-tools-by-version - List all registered tools by their supported Octopus Server version and exit

Related MCP server: Azure DevOps MCP Server

🔨 Tools

URL-Based Tools

Quick start: Paste Octopus URLs directly to investigate issues without manual ID extraction.

  • get_deployment_from_url: Get deployment details from deployment URL (returns taskId for follow-up)

  • get_task_from_url: Get task details and logs from task URL

Deployment investigation workflow:

1. get_deployment_from_url with deployment URL
   → Returns deployment context + taskIdForLogs

2. get_task_details with spaceName and taskId
   → Returns execution logs for troubleshooting

Task investigation (direct task URL):

get_task_from_url with task URL
→ Returns task details and logs immediately

These tools eliminate manual ID extraction by:

  • Parsing URLs automatically

  • Resolving space IDs to space names

  • Validating ID formats

  • Providing clear error messages

Example URLs:

  • Deployment: https://your-octopus.com/app#/Spaces-1/projects/my-app/deployments/Deployments-123

  • Task: https://your-octopus.com/app#/Spaces-1/tasks/ServerTasks-456

See Working with URLs for detailed workflows, examples, and best practices.

Core Tools

  • list_spaces: List all spaces in the Octopus Deploy instance

  • list_environments: List all environments in a given space

Projects

  • list_projects: List all projects in a given space

Deployments

  • deploy_release: Deploy a release to environments (supports both tenanted and untenanted deployments)

  • list_deployments: List deployments in a space with optional filtering

Releases

  • create_release: Create a new release for a project

  • find_releases: Find releases in a space (can get a specific release by ID or list all releases)

  • list_releases_for_project: List all releases for a specific project

Tasks

  • get_task_by_id: Get details for a specific server task by its ID

  • get_task_details: Get detailed information for a specific server task

  • get_task_raw: Get raw details for a specific server task

Tenants

  • find_tenants: Find tenants in a space (can get a specific tenant by ID or list/search tenants with filters)

  • get_tenant_variables: Get tenant variables by type (all, common, or project)

  • get_missing_tenant_variables: Get tenant variables that are missing values

Kubernetes

  • get_kubernetes_live_status: Get live status of Kubernetes resources for a project and environment (minimum supported version: 2025.3)

Machines (Deployment Targets)

  • find_deployment_targets: Find deployment targets in a space (can get a specific target by ID or list/search targets with filters)

Certificates

  • find_certificates: Find certificates in a space (can get a specific certificate by ID or list/search certificates with filters)

Accounts

  • find_accounts: Find accounts in a space (can get a specific account by ID or list/search accounts with filters)

Additional Tools

  • get_deployment_process: Get deployment process by ID for projects or releases

  • get_branches: Get Git branches for a version-controlled project (minimum supported version: 2021.2)

  • get_current_user: Get information about the current authenticated user

🔒 Security Considerations

The Octopus MCP Server includes both read and write operations. Important security considerations:

Read Operations

  • Can read full deployment logs, which could include production secrets if they were not marked as secrets

  • Access to sensitive configuration data and variables

  • Exercise caution when connecting to tools and models you do not fully trust

Write Operations

When read-only mode is disabled (--no-read-only), the following write operations are available:

  • Creating releases: Can create new releases for projects

  • Deploying releases: Can trigger deployments to environments (including production)

Critical Security Measures:

  1. Least Privilege: Use API keys with the minimum permissions needed for your use case

  2. Read-Only by Default: The server defaults to read-only mode - you must explicitly opt-in to write operations

  3. Prompt Injection Risk: Running agents in fully automated fashion could make you vulnerable to prompt-injection attacks

Recommendation: For production environments, use read-only mode unless you have a specific, controlled use case for write operations.

⚠️ Limitations

Data Analysis

The nature of current AI chat tools and the MCP protocol itself makes it impractical to analyze large amounts of data. Most MCP clients currently do not support chaining tool calls (using the output of one tool as input to the next one) and instead fall back to copying the results token by token, which frequently leads to hallucinations. If you are looking to process historical data from your Octopus instance for analysis purposes, we recommend using the API directly or writing your own MCP client that is capable of processing the tool call results programmatically.

Performance

The MCP Server is technically just a thin layer on top of the existing Octopus Server API. As such it is capable of retrieving large amounts of data (for example, requesting thousands of deployments). Such queries can have a significant effect on your instance's performance. Instruct your models to only retrieve the minimum set of data that it needs (most models are really good at this out of the box).

🤝 Contributions

Contributions are welcome! :heart: Please read our Contributing Guide for information about how to get involved in this project.

We are eager to hear how you plan to use Octopus MCP Server and what features you would like to see included in future version.

Please use Issues to provide feedback, or request features.

If you are a current Octopus customer, please report any issues you experience using our MCP server to our support team. This will ensure you get a timely response within our standard support guarantees.

🙋 FAQ

Do you have plans to release a remote MCP server?

We are working on integrating an MCP server directly into Octopus Server. This will open up the door for us to build more complex MCP tools, as well as:

  • Giving Octopus Administrators more granular control over MCP clients

  • Natively support OAuth for client authentication

  • Integrating security scanning tools into the MCP output

If this is of interest to you, please register your interest on our roadmap item.

License

This project is licensed under the terms of Mozilla Public License 2.0 open source license.

Available Tools

30 tools
create_releaseCreate a new release in Octopus DeployC

Create a new release for an Octopus Deploy project

This tool creates a new release for a project. The space name and project name are required. All other parameters are optional and will use Octopus defaults if not specified.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesThe space name
projectNameYesThe project name
releaseVersionNoThe version for the release (e.g., '1.0.0'). If not specified, Octopus will auto-generate based on project settings.
channelNameNoThe channel name (uses default channel if not specified)
packageVersionNoDefault package version to use for all packages
packagesNoArray of package specifications (format depends on Octopus configuration)
gitCommitNoGit commit hash
gitRefNoGit reference (branch or tag)
releaseNotesNoRelease notes for this release
ignoreIfAlreadyExistsNoIf true, skip creation if release already exists (returns existing release)
ignoreChannelRulesNoIf true, ignore channel version rules
packagePrereleaseNoPackage prerelease tag
customFieldsNoCustom field values as key-value pairs
confirmNoRequired only when the MCP client does not support elicitation. Set to true to confirm release creation; otherwise the tool aborts.

TDQS

C2.9/5.0
Behavior2/5

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

Description states the tool creates a release but does not disclose behavioral traits beyond that. With annotations providing no safety or idempotency hints (all false), the description should elaborate on side effects, error behavior, or post-conditions. It does not, leaving an agent with insufficient context.

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 concise (two sentences) and front-loaded with the core purpose. It avoids unnecessary fluff but could be slightly more structured if grouped logically.

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

Completeness2/5

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

Given 14 parameters, no output schema, and sparse annotations, the description fails to provide complete context. Missing information about return values, error handling, or expected workflow prevents an agent from understanding the full tool 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?

The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds value by grouping required vs optional and noting Octopus defaults, but this is largely redundant with the 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.

Purpose4/5

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

The description clearly states the verb 'create' and the resource 'release', and identifies the Octopus Deploy context. However, it does not differentiate from sibling tools like deploy_release or find_releases, which could lead to confusion about 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 Guidelines2/5

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

The description provides only minimal guidance on parameter usage (required vs optional with defaults) but lacks explicit when-to-use or when-not-to-use instructions relative to alternatives. No mention of prerequisites, success conditions, or error scenarios.

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

deploy_releaseDeploy a release to environments in Octopus DeployA
Destructive

Deploy a release to one or more environments in Octopus Deploy

This tool supports both tenanted and untenanted deployments:

  • Untenanted: Don't provide tenants or tenantTags. Can deploy to multiple environments at once.

  • Tenanted: Provide tenants or tenantTags. Can only deploy to ONE environment, but can target multiple tenants.

The tool automatically determines which deployment type to use based on the parameters provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesThe space name
projectNameYesThe project name
releaseVersionYesThe release version to deploy (e.g., '1.0.0')
environmentNamesYesArray of environment names. For tenanted deployments, must contain exactly one environment.
tenantsNoArray of tenant names for tenanted deployment (optional)
tenantTagsNoArray of tenant tags for tenanted deployment (e.g., ['Region/US-West', 'Tier/Production'])
forcePackageRedeploymentNoForce redeployment of packages
updateVariableSnapshotNoUpdate the variable snapshot
forcePackageDownloadNoForce package download
specificMachineNamesNoDeploy to specific machines only
excludedMachineNamesNoExclude specific machines from deployment
skipStepNamesNoSkip specific deployment steps
useGuidedFailureNoUse guided failure mode
runAtNoSchedule deployment for later (ISO 8601 date string)
noRunAfterNoDon't run deployment after this time (ISO 8601 date string)
variablesNoPrompted variable values as key-value pairs
deploymentFreezeOverrideReasonNoReason for overriding deployment freeze
deploymentFreezeNamesNoNames of deployment freezes to override
confirmNoRequired only when the MCP client does not support elicitation. Set to true to confirm deployment; otherwise the tool aborts.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate destructiveHint: true; description confirms destructive action. Goes beyond annotations by explaining the tenanted/untenanted logic, which is a key behavioral trait.

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, uses bullet points for clarity, front-loaded with main action. Every sentence adds value with no redundancy.

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

Completeness4/5

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

Covers core logic and decision points for 19 parameters. No output schema, but description focuses on usage rules. Lacks some detail on parameter effects, but schema covers those.

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?

100% schema coverage provides baseline of 3. Description adds value by explaining how parameters interact (tenants/environmentNames for mode determination), which is not in individual param 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 verb ('Deploy') and resource ('release to one or more environments'). It differentiates from sibling tools like create_release (creates releases) and run_runbook (runbooks vs releases).

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 explains when to use tenanted vs untenanted deployments with clear rules about tenants and environment count. Does not mention alternatives or when not to use this tool, but the guidance is sufficient.

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

executeExecute an Octopus REST request (backstop)A
Destructive

Reach Octopus REST endpoints not covered by the curated tools. Use this only after grep_llms_txt has shown you the right method and path.

Method gating is hard-coded server-side, three tiers:

  • GET → read tier: always allowed (subject to toolset allowlist + sensitive denylist).

  • POST/PUT/PATCH → write tier: blocked when --read-only is set; requires user confirmation via elicitation otherwise.

  • DELETE → delete tier: requires --allow-deletes (and is blocked when --read-only is set) AND a stronger user confirmation.

The HTTP method enum is the gate. The tool will not honour any 'isRead' flag the agent invents — the runtime classifies based on the actual method.

Other gates (in order): 0. Path shape: must be '/api' or start with '/api/'. Absolute URLs, '~/api/...', '/octopus/portal/...', query strings, fragments, '..' segments, and percent-encoded slashes are all rejected up front.

  1. Sensitive denylist: API key endpoints and catastrophic deletes (DELETE /api/users/{id}, DELETE /api/spaces/{id}) are always blocked.

  2. Path allowlist — only applied when --toolsets has narrowed the active set. With every toolset enabled (the default, or explicit --toolsets all) any path under /api is reachable subject to the other gates; when toolsets are narrowed, paths only resolve if their owning toolset is enabled so disabling a toolset (e.g. 'certificates') makes its endpoints unreachable even on GET.

  3. Elicitation on every non-GET, with a stronger message for DELETE.

Discover endpoints with grep_llms_txt. Use octopus://api/capabilities to see which toolsets are enabled and whether write/delete modes are on.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYesHTTP method. The method itself is the read/write/delete classifier — GET is read-only, POST/PUT/PATCH are blocked when --read-only is set, DELETE additionally requires --allow-deletes. The agent cannot bypass this by lying about intent.
pathYesServer-relative path under the Octopus REST API. MUST be exactly '/api' or start with '/api/' — e.g. '/api/spaces/Spaces-1/feeds' or '/api/Spaces-1/projects'. Do NOT pass an absolute URL ('https://octopus.example/api/...'), an SDK-relative path ('~/api/...'), or a host-relative path outside /api ('/octopus/portal/...'); they are all rejected. Query parameters go in `query`, not in this string. Discover valid paths via grep_llms_txt.
queryNoOptional query-string parameters as a flat object.
bodyNoOptional request body for POST/PUT/PATCH calls.
asCsvNoIf true, request 'text/csv' for tabular GET responses. The Octopus API honours this for endpoints that support CSV output.
confirmNoRequired only when the MCP client does not support elicitation. Set to true to confirm a non-GET call; otherwise the tool aborts.

TDQS

A4.6/5.0
Behavior5/5

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

The description goes far beyond annotations (destructiveHint=true, etc.) by explaining the full gating logic: three-tier method policy, path validation (shape, denylist, allowlist), and elicitation requirements. It also warns that the agent cannot bypass by lying about flags. This provides complete behavioral transparency.

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

Conciseness3/5

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

The description is long and detailed, with multiple paragraphs and nested bullet points. While well-structured, it is somewhat repetitive (e.g., method gating explained in two places). It could be more concise without losing clarity.

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 (6 parameters, nested objects, no output schema) and the fact it interacts with a broad REST API, the description covers all necessary contextual information: method gates, path validation, denylist, toolset allowlist, elicitation, and discovery via grep_llms_txt. This is complete.

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?

The input schema has 100% description coverage, but the description adds critical semantic context: method description explains read/write/delete classification, path describes validation rules (must be /api or start with /api/), and confirms parameter covers elicitation fallback. This enriches the schema significantly.

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 tool's name 'execute' is generic, but the title and description clearly state it is for executing Octopus REST requests not covered by curated tools. It specifies the scope (REST endpoints under /api) and distinguishes from sibling tools that cover specific endpoints.

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 tells agents to use this only after grep_llms_txt has shown the method and path. It also details when different HTTP methods are allowed (GET always, POST/PUT/PATCH with restrictions, DELETE with stricter gates). However, it does not explicitly list when to prefer a sibling tool over execute, though the context implies execute is a fallback.

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

find_accountsFind accounts in an Octopus Deploy spaceA
Read-onlyIdempotent

Find accounts in a space - can retrieve a single account by ID or list all accounts

This unified tool can either:

  • Get detailed information about a specific account when accountId is provided

  • List all accounts in a space when accountId is omitted

You can optionally filter by various parameters like name, account type, etc. when listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYes
accountIdNoThe ID of a specific account to retrieve. If omitted, lists all accounts.
skipNoNumber of accounts to skip for pagination (only used when listing)
takeNoNumber of accounts to take for pagination (only used when listing)
idsNoFilter by specific account IDs (only used when listing)
partialNameNoFilter by partial name match (only used when listing)
accountTypeNoFilter by account type (only used when listing)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnly=true, so description's main addition is the dual-mode behavior. Does not disclose pagination limits, error handling, or response format; acceptable given 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 two-sentence summary followed by bullet list. No wasted words, front-loaded with 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?

Adequately covers core functionality for a simple read tool with 7 params and no output schema. Missing details like return format or error handling, but not critical for selection.

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 descriptions cover 86% of parameters, including conditional usage ('only used when listing'). Description rephrases but adds no new semantic 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?

Describes verb and resource clearly, with explicit dual-mode behavior (get by ID or list all). Distinguishes from sibling 'find_*' tools by specifying accounts.

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?

Clearly states when to use each mode (accountId provided vs omitted) and optional filters for listing. Lacks explicit alternatives or when-not-to-use guidance, but conditional usage is well explained.

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

find_certificatesFind certificates in an Octopus Deploy spaceA
Read-onlyIdempotent

Find certificates in a space - can retrieve a single certificate by ID or list all certificates

This unified tool can either:

  • Get detailed information about a specific certificate when certificateId is provided

  • List all certificates in a space when certificateId is omitted

You can optionally filter by various parameters like name, archived status, tenant, etc. when listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYes
certificateIdNoThe ID of a specific certificate to retrieve. If omitted, lists all certificates.
skipNoNumber of certificates to skip for pagination (only used when listing)
takeNoNumber of certificates to take for pagination (only used when listing)
searchNoSearch term to filter certificates (only used when listing)
archivedNoFilter by archived status (only used when listing)
tenantNoFilter by tenant (only used when listing)
firstResultNoIndex of first result to return (only used when listing)
orderByNoField to order results by (only used when listing)
idsNoFilter by specific certificate IDs (only used when listing)
partialNameNoFilter by partial name match (only used when listing)

TDQS

A4.4/5.0
Behavior5/5

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

Annotations confirm read-only, idempotent, non-destructive behavior. The description adds value by detailing the dual retrieval modes and filtering capabilities, providing behavioral 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?

The description is concise, well-structured, and front-loaded with the main purpose. Each sentence adds value, with no redundancy or 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?

The description effectively explains the dual modes and filter options. However, without an output schema, a brief note on return format would enhance completeness. Still, it covers the essential usage context adequately.

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 91%, so the schema already documents most parameters. The description only reiterates filtering options without adding new meaning, justifying a baseline score of 3.

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 that the tool finds certificates in an Octopus Deploy space, with two modes: retrieve a single certificate by ID or list all certificates. It is specific to certificates and distinguishes itself from sibling 'find' tools for other resources.

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 each mode (provide certificateId or omit) and mentions optional filters for listing. It does not explicitly compare with alternatives, but the context is clear for a find tool.

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

find_deployment_targetsFind deployment targets in an Octopus Deploy spaceA
Read-onlyIdempotent

Find deployment targets (machines) in a space - can retrieve a single target by ID or list all targets

This unified tool can either:

  • Get detailed information about a specific deployment target when targetId is provided

  • List all deployment targets in a space when targetId is omitted

You can optionally filter by various parameters like name, roles, health status, etc. when listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYes
targetIdNoThe ID of a specific deployment target to retrieve. If omitted, lists all deployment targets.
skipNoNumber of targets to skip for pagination (only used when listing)
takeNoNumber of targets to take for pagination (only used when listing)
nameNoFilter by exact name (only used when listing)
idsNoFilter by specific target IDs (only used when listing)
partialNameNoFilter by partial name match (only used when listing)
rolesNoA list of roles / target tags to filter by (only used when listing)
isDisabledNoFilter by disabled status (only used when listing)
healthStatusesNoPossible values: Healthy, Unhealthy, Unavailable, Unknown, HasWarnings (only used when listing)
commStylesNoFilter by communication styles (only used when listing)
tenantIdsNoFilter by tenant IDs (only used when listing)
tenantTagsNoFilter by tenant tags (only used when listing)
environmentIdsNoFilter by environment IDs (only used when listing)
thumbprintNoFilter by thumbprint (only used when listing)
deploymentIdNoFilter by deployment ID (only used when listing)
shellNamesNoFilter by shell names (only used when listing)
deploymentTargetTypesNoFilter by deployment target types (only used when listing)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds the dual-mode behavior and filtering options, which provides useful context beyond annotations. It does not discuss potential error responses or rate limits, but the safety profile is well-covered by 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 concise with three short, well-structured paragraphs. The key information is front-loaded, and every sentence adds value without redundancy. It efficiently conveys the tool's functionality.

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 complexity of 18 parameters and no output schema, the description covers the essential behaviors (two modes, filtering) and infers return type. It lacks explicit details on errors or response format, but for a read-only find tool with strong annotations, it is fairly 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 94%, extensively documenting each parameter. The description reinforces the conditional nature of targetId vs listing parameters but adds minimal new meaning beyond what the schema already says. This 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 'Find deployment targets (machines) in a space' and distinguishes between retrieving a single target by ID and listing all targets. This differentiates it from sibling tools like find_accounts or find_certificates by specifying the resource and action.

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 each mode (targetId provided vs omitted) and lists available filters for listing. However, it does not explicitly compare against sibling tools or provide 'when not to use' guidance, which would be beneficial given the many similar find_* tools.

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

find_eventsSearch the Octopus audit logA
Read-onlyIdempotent

Search the Octopus Deploy audit log (also called the Events log) — every meaningful action recorded against a space: deployments, release creations, modifications, user logins, machine registrations, variable edits, tenant changes, and so on.

Modes (the mode arg):

  • search (default) — query the audit log. Requires spaceName. Supports rich filtering by user, project, environment, tenant, document type, date range, category, group, and agent.

  • listCategories — enumerate every event category (e.g. DeploymentSucceeded).

  • listGroups — enumerate event groups (e.g. Created, Modified, Deleted, Deployment). Each group lists the categories inside it.

  • listAgents — enumerate user-agent strings recorded by the audit subsystem.

  • listDocumentTypes — enumerate entity-prefix metadata (Projects-, Releases-, ...).

Search modes (within mode='search', picked by argument shape):

  • eventId → fetch that single event. Mutually exclusive with list and pagination filters; excludeDifference is still honoured.

  • otherwise → list events matching the filters, paginated.

Performance tip: the per-event ChangeDetails field (the before/after diff for Modified events) is by far the heaviest payload field. Pass excludeDifference: true whenever scanning many events; fetch a single event without the flag when you need the diff.

Filter semantics:

  • regarding — AND semantics: event must reference EVERY listed document ID.

  • regardingAny — OR semantics: event must reference ANY listed document ID.

  • All other multi-value filters (users, projects, environments, tenants, eventCategories, eventGroups, ...) are OR semantics within the field.

  • from (inclusive) and to (exclusive) accept ISO 8601 datetimes.

Permissions: requires EventView on the calling user's space scope. The server filters results further based on per-document permissions.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoWhat to return. Defaults to 'search' (the audit log itself). Metadata modes enumerate valid filter values: listCategories returns every event category (e.g. DeploymentSucceeded, ReleaseCreated); listGroups returns category groupings (Created/Modified/Deleted/Deployment/Interruption/...); listAgents returns the user-agent strings seen by the audit subsystem; listDocumentTypes returns entity-prefix metadata (Projects-, Releases-, ...). Use a metadata mode first when you need to construct an eventCategories/eventGroups/documentTypes filter and don't know the valid values. Metadata modes ignore every other argument.
spaceNameNoSpace name. Required for mode='search'. Ignored by metadata modes (they are server-wide).
eventIdNoFetch a single event by ID (form 'Events-NNN'). Mutually exclusive with list and pagination filters (regarding, regardingAny, users, projects, environments, tenants, projectGroups, eventCategories, eventGroups, eventAgents, documentTypes, tags, from, to, skip, take). Compatible with excludeDifference (still honoured) and includeInternalEvents (no-op for single fetches).
regardingNoDocument IDs the event must relate to. AND semantics: event must reference EVERY id listed. Use regardingAny for OR semantics.
regardingAnyNoDocument IDs the event may relate to. OR semantics: event references ANY id listed.
usersNoUser IDs who triggered the event (OR semantics within the list).
projectsNoProject IDs the event relates to (OR semantics).
environmentsNoEnvironment IDs the event relates to (OR semantics).
tenantsNoTenant IDs the event relates to (OR semantics).
projectGroupsNoProject group IDs. Events for any project inside these groups are included.
eventCategoriesNoEvent category names, e.g. ['DeploymentSucceeded','DeploymentFailed']. Use mode='listCategories' to discover the full set.
eventGroupsNoEvent group names, e.g. ['Created','Modified','Deleted','Deployment','Interruption']. Each group is expanded server-side to the categories it contains. Use mode='listGroups' to discover the full set.
eventAgentsNoUser-agent strings of the clients that triggered the events. Use mode='listAgents' to discover the values present in this instance.
documentTypesNoDocument type prefixes, e.g. ['Projects-','Releases-']. Use mode='listDocumentTypes' to discover the full set.
tagsNoCanonical tenant tag IDs of the form 'TagSetName/TagName'. Filters events whose related tenants carry these tags.
fromNoISO 8601 datetime. Inclusive lower bound on Occurred (Occurred >= from).
toNoISO 8601 datetime. Exclusive upper bound on Occurred (Occurred < to).
includeInternalEventsNoDefault true. Set false to suppress per-target MachineAdded / MachineDeleted / MachineDeploymentRelatedPropertyWasUpdated noise that floods machine-heavy instances.
excludeDifferenceNoSet true to omit the ChangeDetails field (the before/after diff). ChangeDetails is by far the heaviest field per event — recommended for any scan of more than a few events.
skipNoPagination offset (search mode only).
takeNoPagination page size (search mode only). Server default is 30.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, destructive-false, idempotent. The description adds substantial behavior: mode behavior, mutual exclusivity of eventId with list filters, filter semantics, and performance impact of ChangeDetails. 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.

Conciseness4/5

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

The description is long but well-structured with sections, bold headings, and bullet points. It is front-loaded with purpose and every sentence adds value for a complex tool with 21 parameters. Could be slightly more concise but appropriate for the complexity.

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 21 parameters and no output schema, the description covers modes, filter semantics, performance tips, permissions, and mutual exclusions. It lacks explicit return structure details but provides 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%, so baseline is 3. The description adds value by explaining filter semantics (AND/OR), performance implications, and mutual exclusivity, which go beyond the individual parameter 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 searches the Octopus Deploy audit log, listing specific action types (deployments, releases, etc.). It distinguishes itself from sibling tools like find_releases and list_projects by focusing on the events log.

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 detailed usage guidance: when to use search vs metadata modes, performance tips (excludeDifference), filter semantics (AND/OR), and permissions. It does not explicitly compare to alternatives but gives enough context to decide when to use this tool.

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

find_feature_togglesFind feature togglesA
Read-onlyIdempotent

List customer feature toggles in an Octopus Deploy project.

Each summary includes per-environment state (isEnabled, rolloutPercentage, clientRolloutPercentage) so "where is X turned on" is answerable from the list response. Heavy fields (description, tenant lists, segments, minimum versions) live in the resource body.

Dereference the returned resourceUri (octopus://spaces/{spaceName}/projects/{projectId}/featuretoggles/{slug}) for the full toggle body.

Use update_feature_toggle to flip an environment on/off or change rollout percentages on an existing toggle. This MCP server does not expose toggle creation, deletion, renaming, or rollout-group management — direct customers to the Octopus UI for those.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesSpace name.
projectIdYesProject ID (e.g. Projects-123). Feature toggles are scoped per project.
partialNameNoCase-insensitive substring match on the toggle name.
tagsNoFilter by canonical tag names (e.g. "release-rings/beta"). Repeats: a toggle matches if it has any of these tags.
environmentIdsNoFilter by environment IDs (e.g. Environments-7). A toggle matches if it has configuration for any of these environments.
skipNoPagination offset (≥ 0).
takeNoPagination page size (1–100, server-side cap).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds value by detailing response structure (summary vs. resource body), indicating that heavy fields are in the resource body, and explaining how to dereference the resourceUri for full details.

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?

Description is fairly detailed and well-structured, but slightly verbose. It uses clear sentences and separates purpose, response details, and guidance. Could be slightly more concise, but 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 no output schema, the description adequately explains the return value structure (per-environment state in summary, heavy fields in body, resourceUri for full details). Also clarifies limitations and alternative tools.

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?

Input schema has 100% description coverage. The description does not add new meaning beyond what the schema already provides for parameters. 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?

The description clearly states the verb 'List' and the resource 'customer feature toggles in an Octopus Deploy project'. It distinguishes from siblings by specifying what the tool does not do (creation, deletion, etc.) and references update_feature_toggle for modifications.

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?

Provides explicit guidance on when to use (listing toggles with per-environment state) and when not to use (for creation, deletion, renaming, rollout-group management). Mentions update_feature_toggle as the alternative for flipping toggles.

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

find_interruptionsFind interruptionsA
Read-only

Find interruptions (manual interventions, guided failures, deployment approvals) in an Octopus Deploy space.

Interruptions are the Octopus surface equivalent to pending approvals: a deployment or runbook run pauses and waits for a human to take action. Use this tool to enumerate them or to look up a single one.

Modes (picked by which arguments you supply):

  • interruptionId → fetch the slim summary for that interruption.

  • assignedToMe → list interruptions the authenticated user can act on; resolves /users/me (cached per session).

  • regarding → list interruptions related to a specific entity (ServerTasks-…, Deployments-…). Native server-side filter.

  • (none) → list all interruptions, optionally filtered by pendingOnly (default: true) and skip/take.

Each summary includes:

  • resourceUri → octopus://spaces/{spaceName}/interruptions/{id} for the FULL body (form definition with Markdown instructions, button options, control types, and any already-submitted values). Dereference this when the user asks for details about a specific interruption.

  • taskResourceUri → octopus://spaces/{spaceName}/tasks/{taskId} for the surrounding deployment/runbook task.

  • publicUrl → Octopus portal deep link to take action.

  • formElementNames → just the field names (e.g. Instructions, Notes, Result). Field values are NOT in the slim summary; fetch resourceUri for those.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesSpace name.
interruptionIdNoFetch the slim summary for a single interruption by ID (e.g. Interruptions-1). Mutually exclusive with regarding/assignedToMe/pendingOnly. For the full body (form definition, instructions, button options, submitted values) dereference the returned resourceUri.
pendingOnlyNoReturn only unprocessed (pending) interruptions. Defaults to true. Ignored when interruptionId is set.
assignedToMeNoLimit to interruptions the authenticated user can act on (CanTakeResponsibility or HasResponsibility, or where the user is the explicit ResponsibleUserId). When true, /users/me is resolved (cached per session). Octopus has no responsibleUserId query parameter, so the tool pages through the server result set and post-filters; pages are scanned up to a safety cap (filteredAs.scanComplete signals whether the entire result set was inspected). totalResults reflects the post-filter count; the unfiltered server total is exposed under filteredAs. Ignored when interruptionId is set.
regardingNoNative server-side filter to interruptions related to a specific entity ID (e.g. ServerTasks-1234, Deployments-5678). Ignored when interruptionId is set.
skipNoPagination offset. Ignored when interruptionId is set.
takeNoPagination page size. Ignored when interruptionId is set.

TDQS

A4.6/5.0
Behavior5/5

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

The description reveals important behavioral traits beyond the readOnlyHint annotation: it explains how assignedToMe resolves /users/me (cached per session), the post-filtering mechanism for assignedToMe with a safety cap, and the content of the response (slim summary vs. full body via resourceUri). This context helps the agent understand performance implications and response handling.

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 well-structured with clear sections and bullet points. It is somewhat lengthy but every sentence adds necessary detail. The structure aids readability, and the key points are front-loaded. Minor conciseness improvements could be made, but overall it earns a 4.

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 complexity of the tool (7 parameters, multiple modes, no output schema), the description is thorough. It explains the response format (slim summary vs. full body), how to retrieve detailed information (dereference resourceUri), and covers edge cases like the 'pending only' default. This completeness ensures the agent can use the tool effectively without missing critical details.

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 parameters are already documented. The main description adds value by explaining the interactions between parameters (e.g., mutual exclusivity, when pendingOnly is ignored, the caching behavior for assignedToMe). This goes beyond the schema definitions, making the semantics richer for the agent.

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 finds interruptions (manual interventions, guided failures, deployment approvals) in Octopus Deploy. The verb 'find' combined with the specific resource 'interruptions' makes the purpose unambiguous. It distinguishes itself from sibling tools by focusing on interruptions, which are a distinct entity.

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 guidance on different usage modes based on which arguments are supplied (interruptionId, assignedToMe, regarding, none). It explains when each mode is appropriate and notes mutual exclusivity. While it doesn't explicitly compare with alternatives, the sibling tools cover different resources, so no direct alternative exists. The guidance is clear and practical.

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

find_releasesFind releasesA
Read-onlyIdempotent

Find releases in an Octopus Deploy space.

Three modes, picked by which arguments are supplied:

  • releaseId → fetch the summary for that release.

  • projectId → list releases for that project (optionally filtered by searchByVersion).

  • neither → list releases across the space.

Each summary includes a resourceUri for fetching the full release body (release notes, packages, build information, custom fields).

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesSpace name.
releaseIdNoFetch a single release by ID. Mutually exclusive with projectId and searchByVersion.
projectIdNoRestrict listing to a single project. Mutually exclusive with releaseId.
searchByVersionNoFilter by version string. Requires projectId.
skipNoPagination offset.
takeNoPagination page size.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark as read-only and idempotent. Description adds context about returning summaries with a resourceUri for full body, and explains mode selection logic. 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?

Concise, front-loaded with main purpose, uses bullet points for modes. No wasted words. Each sentence adds value.

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 modes, summary vs full body, and pagination parameters are in schema. Minor gaps: no mention of ordering or empty results, but sufficient for a read 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?

Input schema has 100% description coverage, so baseline is 3. Description provides overall context for modes but does not add significant new semantic detail beyond the schema descriptions (e.g., mutual exclusivity is already 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?

Clearly states it finds releases in an Octopus Deploy space. Explains three modes (by releaseId, projectId, or neither) which distinguishes it from sibling tools like create_release and deploy_release.

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 when to use each mode: specific release, project releases, or all releases. Implicitly discourages use for full release body by mentioning resourceUri for that purpose. Could explicitly mention read_resource as an alternative for full details, but still clear.

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

find_runbooksFind runbooks in a projectA
Read-onlyIdempotent

Find runbooks in an Octopus Deploy project.

Two project kinds are supported:

  • DB-backed projects: address runbooks by 'runbookId' (e.g. 'Runbooks-123'). The summary includes 'publishedRunbookSnapshotId', which run_runbook uses by default.

  • Config-as-Code (CaC) projects: pass 'gitRef' (branch name like 'main', tag, or commit SHA). Address a single runbook by 'runbookSlug'. The summary includes 'gitRef' instead of 'publishedRunbookSnapshotId'; run_runbook needs the same gitRef.

Modes:

  • runbookId → fetch a single DB runbook.

  • runbookSlug + gitRef → fetch a single CaC runbook.

  • gitRef alone → list CaC runbooks at that ref.

  • neither → list DB runbooks in the project (optionally filtered by partialName).

Each summary includes multiTenancyMode and environmentScope so callers can determine which environments and tenants are valid targets before invoking run_runbook.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesSpace name.
projectNameYesProject name. Runbooks are scoped to a project, so this is required for both single fetch and listing.
runbookIdNoFetch a single DB-backed runbook by ID (e.g. 'Runbooks-123'). Mutually exclusive with partialName/skip/take and with gitRef/runbookSlug.
runbookSlugNoConfig-as-Code only. Fetch a single CaC runbook by slug at the given gitRef. Requires gitRef.
gitRefNoFor Config-as-Code projects only. A branch name (e.g. 'main'), tag, or commit SHA. Use get_branches to list available branches.
partialNameNoFilter listing by partial runbook name (case-insensitive).
skipNoPagination offset.
takeNoPagination page size.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds valuable context about the summary fields (multiTenancyMode, environmentScope) and how they support pre-execution validation, which annotations alone do not convey.

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-organized with clear sections (overview, project kinds, modes, summary). It is slightly lengthy but each sentence adds value. The structure aids quick comprehension.

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 complexity (8 parameters, multiple modes, no output schema), the description covers all necessary aspects: mode selection, parameter relationships, and summary output details. It enables correct invocation without additional context.

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?

Input schema provides 100% coverage with descriptions for all 8 parameters. The description enriches this by explaining the logical groupings and mutual exclusions (e.g., runbookId vs gitRef/runbookSlug), and clarifies how parameters interact in different modes.

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 it finds runbooks in Octopus Deploy projects, distinguishes between DB-backed and CaC runbook modes, and differentiates from sibling tools like run_runbook. Each mode is explicitly named and scoped.

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?

Explicitly explains when to use each mode (runbookId, runbookSlug+gitRef, gitRef alone, neither), including mutual exclusivity and required conditions. Also references get_branches for branch listing and run_runbook for execution, providing clear alternatives.

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

find_tenantsFind tenants in an Octopus Deploy spaceA
Read-onlyIdempotent

Find tenants in a space - can retrieve a single tenant by ID or list all tenants

This unified tool can either:

  • Get details for a specific tenant when tenantId is provided, including the projects and environments the tenant is associated with

  • List all tenants in a space when tenantId is omitted

Tenants represent customers or clients in Octopus Deploy, allowing you to manage deployments and configurations specific to each tenant. Tenants can be grouped into tenant tags for easier management and deployment targeting. Tenants can also represent geographical locations, organizational units, or any other logical grouping.

Optionally provide filtering and pagination parameters when listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesThe space name
tenantIdNoThe ID of a specific tenant to retrieve. If omitted, lists all tenants.
skipNoNumber of tenants to skip for pagination (only used when listing)
takeNoNumber of tenants to take for pagination (only used when listing)
projectIdNoFilter by specific project ID (only used when listing)
tagsNoFilter by tenant tags (comma-separated list, only used when listing)
idsNoFilter by specific tenant IDs (only used when listing)
partialNameNoFilter by partial tenant name match (only used when listing)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating a safe read operation. The description adds behavioral context by noting that when retrieving a specific tenant, the response includes associated projects and environments, and that listing supports optional filtering and pagination. 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 concise with three well-structured paragraphs. The first sentence immediately states the core function. Each paragraph serves a purpose: core function, mode explanation, background. No redundant or irrelevant 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?

The description explains the tool's two modes, the concept of tenants, and mentions that single retrieval includes projects/environments. With comprehensive schema descriptions and annotations indicating a safe read operation, the description provides sufficient context for correct tool invocation. It could detail the output format but is adequate for the tool's simplicity.

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%, so all parameters are documented. The description reinforces the dual mode (tenantId vs listing) and explains that filtering/pagination apply only when listing. It also adds context about what a tenant represents. This goes slightly beyond the schema, warranting a 4.

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: 'Find tenants in a space - can retrieve a single tenant by ID or list all tenants'. It uses specific verbs (find/retrieve/list) and resources (tenants), and distinguishes the two operational modes. This differentiates it from sibling tools like find_accounts or find_certificates.

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 guidance on when to use each mode: provide tenantId for a single tenant, omit to list all. It also states when filtering and pagination parameters apply (only when listing). However, it does not explicitly contrast with sibling tools or provide 'when not to use' guidance, though the resource-specific naming makes it obvious.

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

get_branchesGet Git branches for a version-controlled projectA
Read-onlyIdempotent

Get Git branches for a version-controlled project

This tool retrieves Git branches for a specific project in a space. The space name and project ID are required. Optionally provide searchByName, skip, and take parameters for filtering and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYes
projectIdYes
searchByNameNo
skipNo
takeNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare the tool as read-only and idempotent. The description adds behavioral context by disclosing optional filtering and pagination parameters, though it does not explain error handling 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.

Conciseness4/5

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

The description is short and to the point, with no extraneous content. However, the first sentence repeats the title slightly, but overall it is efficiently structured.

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 5 parameters and no output schema, the description covers the basic purpose and optional filters but does not describe the return format or potential errors, leaving some gaps for an AI agent.

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 properties have no descriptions (0% coverage). The description names the parameters and their roles (required vs optional for filtering/pagination) but lacks precise semantics like the format of searchByName or the exact meaning of skip/take.

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 Git branches for a specific project, with a specific verb and resource. It distinguishes itself from sibling tools as the only branch-related operation.

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 required parameters (spaceName, projectId) and optional filtering/pagination. It implies usage when listing branches for a known project, but does not explicitly mention when not to use it or alternatives.

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

get_current_userGet current user informationA
Read-onlyIdempotent

Get information about the current authenticated user

This tool retrieves information about the currently authenticated user from the Octopus Deploy API.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. Description adds no extra behavioral context beyond stating it retrieves information. No contradiction, but no added value.

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?

Two short sentences, front-loaded with purpose. No redundancy or unnecessary 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?

For a parameterless read-only tool, the description is adequate. It explains the tool's purpose but could optionally list the types of information returned (e.g., email, username) for extra clarity.

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?

No parameters exist, so baseline is 4. Description adds no parameter information, but none is needed since the schema covers all.

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 verb ('Get') and resource ('current authenticated user information'). No sibling tools perform a similar function, so no need for differentiation. Purpose is unambiguous.

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 this tool or when not to. While the use case is obvious, the description lacks any context about alternatives or prerequisites, which would be helpful.

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

get_deployment_from_urlGet deployment details from an Octopus Deploy URLA
Read-onlyIdempotent

Get deployment details from an Octopus Deploy deployment URL. Returns comprehensive deployment information including the task ID needed to view execution logs.

Accepts deployment URLs like: https://your-octopus.com/app#/Spaces-1/projects/my-app/deployments/releases/1.0.0/deployments/Deployments-123

Returns:

  • Full deployment details (environment, release, project, created time)

  • taskIdForLogs: the ServerTasks- ID for this deployment

  • taskResourceUri: octopus:// URI for the structured activity tree (resources/read or read_resource)

  • grepTaskLogHint: pre-filled arguments for the grep_task_log tool — call it with a pattern to search the raw log without fetching the whole thing

  • Public URL for web portal access

Recommended workflow for investigating deployment issues:

  1. Call get_deployment_from_url with the deployment URL

  2. Review deployment context (environment, release version, etc.) 3a. Fetch the taskResourceUri for the structured activity tree (step timings, embedded log entries by category), OR 3b. Call grep_task_log with the taskId to search the raw log for a specific error / pattern

Handles space ID to space name resolution automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull Octopus Deploy deployment URL (e.g., https://your-octopus.com/app#/Spaces-1/projects/my-app/deployments/releases/1.0.0/deployments/Deployments-123)

TDQS

A4.7/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. Description adds value by explaining automatic space-to-name resolution and the specific return fields like taskIdForLogs and grepTaskLogHint.

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 returns and workflow. Slightly long but every sentence adds value. Could be slightly more concise, but still 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, description fully covers return values (including grep hint). Also explains handling of space IDs. Excellent for a single-parameter tool.

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?

Only one parameter (url) with 100% schema coverage. Description adds example URL formats and explains the required structure, going beyond the schema's basic description.

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?

Clear verb ('get') and resource ('deployment details from URL'). Distinguishes from siblings like get_task_from_url and grep_task_log by stating it returns deployment context and a taskId for logs.

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?

Provides explicit when-to-use (investigating deployment issues) and a recommended multi-step workflow using sibling tools (grep_task_log, read_resource). No when-not-to but alternatives are implied via workflow steps.

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

get_deployment_processGet deployment process details from Octopus DeployB
Read-onlyIdempotent

Get deployment process by ID

This tool retrieves a deployment process by its ID. Each project has a deployment process attached, and releases/deployments can also have frozen processes attached.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYes
projectIdNoThe ID of the project to retrieve the deployment process for. If processId is not provided, this parameter is required.
processIdNoThe ID of the deployment process to retrieve. If not provided, the deployment process for the project will be retrieved.
branchNameNoOptional branch name to get the deployment process for a specific branch (if using version controlled projects). Try `main` or `master` if unsure.
includeDetailsNoInclude detailed properties for steps and actions. Defaults to false.

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, covering safety. The description adds context about project-released process links but does not disclose additional behavioral traits like authorization requirements 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.

Conciseness4/5

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

The description is brief and front-loaded with a clear statement of purpose. It contains no extraneous information, making it efficient. However, it could integrate parameter hints without adding length.

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?

For a read-only tool with annotations, the description covers the core functionality but lacks details on output format, error handling, or usage tips. Given the absence of an output schema, the description could do more to specify return values.

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

Parameters2/5

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

Although schema coverage is high at 80%, the description adds no information about parameters. The required 'spaceName' parameter lacks a schema description and the description does not compensate, leaving a gap in understanding for the agent.

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 the tool retrieves a deployment process by ID and provides context about project vs frozen processes. It distinguishes from other tools implicitly as a read-only lookup, but does not explicitly differentiate from siblings like 'get_deployment_from_url'.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. There is no mention of prerequisites, when not to use, or comparisons to sibling tools, leaving the agent to infer usage from the description alone.

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

get_kubernetes_live_statusGet Kubernetes live status from Octopus DeployA
Read-onlyIdempotent

Get Kubernetes live status for a project and environment

This tool retrieves the live status of Kubernetes resources for a specific project and environment. Optionally include a tenant ID for multi-tenant deployments.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesThe space name
projectIdYesThe ID of the project
environmentIdYesThe ID of the environment
tenantIdNoThe ID of the tenant (for multi-tenant deployments)
summaryOnlyNoReturn summary information only

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the description's claim of 'retrieves' is consistent and adds no contradictory behavior. However, it does not disclose any additional behavioral traits beyond what annotations provide, such as rate limits or side effects.

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 two concise sentences with the key information front-loaded. It could be slightly more efficient by combining sentences, but it avoids unnecessary fluff and is easy to parse.

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

Completeness2/5

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

Given the tool retrieves data and lacks an output schema, the description should clarify what 'live status' includes (e.g., format, fields, pagination). It does not, leaving the agent uncertain about the return value. This is a significant gap for a query 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 description coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema: it mentions 'Optionally include a tenant ID' but the schema already describes that parameter. No additional meanings or constraints are added.

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 'Get' and the resource 'Kubernetes live status for a project and environment'. It distinguishes itself from sibling tools, none of which mention Kubernetes, making its purpose specific and unique.

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 implies usage (to retrieve live status) but provides no explicit guidance on when to use it vs alternatives or when not to use it. There are no other similar sibling tools, so the lack of alternatives is acceptable, but explicit context would improve scoring.

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

get_missing_tenant_variablesGet missing tenant variables from Octopus DeployA
Read-onlyIdempotent

Get missing tenant variables

This tool retrieves tenant variables that are missing values. Optionally filter by tenant, project, or environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesThe space name
tenantIdNoFilter by specific tenant ID
projectIdNoFilter by specific project ID
environmentIdNoFilter by specific environment ID
includeDetailsNoInclude detailed information about missing variables

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds no additional behavioral context beyond stating it retrieves missing variables. It does not explain what 'missing' means or any side effects.

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 concise with two sentences: one for purpose and one for filtering. It is front-loaded and uses minimal words. However, it could be slightly more structured (e.g., bullet points for filters).

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 no output schema, the description does not explain the return format or what constitutes a 'missing variable.' It is adequate for a simple read tool but lacks completeness for more detailed understanding.

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?

Input schema has 100% coverage with descriptions for all 5 parameters. The description mentions optional filtering by tenant, project, or environment, but this is already evident from the parameter descriptions. No additional semantic value is provided.

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 tool name and description clearly state it retrieves missing tenant variables. It differentiates from sibling tools like 'get_tenant_variables' which likely returns all variables, by specifying 'missing values'.

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 this tool versus alternatives like 'get_tenant_variables'. The usage is implied by the tool's purpose, but the description does not provide when-to-use/when-not-to-use or mention sibling tools.

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

get_task_from_urlGet task details from an Octopus Deploy URLA
Read-onlyIdempotent

Get task details from an Octopus Deploy task URL. Returns full task details including execution logs and state.

This tool is a URL-to-ID resolver that returns the same body as the octopus://spaces/{spaceName}/tasks/{taskId}/details resource — no need to dereference the URI afterward. If you only need lightweight metadata for polling (state, timing, completion flags) use the smaller octopus://spaces/{spaceName}/tasks/{taskId} resource instead.

Accepts task URLs like: https://your-octopus.com/app#/Spaces-1/tasks/ServerTasks-456

Key features:

  • Returns full task details including execution logs

  • Handles space ID to space name resolution automatically

  • Validates task ID format

For deployment URLs: If you have a deployment URL, use this workflow:

  1. Call get_deployment_from_url with the deployment URL

  2. Use the returned taskResourceUri (structured tree) or call grep_task_log with the returned taskId to search the raw log

Tasks represent background operations in Octopus Deploy, such as deployments, health checks, and system maintenance. Each task has a unique ID and can be monitored for status and progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull Octopus Deploy task URL containing a task ID (e.g., https://your-octopus.com/app#/Spaces-1/tasks/ServerTasks-456)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly, non-destructive, idempotent. The description adds beyond these: returns full task details including execution logs, automatically resolves space IDs, validates task ID format, and notes that the response is the same as a specific resource. 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.

Conciseness4/5

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

The description is well-structured with sections and bullet points, but somewhat lengthy. The first sentence is clear and front-loaded. Could be slightly more concise, 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?

Tool is simple with one parameter and clear annotations. The description explains what is returned (full details including logs and state) and how it integrates with other tools. No output schema needed as the response is described. Complete for its context.

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%, and the description provides additional context such as example URLs and explains that the URL contains a task ID. This enhances meaning 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 it retrieves task details from an Octopus Deploy URL, acting as a URL-to-ID resolver. It distinguishes itself by specifying that it returns the same body as a specific resource, versus a lighter weight option for metadata only. This is a specific verb+resource combination that differentiates from siblings.

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?

Explicitly states when to use this tool versus the smaller resource for lightweight metadata. Provides a workflow for deployment URLs, directing to use get_deployment_from_url first and then grep_task_log. This gives clear context and alternatives.

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

get_tenant_variablesGet tenant variables from Octopus DeployA
Read-onlyIdempotent

Get tenant variables by type

This tool retrieves different types of tenant variables. Use variableType parameter to specify which type:

  • "all": Get all tenant variables

  • "common": Get common variables only

  • "project": Get project-specific variables only

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesThe space name
tenantIdYesThe ID of the tenant to retrieve variables for
variableTypeYesType of variables to retrieve
includeMissingVariablesNoInclude missing variables in the response (for common/project types)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read. The description adds no additional behavioral traits beyond the schema's parameter details. It does not disclose what happens on missing tenants or other side effects.

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 with two sentences and a bullet list. It front-loads the purpose and efficiently conveys the variable types. 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?

While the tool has no output schema, the description covers the core functionality and parameter choices well. It could mention the return format (list of variables) but is mostly complete for a read-only retrieval tool with strong 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%, so baseline is 3. The description clarifies the variableType enum values but merely repeats schema information. It adds no new semantic meaning for other parameters like spaceName or tenantId.

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 tenant variables by type. It specifies the verb 'get' and the resource 'tenant variables', and the distinction from siblings like 'get_variables' and 'get_missing_tenant_variables' is evident.

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 the tool (to retrieve specific types of tenant variables) and provides explicit guidance on the variableType parameter. However, it does not mention alternative tools for non-tenant scoped variables, but the context is clear.

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

get_variablesGet variables for a Project from Octopus DeployA
Read-onlyIdempotent

This tool gets all project and library variable set variables for a given project. Projects can contain variables (specific to a project), library variable sets (shared collections of variables associated with many projects), and tenant variables (variables related to a tenants connected to the project) If you want to retrieve tenant variables for a tenant connected to the project, use the get_tenant_variables tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesThe space name
projectIdYesThe ID of the project to retrieve the variables for
gitRefNoThe gitRef to retrieve the variables from, if the project is a config-as-code project

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint true, destructiveHint false, idempotentHint true. The description adds context about variable types but does not disclose additional behavioral traits beyond what annotations provide.

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 clear and front-loads the main purpose. It includes explanatory context and an alternative, which is slightly wordy but not excessive.

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 retrieval tool with no output schema, the description sufficiently explains what is returned (project and library variables). It does not mention pagination or format, but given the simplicity, it is near-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%, and the description does not add parameter-specific meaning beyond the schema descriptions. The description provides context about the tool's output but not about parameters.

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 it gets all project and library variable set variables for a given project. It distinguishes from the sibling tool get_tenant_variables, which retrieves tenant variables.

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 directs users to use get_tenant_variables if they need tenant variables, providing clear when-to-use guidance.

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

grep_llms_txtGrep the Octopus API catalog (llms.txt)A
Read-onlyIdempotent

Search the Octopus API catalog at octopus://api/llms.txt with grep-style semantics. The catalog is large (~300+ KB) — call this rather than reading the resource body directly.

llms.txt is structured as:

  • Authentication and Space Selection sections (top of file)

  • Endpoints section: one '### {Category}' heading per resource family (Accounts, ActionTemplates, Channels, Releases, …) and one bullet per endpoint of the form - \METHOD /path` - description | Prefixes (pick one): /{spaceId}, /spaces/{spaceIdentifier} | ?queryParams → ReturnType`

  • Steps section: deployment step types (Octopus.* ActionType) and their configurable property keys.

Useful patterns:

  • 'POST /releases' — find write endpoints under a resource family

  • 'DELETE ' — enumerate delete endpoints

  • '### Channels' — jump to a section heading

  • 'Body: Create.*Command' — find endpoints that take a Create command body

Parameter conventions mirror GNU grep:

  • pattern (regex by default; set fixedString:true for literal text)

  • caseInsensitive (-i)

  • invertMatch (-v)

  • fixedString (-F)

  • beforeContext (-B)

  • afterContext (-A)

  • maxCount (-m)

Response: totalMatches (true count across the whole file), totalLines, the matched lines with 1-indexed lineNumber, optional before/after context arrays, and catalogResourceUri for the structured fall-through.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesRegex (default) or literal substring (when fixedString=true). Tested against each line of llms.txt independently — same model as `grep`.
caseInsensitiveNoEquivalent to grep -i. Default false.
invertMatchNoEquivalent to grep -v: return lines that do NOT match. Default false.
fixedStringNoEquivalent to grep -F: treat pattern as a literal substring, not a regex. Use this when grepping for text containing regex metacharacters. Default false.
beforeContextNoEquivalent to grep -B: lines of preceding context to include with each match. Capped at 50.
afterContextNoEquivalent to grep -A: lines of trailing context to include with each match. Capped at 50.
maxCountNoEquivalent to grep -m: stop returning matches after this many. totalMatches in the response still reflects the true count across the whole file. Hard cap 500.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations indicate read-only, idempotent, non-destructive behavior. The description adds significant detail: catalog size, response structure (totalMatches, totalLines, context lines), and the structured fall-through URI. 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 with clear sections (overview, structure, useful patterns, parameter conventions, response). Each sentence serves a purpose without redundancy.

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 7 parameters and no output schema, the description is exceptionally thorough: explains response format, provides catalog structure details, and includes practical examples. Fully equips the agent.

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 covers 100% of parameters with descriptions. The description adds valuable context: convention mirroring GNU grep, explanation of fixedString vs regex, and practical use cases for each parameter.

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 it searches the Octopus API catalog using grep-style semantics, specifying both the resource (llms.txt) and the action. It distinguishes itself from siblings like read_resource and grep_task_log by focusing on the API catalog.

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 to use this tool instead of reading the resource body directly due to size, and provides useful search patterns. While it doesn't explicitly list 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.

grep_task_logGrep an Octopus task activity logA
Read-onlyIdempotent

Search a server task's activity log with grep-style semantics. Returns only matching lines (with optional symmetric context windows). This is the canonical way to inspect task logs — there is no full-log resource URI, because exposing one would tempt callers to inhale multi-megabyte bodies when grep is almost always the better primitive.

Use this when you know what to look for (a specific error string, a step name, a pattern). For structured access to the activity tree (step hierarchy, categories, timing) use the octopus://spaces/{spaceName}/tasks/{taskId}/details resource instead.

Parameter conventions mirror GNU grep so the schema is self-explanatory:

  • pattern (regex by default; set fixedString:true for literal text)

  • caseInsensitive (-i)

  • invertMatch (-v)

  • fixedString (-F)

  • beforeContext (-B)

  • afterContext (-A)

  • maxCount (-m)

Response includes totalMatches (true count across the whole log), totalLines, the matched lines with 1-indexed lineNumber, optional before/after context arrays, and a taskDetailsResourceUri for the structured fall-through.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesOctopus space name. Case-sensitive.
taskIdYesServerTasks-XXXX ID. Use find_releases or list_deployments to discover task IDs from their parent entities.
patternYesRegex (default) or literal substring (when fixedString=true). Anchors and groups behave as in JavaScript RegExp. Tested against each log line independently — the same model as `grep`.
caseInsensitiveNoEquivalent to grep -i. Default false.
invertMatchNoEquivalent to grep -v: return lines that do NOT match. Default false.
fixedStringNoEquivalent to grep -F: treat pattern as a literal substring, not a regex. Use this when grepping for text containing regex metacharacters. Default false.
beforeContextNoEquivalent to grep -B: lines of preceding context to include with each match. Capped at 50.
afterContextNoEquivalent to grep -A: lines of trailing context to include with each match. Capped at 50.
maxCountNoEquivalent to grep -m: stop returning matches after this many. totalMatches in the response still reflects the true count across the whole log. Hard cap 500.
stripPrefixesNoStrip the timestamp/level prefix (e.g. `04:36:40 Fatal | `) from each line before pattern matching AND in the returned line/context text. Default false. Turn this on when greping for words that collide with level names (Fatal, Error, Warn) or when you want clean message-only output. Note: when on, your pattern will not match against the prefix — searching for `Fatal` won't find Fatal-level lines.

TDQS

A5/5.0
Behavior5/5

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

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds valuable context: returns only matching lines with context, response structure (totalMatches, totalLines, line numbers, context arrays, taskDetailsResourceUri), and parameter behavior. 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?

The description is concise yet thorough: two paragraphs cover purpose, usage guidelines, and parameter conventions. Every sentence adds necessary information without redundancy, demonstrating excellent structure.

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 (10 parameters, no output schema), the description is fully complete. It explains the response structure, parameter semantics, and usage context, leaving no gaps for an AI agent to misinterpret.

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?

The input schema already covers all parameters with detailed descriptions. The description adds further value by drawing parallels to GNU grep flags, explaining regex behavior, and clarifying nuanced options like stripPrefixes, going beyond what the 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 clearly identifies the tool's function: searching a server task's activity log with grep-style semantics. It explicitly distinguishes from related tools like get_task_from_url and the details resource, ensuring no ambiguity.

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?

Provides explicit when-to-use guidance ('Use this when you know what to look for') and an alternative ('For structured access... use the details resource'). Also explains why a full-log resource is absent, reinforcing correct usage.

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

list_deploymentsList deployments in an Octopus Deploy spaceA
Read-onlyIdempotent

List deployments in a space

This tool lists deployments in a given space. The space name is required. When requesting latest deployment consider which deployment state the user is interested in (successful or all). Optional filters include: projects (array of project IDs), environments (array of environment IDs), tenants (array of tenant IDs), channels (array of channel IDs), taskState (one of: Canceled, Cancelling, Executing, Failed, Queued, Success, TimedOut), and take (number of results to return).

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYes
projectsNo
environmentsNo
tenantsNo
channelsNo
taskStateNo
skipNo
takeNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to reiterate safety. It adds useful context about filters and state consideration but does not describe behavior like pagination or sorting, which is relevant for a list tool.

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

Conciseness5/5

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

The description is concise with two short paragraphs, front-loading the purpose and then listing filters. Every sentence adds value without redundancy.

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 the tool has 8 parameters and no output schema, the description covers most filters but misses skip/pagination details and does not describe the return format (e.g., array of deployments). Annotations compensate for safety but not for completeness of output.

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?

With 0% schema description coverage, the description must explain parameters. It describes the required spaceName and most optional filters (projects, environments, tenants, channels, taskState, take) with clear purpose. However, it omits the skip parameter, which is present in the schema but not addressed.

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 lists deployments in an Octopus Deploy space, specifying the required space name and optional filters. It distinguishes itself from sibling tools like deploy_release or get_deployment_from_url by focusing on listing deployments.

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 advises considering deployment state for latest deployments, but it does not explicitly state when to use this tool over alternatives like get_deployment_from_url for specific deployments, nor does it mention scenarios to avoid using it.

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

list_environmentsList all environments in an Octopus Deploy spaceA
Read-onlyIdempotent

List environments in a space

This tool lists all environments in a given space. The space name is required. Use this tool as early as possible to understand which environments are configured. Optionally filter by partial name match using partialName parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYes
partialNameNo
skipNo
takeNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds context about filtering by partialName but does not mention pagination or other behavioral traits. With annotations covering the core safety profile, a 3 is appropriate for the added value.

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 two sentences, efficient and front-loaded with the main action. It could be slightly more structured but is concise and readable.

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

Completeness2/5

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

Given no output schema and 4 parameters, the description is incomplete. It covers the required parameter and one optional, but ignores pagination (skip, take), leaving gaps for an agent to understand full usage.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must add meaning. It explains spaceName (required) and partialName (optional filter) but omits skip and take entirely, leaving two parameters undocumented. This is insufficient for a 4-parameter tool.

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 lists all environments in a space, with a specific verb ('list') and resource ('environments'). It also notes the required spaceName, making the purpose unambiguous and distinct from sibling tools like list_deployments or list_projects.

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 early to understand configured environments, providing clear context. However, it lacks guidance on when not to use it or alternatives, which is acceptable given there are no direct siblings for listing environments.

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

list_projectsList all projects in an Octopus Deploy spaceA
Read-onlyIdempotent

This tool lists all projects in a given space. Projects let you manage software applications and services, each with their own deployment process, lifecycles, and variables. Projects are where you define what you are deploying and how it should be deployed. The space name is required, if you can't find the space name, ask the user directly for the name of the space. Optionally filter by partial name match using partialName parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYes
partialNameNo
skipNo
takeNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's safe. The description adds that it lists all projects but does not disclose pagination behavior despite the presence of skip/take parameters in the schema. 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.

Conciseness4/5

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

The description is four sentences, front-loaded with the main purpose, and concise. It could be slightly more structured but is generally effective with no wasted words.

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?

The tool has 4 parameters and no output schema. The description explains what projects are but does not mention return format or pagination details. For a list tool, this is a notable omission, making it moderately 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 has 0% description coverage, so the description must compensate. It explains spaceName and partialName well, but does not describe skip and take (pagination parameters). Thus, it adds partial value but leaves gaps.

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 'lists' and resource 'projects in a given space', with additional context that projects manage software deployments. It distinguishes from sibling tools like 'create_release' or 'deploy_release' by focusing on listing rather than creating or deploying.

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 states the required parameter 'spaceName' and provides guidance to ask the user if not found. It also mentions optional partial name filter. However, it does not explicitly state when not to use or alternative tools, but the context is clear enough for an AI agent.

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

list_spacesList all spaces in an Octopus Deploy instanceB
Read-onlyIdempotent

List all spaces in the Octopus Deploy instance. Spaces is the main organizational unit in Octopus Deploy, Spaces keep the different projects, infrastructure and tenants completely separate. Spaces typically represent team or project boundary, but not customer boundary (use tenants for those). Always use this tool first to check that the requested space exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
partialNameNo
skipNo
takeNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the safety profile is clear. The description adds business context (spaces keep projects/infrastructure/tenants separate) and usage hints but no additional behavioral traits beyond what annotations convey.

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?

Three sentences that are front-loaded with purpose, then context, then usage hint. Each sentence adds value, though some redundancy could be trimmed. Overall efficient for the information conveyed.

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

Completeness2/5

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

Given the simplicity of the tool and the lack of output schema, the description should explain parameters and the structure of results. It fails to do so, making it incomplete for an agent to use correctly. Annotations cover safety but not functional completeness.

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

Parameters1/5

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

Schema coverage is 0%, so the description bears full responsibility for parameter meaning. However, the description does not mention any of the three parameters (partialName, skip, take), leaving agents without guidance on how to filter or paginate results.

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 spaces in the Octopus Deploy instance' with a specific verb and resource. It also explains what spaces are and distinguishes them from tenants, helping differentiate from sibling tools like find_tenants.

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 guidance: 'Always use this tool first to check that the requested space exists.' Also clarifies that spaces represent team/project boundaries, not customer boundaries (use tenants for those), giving context on when to use this tool vs. alternatives.

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

read_resourceRead an Octopus resource by URIA
Read-onlyIdempotent

Universal fetch for any 'octopus://' URI returned by any other tool. Use this whenever you see fields like 'resourceUri' or 'taskResourceUri' in a response and need the full body.

How to use:

  • Pass the URI string verbatim. Examples: 'octopus://spaces/Default/releases/Releases-42', 'octopus://spaces/Default/tasks/ServerTasks-7', 'octopus://spaces/Default/tasks/ServerTasks-7/details'.

  • The response 'mimeType' tells you how to interpret 'text': 'application/json' → parse as JSON.

This tool is the backstop for clients that do not natively implement the MCP 'resources/read' primitive. Clients that DO support resources/read (Claude Code, MCP Inspector) can call it directly and skip this tool. Either path returns byte-identical bodies.

Tools that return resource URIs include: find_releases, get_deployment_from_url, get_task_from_url, and others. When in doubt, call read_resource on any 'octopus://' string you encounter.

Note: there is intentionally no octopus://...tasks/{id}/log resource. Call the grep_task_log tool to search task logs without inhaling the full body.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesAny 'octopus://...' URI returned by another tool (e.g. in the resourceUri or taskResourceUri field).

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly=true, destructive=false, idempotent=true. Description adds context: returns byte-identical bodies, how to interpret response (mimeType/text), and that it's a backstop for clients without resources/read. 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.

Conciseness4/5

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

Well-structured with clear sections and headings. Each sentence adds value, but slightly verbose; could be more concise. Still, very 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?

Comprehensive: explains purpose, usage, response interpretation (mimeType/text), limitations (no task log resource), and even mentions alternative (grep_task_log). All gaps covered despite no 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 coverage 100% with one parameter. Description adds value by specifying 'pass the URI string verbatim', providing concrete examples, and explaining the origin of URIs (from other tools).

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 it is a 'Universal fetch for any octopus:// URI' returned by other tools, specifies the exact use case, and distinguishes itself from siblings by noting that clients with native resources/read support can skip this tool.

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?

Explicit instructions: pass URI verbatim, examples provided, when to use (whenever you see resourceUri fields), when not to use (task log, directing to grep_task_log instead), and lists sibling tools that return URIs.

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

run_runbookRun a runbook in Octopus DeployA
Destructive

Run a runbook against one or more environments in Octopus Deploy.

Runbooks execute operational processes (DB backups, smoke tests, environment refresh, etc.) against the specified environments. For tenanted runs, supply tenants and/or tenantTags.

Two project kinds:

  • DB-backed projects: by default the runbook's published snapshot is used; pass runbookSnapshotId to pick a specific snapshot.

  • Config-as-Code projects: pass gitRef (branch name like 'main', tag, or commit SHA). Snapshots don't apply — the gitRef is the version pin. Use find_runbooks with the same gitRef to discover runbook names.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesThe space name
projectNameYesThe project name
runbookNameYesThe runbook name (within the project)
environmentNamesYesArray of environment names. At least one environment must be provided.
tenantsNoArray of tenant names for tenanted runs (optional)
tenantTagsNoArray of tenant tags for tenanted runs (e.g., ['Region/US-West', 'Tier/Production'])
runbookSnapshotIdNoDB-backed runbooks only. Specific snapshot ID. Defaults to the runbook's published snapshot if omitted. Not applicable to Config-as-Code runbooks.
gitRefNoConfig-as-Code runbooks only. A branch name (e.g. 'main'), tag, or commit SHA. Use get_branches to list available refs. Mutually exclusive with runbookSnapshotId.
promptedVariableValuesNoPrompted variable values as key-value pairs
useGuidedFailureNoUse guided failure mode
forcePackageDownloadNoForce package download
specificMachineNamesNoRun on specific machines only
excludedMachineNamesNoExclude specific machines from the run
skipStepNamesNoSkip specific runbook steps
runAtNoSchedule run for later (ISO 8601 date string)
noRunAfterNoDon't run after this time (ISO 8601 date string)
confirmNoRequired only when the MCP client does not support elicitation. Set to true to confirm the run; otherwise the tool aborts.

TDQS

A4.5/5.0
Behavior5/5

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

Description notes that runbooks execute operational processes (potentially destructive, aligning with destructiveHint:true). It discloses key behavioral details: snapshot vs gitRef for project types, and the confirm parameter requirement when client lacks elicitation support. 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?

Description is two paragraphs, front-loaded with the main action. Every sentence adds value. Could be slightly more structured (e.g., bullet points for project types), but overall concise and informative.

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 17 parameters and no output schema, the description covers main variations: tenanted runs, project types, scheduling (runAt, noRunAfter), and references related tools (find_runbooks, get_branches). Might lack details about return values or error handling, but for a runbook execution tool, it is reasonably 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. Description adds value beyond schema by explaining the mutual exclusivity of runbookSnapshotId and gitRef, and the context for using gitRef with Config-as-Code projects. This cross-parameter guidance improves semantics.

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 runs a runbook against one or more environments, with examples of operational processes. It distinguishes two project kinds (DB-backed vs Config-as-Code) and implies differentiation from siblings like find_runbooks, deploy_release, etc.

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 guidance on tenanted runs (tenants/tenantTags) and project-specific parameters (runbookSnapshotId vs gitRef). Does not explicitly list alternatives or when not to use this tool, but context from sibling names makes it clear this is for executing existing runbooks.

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

update_feature_toggleUpdate a feature toggleA
Destructive

Adjust an existing customer feature toggle in an Octopus Deploy project.

Narrow surface — flip an environment on/off, change rollout percentages, or update the toggle-level description / default state. Internally fetches the current toggle, applies your patches in memory, and PUTs the merged body, so unmentioned environments and unmentioned fields are preserved.

Deliberately not exposed: name/slug rename, tag changes, rollout group attach/detach, tenant targeting, segments, minimum version, adding or removing environment configurations entirely. For those, use the Octopus UI.

Patches that reference an environment not already configured on the toggle are rejected with reason: environment_not_configured. The tool does not add new environment configurations.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNameYesSpace name.
projectIdYesProject ID (e.g. Projects-123). Feature toggles are scoped per project.
slugYesThe toggle's Slug (not its Id). Find it via find_feature_toggles.
defaultIsEnabledNoToggle-level default. The value returned for environments that have no explicit per-environment configuration.
descriptionNoToggle-level description (max 1000 chars). Markdown supported in the UI.
environmentsNoPer-environment patches. Environments not listed here are preserved as-is. Each entry must reference a deploymentEnvironmentId that already exists on the toggle; unknown environments are rejected rather than silently added. Each environment may appear at most once in this array — duplicates are rejected.
confirmNoRequired only when the MCP client does not support elicitation. Set to true to confirm the update; otherwise the tool aborts.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations indicate destructiveHint: true. The description adds behavioral context: it fetches the current toggle, applies patches in memory, PUTs the merged body, preserving unmentioned fields. It also explains rejection of unknown environment references. This adds value 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 and concise. It starts with the primary purpose, then details the scope, explicitly lists exclusions, and explains error conditions. 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 the complexity (7 parameters, destructive action, no output schema), the description covers essential behavioral aspects, error handling, and usage boundaries. It lacks mention of return values, but that is acceptable without an output schema. Overall comprehensive.

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?

Input schema covers all 7 parameters with descriptions (100% coverage). The description adds supplementary context, such as explaining that unmentioned environments are preserved, duplicates are rejected, and the confirm parameter's conditional requirement.

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: 'Adjust an existing customer feature toggle in an Octopus Deploy project.' It specifies the narrow surface (flip environments, change rollout, update description/default state) and explicitly lists what is not exposed, distinguishing it from other operations.

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 provides explicit guidance: it states what is deliberately not exposed and directs users to the Octopus UI for those cases. It also explains that patches referencing unknown environments are rejected with a specific reason, and that slugs are obtained via find_feature_toggles.

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

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have clearly distinct purposes targeting different Octopus entities (releases, deployments, accounts, certificates, etc.). However, the generic 'execute' and 'read_resource' tools overlap with the specific tools' functionality, potentially causing confusion for an agent deciding which tool to use.

Naming Consistency4/5

Tool names consistently follow a verb_noun pattern (e.g., create_release, find_accounts, list_projects). Minor deviations include 'execute' (verb only) and 'read_resource' (generic noun), but the overall pattern is predictable and readable.

Tool Count3/5

30 tools is on the heavy side for an MCP server. While Octopus Deploy is a complex product with many operations, the number feels slightly excessive. Many tools are find/list variations that could potentially be consolidated without losing clarity.

Completeness2/5

The tool surface heavily favors read operations (find_, list_, get_) while lacking specific write tools for most entities like accounts, certificates, and environments. The generic 'execute' tool can fill some gaps but requires deep API knowledge, leading to agent failures for common write tasks.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

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/OctopusDeploy/mcp-server'

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