create_certificate
Create a TLS certificate for Hetzner Cloud: upload an existing PEM certificate and private key, or request an auto-renewed Let's Encrypt certificate for domains in delegated primary DNS zones.
Instructions
Create a TLS certificate. type "uploaded" (default): provide certificate (PEM, leaf first then chain) and private_key (PEM); supported keys RSA 2048/3072/4096 or ECDSA P-256/P-384; you must renew it yourself before not_valid_after. type "managed": provide domain_names; Hetzner requests and auto-renews a Let's Encrypt cert. Managed (Let's Encrypt) certificates are validated via DNS: every domain must be in a PRIMARY Hetzner DNS zone (create_zone) that is delegated to Hetzner's nameservers at the registrar, and any CAA record must allow Let's Encrypt. Typical failures: dns_zone_not_found, dns_zone_is_secondary_zone, could_not_verify_domain_delegated_to_zone, caa_record_does_not_allow_ca, ca_dns_validation_failed, Let's Encrypt rate limits. Returns {certificate, action}: action tracks managed issuance (poll get_action), null for uploaded. Certificates are referenced by ID in Load Balancer HTTPS services: http.certificates in add_load_balancer_service / update_load_balancer_service
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": {
"name": "<name>"
},
"name": "create_certificate"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Unique name within the project | |
| type | No | uploaded | |
| labels | No | ||
| certificate | No | uploaded only: certificate + chain in PEM, each cert certifying the preceding one | |
| private_key | No | uploaded only: private key in PEM. Sent to the API only; never returned | |
| domain_names | No | managed only: domains to include, e.g. ["example.com", "www.example.com"] |