{"openapi":"3.1.0","info":{"title":"Hetzner Robot (BYOK) API","version":"0.1.0","description":"Hetzner Robot (BYOK) lets an AI assistant read your own Hetzner Robot data through the Hetzner Robot API with a key you supply (Robot web service user name). Read-only: 9 tools (list_servers, get_server, list_ips, list_subnets, list_failover_ips, list_reverse_dns, list_ssh_keys, list_vswitches, get_reset_options). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-hetzner-robot.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-hetzner-robot/docs"},"termsOfService":"https://connectorbay.com/byok-hetzner-robot/terms"},"servers":[{"url":"https://byok-hetzner-robot.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-hetzner-robot/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_servers":{"post":{"operationId":"list_servers","summary":"List the dedicated servers of the Robot account with number, name, main IP, product, data center, status, traffic quota,","description":"List the dedicated servers of the Robot account with number, name, main IP, product, data center, status, traffic quota, cancellation flag and paid-until date. Limit: 200 requests per hour. Use for \"Which dedicated servers do I have at Hetzner and where are they\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_serversArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_server":{"post":{"operationId":"get_server","summary":"Get one dedicated server by number: name, IPs, subnets, product, data center, traffic quota, paid-until date and availab","description":"Get one dedicated server by number: name, IPs, subnets, product, data center, traffic quota, paid-until date and availability flags for reset, rescue, VNC, Windows, Plesk, cPanel, wake-on-LAN and hot swap. Limit: 200 requests per hour. Use for \"Show the details of Hetzner server 321\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server_number":{"description":"Numeric server id (server_number) as shown in Robot and returned by list_servers.","title":"Server Number","type":"integer"}},"required":["server_number"],"title":"get_serverArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_ips":{"post":{"operationId":"list_ips","summary":"List the single IP addresses with owning server, lock flag, separate MAC and traffic warning limits. Limit: 5000 request","description":"List the single IP addresses with owning server, lock flag, separate MAC and traffic warning limits. Limit: 5000 requests per hour. Answers 404 when there are none. Use for \"Which IP addresses belong to my Hetzner server 203.0.113.10\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server_ip":{"anyOf":[{"maxLength":45,"type":"string"},{"type":"null"}],"default":null,"description":"Only items assigned to the server with this main IP address.","title":"Server Ip"}},"title":"list_ipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_subnets":{"post":{"operationId":"list_subnets","summary":"List the subnets with mask, gateway, owning server, failover flag, lock flag and traffic limits. Limit: 5000 requests pe","description":"List the subnets with mask, gateway, owning server, failover flag, lock flag and traffic limits. Limit: 5000 requests per hour. Answers 404 when there are none. Use for \"What subnets are routed to my Hetzner servers\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server_ip":{"anyOf":[{"maxLength":45,"type":"string"},{"type":"null"}],"default":null,"description":"Only items assigned to the server with this main IP address.","title":"Server Ip"}},"title":"list_subnetsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_failover_ips":{"post":{"operationId":"list_failover_ips","summary":"List failover IPs with netmask, owning server and the server currently receiving the traffic. Limit: 100 requests per ho","description":"List failover IPs with netmask, owning server and the server currently receiving the traffic. Limit: 100 requests per hour. Answers 404 when there are none. Use for \"Which server currently receives my Hetzner failover IP\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_failover_ipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_reverse_dns":{"post":{"operationId":"list_reverse_dns","summary":"List reverse DNS (PTR) entries of the account's IP addresses. Limit: 500 requests per hour. Answers 404 when there are n","description":"List reverse DNS (PTR) entries of the account's IP addresses. Limit: 500 requests per hour. Answers 404 when there are none. Use for \"What PTR records are set for my Hetzner IPs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server_ip":{"anyOf":[{"maxLength":45,"type":"string"},{"type":"null"}],"default":null,"description":"Only items assigned to the server with this main IP address.","title":"Server Ip"}},"title":"list_reverse_dnsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_ssh_keys":{"post":{"operationId":"list_ssh_keys","summary":"List the SSH public keys stored in Robot with name, fingerprint, algorithm, size and creation date. The key data itself ","description":"List the SSH public keys stored in Robot with name, fingerprint, algorithm, size and creation date. The key data itself is not returned. Limit: 500 requests per hour. Use for \"Which SSH keys are stored in my Hetzner Robot account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_ssh_keysArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_vswitches":{"post":{"operationId":"list_vswitches","summary":"List vSwitches with id, name, VLAN id and cancellation flag. Limit: 500 requests per hour. Use for \"Which vSwitches do I","description":"List vSwitches with id, name, VLAN id and cancellation flag. Limit: 500 requests per hour. Use for \"Which vSwitches do I have at Hetzner\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_vswitchesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_reset_options":{"post":{"operationId":"get_reset_options","summary":"Show which reset types (software, hardware, manual, power) a server supports and its operating status. Only reads the op","description":"Show which reset types (software, hardware, manual, power) a server supports and its operating status. Only reads the options; it does not reset anything. Limit: 500 requests per hour. Use for \"Which reset options does Hetzner server 321 offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"server_number":{"description":"Numeric server id (server_number) as shown in Robot and returned by list_servers.","title":"Server Number","type":"integer"}},"required":["server_number"],"title":"get_reset_optionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}