Skip to main content
Glama

Coolify MCP Server

A robust TypeScript MCP (Model Context Protocol) server for integrating with Coolify, the self-hostable alternative to Netlify and Vercel.

Features

  • Complete Coolify API Integration: Manage applications, databases, servers, projects, and services

  • Type-Safe: Full TypeScript support with comprehensive type definitions

  • MCP Protocol: Compatible with Claude and other MCP clients

  • Resource Access: Expose Coolify resources through MCP resource endpoints

  • Tool Support: Comprehensive set of tools for Coolify operations

Related MCP server: Coolify MCP Server

Installation

npm install
npm run build

Configuration

Environment Variables

The server requires environment variables to connect to your Coolify instance:

export COOLIFY_API_URL="http://localhost:8000"
export COOLIFY_API_TOKEN="your-api-token-here"
export COOLIFY_TEAM_ID="optional-team-id"  # Optional

Or create a .env file:

COOLIFY_API_URL=http://localhost:8000
COOLIFY_API_TOKEN=your-api-token-here
COOLIFY_TEAM_ID=optional-team-id

MCP Client Configuration

Claude Desktop

Add the server to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "coolify": {
      "command": "node",
      "args": ["/path/to/coolify-mcp-server/dist/index.js"],
      "env": {
        "COOLIFY_API_URL": "http://localhost:8000",
        "COOLIFY_API_TOKEN": "your-api-token-here",
        "COOLIFY_TEAM_ID": "optional-team-id"
      }
    }
  }
}

Alternative: NPX Usage

If you publish to npm, users can run via npx:

{
  "mcpServers": {
    "coolify": {
      "command": "npx",
      "args": ["@joshuarileydev/coolify-mcp-server", "--yes"],
      "env": {
        "COOLIFY_API_URL": "http://localhost:8000",
        "COOLIFY_API_TOKEN": "your-api-token-here",
        "COOLIFY_TEAM_ID": "optional-team-id"
      }
    }
  }
}

Or use the executable name directly:

{
  "mcpServers": {
    "coolify": {
      "command": "npx",
      "args": ["coolify-mcp-server", "--yes"],
      "env": {
        "COOLIFY_API_URL": "http://localhost:8000",
        "COOLIFY_API_TOKEN": "your-api-token-here",
        "COOLIFY_TEAM_ID": "optional-team-id"
      }
    }
  }
}

Development Setup

For development, you can use the TypeScript source directly:

{
  "mcpServers": {
    "coolify": {
      "command": "npx",
      "args": ["tsx", "/path/to/coolify-mcp-server/src/index.ts"],
      "env": {
        "COOLIFY_API_URL": "http://localhost:8000",
        "COOLIFY_API_TOKEN": "your-api-token-here",
        "COOLIFY_TEAM_ID": "optional-team-id"
      }
    }
  }
}

Other MCP Clients

For other MCP clients that support environment variables, ensure the following variables are set:

  • COOLIFY_API_URL (required)

  • COOLIFY_API_TOKEN (required)

  • COOLIFY_TEAM_ID (optional)

Example shell script:

#!/bin/bash
export COOLIFY_API_URL="http://localhost:8000"
export COOLIFY_API_TOKEN="your-api-token-here"
export COOLIFY_TEAM_ID="your-team-id"

node /path/to/coolify-mcp-server/dist/index.js

Available Tools

Applications

  • list_applications - List all applications

  • get_application - Get application details

  • create_application - Create new application

  • start_application - Start an application

  • stop_application - Stop an application

  • restart_application - Restart an application

  • deploy_application - Deploy an application

Databases

  • list_databases - List all databases

  • create_database - Create new database

Servers

  • list_servers - List all servers

  • create_server - Create new server

  • validate_server - Validate server connection

Projects

  • list_projects - List all projects

  • create_project - Create new project

Services

  • list_services - List all services

  • start_service - Start a service

  • stop_service - Stop a service

System

  • get_version - Get Coolify version

Available Resources

The server exposes these MCP resources:

  • coolify://applications - All applications

  • coolify://databases - All databases

  • coolify://servers - All servers

  • coolify://projects - All projects

  • coolify://services - All services

  • coolify://teams - All teams

API Token Setup

  1. Log into your Coolify instance

  2. Navigate to "Keys & Tokens" > "API tokens"

  3. Click "Create New Token"

  4. Choose appropriate permissions:

    • read-only: Read data only

    • read:sensitive: Read with sensitive data

    • *: Full access (recommended for MCP server)

  5. Copy the generated token

Security Note

When using the MCP server with Claude Desktop or other clients, your API token will be stored in the configuration file. Ensure this file has appropriate permissions:

# macOS/Linux
chmod 600 ~/Library/Application\ Support/Claude/claude_desktop_config.json

# Or set environment variables in your shell profile instead
echo 'export COOLIFY_API_TOKEN="your-token-here"' >> ~/.bashrc

Development

# Install dependencies
npm install

# Run in development mode (requires env vars)
COOLIFY_API_URL=http://localhost:8000 COOLIFY_API_TOKEN=your-token npm run dev

# Build for production
npm run build

# Run built version
npm start

# Lint code
npm run lint

# Type check
npm run typecheck

Troubleshooting

Common Issues

  1. "COOLIFY_API_URL and COOLIFY_API_TOKEN environment variables are required"

    • Ensure environment variables are set before starting the server

    • Check that your .env file is in the correct location

    • Verify variable names are spelled correctly

  2. "Tool execution failed: Request failed"

    • Verify your Coolify instance is running and accessible

    • Check that the API URL is correct (include protocol: http:// or https://)

    • Ensure your API token has the necessary permissions

  3. MCP server not appearing in Claude Desktop

    • Restart Claude Desktop after updating configuration

    • Check the configuration file path is correct for your OS

    • Verify JSON syntax in the configuration file

Debug Mode

To see detailed error messages, run the server with debug output:

DEBUG=* node dist/index.js

License

MIT

Available Tools

18 tools
create_applicationC

Create a new application

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesApplication name
git_branchNoGit branch
descriptionNoApplication description
git_repositoryNoGit repository URL

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. 'Create a new application' only restates the obvious mutation implied by the tool name; it does not mention side effects, idempotency, required permissions, duplicate handling, or what happens after creation.

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

Conciseness3/5

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

The description is short and front-loaded, with no wasted words. However, it is so minimal that it reads more like a tautological restatement of the tool name than a deliberately structured, informative description.

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 creation tool with a clearly documented schema and only one required parameter, the description is minimally viable. However, the absence of any usage context, behavioral details, or expected result makes it less complete than it could be, especially for an agent deciding between this and sibling lifecycle tools.

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

Parameters3/5

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

The input schema has 100% parameter description coverage, so the schema already documents all four parameters. The description adds no parameter-level meaning, but the baseline of 3 is appropriate because the schema is doing the heavy lifting.

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 operation (create) and the resource (application), so an agent can understand the tool's basic function. It does not explicitly differentiate itself from related lifecycle tools like deploy_application or start_application, but the verb 'create' provides enough distinction to avoid confusion at a glance.

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 gives no guidance on when to use this tool versus alternatives such as deploy_application, list_applications, or start_application. An agent must infer from the tool name alone that this is for creating a new application, with no stated exclusions or context.

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

create_databaseC

Create a new database

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDatabase name
typeYesDatabase type (postgresql, mysql, mongodb, redis, etc.)

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 the full burden of behavioral disclosure. It only restates the create action and does not describe side effects, whether the operation is idempotent, what happens on conflict, or what gets returned. For a tool that mutates state, this is a notable gap.

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, front-loaded, waste-free sentence. It is concise and easy to scan, though it is so terse that it barely extends beyond the tool name.

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 two-parameter create operation, the schema covers the necessary inputs and the description states the core action. However, with no output schema, no annotations, and no mention of return values, prerequisites, or postconditions, the description is only minimally sufficient for an agent to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters (name and type) have descriptions plus an example of valid type values. The description itself adds no parameter semantics, but the baseline of 3 is appropriate because the schema already documents the inputs adequately.

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 ('Create') and the resource ('a new database'), which is specific enough to distinguish it from sibling tools like list_databases or create_application. However, it does not mention any scope or context that might differentiate it from a more specific create-database-variant tool.

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 gives no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. It merely implies it should be used when a database needs to be created, but there is no explicit context or alternative routing.

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

create_projectB

Create a new project

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name
descriptionNoProject description

TDQS

B3.1/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 of behavioral disclosure. It only repeats the action already implied by the name, with no information about idempotency, duplicate-name behavior, required permissions, or what happens after creation.

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 extremely short and front-loaded, making it easy to parse. The word 'new' is slightly redundant since 'create' already implies newness, but otherwise the phrasing is compact and unfussy.

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?

There is no output schema and no behavioral context. The description does not mention return values, failure modes, name constraints, or how this tool relates to list_projects and other siblings. For a creation tool, this is minimally adequate but leaves important operational details unspecified.

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

Parameters3/5

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

The input schema already describes both parameters with 100% coverage, so the schema carries the semantic weight. The description adds no additional meaning about the parameters, which earns 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 states a clear verb and resource: 'Create a new project' tells the agent exactly what the tool does. However, it essentially restates the tool name and does not add scope or caveats that would differentiate it from sibling create_* tools beyond the resource type.

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?

Usage is implied by the verb 'create': the tool is for creating a project. There is no explicit guidance about when to prefer this over listing or using existing projects, nor any mention of prerequisites or alternatives.

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

create_serverC

Create a new server

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYesServer IP address
nameYesServer name
portNoSSH port (default: 22)
userNoSSH user

TDQS

C2.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 behavioral burden. 'Create a new server' communicates a mutating action but does not disclose idempotency, duplicate handling, required permissions, side effects, or whether validation occurs.

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

Conciseness3/5

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

The description is very short and has no fluff, which is structurally clean. However, it mostly restates the tool name and does not earn its place by adding contextual value, so it is minimal rather than excellently concise.

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 that there is no output schema and no annotations, the description should explain expected return values, side effects, or preconditions. None of that is present, so the context is incomplete for an agent deciding whether and how to invoke this 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?

The input schema covers 100% of parameters with descriptions, so the schema already carries the parameter documentation. The tool description adds no extra meaning to the parameters, which keeps this at the baseline score.

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 'server', so an agent can tell this is the creation action as opposed to list_servers or validate_server. However, it adds no details about what kind of server this creates beyond the parameter names, so it is clear but not richly distinguishing.

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?

There is no guidance about when to use create_server versus sibling tools such as list_servers or validate_server. The description only restates the action and does not provide prerequisites, conditions, or exclusions.

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

deploy_applicationC

Deploy an application

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
tagNoOptional tag to deploy

TDQS

C2.4/5.0
Behavior1/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 only restates the action without disclosing side effects, whether deployment is synchronous, whether it replaces an existing version, or what state changes occur.

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

Conciseness2/5

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

The description is extremely short, but this is under-specification rather than effective conciseness. It omits valuable context and does not earn its place as a standalone explanation.

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

Completeness1/5

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

With no annotations, no output schema, and a consequential lifecycle action, the one-line description is inadequate. An agent cannot determine tag behavior, result format, error conditions, or the deployment's effect on the running application.

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%: 'id' is documented as Application ID and 'tag' as Optional tag to deploy. The description adds no parameter meaning beyond the schema, so the baseline 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?

'Deploy an application' states a clear verb and resource, so an agent can tell this is a deployment action. However, with sibling tools like start_application, stop_application, and restart_application, it does not explain how 'deploy' differs from those lifecycle actions.

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 gives no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, the difference from start/restart, or scenarios where deployment is appropriate.

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

get_applicationA

Get details of a specific application

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get details', which implies a read operation, but it does not describe return format, failure behavior, authentication needs, or whether any state changes occur. For a no-annotation tool, this 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?

The description is a single, focused sentence with no filler or redundant content. It front-loads the action and resource, and every word contributes to understanding 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?

The tool is simple with one required parameter and no output schema, so the description covers the basic purpose. However, it does not explain what 'details' means, how results are returned, or how to handle invalid or missing IDs, leaving some context gaps for an agent without annotations.

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

Parameters3/5

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

Schema description coverage is 100%, and the lone parameter 'id' is already described as 'Application ID'. The description adds no additional semantic information about where to find the ID or how it should be formatted, so the 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 uses a specific verb ('Get') and resource ('details of a specific application'), which clearly distinguishes it from siblings like list_applications, create_application, and start_application. It is not a tautology of the tool name and tells the agent exactly what this tool does.

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 you need details for a single application, but it does not explicitly state when to choose this over list_applications or other application-related tools. No alternatives or exclusions are mentioned, leaving the agent to infer from the name.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/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 behavioral burden. 'Get' implies a read-only operation with no side effects, and the tool takes no parameters, so there is little to disclose. However, the description does not clarify what 'version information' includes or whether authentication is required, leaving some behavioral ambiguity.

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, front-loaded sentence with no filler. Every word earns its place, and it communicates the tool's purpose completely without redundancy.

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

Completeness4/5

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

For a simple, parameterless read tool, the description is largely sufficient. It identifies what the tool retrieves and is complete enough for an agent to know when to call it. A minor gap is that the return format or content of 'version information' is unspecified, but this is not critical given the 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 tool accepts zero parameters, and schema coverage is effectively 100%. Per the rubric, zero parameters warrant a baseline of 4. The description does not need to explain any parameters and does not add parameter-specific value, but none is required.

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

Purpose5/5

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

The description states a specific verb ('Get') and a clear resource ('Coolify version information'). It is immediately distinct from all sibling tools, which target applications, databases, servers, projects, and services, so an agent can tell this is the version utility without opening any schema.

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 when-to-use or alternative routing is given, but the tool is self-evident as the only version-related sibling. Usage is implied by its name and description, so an agent can infer when to call it, though there is no explicit guidance about cases where it should not be used.

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 in Coolify

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?

With no annotations, the description carries the full burden. The verb 'list' clearly implies read-only enumeration, but the description does not explicitly state safety, authentication needs, pagination, or scope limitations (e.g., whether all applications across all users are returned). It is adequate for a simple list operation 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?

A single, front-loaded sentence with no filler. Every word contributes meaning, and the description is as concise as possible while being clear.

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 zero-parameter, no-output-schema listing tool, this description is nearly complete: it names the operation and scope. However, it omits any indication of the return shape or potential limitations, and no annotations exist to fill that gap. Still, the simplicity of the tool keeps the gap small.

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, so there is no parameter detail to describe. The phrase 'all applications' establishes an unfiltered scope that aligns with the empty schema, meeting the baseline for a 0-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 uses the specific verb 'list' and names the resource 'applications', with 'all' clarifying the scope. It naturally distinguishes itself from siblings like get_application (single entity) and list_databases/list_servers/list_projects (different 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 Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as get_application or list_services. There is no mention of use cases, prerequisites, exclusions, or when another tool would be more appropriate, leaving the agent to infer from sibling names alone.

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

list_databasesA

List all databases in Coolify

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

The word 'List' clearly signals a read-only enumerative operation, and 'all databases in Coolify' defines the scope. However, with no annotations available, the description does not disclose pagination behavior, return format, or any access requirements. This is minimal but acceptable for a straightforward listing tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence containing only the essential information: the verb, the resource, and the scope. Every word earns its place with no redundancy.

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

Completeness4/5

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

For a zero-parameter tool with no output schema, 'List all databases in Coolify' is almost fully sufficient for correct invocation. It does not describe the response shape or note whether results are paginated, but the listing purpose is clear enough for an agent to call it appropriately.

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% schema description coverage, so there is nothing for the description to add. The 0-parameter baseline of 4 applies.

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 states the verb 'List' and the resource 'all databases in Coolify', making the tool's purpose clear and distinct from sibling list tools like list_applications and list_servers. It does not explicitly contrast with those siblings, but the resource name is enough to disambiguate.

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 this tool is used when one needs to enumerate all databases, but it offers no explicit guidance on when to prefer it over create_database or other sibling tools. For such a simple zero-parameter tool, the intended usage is reasonably inferable, though not stated.

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

list_projectsA

List all projects in Coolify

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/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 burden of conveying that this is a read-only enumeration operation. It does convey that clearly, but it offers no details about return format, ordering, authentication, or potential pagination, which would add useful 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?

The description is a single, front-loaded sentence with no filler. Every word contributes to understanding the tool's 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?

For a parameterless list tool with no output schema, the description is nearly sufficient: it tells the agent what resource is returned and that all instances are included. Some detail about the shape of a project object or response would improve completeness, but the complexity is low enough that this is a minor gap.

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 empty schema is fully sufficient. The description needs to add no parameter-level meaning; this matches the baseline of 4 for parameterless tools.

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

Purpose5/5

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

The description says exactly what the tool does: 'List all projects in Coolify'. The verb is specific, the resource is clear, and the object type distinguishes it from sibling tools like list_applications, list_databases, and 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 intended use is implied by the name and description—use this tool when you need a full list of projects—but there is no explicit guidance about when to prefer it over alternatives, nor any exclusions. For a zero-parameter list tool this is acceptable but not exemplary.

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 in Coolify

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?

With no annotations, the description carries full responsibility for behavioral disclosure. It only states the action without mentioning response format, pagination, or the fact that this is a read-only operation. An agent has no information about what the result looks like or any side effects, leaving a significant gap for a simple but essential tool.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the core action and scope. It contains no filler or redundant information, making it highly efficient for an agent to parse.

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 zero-parameter, read-only list operation, the description is minimally adequate. However, it omits any detail about the returned data structure, ordering, or pagination, which might be expected. While the simplicity of the tool lowers the bar, the absence of any output schema or behavioral note leaves some uncertainty for an agent calling it.

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 schema already covers everything. Per the baseline rule for 0 parameters, the description need not add parameter detail; it would only be redundant. The description adds no parameter semantics, but none are required, so the baseline of 4 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'servers', scoped to 'all servers in Coolify'. This distinguishes it from sibling list tools (list_applications, list_databases) by resource type, leaving no ambiguity about what the tool retrieves.

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 its usage — to list servers — but provides no explicit guidance on when to choose this over alternatives or any exclusions. Since the tool name and description are self-explanatory and siblings handle other resources, the context is clear, but the lack of explicit direction keeps it from scoring higher.

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 in Coolify

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/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 of disclosing behavior. The word 'List' suggests a read-only operation and 'all' defines scope, but there is no explicit statement about pagination, response shape, or absence of side effects. This is adequate for a simple list tool 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?

The description is a single sentence that conveys the essential verb and resource without any filler or repetition. It is appropriately sized and front-loads the operation.

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 zero-parameter, read-only listing tool, the description is nearly complete. It clearly states what is returned (all services) and requires no argument details. It could further define what a 'service' is in Coolify or describe the output structure, but neither is essential for correct invocation.

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, and the schema coverage is 100% with an empty object. The description adds no parameter information, but none is needed since invocation requires no arguments.

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

Purpose5/5

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

The description uses a specific verb ('List') and a specific resource ('services') within a defined context ('in Coolify'). This clearly distinguishes it from sibling tools like list_applications, list_databases, and list_servers by naming the exact resource type.

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 intended use is implied: call this when you need all services in Coolify. However, it does not explicitly explain when to prefer this over list_applications or list_databases, nor does it mention any exclusions or filtering conditions.

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

restart_applicationC

Restart an application

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID

TDQS

C2.4/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only repeats the action. It does not mention that the application will be stopped and started, potential downtime, whether state is preserved, or any side effects.

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

Conciseness2/5

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

The description is extremely short, but this is under-specification rather than effective conciseness. It essentially restates the tool name and provides no information that would help an agent use the tool correctly.

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 annotations and no output schema, the description is too minimal. It fails to explain what happens during a restart, whether the call blocks or returns immediately, or what the expected outcome is.

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 the single 'id' parameter as the Application ID. The description adds no additional parameter meaning, but the baseline of 3 applies because the schema fully covers it.

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 states a specific verb ('Restart') and a clear resource ('an application'), which distinguishes it from sibling tools like create, start, or stop. However, it adds no additional scope or context beyond the tool name.

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 gives no guidance on when to use restart_application versus alternatives such as start_application or stop_application. There is no mention of prerequisites, typical scenarios, or exclusions.

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

start_applicationC

Start an application

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of explaining behavior, but it only says 'Start an application'. It does not disclose side effects, state transitions, idempotency, failure modes, or whether starting requires an existing application, leaving the agent without critical 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.

Conciseness3/5

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

The description is concise and front-loaded with no filler words, which is structurally clean. However, it is so sparse that it verges on under-specification rather than being an appropriately sized explanation of the tool.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete for a state-changing operation. It omits when the action should be performed, what the result looks like, and what conditions must hold, leaving too much for the agent to infer from the sibling tool names alone.

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%, and the only parameter, 'id', is already described as 'Application ID'. The description adds no additional 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.

Purpose4/5

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

The description states a clear action ('Start') and a clear resource ('an application'), which is sufficient to identify the tool's purpose. It also distinguishes this tool from siblings like stop_application, restart_application, and deploy_application, though it does not elaborate on what 'start' concretely entails.

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 gives no guidance on when to use this tool versus siblings such as deploy_application or restart_application. It does not mention prerequisites like the application already existing or being in a stopped state, so the agent must infer usage entirely from the tool name.

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 service

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesService ID

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Start a service' only names the action; it does not indicate that this is a state-changing operation, whether it is reversible, if it has side effects (e.g., resource consumption), or what happens if the service is already running. No such detail is offered.

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

Conciseness2/5

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

The description is extremely short (two words), but this is under-specification rather than effective conciseness. It lacks necessary context that an agent would expect for a state-changing tool, such as effect, timing, or return value. The brevity here is a deficiency, not an asset.

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

Completeness2/5

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

Given the simplicity of the schema (one param) and no output schema, the description still fails to explain the operational context: Is this synchronous? What does 'start' imply? Are there prerequisites? An agent calling this blindly would have no idea what to expect. The description is minimal and incomplete for reliable invocation.

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 fully documents the single parameter 'id' with a description of 'Service ID', so schema coverage is 100%. The tool description adds no further semantic meaning beyond the schema, so a baseline of 3 is appropriate. No compensation is needed given the schema's completeness.

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

Purpose3/5

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

The description 'Start a service' uses a specific verb and resource, which is clearer than a tautology. However, it does not differentiate from sibling tools like 'start_application' or clarify whether it affects a single service or multiple. It states the core action but lacks scope or distinction.

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 given on when to use this tool versus alternatives like 'stop_service' or 'list_services'. There is no mention of prerequisites, conditions, or scenarios where this tool is appropriate or inappropriate. The description leaves the decision entirely to the agent's inference.

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

stop_applicationC

Stop an application

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID

TDQS

C2.2/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 of behavioral disclosure. 'Stop an application' gives no information about side effects, reversibility, dependencies, or whether the operation is safe or destructive. The agent is left blind to the consequences of calling this tool.

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

Conciseness2/5

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

The description is short, but this is under-specification rather than effective conciseness. The sentence is a tautology and contains no information beyond the tool name, so it does not earn its place as a useful description.

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 state-changing operation with no annotations and no output schema, the description should at least note reversibility, effect on the application, and relationship to start/restart. The one-parameter schema is well covered, but the description leaves significant gaps in operational context.

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 documents the only parameter, id, as 'Application ID' with 100% coverage. The description adds no parameter-level information, but the schema already provides sufficient meaning. Baseline 3 is appropriate because the structured schema handles the input documentation.

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

Purpose2/5

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

The description 'Stop an application' is essentially a verbatim restatement of the tool name, adding no new information. It conveys the basic action but does not help distinguish this tool from siblings beyond what the name already implies. This falls into the tautology category.

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?

There is no guidance on when to use this tool instead of start_application, restart_application, or stop_service. No prerequisites, conditions, or exclusions are mentioned. An agent must infer the appropriate usage from sibling tool names alone.

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

stop_serviceC

Stop a service

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesService ID

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure, but it only restates the action implied by the tool name. It does not mention side effects, idempotency, behavior when the service is already stopped, or whether the action is reversible.

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

Conciseness3/5

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

The description is extremely concise and front-loaded, but it borders on under-specification since it essentially restates the tool name. It is not wasteful, but it provides little structural value beyond the name.

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?

Although the tool is simple with one fully documented parameter, there is no output schema or annotation coverage. The description does not clarify expected return values, failure modes, or whether the stop operation is synchronous, leaving meaningful gaps for a mutating action.

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%: the only parameter 'id' is described in the schema as 'Service ID'. The description does not add further parameter meaning, but the schema already sufficiently documents the parameter.

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 specific verb ('Stop') and a specific resource ('service'), clearly distinguishing it from siblings like start_service and stop_application. However, it does not elaborate on scope such as whether this applies to one service instance or a named service.

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?

There is no guidance on when to use this tool versus alternatives such as start_service or stop_application. The description simply states the action without contextual cues or exclusions.

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

validate_serverC

Validate server connection

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesServer ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Validate server connection' but does not state whether the operation is read-only, whether it requires an existing server, what side effects it may have, or how success/failure is represented.

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, short sentence with no filler or redundancy. It is front-loaded with the primary verb and resource, though it is arguably too terse to fully convey the tool's behavior.

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 tool has one parameter and no output schema, so the description needs to explain what validation entails and what result the agent can expect. It does neither, leaving the agent uncertain about the tool's actual function and outcome.

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 parameter 'id', which is documented as 'Server ID'. The description adds no additional 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.

Purpose4/5

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

The description states a specific action ('validate') and a resource ('server connection'), which distinguishes it from sibling tools like list_servers or create_server. However, it does not clarify what 'validate' means in practice, such as checking connectivity or configuration, so some ambiguity remains.

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, nor are there any prerequisites or conditions mentioned. The description simply states the action without explaining the intended context, such as after creating a server or before deploying.

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. 18 tool updatesv1.0.6
    • First observedcreate_application
    • First observedcreate_database
    • First observedcreate_project
    • First observedcreate_server
    • First observeddeploy_application
    • First observedget_application
    • First observedget_version
    • First observedlist_applications
    • First observedlist_databases
    • First observedlist_projects
    • First observedlist_servers
    • First observedlist_services
    • First observedrestart_application
    • First observedstart_application
    • First observedstart_service
    • First observedstop_application
    • First observedstop_service
    • First observedvalidate_server

TDQS

B3/5.0
Disambiguation4/5

Most tools are clearly separated by resource type and action, such as list_applications vs list_databases. The only slight ambiguity is start_application vs deploy_application, which have related but not identical purposes.

Naming Consistency5/5

All tools use a consistent verb_noun snake_case pattern, e.g., list_applications, create_database, validate_server, get_version. There are no mixed conventions or vague generic names.

Tool Count4/5

18 tools is slightly above the typical sweet spot but reasonable given the server covers applications, databases, servers, projects, services, and version info. Each tool corresponds to a concrete operation, so the count feels justified rather than bloated.

Completeness2/5

Application lifecycle coverage is fairly strong with create, get, list, start, stop, restart, and deploy, but update and delete are missing. Other resources are much thinner: databases only support list/create, servers list/create/validate, projects list/create, and services list/start/stop, leaving obvious gaps for a management tool.

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    A powerful Model Context Protocol server that enables AI assistants to manage Coolify infrastructure through natural language, supporting application deployment, database management, resource monitoring, and DevOps automation.
    19
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with Coolify self-hosted instances for application deployment, management, and monitoring. Features 4 unified tools optimized for VS Code's limits, covering app management, environment configuration, system administration, and built-in documentation.
    4
    169
    1
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    Enables AI assistants to interact with Coolify for complete infrastructure management including applications, databases, servers, deployments, and team operations. Provides 100% API coverage with 64 tools for managing the entire Coolify ecosystem through natural language.
    18
    25
    6
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables control and management of Coolify self-hosted PaaS instances, allowing you to deploy applications, manage databases, monitor servers, and execute operations directly from AI assistants.
    89
    32
    28
    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/JoshuaRileyDev/coolify-mcp-server'

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