# Dockhold

> Deploy your project to a live HTTPS URL from your AI tool; read logs, set variables, resize apps.

- name: eu.dockhold/dockhold
- version: 0.2.0
- connection class: R1 (autonomous)
- trust: 100/100
- quality: –/100 (not scored)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/eu.dockhold%2Fdockhold
- tools: https://api.protogrid.dev/v1/servers/eu.dockhold%2Fdockhold/tools

**An agent can connect on its own if it already holds `DOCKHOLD_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "dockhold": {
      "type": "http",
      "url": "https://api.dockhold.eu/mcp",
      "headers": {
        "Authorization": "Bearer ${DOCKHOLD_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${DOCKHOLD_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 100
- drivers: +repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-97% +updated-24d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality –/100 (not scored)

Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: n/a (weight 30)

- n/a `tools.descriptions`, `tools.description_length`, `tools.schemas`, `tools.annotations`, `tools.directory_hints`, `tools.token_cost`, `tools.api_dump`: tool list unknown (behind auth, not probed, or empty)

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool list unknown

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know dockhold@0.2.2

- tools: unknown
- tools last changed: 2026-09-25T22:24:49.440Z
- badge: [![protogrid quality](https://protogrid.dev/badge/eu.dockhold/dockhold.svg)](https://protogrid.dev/servers/eu.dockhold/dockhold)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-09-25 `list_github_repos` removed
  - List the GitHub repositories you have connected to Dockhold, across every installation. Call this before deploy_app when the target repo is private, or when the user asks which repos they can deploy. Each repo comes with its installation_id: pass that (with the repo's clone URL) to deploy_app to deploy a PRIVATE repository. Public repos don't need it.
- 2026-09-25 `unset_app_variable` removed
  - Remove a single plain environment variable from an app and roll it out. The pair to set_app_variable; setting a variable to an empty string is not the same thing to most apps. Variables Dockhold sets itself (PORT, DATABASE_URL, DATA_DIR and the app's address) cannot be removed. For a secret, call unset_app_secret instead.
- 2026-09-25 `set_app_variable` removed
  - Set a single environment variable on an app and roll it out. Call this when an app needs plain configuration such as LOG_LEVEL or a feature flag. For secrets (API keys, passwords, tokens) call set_app_secret instead: this tool rejects secret-looking keys.
- 2026-09-25 `redeploy_app` removed
  - Restart an existing app (rolling restart with zero downtime). Call this after changing configuration, or to recover an app that is stuck or misbehaving. It reruns the current build; it does not pull new code. If this app has storage, it is stopped and started again instead, so it is unreachable for a few seconds.
- 2026-09-25 `list_apps` removed
  - List the apps in your Dockhold account, with each app's id, status, URL, and source repo. Call this first whenever the user asks about their apps, or when you need an app_id for any other tool.
- 2026-09-25 `list_secrets` removed
  - List the names of every secret stored in the account vault and how many apps use each, so you can attach an existing one with bind_app_secret instead of asking the user for the value again. Returns names and counts only. Secret values cannot be read back through this connection at all.
- 2026-09-25 `get_app_status` removed
  - Get detailed status for one app: deploy status, URL, last deployed commit, and any error message. Call this to check whether a deploy has finished, to get an app's live URL, or to see why an app is in error. Status DEPLOYING with ready_at set means the new version is already reachable at its URL and Dockhold is confirming it stays up; the user can open it now. It moves to RUNNING once confirmed, or to ERROR with an error_message if it crashed.
- 2026-09-25 `deploy_group` removed
  - Deploy several connected services in one go (e.g. a frontend + an API). Call this when the user's project is split across multiple repos that must talk to each other; for a single repo use deploy_app. Each service is a public GitHub repo that gets its own URL. Wire them by setting an env var to the exact token ${services.<otherServiceName>.url} — Dockhold injects that service's live URL once it deploys. Give the backend its own database with "db":"enable" (DATABASE_URL is injected; a pure frontend doesn't need one). Builds run in parallel; poll get_app_status with each returned app_id.
- 2026-09-25 `resize_database_storage` removed
  - Grow the disk of an app's managed database. Call this when the database is running out of disk space. GROW-ONLY: you can increase storage but never shrink it. storage_gb must be one of the sizes get_resource_usage reports under storage.steps_gb and fit your storage pool. Applied online with no database restart. Only works if the app has a managed database.
- 2026-09-25 `resize_app` removed
  - Change how much memory one app gets. Call this when an app is running out of memory (OOM) or the user asks to make an app bigger or smaller. memory_mb must be one of the sizes get_resource_usage reports under compute.steps_mb, and the new size has to fit your available compute pool (call get_resource_usage first). Applied with a zero-downtime rolling update. If this app has storage, it is stopped and started again instead, so it is unreachable for a few seconds.

Full history: https://api.protogrid.dev/v1/servers/eu.dockhold%2Fdockhold/changes

## Dependencies

- npm dockhold@0.2.2: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://api.dockhold.eu/mcp (streamable-http, auth api_key ${DOCKHOLD_TOKEN}, reachable true, uptime30d 0.96581197)

## Packages

- npm dockhold@0.2.2

## Tools (0)

_none observed_
