Exoscale · Capability

Exoscale API — elastic-ip

Exoscale API — elastic-ip. 8 operations. Lead operation: Create an Elastic IP. Self-contained Naftiko capability covering one Exoscale business surface.

Run with Naftiko Exoscaleelastic-ip

What You Can Do

POST
Createelasticip — Create an Elastic IP
/v1/elastic-ip
GET
Listelasticips — List Elastic IPs
/v1/elastic-ip
PUT
Updateelasticip — Update an Elastic IP
/v1/elastic-ip/{id}
GET
Getelasticip — Retrieve Elastic IP details
/v1/elastic-ip/{id}
DELETE
Deleteelasticip — Delete an Elastic IP
/v1/elastic-ip/{id}
DELETE
Resetelasticipfield — Reset an Elastic IP field to its default value
/v1/elastic-ip/{id}/{field}
PUT
Attachinstancetoelasticip — Attach a Compute instance to an Elastic IP
/v1/elastic-ip/id-attach
PUT
Detachinstancefromelasticip — Detach a Compute instance from an Elastic IP
/v1/elastic-ip/id-detach

MCP Tools

create-elastic-ip

Create an Elastic IP

list-elastic-ips

List Elastic IPs

read-only idempotent
update-elastic-ip

Update an Elastic IP

idempotent
retrieve-elastic-ip-details

Retrieve Elastic IP details

read-only idempotent
delete-elastic-ip

Delete an Elastic IP

idempotent
reset-elastic-ip-field-its

Reset an Elastic IP field to its default value

idempotent
attach-compute-instance-elastic-ip

Attach a Compute instance to an Elastic IP

idempotent
detach-compute-instance-elastic-ip

Detach a Compute instance from an Elastic IP

idempotent

Capability Spec

exoscale-elastic-ip.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Exoscale API — elastic-ip
  description: 'Exoscale API — elastic-ip. 8 operations. Lead operation: Create an Elastic IP. Self-contained Naftiko capability
    covering one Exoscale business surface.'
  tags:
  - Exoscale
  - elastic-ip
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    EXOSCALE_API_KEY: EXOSCALE_API_KEY
capability:
  consumes:
  - type: http
    namespace: exoscale-elastic-ip
    baseUri: https://api-{zone}.exoscale.com/v2
    description: Exoscale API — elastic-ip business capability. Self-contained, no shared references.
    resources:
    - name: elastic-ip
      path: /elastic-ip
      operations:
      - name: createelasticip
        method: POST
        description: Create an Elastic IP
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: listelasticips
        method: GET
        description: List Elastic IPs
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: elastic-ip-id
      path: /elastic-ip/{id}
      operations:
      - name: updateelasticip
        method: PUT
        description: Update an Elastic IP
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: getelasticip
        method: GET
        description: Retrieve Elastic IP details
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
      - name: deleteelasticip
        method: DELETE
        description: Delete an Elastic IP
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
    - name: elastic-ip-id-field
      path: /elastic-ip/{id}/{field}
      operations:
      - name: resetelasticipfield
        method: DELETE
        description: Reset an Elastic IP field to its default value
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: field
          in: path
          type: string
          required: true
    - name: elastic-ip-id}:attach
      path: /elastic-ip/{id}:attach
      operations:
      - name: attachinstancetoelasticip
        method: PUT
        description: Attach a Compute instance to an Elastic IP
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: elastic-ip-id}:detach
      path: /elastic-ip/{id}:detach
      operations:
      - name: detachinstancefromelasticip
        method: PUT
        description: Detach a Compute instance from an Elastic IP
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
  exposes:
  - type: rest
    namespace: exoscale-elastic-ip-rest
    port: 8080
    description: REST adapter for Exoscale API — elastic-ip. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/elastic-ip
      name: elastic-ip
      description: REST surface for elastic-ip.
      operations:
      - method: POST
        name: createelasticip
        description: Create an Elastic IP
        call: exoscale-elastic-ip.createelasticip
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: listelasticips
        description: List Elastic IPs
        call: exoscale-elastic-ip.listelasticips
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/elastic-ip/{id}
      name: elastic-ip-id
      description: REST surface for elastic-ip-id.
      operations:
      - method: PUT
        name: updateelasticip
        description: Update an Elastic IP
        call: exoscale-elastic-ip.updateelasticip
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: getelasticip
        description: Retrieve Elastic IP details
        call: exoscale-elastic-ip.getelasticip
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteelasticip
        description: Delete an Elastic IP
        call: exoscale-elastic-ip.deleteelasticip
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/elastic-ip/{id}/{field}
      name: elastic-ip-id-field
      description: REST surface for elastic-ip-id-field.
      operations:
      - method: DELETE
        name: resetelasticipfield
        description: Reset an Elastic IP field to its default value
        call: exoscale-elastic-ip.resetelasticipfield
        with:
          id: rest.id
          field: rest.field
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/elastic-ip/id-attach
      name: elastic-ip-id-attach
      description: REST surface for elastic-ip-id}:attach.
      operations:
      - method: PUT
        name: attachinstancetoelasticip
        description: Attach a Compute instance to an Elastic IP
        call: exoscale-elastic-ip.attachinstancetoelasticip
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/elastic-ip/id-detach
      name: elastic-ip-id-detach
      description: REST surface for elastic-ip-id}:detach.
      operations:
      - method: PUT
        name: detachinstancefromelasticip
        description: Detach a Compute instance from an Elastic IP
        call: exoscale-elastic-ip.detachinstancefromelasticip
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: exoscale-elastic-ip-mcp
    port: 9090
    transport: http
    description: MCP adapter for Exoscale API — elastic-ip. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: create-elastic-ip
      description: Create an Elastic IP
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: exoscale-elastic-ip.createelasticip
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-elastic-ips
      description: List Elastic IPs
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: exoscale-elastic-ip.listelasticips
      outputParameters:
      - type: object
        mapping: $.
    - name: update-elastic-ip
      description: Update an Elastic IP
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: exoscale-elastic-ip.updateelasticip
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: retrieve-elastic-ip-details
      description: Retrieve Elastic IP details
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: exoscale-elastic-ip.getelasticip
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-elastic-ip
      description: Delete an Elastic IP
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: exoscale-elastic-ip.deleteelasticip
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: reset-elastic-ip-field-its
      description: Reset an Elastic IP field to its default value
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: exoscale-elastic-ip.resetelasticipfield
      with:
        id: tools.id
        field: tools.field
      outputParameters:
      - type: object
        mapping: $.
    - name: attach-compute-instance-elastic-ip
      description: Attach a Compute instance to an Elastic IP
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: exoscale-elastic-ip.attachinstancetoelasticip
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: detach-compute-instance-elastic-ip
      description: Detach a Compute instance from an Elastic IP
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: exoscale-elastic-ip.detachinstancefromelasticip
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.