> For the complete documentation index, see [llms.txt](https://docs.apolo.us/index/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apolo.us/index/apolo-mcp/capabilities/tools/applications.md).

# Applications

[Back to the MCP tool reference](/index/apolo-mcp/capabilities/tools.md).

## `list_app_templates`

List templates in an explicitly resolved context, bounded to 100.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    }
  },
  "title": "list_app_templatesArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "list_app_templatesDictOutput",
  "type": "object"
}
```

## `list_app_template_versions`

List bounded versions of one Apps template.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    },
    "template_name": {
      "title": "Template Name",
      "type": "string"
    }
  },
  "required": [
    "template_name"
  ],
  "title": "list_app_template_versionsArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "list_app_template_versionsDictOutput",
  "type": "object"
}
```

## `get_app_template`

Get the exact template version and current input schema.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    },
    "template_name": {
      "title": "Template Name",
      "type": "string"
    },
    "template_version": {
      "default": "latest",
      "title": "Template Version",
      "type": "string"
    }
  },
  "required": [
    "template_name"
  ],
  "title": "get_app_templateArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "get_app_templateDictOutput",
  "type": "object"
}
```

## `list_apps`

List Apps with state filtering and a strict result bound.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "include_inactive": {
      "default": false,
      "title": "Include Inactive",
      "type": "boolean"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    },
    "states": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "States"
    }
  },
  "title": "list_appsArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "list_appsDictOutput",
  "type": "object"
}
```

## `get_app`

Get one App and verify it belongs to the resolved context.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "app_id": {
      "title": "App Id",
      "type": "string"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    }
  },
  "required": [
    "app_id"
  ],
  "title": "get_appArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "get_appDictOutput",
  "type": "object"
}
```

## `wait_for_app`

Wait a bounded time for an App to reach a terminal health state.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "app_id": {
      "title": "App Id",
      "type": "string"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "poll_interval_seconds": {
      "default": 2,
      "title": "Poll Interval Seconds",
      "type": "number"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    },
    "timeout_seconds": {
      "default": 120,
      "title": "Timeout Seconds",
      "type": "number"
    }
  },
  "required": [
    "app_id"
  ],
  "title": "wait_for_appArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "wait_for_appDictOutput",
  "type": "object"
}
```

## `get_app_logs`

Read bounded UTF-8 logs with timeout and explicit truncation metadata.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "app_id": {
      "title": "App Id",
      "type": "string"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "max_bytes": {
      "default": 32768,
      "title": "Max Bytes",
      "type": "integer"
    },
    "max_lines": {
      "default": 1000,
      "title": "Max Lines",
      "type": "integer"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    },
    "since": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Since"
    },
    "timeout_seconds": {
      "default": 15,
      "title": "Timeout Seconds",
      "type": "number"
    },
    "timestamps": {
      "default": false,
      "title": "Timestamps",
      "type": "boolean"
    }
  },
  "required": [
    "app_id"
  ],
  "title": "get_app_logsArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "get_app_logsDictOutput",
  "type": "object"
}
```

## `get_app_events`

Return bounded, credential-redacted App status events.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "app_id": {
      "title": "App Id",
      "type": "string"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    }
  },
  "required": [
    "app_id"
  ],
  "title": "get_app_eventsArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "get_app_eventsDictOutput",
  "type": "object"
}
```

## `get_app_output`

Return bounded, credential-redacted output for one App.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "app_id": {
      "title": "App Id",
      "type": "string"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "max_chars": {
      "default": 20000,
      "title": "Max Chars",
      "type": "integer"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    }
  },
  "required": [
    "app_id"
  ],
  "title": "get_app_outputArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "get_app_outputDictOutput",
  "type": "object"
}
```

## `get_app_input`

Return bounded App input with likely credential values redacted.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "app_id": {
      "title": "App Id",
      "type": "string"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "max_chars": {
      "default": 20000,
      "title": "Max Chars",
      "type": "integer"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    },
    "revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Revision"
    }
  },
  "required": [
    "app_id"
  ],
  "title": "get_app_inputArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "get_app_inputDictOutput",
  "type": "object"
}
```

## `list_app_revisions`

List bounded configuration revisions after verifying App context.

**Operation type:** read-only

**Annotations:** read-only `true`, destructive `false`, idempotent `true`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "app_id": {
      "title": "App Id",
      "type": "string"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    }
  },
  "required": [
    "app_id"
  ],
  "title": "list_app_revisionsArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "list_app_revisionsDictOutput",
  "type": "object"
}
```

## `plan_app_install`

Write exact install YAML plus atomic plan.json/PLAN.md for review.

**Operation type:** planning

**Annotations:** read-only `false`, destructive `false`, idempotent `false`, open-world `false`

**Input schema:**

```json
{
  "properties": {
    "app_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "App Name"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "display_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Display Name"
    },
    "input_values": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Input Values"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    },
    "template_name": {
      "title": "Template Name",
      "type": "string"
    },
    "template_version": {
      "default": "latest",
      "title": "Template Version",
      "type": "string"
    },
    "ttl_seconds": {
      "default": 900,
      "title": "Ttl Seconds",
      "type": "integer"
    }
  },
  "required": [
    "template_name"
  ],
  "title": "plan_app_installArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "plan_app_installDictOutput",
  "type": "object"
}
```

## `plan_app_configure`

Seed exact YAML with SDK get\_input, patch it, and write a review plan.

**Operation type:** planning

**Annotations:** read-only `false`, destructive `false`, idempotent `false`, open-world `false`

**Input schema:**

```json
{
  "properties": {
    "app_id": {
      "title": "App Id",
      "type": "string"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "comment": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Comment"
    },
    "display_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Display Name"
    },
    "input_patch": {
      "additionalProperties": true,
      "title": "Input Patch",
      "type": "object"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    },
    "ttl_seconds": {
      "default": 900,
      "title": "Ttl Seconds",
      "type": "integer"
    }
  },
  "required": [
    "app_id",
    "input_patch"
  ],
  "title": "plan_app_configureArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "plan_app_configureDictOutput",
  "type": "object"
}
```

## `plan_app_rollback`

Write a no-YAML rollback plan bound to current and target revisions.

**Operation type:** planning

**Annotations:** read-only `false`, destructive `false`, idempotent `false`, open-world `false`

**Input schema:**

```json
{
  "properties": {
    "app_id": {
      "title": "App Id",
      "type": "string"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "comment": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Comment"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    },
    "revision_number": {
      "title": "Revision Number",
      "type": "integer"
    },
    "ttl_seconds": {
      "default": 900,
      "title": "Ttl Seconds",
      "type": "integer"
    }
  },
  "required": [
    "app_id",
    "revision_number"
  ],
  "title": "plan_app_rollbackArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "plan_app_rollbackDictOutput",
  "type": "object"
}
```

## `plan_app_uninstall`

Write a no-YAML uninstall plan bound to exact App/current revision.

**Operation type:** planning

**Annotations:** read-only `false`, destructive `false`, idempotent `false`, open-world `false`

**Input schema:**

```json
{
  "properties": {
    "app_id": {
      "title": "App Id",
      "type": "string"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "force": {
      "default": false,
      "title": "Force",
      "type": "boolean"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    },
    "ttl_seconds": {
      "default": 900,
      "title": "Ttl Seconds",
      "type": "integer"
    }
  },
  "required": [
    "app_id"
  ],
  "title": "plan_app_uninstallArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "plan_app_uninstallDictOutput",
  "type": "object"
}
```

## `install_app`

Apply one approved, unexpired, unchanged install plan exactly once.

**Operation type:** write

**Annotations:** read-only `false`, destructive `false`, idempotent `false`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "approved": {
      "title": "Approved",
      "type": "boolean"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "plan_id": {
      "title": "Plan Id",
      "type": "string"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    }
  },
  "required": [
    "plan_id",
    "approved"
  ],
  "title": "install_appArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "install_appDictOutput",
  "type": "object"
}
```

## `configure_app`

Apply one approved, unchanged configure plan after revision drift check.

**Operation type:** write

**Annotations:** read-only `false`, destructive `false`, idempotent `false`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "approved": {
      "title": "Approved",
      "type": "boolean"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "plan_id": {
      "title": "Plan Id",
      "type": "string"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    }
  },
  "required": [
    "plan_id",
    "approved"
  ],
  "title": "configure_appArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "configure_appDictOutput",
  "type": "object"
}
```

## `rollback_app`

Apply an approved rollback plan; server high-risk policy must allow it.

**Operation type:** destructive

**Annotations:** read-only `false`, destructive `true`, idempotent `false`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "approved": {
      "title": "Approved",
      "type": "boolean"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "plan_id": {
      "title": "Plan Id",
      "type": "string"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    }
  },
  "required": [
    "plan_id",
    "approved"
  ],
  "title": "rollback_appArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "rollback_appDictOutput",
  "type": "object"
}
```

## `uninstall_app`

Apply an approved uninstall plan; server high-risk policy must allow it.

**Operation type:** destructive

**Annotations:** read-only `false`, destructive `true`, idempotent `false`, open-world `true`

**Input schema:**

```json
{
  "properties": {
    "approved": {
      "title": "Approved",
      "type": "boolean"
    },
    "cluster": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cluster"
    },
    "org": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Org"
    },
    "plan_id": {
      "title": "Plan Id",
      "type": "string"
    },
    "project": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project"
    }
  },
  "required": [
    "plan_id",
    "approved"
  ],
  "title": "uninstall_appArguments",
  "type": "object"
}
```

**Output schema:**

```json
{
  "additionalProperties": true,
  "title": "uninstall_appDictOutput",
  "type": "object"
}
```
