Skip to main content
Glama

install_app

Destructive

Install a self-hosted app via Docker Compose with automatic checks for Docker, ports, and duplicates; refusals include reasons and volume-state warnings.

Instructions

Install a self-hosted app via docker compose. Pre-checks docker, ports, and duplicates automatically, and a refusal comes back as a result with the reasons rather than as an error. warning is present when an earlier install of the app left state in Docker volumes this install could not carry over

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "app": "<app>"
    },
    "name": "install_app"
  }
}

Input Schema

NameRequiredDescriptionDefault
appYesApp name (e.g. uptime-kuma, vaultwarden)
portNoCustom host port (optional, uses default if omitted)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.41.0
    • changedInput schema / properties / port / type
      Previous value: -"string"New value: +"integer"
  2. First observedv0.10.2

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already signal destructiveHint=true, and the description adds genuinely useful behavior: automatic pre-checks for docker/ports/duplicates and the key fact that refusals return as results rather than errors. It also discloses a 'warning' outcome when leftover Docker volumes exist. It stops short of stating permission requirements or what a successful result contains, keeping it at 4.

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?

Front-loaded with the core action in the first sentence, and every subsequent clause (pre-checks, refusal-as-result, warning) earns its place. The trailing warning clause is slightly fragmentary but still dense with signal.

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?

With no output schema, the description compensates by explaining refusal and warning semantics, which is exactly what an agent needs to interpret results. It lacks detail on success output and permissions, but for a two-parameter install tool it is largely complete.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (app, port) are already documented, and the description adds no additional meaning such as port conflict behavior or accepted app name formats. Baseline 3 is appropriate when the schema carries the parameter burden.

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?

States a specific verb and resource ('Install a self-hosted app via docker compose'), which cleanly separates it from siblings like install_uninstall, install_purge, and install_status. An agent can identify this as the creation step of the install lifecycle without opening the 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?

The description implies usage (install an app) and explains that pre-checks happen automatically, but never explicitly says when to choose this over install_uninstall, install_purge, or install_status. No exclusion or prerequisite guidance is given beyond the implicit lifecycle ordering.

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