> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atako.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Hetzner Cloud

> Connect Hetzner Cloud to your Atako agents — 13 read and 3 write actions.

Let your agents monitor and operate a Hetzner Cloud project — list and inspect servers, power them on, shut them down or reboot them, follow the resulting actions, and browse images, server types, locations, volumes, networks, firewalls, load balancers, primary IPs, certificates and SSH keys.

## Connection

* **Authentication**: API key (Hetzner Cloud API token).

<Note>
  Sign in to the Hetzner Console (console.hetzner.com) and open your project → Security → API tokens → Generate API token. Enter a description and choose a permission: "Read" is enough for the list and get actions; "Read & Write" is required to power on, shut down or reboot a server. Copy the token — it cannot be viewed again. A token is bound to one project: create one per project.

  See [Hetzner Cloud's documentation](https://docs.hetzner.com/cloud/api/getting-started/generating-api-token).
</Note>

## Read actions (13)

| Action | Description |
| - | - |
| `get_action` | Get the status of an asynchronous action by id (integer: the action.id returned by power\_on\_server, shutdown\_server or reboot\_server): command, status ("running", "success" or "error"), progress (0-100), started / finished times, affected resources and error \{ code, message }. |
| `get_server` | Get one server by id (integer, see list\_servers): status, public and private network, server type, location, image, volumes, protection and labels. |
| `list_certificates` | List the TLS certificates (name, type uploaded or managed, domain names, fingerprint, validity dates, issuance / renewal status, load balancers using them; the public PEM chain, never a private key). Optional: type (array of uploaded, managed), name (exact certificate name), label\_selector, sort (array of id, name, created, each optionally suffixed :asc or :desc). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |
| `list_firewalls` | List the firewalls with their rules and the resources they apply to. Optional: name (exact firewall name), label\_selector, sort (array of id, name, created, each optionally suffixed :asc or :desc). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |
| `list_images` | List the images available to the project (system, app, snapshot, backup). Optional: type (array of system, app, snapshot, backup), status (array of available, creating, unavailable), bound\_to (array of server ids as strings — backup images only), include\_deprecated (boolean), name (exact image name, e.g. "ubuntu-24.04"), label\_selector, architecture ("x86" or "arm"), sort (array of id, name, created, each optionally suffixed :asc or :desc). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |
| `list_load_balancers` | List the load balancers (public IPs, services, targets and their health status, algorithm, location). Optional: name (exact load balancer name), label\_selector, sort (array of id, name, created, each optionally suffixed :asc or :desc). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |
| `list_locations` | List the locations (name such as "fsn1", city, country, network zone). Optional: name (exact location name), sort (array of id, name, each optionally suffixed :asc or :desc). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |
| `list_networks` | List the private networks (IP range, subnets, routes, attached servers and load balancers). Optional: name (exact network name), label\_selector, sort (array of id, name, created, each optionally suffixed :asc or :desc). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |
| `list_primary_ips` | List the primary IPs (IPv4 / IPv6 address, assigned server, reverse DNS, auto-delete). Optional: name (exact primary IP name), label\_selector, ip (exact IP address), sort (array of id, created, each optionally suffixed :asc or :desc). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |
| `list_server_types` | List the server types (name such as "cpx22", cores, memory, disk, CPU type, architecture, availability per location). Optional: name (exact server type name). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |
| `list_servers` | List the servers of the project (id, name, status, public IPs, server type, location, image). No argument required. Optional: name (exact server name), label\_selector (e.g. "env=prod"), status (array of running, initializing, starting, stopping, off, deleting, migrating, rebuilding, unknown), sort (array of id, name, created, each optionally suffixed :asc or :desc). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |
| `list_ssh_keys` | List the SSH keys registered in the project (name, fingerprint, public key, labels — Hetzner never stores a private key). Optional: name (exact key name), fingerprint (exact fingerprint, e.g. "03:c7:55:…"), label\_selector, sort (array of id, name, each optionally suffixed :asc or :desc). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |
| `list_volumes` | List the volumes (size, location, attached server id, Linux device, status). Optional: status (array of available, creating), name (exact volume name), label\_selector, sort (array of id, name, created, each optionally suffixed :asc or :desc). Pagination: page (integer ≥ 1), per\_page (integer 1-50, default 25). |

## Write actions (3)

| Action | Description |
| - | - |
| `power_on_server` | Power on a server. Arguments: id (integer, the numeric server id from list\_servers — not a string, not a name). No body. Returns \{ action: \{ id, command, status, progress } }: poll get\_action with action.id until status is "success" or "error". |
| `reboot_server` | Gracefully reboot a server by sending an ACPI request (the operating system must handle ACPI). Arguments: id (integer, the numeric server id from list\_servers — not a string, not a name). No body. Returns \{ action: \{ id, command, status, progress } }: poll get\_action with action.id. |
| `shutdown_server` | Gracefully shut down a server by sending an ACPI shutdown request (the operating system must handle ACPI; a "success" action only means the request was sent). Arguments: id (integer, the numeric server id from list\_servers — not a string, not a name). No body. Returns \{ action: \{ id, command, status, progress } }: poll get\_action with action.id, then get\_server to confirm status "off". |

## Permissions

Every action above must be explicitly granted to an agent before it can be used. See [Permissions](/integrations/permissions) for the grant model and [Security](/integrations/security) for how credentials are protected.

***

*Last reviewed against the provider API: September 2026.*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.