Hetzner · Capability
Hetzner Cloud API — Primary IP Actions
Hetzner Cloud API — Primary IP Actions. 8 operations. Lead operation: List Actions. Self-contained Naftiko capability covering one Hetzner business surface.
What You Can Do
GET
Listprimaryipsactions
— List Actions
/v1/primary-ips/actions
GET
Getprimaryipsaction
— Get an Action
/v1/primary-ips/actions/{id}
GET
Listprimaryipactions
— List Actions for a Primary IP
/v1/primary-ips/{id}/actions
POST
Assignprimaryip
— Assign a Primary IP to a resource
/v1/primary-ips/{id}/actions/assign
POST
Changeprimaryipdnsptr
— Change reverse DNS records for a Primary IP
/v1/primary-ips/{id}/actions/change-dns-ptr
POST
Changeprimaryipprotection
— Change Primary IP Protection
/v1/primary-ips/{id}/actions/change-protection
POST
Unassignprimaryip
— Unassign a Primary IP from a resource
/v1/primary-ips/{id}/actions/unassign
GET
Getprimaryipaction
— Get an Action for a Primary IP
/v1/primary-ips/{id}/actions/{action-id}
MCP Tools
list-actions
List Actions
read-only
idempotent
get-action
Get an Action
read-only
idempotent
list-actions-primary-ip
List Actions for a Primary IP
read-only
idempotent
assign-primary-ip-resource
Assign a Primary IP to a resource
change-reverse-dns-records-primary
Change reverse DNS records for a Primary IP
change-primary-ip-protection
Change Primary IP Protection
unassign-primary-ip-resource
Unassign a Primary IP from a resource
get-action-primary-ip
Get an Action for a Primary IP
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: Hetzner Cloud API — Primary IP Actions
description: 'Hetzner Cloud API — Primary IP Actions. 8 operations. Lead operation: List Actions. Self-contained Naftiko
capability covering one Hetzner business surface.'
tags:
- Hetzner
- Primary IP Actions
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
HETZNER_API_KEY: HETZNER_API_KEY
capability:
consumes:
- type: http
namespace: hetzner-primary-ip-actions
baseUri: https://api.hetzner.cloud/v1
description: Hetzner Cloud API — Primary IP Actions business capability. Self-contained, no shared references.
resources:
- name: primary_ips-actions
path: /primary_ips/actions
operations:
- name: listprimaryipsactions
method: GET
description: List Actions
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: query
type: array
description: Filter the actions by ID. May be used multiple times.
- name: sort
in: query
type: array
description: Sort actions by field and direction. May be used multiple times.
- name: status
in: query
type: array
description: Filter the actions by status. May be used multiple times.
- name: page
in: query
type: integer
description: Page number to return. For more information, see "[Pagination](#description/pagination)".
- name: per_page
in: query
type: integer
description: Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)".
- name: primary_ips-actions-id
path: /primary_ips/actions/{id}
operations:
- name: getprimaryipsaction
method: GET
description: Get an Action
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: ID of the Action.
required: true
- name: primary_ips-id-actions
path: /primary_ips/{id}/actions
operations:
- name: listprimaryipactions
method: GET
description: List Actions for a Primary IP
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: ID of the Primary IP.
required: true
- name: sort
in: query
type: array
description: Sort actions by field and direction. May be used multiple times.
- name: status
in: query
type: array
description: Filter the actions by status. May be used multiple times.
- name: page
in: query
type: integer
description: Page number to return. For more information, see "[Pagination](#description/pagination)".
- name: per_page
in: query
type: integer
description: Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)".
- name: primary_ips-id-actions-assign
path: /primary_ips/{id}/actions/assign
operations:
- name: assignprimaryip
method: POST
description: Assign a Primary IP to a resource
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: ID of the Primary IP.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: primary_ips-id-actions-change_dns_ptr
path: /primary_ips/{id}/actions/change_dns_ptr
operations:
- name: changeprimaryipdnsptr
method: POST
description: Change reverse DNS records for a Primary IP
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: ID of the Primary IP.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: primary_ips-id-actions-change_protection
path: /primary_ips/{id}/actions/change_protection
operations:
- name: changeprimaryipprotection
method: POST
description: Change Primary IP Protection
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: ID of the Primary IP.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: primary_ips-id-actions-unassign
path: /primary_ips/{id}/actions/unassign
operations:
- name: unassignprimaryip
method: POST
description: Unassign a Primary IP from a resource
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: ID of the Primary IP.
required: true
- name: primary_ips-id-actions-action_id
path: /primary_ips/{id}/actions/{action_id}
operations:
- name: getprimaryipaction
method: GET
description: Get an Action for a Primary IP
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: ID of the Primary IP.
required: true
- name: action_id
in: path
type: integer
description: ID of the Action.
required: true
authentication:
type: bearer
token: '{{env.HETZNER_API_KEY}}'
exposes:
- type: rest
namespace: hetzner-primary-ip-actions-rest
port: 8080
description: REST adapter for Hetzner Cloud API — Primary IP Actions. One Spectral-compliant resource per consumed operation,
prefixed with /v1.
resources:
- path: /v1/primary-ips/actions
name: primary-ips-actions
description: REST surface for primary_ips-actions.
operations:
- method: GET
name: listprimaryipsactions
description: List Actions
call: hetzner-primary-ip-actions.listprimaryipsactions
with:
id: rest.id
sort: rest.sort
status: rest.status
page: rest.page
per_page: rest.per_page
outputParameters:
- type: object
mapping: $.
- path: /v1/primary-ips/actions/{id}
name: primary-ips-actions-id
description: REST surface for primary_ips-actions-id.
operations:
- method: GET
name: getprimaryipsaction
description: Get an Action
call: hetzner-primary-ip-actions.getprimaryipsaction
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- path: /v1/primary-ips/{id}/actions
name: primary-ips-id-actions
description: REST surface for primary_ips-id-actions.
operations:
- method: GET
name: listprimaryipactions
description: List Actions for a Primary IP
call: hetzner-primary-ip-actions.listprimaryipactions
with:
id: rest.id
sort: rest.sort
status: rest.status
page: rest.page
per_page: rest.per_page
outputParameters:
- type: object
mapping: $.
- path: /v1/primary-ips/{id}/actions/assign
name: primary-ips-id-actions-assign
description: REST surface for primary_ips-id-actions-assign.
operations:
- method: POST
name: assignprimaryip
description: Assign a Primary IP to a resource
call: hetzner-primary-ip-actions.assignprimaryip
with:
id: rest.id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/primary-ips/{id}/actions/change-dns-ptr
name: primary-ips-id-actions-change-dns-ptr
description: REST surface for primary_ips-id-actions-change_dns_ptr.
operations:
- method: POST
name: changeprimaryipdnsptr
description: Change reverse DNS records for a Primary IP
call: hetzner-primary-ip-actions.changeprimaryipdnsptr
with:
id: rest.id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/primary-ips/{id}/actions/change-protection
name: primary-ips-id-actions-change-protection
description: REST surface for primary_ips-id-actions-change_protection.
operations:
- method: POST
name: changeprimaryipprotection
description: Change Primary IP Protection
call: hetzner-primary-ip-actions.changeprimaryipprotection
with:
id: rest.id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/primary-ips/{id}/actions/unassign
name: primary-ips-id-actions-unassign
description: REST surface for primary_ips-id-actions-unassign.
operations:
- method: POST
name: unassignprimaryip
description: Unassign a Primary IP from a resource
call: hetzner-primary-ip-actions.unassignprimaryip
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- path: /v1/primary-ips/{id}/actions/{action-id}
name: primary-ips-id-actions-action-id
description: REST surface for primary_ips-id-actions-action_id.
operations:
- method: GET
name: getprimaryipaction
description: Get an Action for a Primary IP
call: hetzner-primary-ip-actions.getprimaryipaction
with:
id: rest.id
action_id: rest.action_id
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: hetzner-primary-ip-actions-mcp
port: 9090
transport: http
description: MCP adapter for Hetzner Cloud API — Primary IP Actions. One tool per consumed operation, routed inline through
this capability's consumes block.
tools:
- name: list-actions
description: List Actions
hints:
readOnly: true
destructive: false
idempotent: true
call: hetzner-primary-ip-actions.listprimaryipsactions
with:
id: tools.id
sort: tools.sort
status: tools.status
page: tools.page
per_page: tools.per_page
outputParameters:
- type: object
mapping: $.
- name: get-action
description: Get an Action
hints:
readOnly: true
destructive: false
idempotent: true
call: hetzner-primary-ip-actions.getprimaryipsaction
with:
id: tools.id
outputParameters:
- type: object
mapping: $.
- name: list-actions-primary-ip
description: List Actions for a Primary IP
hints:
readOnly: true
destructive: false
idempotent: true
call: hetzner-primary-ip-actions.listprimaryipactions
with:
id: tools.id
sort: tools.sort
status: tools.status
page: tools.page
per_page: tools.per_page
outputParameters:
- type: object
mapping: $.
- name: assign-primary-ip-resource
description: Assign a Primary IP to a resource
hints:
readOnly: false
destructive: false
idempotent: false
call: hetzner-primary-ip-actions.assignprimaryip
with:
id: tools.id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: change-reverse-dns-records-primary
description: Change reverse DNS records for a Primary IP
hints:
readOnly: false
destructive: false
idempotent: false
call: hetzner-primary-ip-actions.changeprimaryipdnsptr
with:
id: tools.id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: change-primary-ip-protection
description: Change Primary IP Protection
hints:
readOnly: false
destructive: false
idempotent: false
call: hetzner-primary-ip-actions.changeprimaryipprotection
with:
id: tools.id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: unassign-primary-ip-resource
description: Unassign a Primary IP from a resource
hints:
readOnly: false
destructive: false
idempotent: false
call: hetzner-primary-ip-actions.unassignprimaryip
with:
id: tools.id
outputParameters:
- type: object
mapping: $.
- name: get-action-primary-ip
description: Get an Action for a Primary IP
hints:
readOnly: true
destructive: false
idempotent: true
call: hetzner-primary-ip-actions.getprimaryipaction
with:
id: tools.id
action_id: tools.action_id
outputParameters:
- type: object
mapping: $.