Skip to main content
Glama
forsonny

Coolify MCP Server

by forsonny

Coolify MCP Server

A Model Context Protocol (MCP) server that integrates with Coolify to let AI assistants manage your Coolify instance via a clean toolkit that wraps the official REST API.


Table of Contents


Related MCP server: coolify-mcp

Features

Core Capabilities

  • Coverage of key Coolify API endpoints (applications, services, deployments, teams, private keys, domains, health/version)

  • Team Management – List teams, get team details, and view members

  • Server & Domain Insights – Query domains configured per server

  • Application Lifecycle – Start/stop/restart and create applications

  • Service Management – List/create/start/stop/restart services

  • Deployments – List running deployments; fetch deployment by UUID

  • Private Keys – List and create SSH private keys for server auth

  • Env Vars – CRUD for application/service environment variables

Note: Some aggregated operations (e.g., "resources by server") are implemented by client-side filtering over the supported endpoints rather than a dedicated API path.


Prerequisites

  • Node.js v18 or newer

  • npm or yarn

  • A running Coolify instance (self‑hosted or cloud)

  • A Coolify API token with appropriate permissions


Installation

1) Clone & install

git clone https://github.com/forsonny/Coolify-MCP-Server-for-Claude-Code.git
cd Coolify-MCP-Server-for-Claude-Code
npm install

2) Build

npm run build

(Compiles TypeScript into dist/)


Configuration

Environment Setup

Create a .env file at the project root:

# Required
COOLIFY_BASE_URL=https://your-coolify-instance.com
COOLIFY_API_TOKEN=your-api-token-here

# Optional
COOLIFY_TIMEOUT=30000

Notes

  • Use a full base URL (no trailing slash). Example: https://coolify.example.com

  • Do not use inline comments in .env values.

  • Never commit .env to version control.

Claude Code Setup

You can connect the server to Claude Code using the automated setup script or manually.

Option A — Automated Setup (Recommended)

The easiest way is to use the setup script:

# Run the setup script
npm run setup

This will:

  • Validate your .env file configuration

  • Build the TypeScript project if needed

  • Generate the correct claude mcp add-json command with environment variables

  • Provide troubleshooting tips

Option B — Manual Setup

If you prefer to set it up manually, you have two approaches:

Method 1: With explicit environment variables (most reliable)

claude mcp add-json coolify '{
  "type": "stdio",
  "command": "node", 
  "args": ["/absolute/path/to/Coolify-MCP-Server-for-Claude-Code/dist/index.js"],
  "env": {
    "COOLIFY_BASE_URL": "https://your-coolify-instance.com",
    "COOLIFY_API_TOKEN": "your-api-token-here",
    "COOLIFY_TIMEOUT": "30000"
  }
}' -s local

Method 2: Simple command (relies on .env file)

claude mcp add coolify "node /absolute/path/to/Coolify-MCP-Server-for-Claude-Code/dist/index.js" -s local

Verify the connection

claude mcp list

Option C — Import from Claude Desktop If you already have the server configured in Claude Desktop:

claude mcp add-from-claude-desktop
claude mcp list

Important: Method 1 (explicit environment variables) is more reliable because it ensures environment variables are available to the MCP server process, regardless of the working directory from which Claude Code launches the server.

Tip: Some setups store Claude Code MCP config in ~/.claude.json. The Desktop app uses claude_desktop_config.json under your OS application data directory.

Cursor Setup

Cursor supports MCP. The easiest route is through Settings → Extensions → MCP Servers → Add Server, then point to your built script (node …/dist/index.js) and add the three environment variables. Restart Cursor after saving.

For advanced/enterprise setups, see Cursor's MCP docs on programmatic registration.


API Token Generation

  1. Open your Coolify dashboard.

  2. Navigate to Keys & Tokens → API tokens.

  3. Create a new token (name it e.g. "MCP Server"), select the permissions you need, and optionally set an expiration.

  4. Copy the token once when shown and paste it into your .env.


Available Tools

System

Tool

What it does

get_version

Get Coolify version

health_check

Healthcheck probe

Teams

Tool

What it does

list_teams

List all teams

get_team

Get team by ID

get_current_team

Get current team

get_current_team_members

List members of current team

Servers & Domains

Tool

What it does

get_server_domains

Get domains for a server UUID

Applications

Tool

What it does

list_applications

List applications

create_application

Create application

start_application

Start application

stop_application

Stop application

restart_application

Restart application

Services

Tool

What it does

list_services

List services

create_service

Create service

start_service

Start service

stop_service

Stop service

restart_service

Restart service

Deployments & Keys

Tool

What it does

list_deployments

List running deployments

get_deployment

Get deployment by UUID

list_private_keys

List SSH private keys

create_private_key

Create a new SSH private key

Environment Variables

Application and service env vars support: list, create, update (single/bulk), and delete.


Usage Examples

Natural language you can try once connected:

Basics

"List my applications"
"Who's in the current team?"
"What version is my Coolify instance?"

Servers & Apps

"Show domains for server 123e4567-e89b-12d3-a456-426614174000"
"Create a new app from https://github.com/user/repo"
"Restart the backend app"

Services & Env Vars

"List running services"
"Create a PostgreSQL service on the main server"
"Add DATABASE_URL to the frontend app"

Development

Dev mode (watch):

npm run dev

Build:

npm run build

Setup:

npm run setup

Clean:

npm run clean

Project Structure

Coolify-MCP-Server-for-Claude-Code/
├── src/
│   ├── index.ts           # MCP server entrypoint
│   ├── coolify-client.ts  # Coolify API client
│   └── types.ts           # Type definitions
├── dist/                  # Compiled JS (generated)
├── .env                   # Environment variables (create this)
├── setup-mcp.js           # Setup script for easy configuration
├── package.json
├── tsconfig.json
└── README.md              # This file

API Reference

Selected endpoint mapping used by this server

MCP Tool

Method

Path

get_version

GET

/version

health_check

GET

/health

list_teams

GET

/teams

get_team

GET

/teams/{id}

get_current_team

GET

/teams/current

get_current_team_members

GET

/teams/current/members

list_applications

GET

/applications

create_application

POST

/applications

start_application

POST

/applications/{uuid}/start

stop_application

POST

/applications/{uuid}/stop

restart_application

POST

/applications/{uuid}/restart

list_services

GET

/services

create_service

POST

/services

list_deployments

GET

/deployments

get_deployment

GET

/deployments/{uuid}

list_private_keys

GET

/security/keys

create_private_key

POST

/security/keys

get_server_domains

GET

/servers/{uuid}/domains

Endpoint paths follow the official Coolify API and do not use a /api/v1 prefix.

Environment variable flags

Flag

Meaning

Apps

Services

is_build_time

Present at build time

is_preview

Applies to preview deployments only

is_literal

Disable variable substitution

Services are prebuilt images (no build phase), so is_build_time has no effect for services.


Troubleshooting

Server won't start

  • Confirm Node ≥ 18: node --version

  • Reinstall deps: rm -rf node_modules && npm install

  • Rebuild: npm run clean && npm run build

  • Confirm absolute paths in MCP config

Auth errors (401 Unauthorized)

  • Verify token is valid and scoped to the correct team

  • Recreate token if expired; paste into .env

Connection issues (ECONNREFUSED/timeouts)

  • Check COOLIFY_BASE_URL (no trailing slash)

  • Ensure the Coolify instance is reachable and healthy

  • Increase COOLIFY_TIMEOUT for slow links

Tools not appearing

  • Restart your client (Claude Code / Cursor)

  • Verify with claude mcp list

  • Check server logs in your terminal

  • Ensure environment variables are set for the MCP process

Environment variable issues

If you see COOLIFY_BASE_URL and COOLIFY_API_TOKEN environment variables are required errors:

  1. Use the automated setup script:

    npm run setup
  2. Or use explicit environment variables: Remove the existing MCP server and re-add with explicit env vars:

    claude mcp remove coolify -s local
    claude mcp add-json coolify '{
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/your/dist/index.js"],
      "env": {
        "COOLIFY_BASE_URL": "https://your-coolify-instance.com",
        "COOLIFY_API_TOKEN": "your-api-token-here"
      }
    }' -s local
  3. Verify your .env file exists and has proper values:

    cat .env

Why this happens: When MCP servers are launched by Claude Code, they may run from a different working directory, causing the .env file to not be found. Explicit environment variables in the MCP configuration solve this issue.

Debug mode

DEBUG=coolify-mcp npm run dev

Security

  • Keep API tokens out of VCS; rotate regularly

  • Use HTTPS; consider IP allowlists / VPN for private instances

  • Add .env to .gitignore; restrict file permissions

  • Use least-privilege tokens per environment; audit and revoke regularly


Contributing

We welcome contributions!

  1. Fork the repo and clone your fork

    git clone https://github.com/<your-username>/Coolify-MCP-Server-for-Claude-Code.git
  2. Create a branch

    git checkout -b feat/your-feature
  3. Code & test – follow existing style; add tests where useful

  4. Commit

    git commit -m "feat: add <thing>"
  5. Push & open PR

    git push origin feat/your-feature

Guidelines

  • TypeScript best practices; backward compat where feasible

  • Clear commit messages and error handling

  • Update README when adding features


License

MIT — see LICENSE.


Support

Issues – open on GitHub

Docs

Version: 1.0.0 Maintainer: @forsonny

Available Tools

35 tools
bulk_update_application_envsA

Update multiple environment variables for an application in a single operation. Efficient for updating many variables at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
envsYesArray of environment variables to update or create.
uuidYesUUID of the application to update environment variables for.

TDQS

A3.6/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavioral traits. It only says 'Update' and 'Efficient', omitting critical details like whether the operation is atomic, overwrites or merges, authentication needs, rate limits, or behavior on partial failure.

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: two short sentences. The first states the purpose, the second adds a benefit. No unnecessary words.

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?

For a bulk write operation with no output schema and no annotations, the description is too minimal. It does not explain that the 'envs' array can also create new variables (uuid optional), atomicity, error handling, or return behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all parameters. The description adds no additional meaning beyond the schema's field 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 uses a specific verb ('Update') and resource ('environment variables for an application'), clearly distinguishing it from sibling tools like 'update_application_env' (single update) and 'bulk_update_service_envs' (service variant).

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 states it is 'Efficient for updating many variables at once', implying it should be used over the single-update alternative when multiple variables need changes. However, it does not explicitly state when not to use it or mention the single-update sibling.

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

bulk_update_service_envsA

Update multiple environment variables for a service in a single operation. Efficient for updating many variables at once. Note: Setting is_build_time=true has no functional effect on services (they use pre-built images).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesArray of environment variables to update or create.
uuidYesUUID of the service to update environment variables for.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It includes a behavioral note about is_build_time having no effect on services, which adds value. However, it lacks details on whether the update is additive or replaces all, auth requirements, or response behavior.

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

Conciseness5/5

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

Two concise sentences plus a note. Front-loaded with purpose. Every element earns its place; no fluff.

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 and simple parameters, the description covers main purpose and a key behavioral note. However, it does not specify whether the operation is additive or replaces all env vars, or what the response contains, leaving some ambiguity for a bulk update 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 schema already documents parameters well. The description adds no extra parameter meaning beyond what's in the schema (the note about is_build_time is duplicated). 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 tool updates multiple environment variables for a service in a single operation. It distinguishes from singular update tools (update_service_env) and application variants (bulk_update_application_envs). The specific verb 'Update' and resource 'environment variables for a service' are clearly identified.

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 indicates efficiency for updating many variables at once, implying use cases with multiple env vars. However, it does not explicitly state when not to use or directly contrast with alternatives like update_service_env, though the sibling context provides implicit differentiation.

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

create_applicationC

Create a new application in Coolify. Applications are deployable units that can be sourced from Git repositories.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_uuidYesUUID of the project this application belongs to. Projects help organize related applications.
ports_exposesNoComma-separated list of ports to expose (e.g., "3000,8080"). These ports will be accessible from outside the container.
git_repositoryNoURL of the Git repository containing the application code
destination_uuidYesUUID of the destination server where this application will be deployed. Get this from list_servers.
environment_nameYesName of the deployment environment (e.g., production, staging, development)
environment_uuidNoOptional UUID of an existing environment to use

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only says 'Create a new application'. It does not disclose side effects (e.g., does it trigger deployment?), idempotency, required permissions, or error cases. This is insufficient for a creation tool.

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?

Two sentences, no wasted words. The first sentence states the action, the second adds context. Could be improved with a more structured format (e.g., listing inputs/outputs).

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?

The description lacks information about return values, post-creation steps, or integration with other tools. Given the complexity (6 params, no output schema) and many sibling tools, the description is incomplete for an AI agent to chain tasks effectively.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all parameters. The description adds no additional meaning beyond the schema, so baseline 3 applies. For example, it doesn't explain how 'destination_uuid' relates to 'project_uuid' or provide examples.

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 creates an application and defines applications as deployable units from Git repos. This distinguishes it from sibling tools like 'create_server' or 'create_service', but could be more explicit about the difference between applications and services.

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 guidance is provided about when to use this tool versus alternatives. For example, it does not explain when to use 'create_application' vs 'create_service' or if any prerequisites (like existing project/environment) are needed.

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

create_application_envC

Create a new environment variable for an application. This adds a new key-value pair to the application's environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesEnvironment variable name (e.g., "DATABASE_URL", "API_KEY").
uuidYesUUID of the application to add the environment variable to.
valueYesEnvironment variable value.
is_literalNoWhether the value should be treated as a literal string without variable substitution.
is_previewNoWhether this variable applies to preview deployments.
is_build_timeNoWhether this variable should be available during build time.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only states that a new key-value pair is added, but does not mention idempotency, overwrite behavior, error conditions, or required permissions. This is insufficient for safe invocation.

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, consisting of two short sentences with no fluff. It is front-loaded with the core action. However, it could be slightly more informative without sacrificing conciseness.

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?

For a tool with 6 parameters (3 required) and no output schema, the description is minimal. It does not cover return values, duplicate key handling, or scope (e.g., overwrites vs. ignores). The tool's complexity demands more context for complete 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?

The schema has 100% coverage for parameter descriptions, so the baseline is 3. The description does not add meaning beyond what the schema provides; it simply mentions 'key-value pair' without elaborating on optional boolean parameters like 'is_literal', 'is_preview', or 'is_build_time'.

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 'environment variable for an application'. It is specific, though it does not explicitly differentiate from the sibling tool 'create_service_env' for services, but the naming and context make the distinction clear enough for an agent.

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 no guidance on when to use this tool versus alternatives like 'create_service_env', nor does it mention prerequisites or scenarios where this tool should be avoided. It lacks any usage context.

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

create_private_keyB

Create a new SSH private key in Coolify for server authentication or Git repository access.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA unique, human-readable name for the private key
descriptionNoOptional description of the key's purpose or usage
private_keyYesThe SSH private key content in PEM format. Must be a valid SSH private key.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the creation action without mentioning side effects (e.g., overwriting existing keys), authentication requirements, or any destructive potential. This is insufficient for a tool handling sensitive SSH keys.

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 a single, well-structured sentence that front-loads the core action and context. Every word is meaningful without unnecessary verbosity.

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?

For a tool that creates sensitive SSH keys, the description lacks important context such as idempotency (what happens if key name exists), permission requirements, storage behavior, or any validation steps. No output schema, so return value has no documentation. This leaves gaps for an agent to misuse.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all three parameters. The description adds little beyond the schema, providing only context about usage (server or Git). Baseline 3 is appropriate as the schema already clarifies parameter meaning.

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 specifies the verb 'Create', the resource 'SSH private key', and the context 'in Coolify for server authentication or Git repository access'. It distinguishes this tool from sibling tools which create 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 Guidelines3/5

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

The description implies the tool should be used to generate SSH keys for server or Git access, but does not explicitly state when to use it versus alternatives, or conditions like required permissions. No guidance on when not to use.

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

create_serverB

Create a new server in Coolify. Requires SSH access details and a private key for authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYesIP address of the server. Can be IPv4 or IPv6.
nameYesA unique, human-readable name for the server
portYesSSH port number
userYesSSH username for authentication
proxy_typeNoType of proxy to use for this servernginx
descriptionNoOptional description of the server's purpose or configuration
is_build_serverNoWhether this server should be used for building applications
instant_validateNoWhether to validate the server configuration immediately after creation
private_key_uuidYesUUID of the private key to use for SSH authentication. Obtain this from list_private_keys.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. It mentions creation and authentication requirements but lacks details on validation behavior, response format, potential side effects, or error conditions. Minimal disclosure beyond the basic action.

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 a single, efficient sentence with no wasted words. However, it could be slightly expanded to include more helpful context without sacrificing conciseness.

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 9 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return values, confirmation of creation, or error handling. The agent lacks complete context for a create operation.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline 3. The description adds no extra semantic value beyond what the schema already provides for parameters like 'private_key_uuid' or 'proxy_type'. No additional context to aid agent understanding.

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 action 'Create a new server in Coolify', identifies the resource (server), and mentions required prerequisites (SSH details, private key). It distinguishes from sibling tools like 'validate_server' or 'list_servers'.

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 when adding a server, but provides no explicit when-to-use, when-not-to-use, or alternative tool guidance. With 34 sibling tools, explicit guidance would be beneficial.

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

create_serviceA

Create a new service on a specified server. Services are containerized applications that run on your Coolify servers.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA unique, human-readable name for the service
descriptionNoOptional description of the service's purpose or configuration
server_uuidYesUUID of the server where this service will run. Obtain this from list_servers.
project_uuidYesUUID of the project this service belongs to. Projects help organize related services.
environment_nameNoName of the environment (e.g., production, staging, development)
environment_uuidNoOptional UUID of an existing environment to use

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only describes creation without mentioning side effects, prerequisites (e.g., server must exist), idempotency, or any constraints. This leaves agents uncertain about the tool's behavior.

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

Conciseness5/5

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

Two sentences, front-loaded with the action, no unnecessary words. Every sentence adds value: the first states the action, the second defines the resource.

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 description covers the purpose but lacks information about return values (no output schema), error conditions, or how the service is created. For a creation tool with 6 parameters, it is slightly under-informative.

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 schema descriptions are already quite explanatory (e.g., how to get server_uuid). The description adds minimal extra meaning beyond the schema, just a high-level purpose. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (create) and the resource (a service), and defines what a service is (containerized application). It distinguishes from siblings like create_application by specifying 'on a specified server'.

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

Usage Guidelines3/5

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

The description does not provide guidance on when to use this tool versus alternatives like create_application. It implies the context (creating a service on a server) but no exclusions or sibling differentiation are mentioned.

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

create_service_envA

Create a new environment variable for a service. This adds a new key-value pair to the service's environment. Note: Setting is_build_time=true has no functional effect on services (they use pre-built images).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesEnvironment variable name (e.g., "DATABASE_URL", "REDIS_HOST").
uuidYesUUID of the service to add the environment variable to.
valueYesEnvironment variable value.
is_literalNoWhether the value should be treated as a literal string without variable substitution.
is_previewNoWhether this variable applies to preview deployments.
is_build_timeNoWhether this variable should be available during build time. Note: Has no functional effect on services (they use pre-built images).

TDQS

A4.1/5.0
Behavior3/5

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

No annotations, so description carries full burden. It discloses the is_build_time limitation. Lacks details on whether it overwrites existing keys, idempotency, or auth requirements. Reasonable for a simple create, but not fully transparent.

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 sentences with no waste. First sentence gives purpose, second provides critical caveat. Front-loaded and efficient.

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

Completeness3/5

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

No output schema, so return value is not described. Does not mention that the service must exist or potential error scenarios. Slightly incomplete for a creation tool, but adequate given 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 coverage is 100%, so schema already documents parameters. Description adds valuable context for is_build_time: 'Has no functional effect on services'. This supplements the schema description. Other parameters are adequately described by schema.

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

Purpose5/5

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

Description clearly states the verb ('Create'), resource ('environment variable'), and context ('for a service'). It distinguishes from siblings like create_application_env by specifying 'service's environment'. The note about is_build_time adds specificity.

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: to add a key-value pair to a service's environment. Provides important caveat about is_build_time having no effect. However, does not explicitly contrast with bulk_update_service_envs or mention prerequisites.

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

delete_application_envA

Delete an environment variable from an application. This permanently removes the environment variable.

ParametersJSON Schema
NameRequiredDescriptionDefault
env_uuidYesUUID of the environment variable to delete. Get this from list_application_envs.
application_uuidYesUUID of the application containing the environment variable.

TDQS

A3.6/5.0
Behavior3/5

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

The description mentions permanence, which is good for a destructive action, but lacks details on side effects, permissions, or error conditions. No annotations exist to supplement.

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 two sentences, concise, and front-loaded with the key verb and resource. Every word is necessary.

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

Completeness4/5

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

For a simple delete operation with no output schema, the description is fairly complete, though it could mention that the operation removes the variable permanently and that it assumes the variable exists.

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 already describes parameters adequately. The tool description adds no further parameter meaning beyond stating the permanent removal effect.

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 action 'Delete' and the resource 'environment variable from an application', and emphasizes 'permanently removes', distinguishing it from related create/update/list tools.

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 does not provide guidance on when to use this tool vs. alternatives, lacks prerequisites, and does not mention potential failure scenarios or when not to use it.

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

delete_service_envB

Delete an environment variable from a service. This permanently removes the environment variable.

ParametersJSON Schema
NameRequiredDescriptionDefault
env_uuidYesUUID of the environment variable to delete. Get this from list_service_envs.
service_uuidYesUUID of the service containing the environment variable.

TDQS

B3.3/5.0
Behavior3/5

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

The description adds that deletion is permanent ('permanently removes'), which is critical behavioral information beyond the tool name. However, with no annotations provided, it omits other important traits like required permissions or impact on running services, leaving gaps.

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, consisting of two short sentences that immediately convey the action. There is no fluff or unnecessary information, making it easy to parse quickly.

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 simple delete tool, the description adequately explains the outcome (permanent removal). However, it could be more complete by referencing list_service_envs to obtain the env_uuid, which is mentioned only in the schema. The lack of output schema reduces the need for return value explanation.

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 has 100% coverage with descriptions for both parameters (env_uuid, service_uuid). The description itself adds no additional parameter meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

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 action: 'Delete an environment variable from a service.' It uses a specific verb and resource, making the purpose obvious. However, it does not explicitly differentiate from sibling tools like delete_application_env, but the context of service vs application is implicit.

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 no guidance on when to use this tool versus alternatives (e.g., update_service_env, delete_application_env). It does not mention prerequisites, such as needing to list env vars first, nor does it state when not to use it.

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

get_current_teamA

Get details of the currently authenticated team. This is the team associated with your API token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It indicates the tool is a read-only operation returning team details based on authentication, but it does not disclose potential fields returned, permissions required, or any side effects. The description is adequate but lacks depth.

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 only two sentences, front-loaded with the key action. Every word adds value, with no redundancy or filler. It is highly concise and efficiently communicates the tool's purpose.

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 simple, parameterless tool with no output schema, the description provides the core purpose. However, it lacks details about the returned data structure, leaving the agent to infer 'details' without specifics. Additional context about the response format would improve completeness.

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

Parameters4/5

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

The tool has no parameters, so schema coverage is trivially 100%. According to guidelines, 0 parameters warrants a baseline of 4. The description does not need to add parameter meaning, and it correctly states the tool requires no input.

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 details of the currently authenticated team. It distinguishes from siblings like 'get_team' (likely by ID) and 'list_teams' (returns all teams), making its specific purpose unambiguous.

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

Usage Guidelines4/5

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

The description implies when to use: when you need information about your own team associated with the API token. It implicitly differentiates from 'get_team' and 'list_teams', but does not explicitly state when not to use or mention alternatives. Clear context is provided, but exclusions are missing.

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

get_current_team_membersB

Get a list of all members in the currently authenticated team. Shows who has access to team resources.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It lacks disclosure of side effects, auth requirements, rate limits, error scenarios, or return format. Minimal behavioral context.

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

Conciseness5/5

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

Two concise sentences, no wasted words. Front-loaded with action and resource.

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?

No output schema, yet description doesn't clarify the return structure (e.g., fields, pagination). Simple tool but incomplete for an agent to process results.

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, schema coverage is 100% trivially, so baseline is 4. Description adds nothing beyond the schema, which is acceptable for zero-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 it retrieves members of the current team, distinct from sibling tools like get_current_team (team info) and list_teams (all teams). The verb 'get' and resource 'members' are specific.

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 vs alternatives, no when-not-to-use conditions, and no mention of prerequisites. The purpose is implied but not elaborated.

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

get_deploymentA

Get detailed information about a specific deployment. Use this to monitor deployment status and troubleshoot issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the deployment to retrieve. Obtain this from list_deployments or from deployment event responses.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description must disclose behavior. It mentions monitoring and troubleshooting but does not detail what information is returned (e.g., status, logs, timestamps) or confirm no side effects. Adequate but could be more explicit.

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 concise sentences with front-loaded purpose. 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.

Completeness3/5

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

Simple tool with one parameter and no output schema. Description covers purpose and usage but lacks details on output structure. Adequate for most use cases but could list key fields returned.

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

Parameters3/5

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

Schema description coverage is 100% with uuid parameter well-described. Description adds no extra meaning beyond schema, so baseline score of 3 applies.

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 'Get detailed information about a specific deployment' which specifies verb (get) and resource (deployment details). Distinguishes from siblings like list_deployments which lists all deployments.

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 says 'Use this to monitor deployment status and troubleshoot issues', providing clear context on when to use. Does not explicitly list alternatives but context is sufficient given sibling tools.

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

get_server_domainsA

Get a list of domains configured for a server. These domains are used for routing traffic to applications and services.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesID of the server to get domains for. Get this from list_servers.

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose any behavioral traits such as auth requirements, rate limits, or side effects. While the operation is implied to be read-only, no explicit confirmation is given.

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: the first states the core purpose, and the second adds useful context. No unnecessary words, perfectly front-loaded.

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

Completeness4/5

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

For a simple retrieval tool with one parameter and no output schema, the description covers the essential information. It mentions the purpose and the usage of the parameter, but could optionally describe the return format slightly more.

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% as the single parameter 'uuid' already includes a clear description. The tool description adds no new meaning beyond the schema, maintaining the 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 the verb 'Get' and resource 'domains configured for a server', with additional context on their usage for routing traffic. It uniquely identifies the tool's function among siblings which are mostly CRUD operations for applications and services.

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 that this tool retrieves domains for a server and notes that the server ID comes from list_servers, implying a dependency. However, it does not explicitly state when not to use it or exclude alternatives, but the guidance is sufficient for a simple retrieval tool.

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

get_server_resourcesA

Get a list of applications and services running on a server. This provides an overview of all resources deployed on the specified server.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesID of the server to check. Get this from list_servers.

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It mentions 'overview' but does not specify whether the tool is read-only, requires special permissions, or any side effects. For a listing tool, minimal transparency is acceptable, but could be improved.

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

Conciseness5/5

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

Two concise, front-loaded sentences. Every word adds value with no 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?

The description is adequate for a simple tool with one parameter, but it lacks details about the output format (e.g., what fields are returned). Given no output schema, users might benefit from more specifics.

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

Parameters4/5

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

The input schema has 100% coverage and the parameter description explains where to get the UUID (from list_servers), adding useful guidance beyond the schema alone.

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 a list of applications and services on a specific server, using a clear verb and resource. It distinguishes from sibling tools like list_applications and list_services by specifying scoping to a single server and combining both resource types.

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

Usage Guidelines4/5

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

The description implies usage for getting an overview of resources on a server, but does not explicitly state when not to use it or provide comparisons to alternatives. The context is clear enough for typical use.

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

get_teamA

Get details of a specific team. Requires a team ID obtained from list_teams.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYesID of the team to retrieve. This is typically a numeric ID obtained from the list_teams response.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It says 'get details' but does not specify what details are included, nor mentions permissions or side effects. For a read-like operation, this is adequate but not thorough.

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 sentences, direct and without any extraneous information. Every part earns its place.

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

Completeness4/5

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

Given simple tool with one parameter and no output schema, the description is fairly complete. Mentions dependency on list_teams. Could state that it returns team details, but not required.

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

Parameters4/5

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

Schema covers 100% with description for the only parameter. Description adds the contextual clue that the ID comes from list_teams, which is helpful beyond schema.

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

Purpose5/5

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

Description clearly states the action (get details) and resource (specific team). Distinguished from siblings like 'get_current_team' and 'list_teams' by specifying it requires a team ID from list_teams.

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 states prerequisite that team ID comes from list_teams, providing good context. Does not mention alternatives or when not to use, but the dependency is clear.

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

get_versionA

Get Coolify version information. Returns the current version of the Coolify instance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states it returns version info but does not elaborate on side effects, read-only nature, or response structure. For a simple read operation, this is adequate but minimal.

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 concise sentences with no fluff. Every word adds value, and the information is front-loaded.

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 zero parameters and no output schema, the description provides sufficient context for a version check. It could optionally mention the output format, but the current level is adequate for a simple info tool.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. The description adds no extra meaning beyond the schema, but the absence of parameters makes this baseline appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves version information from Coolify, with a specific verb ('get') and resource ('version'), distinct from all sibling tools which manage applications, servers, 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?

The description provides clear context for using the tool to check the current version, though it does not explicitly exclude any scenarios or mention alternatives. Given its straightforward nature, 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.

health_checkA

Check Coolify API health status. Note: This endpoint may not be available in all Coolify versions, including the current version (4.0.0-beta.397).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the endpoint may not be available, but does not describe response format, error behavior, or authentication needs. Adequate but not thorough.

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 two sentences: the first states the purpose clearly, the second adds an important caveat. No filler or redundancy, well front-loaded.

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

Completeness4/5

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

For a simple health-check tool with no parameters, annotations, or output schema, the description is reasonably complete. It could mention typical response or status codes, but the caveat adds valuable 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?

There are zero parameters, and schema coverage is 100% (trivially). The description does not need to add parameter information. Baseline for 0 parameters is 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 checks Coolify API health status, using a specific verb and resource. It distinguishes itself from sibling tools which focus on applications, services, and configuration.

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

Usage Guidelines4/5

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

The description provides a useful caveat about availability across versions, which helps the agent decide when to use it. However, it does not explicitly state when to use versus alternatives or provide exclusions.

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

list_application_envsA

List all environment variables for a specific application. Use this to view current environment configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the application to list environment variables for. Get this from list_applications.

TDQS

A4.1/5.0
Behavior3/5

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

The description indicates a read-only operation (list), which is non-destructive. However, no annotations are provided, so the description carries the full burden. It does not disclose potential side effects, authentication requirements, or output format. For a simple list tool, this is adequate but not exceptional.

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 two sentences long, no wasted words, and front-loads the key action. It is efficient and to the point.

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 simple one-parameter list tool with no output schema, the description covers the basics. However, it does not describe the return format or any edge cases (e.g., empty list, pagination). Minor gaps in completeness.

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

Parameters4/5

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

The input schema covers 100% of parameters, providing descriptions in the schema. The description adds value by specifying how to obtain the uuid parameter ('Get this from list_applications'), which helps the agent use the tool correctly.

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

Purpose5/5

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

The description explicitly states 'list all environment variables for a specific application', which clearly identifies the verb (list) and resource (environment variables for an application). It distinguishes from sibling tools like create/delete/update operations and bulk operations.

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 includes 'Use this to view current environment configuration', which provides clear guidance on when to use this tool. While it doesn't explicitly mention when not to use it, the sibling tool set implies different use cases.

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

list_applicationsA

List all applications across your Coolify instance. Applications are deployable units sourced from Git repositories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Without annotations, the description implies a read-only operation by using 'List.' However, it does not disclose potential side effects, rate limits, or authentication requirements. The behavior is straightforward but lacks explicit transparency.

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

Conciseness5/5

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

The description is concise (two sentences) and front-loads the primary purpose. Every sentence earns its place: the first states the action, the second clarifies the resource definition.

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 specify the return format or structure of listed applications. For a simple list tool, this is a minor gap. It adequately conveys the tool's function but leaves output details implicit.

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 has no parameters (100% coverage). The description adds no parameter details, which is acceptable since there are none. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'List all applications across your Coolify instance.' It uses a specific verb-resource combination and distinguishes from siblings like create_application or restart_application by focusing on listing.

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 guidance on when to use this tool versus alternatives like list_services or list_teams. There is no mention of prerequisites or when not to use it.

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

list_deploymentsA

List all deployments across your Coolify instance. Deployments represent the history of application and service deployments.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

The description indicates a read-only list operation, which is non-destructive. However, with no annotations, the description lacks details on pagination, rate limits, or any other behavioral traits beyond the obvious.

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 that directly state the purpose. It is front-loaded with the verb and resource, with 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?

Given the tool's low complexity (no parameters, simple list operation), the description is nearly complete. It could mention if there is any default ordering or limit, but overall it suffices for an agent to understand the tool's purpose.

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 has no parameters and 100% schema description coverage. The description does not add any parameter-specific meaning beyond the schema, so the baseline score of 3 applies.

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 lists all deployments across the Coolify instance, with a specific verb and resource. It distinguishes itself from sibling tools like get_deployment, which is singular.

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 vs alternatives like get_deployment. The usage context is implied by the name and description, but no when-not or alternatives are provided.

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

list_private_keysA

List all SSH private keys stored in Coolify. These keys are used for server authentication and Git repository access.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are present, so the description must fully disclose behavioral traits. It does not mention that this is a read-only safe operation, or provide any information about performance, rate limits, or side effects. The description is minimal and fails to disclose important behavioral aspects.

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 two sentences that efficiently convey the action and additional context. Every word adds value, and it is front-loaded with the purpose.

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 or annotations, the description is minimal but adequate for a parameterless list tool. However, it could be more complete by mentioning the type of data returned (e.g., key names, IDs).

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?

There are zero parameters, and schema coverage is 100%. According to guidelines, baseline is 4 when no parameters exist. The description does not need to add parameter meaning.

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

Purpose5/5

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

The description uses the specific verb 'List' and identifies the exact resource 'SSH private keys stored in Coolify', also explaining their use for server authentication and Git repository access. This clearly distinguishes it from sibling tools like create_private_key or list_applications.

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 is provided. The description simply states what it does, leaving the agent to infer usage. For a simple list-all tool, this is adequate but lacks explicit context.

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

list_serversA

List all servers registered in your Coolify instance. Use this to get server UUIDs needed for other operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions listing but does not explicitly state it is read-only or non-destructive. The value added is the mention of UUID retrieval, but more detail on side effects or permissions would improve transparency.

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 sentences, no wasted words, front-loaded with the primary action. Every sentence serves a clear 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?

Given the tool has no parameters and no output schema, the description is adequate. It explains what the tool does and why it's useful. It could optionally mention that the output is a list of server objects, but the current description is sufficiently complete for its low complexity.

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

Parameters4/5

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

The input schema has zero parameters and 100% coverage. The description adds no parameter info because none exist, which is appropriate. Baseline for 0 parameters is 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 lists all servers and specifies the purpose: to get server UUIDs for other operations, distinguishing it from sibling tools like create_server or validate_server.

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 usage context: 'Use this to get server UUIDs needed for other operations.' It implies when to use but does not specify when not to use, though for a list tool this is sufficient.

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

list_service_envsA

List all environment variables for a specific service. Use this to view current environment configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the service to list environment variables for. Get this from list_services.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries full responsibility. The description says 'list,' which implies a read-only operation with no destructive effects. However, it does not disclose any behavioral traits such as whether the action is reversible, any required permissions, or rate limits. For a simple list operation, a score of 3 is appropriate as it provides minimal transparency.

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 two sentences long, concise, and front-loaded with the primary action. Every word serves a purpose, with no extraneous information. It efficiently communicates the tool's function.

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

Completeness4/5

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

For a simple list tool with one parameter and no output schema, the description is sufficiently complete. It states what the tool does, what parameter is needed, and how to obtain it. The absence of an output schema means there is no need to describe return values. It covers the essentials for an AI agent to select and invoke the tool 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?

The input schema has 100% coverage with a description for the UUID parameter: 'UUID of the service to list environment variables for.' The description adds value by stating 'Get this from list_services,' which provides practical guidance on obtaining the parameter. This goes beyond the schema alone, thus earning a score of 4.

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 'List all environment variables for a specific service.' The verb 'list' and resource 'environment variables for a service' are specific. However, it does not explicitly differentiate from the sibling 'list_application_envs', which serves a similar purpose for applications. The distinction is implied by the service context but not made explicit.

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 includes 'Use this to view current environment configuration,' which gives a basic usage context. However, it does not provide guidance on when to use this tool versus alternatives like 'list_application_envs' for applications, or 'create_service_env' for modifications. There is no mention of when not to use it or prerequisites beyond the UUID.

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

list_servicesA

List all services across your Coolify instance. Services are containerized applications running on your servers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the tool lists all services, but does not mention if the list is complete, whether pagination exists, what fields are returned, or any side effects (like read-only nature). The description is minimal.

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 sentences, no fluff, front-loaded with the key action. Every word adds value.

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 no output schema, so the description should explain what is returned. It does not mention output structure (e.g., list of service names, IDs). However, given the simplicity and zero parameters, the description is marginally adequate for a basic list operation.

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?

There are zero parameters, and the input schema is empty (100% coverage). According to the rubric, 0 parameters yields a baseline score of 4. The description does not need to elaborate on 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 the verb 'List' and the resource 'services'. It also defines what a service is ('containerized applications running on your servers'), which adds clarity beyond the name 'list_services'. This distinguishes it from sibling tools like 'list_applications'.

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 guidance is provided on when to use this tool versus alternatives. For instance, there is no mention of filtering, pagination, or comparison with 'list_applications' or 'list_servers'. The agent must infer usage from the tool name alone.

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

list_teamsA

List all teams the authenticated user has access to. Use this to get team UUIDs needed for other operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It states 'list all teams', implying a read-only, non-destructive operation. However, it does not disclose potential pagination, sorting, or response format details. This is adequate for a simple list tool but lacks depth.

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 two short sentences with no wasted words. The first sentence states the primary purpose, and the second sentence provides a usage hint. It is efficient and easy to parse.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no output schema), the description covers the essential aspects: what it lists and why to use it. It could be considered complete for an agent to understand its function, though minor details like ordering are omitted.

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

Parameters4/5

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

The tool has zero parameters, so the description is not required to explain parameter semantics. It adds value by explaining that the output contains team UUIDs for use in other operations.

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 resource 'teams' with scope 'the authenticated user has access to'. It also specifies the purpose of getting team UUIDs, which distinguishes it from sibling tools like get_current_team.

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 says 'Use this to get team UUIDs needed for other operations', providing clear guidance on when to use this tool. However, it does not mention when not to use it, but given the lack of alternatives for listing teams, this is acceptable.

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

restart_applicationA

Restart an application by stopping and starting it again. Useful for applying configuration changes or recovering from issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the application to restart. Get this from list_applications.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. It discloses that the tool stops and starts the application, implying a write operation and potential downtime, but lacks details on required permissions, side effects (e.g., temporary unavailability), or error behavior.

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

Conciseness5/5

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

The description consists of two succinct sentences, immediately stating the verb and resource. Every word is functional with no redundancy or fluff.

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 simple tool with one parameter and no output schema, the description is minimally adequate. However, it omits details about the return value, success/failure indications, and whether the operation is synchronous or asynchronous, leaving uncertainty for the 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?

The sole parameter uuid is fully described in the schema ('UUID of the application to restart. Get this from list_applications.'), providing adequate guidance. The description adds no additional meaning beyond the schema, so 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 action 'restart' applied to 'application', with a precise definition of what restarting entails ('stopping and starting it again'). This directly distinguishes from sibling tools like restart_service, start_application, and stop_application.

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

Usage Guidelines4/5

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

The description provides clear use cases: 'applying configuration changes or recovering from issues'. While it does not explicitly exclude scenarios or name alternatives, the context is sufficient for appropriate tool selection.

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

restart_serviceA

Restart a service by stopping and starting it again. Useful for applying configuration changes or recovering from issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the service to restart. Get this from list_services.

TDQS

A4/5.0
Behavior3/5

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

Describes the basic behavior (stop then start) but lacks details on potential downtime, dependencies, or error handling. With no annotations, the description should carry the full burden, and it omits important behavioral nuances.

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 concise sentences, front-loaded with the action and followed by usage context. No unnecessary words.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description covers the core action and typical use cases. However, it could mention return values or side effects like service downtime.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning to the uuid parameter beyond what the schema already provides.

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

Purpose5/5

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

Clearly states the action (restart), resource (service), and explains it stops then starts again. Distinguishes from sibling tools like start_service, stop_service, and restart_application by name and context.

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 context for when to use (applying config changes, recovering from issues) but does not explicitly mention when not to use or compare to alternatives like restart_application.

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

start_applicationA

Start a previously created application. This will initialize the application container and make it accessible.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the application to start. Obtain this from list_applications or from the create_application response.

TDQS

A4/5.0
Behavior3/5

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

Without annotations, the description carries the burden of behavioral disclosure. It mentions initialization and accessibility but omits details like idempotency, side effects if already started, required permissions, or output. The description adds some value beyond the tool name but lacks thoroughness.

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 two sentences, concise and front-loaded. Every word serves a purpose, no fluff.

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

Completeness4/5

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

For a simple lifecycle tool with one parameter and no output schema, the description provides essential context. It explains the action (start) and result (initialize container, make accessible). It could mention what 'accessible' means (e.g., URL) or return value, but overall it is complete enough for the tool's complexity.

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% (one parameter with description on how to obtain UUID). The tool description does not add additional parameter meaning beyond the schema. Baseline 3 is appropriate as the schema handles parameter documentation.

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 starts a previously created application, initializes the container, and makes it accessible. The verb 'start' and resource 'application' are specific, and the description distinguishes from siblings like create_application (creation) and restart_application (restart).

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

Usage Guidelines4/5

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

The description implies the application must already exist ('previously created application'), and the parameter description instructs how to obtain the UUID via list or create tools. However, it does not explicitly exclude scenarios (e.g., if already running, use restart_application) or compare with start_service.

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

start_serviceC

Start a previously created service. This will initialize the service container and make it accessible.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the service to start. Obtain this from list_services or from the create_service response.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It fails to disclose behavioral traits like whether the operation is destructive, requires permissions, or is asynchronous. Only basic 'initialize and make accessible' is given.

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 at two sentences with no fluff. While it could be more informative, it is appropriately sized and front-loaded.

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?

For a tool with no output schema and no annotations, the description is incomplete. It does not hint at return values, side effects, or the service lifecycle, which is needed given the complexity of starting a service.

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% for the single uuid parameter. The description adds no additional meaning beyond what the schema provides, earning the baseline score of 3.

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 uses a clear verb 'start' and specifies 'previously created service', distinguishing from create_service. However, it does not explicitly distinguish from start_application or other start tools, and 'make it accessible' is somewhat vague.

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 guidance on when to use this tool versus alternatives (e.g., restart_service). It mentions 'previously created' but does not specify prerequisites, such as that the service must be in a stopped state.

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

stop_applicationA

Stop a running application. This will gracefully shut down the application container.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the application to stop. Get this from list_applications.

TDQS

A4.2/5.0
Behavior3/5

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

Without annotations, the description provides some behavioral context ('gracefully shut down'), indicating non-destructive shutdown. However, it does not disclose post-stop behavior (e.g., restartability) or any side effects, which leaves some gaps.

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 concise sentences that front-load the action and efficiently convey the purpose and parameter guidance. No wasted 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?

The description sufficiently covers the tool's purpose, parameter, and behavior for a simple action. It could mention that the application must be running, but that is implied. Given no output schema or annotations, it is adequately 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?

The description adds value beyond the schema by specifying the source for the 'uuid' parameter ('Get this from list_applications'), which helps the agent locate the correct value. Schema coverage is 100%, so the description provides useful extra guidance.

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 'stop' as the verb and 'application' as the resource, and distinguishes from sibling tools like start_application and restart_application by specifying 'stop a running application' with graceful shutdown.

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

Usage Guidelines4/5

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

The description implies when to use the tool (to stop a running application) and mentions graceful shutdown, but does not explicitly state when not to use it or exclude alternatives. However, the purpose 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.

stop_serviceA

Stop a running service. This will gracefully shut down the service container.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the service to stop. Get this from list_services.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description adds value by stating 'gracefully shut down', hinting at clean termination. However, it does not detail side effects like log flushing or pending request handling.

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 sentences, no unnecessary words. Essential information is front-loaded, and every sentence contributes to understanding.

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

Completeness4/5

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

Given the tool's simplicity (one required param, no output schema), the description plus schema provide sufficient context. Minor gap: no mention of return value or confirmation, but acceptable for a void action.

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 already describes the uuid parameter (100% coverage), but the description adds context by telling the agent to get the UUID from 'list_services', which aids in correct invocation.

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 action ('stop') and the resource ('running service'), and distinguishes from siblings like 'start_service' and 'restart_service' by specifying that it shuts down the container gracefully.

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

Usage Guidelines4/5

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

The description implies when to use (when a service is running and needs to be stopped) but does not explicitly mention when not to use or compare with alternatives like 'stop_application'.

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

update_application_envC

Update an existing environment variable for an application. This modifies the value or settings of an existing environment variable.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoNew environment variable name (optional if only updating value).
valueNoNew environment variable value (optional if only updating other properties).
env_uuidYesUUID of the environment variable to update. Get this from list_application_envs.
is_literalNoWhether the value should be treated as a literal string without variable substitution.
is_previewNoWhether this variable applies to preview deployments.
is_build_timeNoWhether this variable should be available during build time.
application_uuidYesUUID of the application containing the environment variable.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral traits. It states that the tool modifies an existing variable but does not disclose whether it overwrites all fields or merges, nor any permissions, rate limits, or consequences. The behavior when optional parameters are omitted is unclear.

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, efficiently stating the action. It is front-loaded with the main purpose. There is no fluff, though the second sentence slightly repeats the first.

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 seven parameters, no output schema, and no annotations, the description is minimal. It does not cover return values, error scenarios, or partial update behavior. The description lacks completeness for a parameter-rich mutation tool.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions. It simply restates the tool purpose without elaborating on parameter usage.

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 updates an existing environment variable for an application. It specifies the resource (environment variable) and the action (update). However, it does not explicitly differentiate from sibling tools like create_application_env or bulk_update_application_envs, though the name and context imply single-entity update.

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 guidance on when to use this tool vs alternatives (e.g., bulk_update_application_envs). The description only implicitly suggests using list_application_envs to get the env_uuid, but does not provide explicit when-to-use or when-not-to-use context.

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

update_service_envB

Update an existing environment variable for a service. This modifies the value or settings of an existing environment variable. Note: Setting is_build_time=true has no functional effect on services (they use pre-built images).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesEnvironment variable name to update.
valueYesNew environment variable value.
is_literalNoWhether the value should be treated as a literal string without variable substitution.
is_previewNoWhether this variable applies to preview deployments.
service_uuidYesUUID of the service containing the environment variable.
is_build_timeNoWhether this variable should be available during build time. Note: Has no functional effect on services (they use pre-built images).

TDQS

B3.4/5.0
Behavior3/5

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

Without annotations, the description carries the burden of behavioral disclosure. It mentions one key behavior: 'Setting is_build_time=true has no functional effect on services.' However, it does not explain other behaviors such as idempotency, error handling for missing variables, or whether updating triggers a redeployment.

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 at two sentences, front-loading the core purpose. The note about is_build_time is relevant but slightly misplaced. Overall, every sentence contributes 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 absence of an output schema, the description should explain the result of updating (e.g., returns updated variable, triggers redeployment). It does not touch on side effects or preconditions (e.g., variable must exist). It is adequate but incomplete for a full 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?

The input schema has 100% coverage with descriptions for all 6 parameters. The description adds minimal new information beyond the schema—only noting that is_build_time has no effect, which is already in the schema's description. It does not clarify relationships between parameters like is_literal and is_preview.

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 action: 'Update an existing environment variable for a service.' It specifies the verb 'Update' and resource 'existing environment variable for a service,' which differentiates it from create or delete operations and sibling tools like bulk_update_service_envs or update_application_env.

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 no guidance on when to use this tool versus alternatives like bulk_update_service_envs for multiple updates or create_service_env for new variables. It lacks explicit conditions or exclusions, leaving the agent to infer the appropriate context.

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

validate_serverA

Validate a server's configuration and connectivity. Use this to verify server setup and troubleshoot connection issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesID of the server to validate. Get this from list_servers.

TDQS

A3.9/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It states 'validate' and 'troubleshoot' but does not disclose whether the operation is read-only, what connectivity check is performed, or any potential side effects or permissions needed.

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 only two sentences, with the purpose front-loaded and no extraneous information. Every sentence earns its place.

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

Completeness3/5

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

Given the tool's simplicity (one param, no output schema), the description covers the use case but omits details about the return value or result format, which would be helpful for an agent determining success/failure.

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?

All parameters (one: uuid) are described in the schema with 100% coverage. The description adds value by specifying that the ID comes from list_servers, which is helpful 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 action ('Validate') and the resource ('a server's configuration and connectivity'), and distinguishes from sibling tools like list_servers or create_server by focusing on verification and troubleshooting.

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 says to use it for verification and troubleshooting, providing clear context. However, it does not mention when not to use it or alternative tools, though the parameter description implies obtaining the UUID from list_servers.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 35 tool updatesv1.0.0
    • First observedbulk_update_application_envs
    • First observedbulk_update_service_envs
    • First observedcreate_application
    • First observedcreate_application_env
    • First observedcreate_private_key
    • First observedcreate_server
    • First observedcreate_service
    • First observedcreate_service_env
    • First observeddelete_application_env
    • First observeddelete_service_env
    • First observedget_current_team
    • First observedget_current_team_members
    • First observedget_deployment
    • First observedget_server_domains
    • First observedget_server_resources
    • First observedget_team
    • First observedget_version
    • First observedhealth_check
    • First observedlist_application_envs
    • First observedlist_applications
    • First observedlist_deployments
    • First observedlist_private_keys
    • First observedlist_servers
    • First observedlist_service_envs
    • First observedlist_services
    • First observedlist_teams
    • First observedrestart_application
    • First observedrestart_service
    • First observedstart_application
    • First observedstart_service
    • First observedstop_application
    • First observedstop_service
    • First observedupdate_application_env
    • First observedupdate_service_env
    • First observedvalidate_server

TDQS

B3.4/5.0
Disambiguation5/5

Each tool targets a distinct resource and action, with clear separation between application and service operations. No ambiguity between tool purposes.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern, but there is a mix of 'get_' and 'list_' for retrieval operations (e.g., get_server_domains vs list_applications), which is a minor inconsistency.

Tool Count3/5

35 tools is on the high side, but the server covers multiple domains (applications, services, environments, servers, etc.). It could be streamlined slightly but is not excessive.

Completeness2/5

Notable gaps: missing delete operations for applications and services, no update for application/service properties (only envs), and no explicit deploy or redeploy tools for deployments. This will likely cause agent failures for common workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for Coolify infrastructure management, providing 45 tools for servers, applications, databases, deployments, and diagnostics via natural language.
    22
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    MCP server for Coolify API that enables full deployment workflows from zero to production, including project, server, and application management.
    65
    461
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    One MCP server to manage self-hosted Coolify instances: verify connectivity, discover servers, deploy applications, tail logs, diagnose incidents, and run emergency ops from any MCP client.
    19
    95
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/forsonny/Coolify-MCP-Server-for-Claude-Code'

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