Equinix · Capability

Metal API — Ports

Metal API — Ports. 14 operations. Lead operation: Retrieve a port. Self-contained Naftiko capability covering one Equinix business surface.

Run with Naftiko EquinixPorts

What You Can Do

GET
Findportbyid — Retrieve a port
/v1/ports/{id}
POST
Assignport — Assign a port to virtual network
/v1/ports/{id}/assign
POST
Bondport — Enabling bonding
/v1/ports/{id}/bond
POST
Convertlayer2 — Convert to Layer 2
/v1/ports/{id}/convert/layer-2
POST
Convertlayer3 — Convert to Layer 3
/v1/ports/{id}/convert/layer-3
POST
Disbondport — Disabling bonding
/v1/ports/{id}/disbond
DELETE
Deletenativevlan — Remove native VLAN
/v1/ports/{id}/native-vlan
POST
Assignnativevlan — Assign a native VLAN
/v1/ports/{id}/native-vlan
POST
Unassignport — Unassign a port
/v1/ports/{id}/unassign
GET
Findportvlanassignments — List Current VLAN assignments for a port
/v1/ports/{id}/vlan-assignments
GET
Findportvlanassignmentbatches — List the VLAN Assignment Batches for a port
/v1/ports/{id}/vlan-assignments/batches
POST
Createportvlanassignmentbatch — Create a new Port-VLAN Assignment management batch
/v1/ports/{id}/vlan-assignments/batches
GET
Findportvlanassignmentbatchbyportidandbatchid — Retrieve a VLAN Assignment Batch's details
/v1/ports/{id}/vlan-assignments/batches/{batch-id}
GET
Findportvlanassignmentbyportidandassignmentid — Show a particular Port VLAN assignment's details
/v1/ports/{id}/vlan-assignments/{assignment-id}

MCP Tools

retrieve-port

Retrieve a port

read-only idempotent
assign-port-virtual-network

Assign a port to virtual network

enabling-bonding

Enabling bonding

convert-layer-2

Convert to Layer 2

convert-layer-3

Convert to Layer 3

disabling-bonding

Disabling bonding

remove-native-vlan

Remove native VLAN

idempotent
assign-native-vlan

Assign a native VLAN

unassign-port

Unassign a port

list-current-vlan-assignments-port

List Current VLAN assignments for a port

read-only idempotent
list-vlan-assignment-batches-port

List the VLAN Assignment Batches for a port

read-only idempotent
create-new-port-vlan-assignment

Create a new Port-VLAN Assignment management batch

retrieve-vlan-assignment-batch-s-details

Retrieve a VLAN Assignment Batch's details

read-only idempotent
show-particular-port-vlan-assignment-s

Show a particular Port VLAN assignment's details

read-only idempotent

Capability Spec

metal-ports.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Metal API — Ports
  description: 'Metal API — Ports. 14 operations. Lead operation: Retrieve a port. Self-contained Naftiko capability covering
    one Equinix business surface.'
  tags:
  - Equinix
  - Ports
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    EQUINIX_API_KEY: EQUINIX_API_KEY
capability:
  consumes:
  - type: http
    namespace: metal-ports
    baseUri: https://api.equinix.com/metal/v1
    description: Metal API — Ports business capability. Self-contained, no shared references.
    resources:
    - name: ports-id
      path: /ports/{id}
      operations:
      - name: findportbyid
        method: GET
        description: Retrieve a port
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
    - name: ports-id-assign
      path: /ports/{id}/assign
      operations:
      - name: assignport
        method: POST
        description: Assign a port to virtual network
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: ports-id-bond
      path: /ports/{id}/bond
      operations:
      - name: bondport
        method: POST
        description: Enabling bonding
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: bulk_enable
          in: query
          type: boolean
          description: enable both ports
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
    - name: ports-id-convert-layer-2
      path: /ports/{id}/convert/layer-2
      operations:
      - name: convertlayer2
        method: POST
        description: Convert to Layer 2
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: ports-id-convert-layer-3
      path: /ports/{id}/convert/layer-3
      operations:
      - name: convertlayer3
        method: POST
        description: Convert to Layer 3
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: ports-id-disbond
      path: /ports/{id}/disbond
      operations:
      - name: disbondport
        method: POST
        description: Disabling bonding
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: bulk_disable
          in: query
          type: boolean
          description: disable both ports
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
    - name: ports-id-native-vlan
      path: /ports/{id}/native-vlan
      operations:
      - name: deletenativevlan
        method: DELETE
        description: Remove native VLAN
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
      - name: assignnativevlan
        method: POST
        description: Assign a native VLAN
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: vnid
          in: query
          type: string
          description: 'Virtual Network ID. May be the UUID of the Virtual Network record, or the VLAN value itself (ex: ''1001'').'
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
    - name: ports-id-unassign
      path: /ports/{id}/unassign
      operations:
      - name: unassignport
        method: POST
        description: Unassign a port
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: ports-id-vlan-assignments
      path: /ports/{id}/vlan-assignments
      operations:
      - name: findportvlanassignments
        method: GET
        description: List Current VLAN assignments for a port
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full attributes. Attribute names can
            be dotted (up to 3 levels) to included deeply nested objec
    - name: ports-id-vlan-assignments-batches
      path: /ports/{id}/vlan-assignments/batches
      operations:
      - name: findportvlanassignmentbatches
        method: GET
        description: List the VLAN Assignment Batches for a port
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
      - name: createportvlanassignmentbatch
        method: POST
        description: Create a new Port-VLAN Assignment management batch
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: ports-id-vlan-assignments-batches-batch_id
      path: /ports/{id}/vlan-assignments/batches/{batch_id}
      operations:
      - name: findportvlanassignmentbatchbyportidandbatchid
        method: GET
        description: Retrieve a VLAN Assignment Batch's details
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: batch_id
          in: path
          type: string
          description: Batch ID
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full
    - name: ports-id-vlan-assignments-assignment_id
      path: /ports/{id}/vlan-assignments/{assignment_id}
      operations:
      - name: findportvlanassignmentbyportidandassignmentid
        method: GET
        description: Show a particular Port VLAN assignment's details
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Port UUID
          required: true
        - name: assignment_id
          in: path
          type: string
          description: Assignment ID
          required: true
        - name: include
          in: query
          type: array
          description: Nested attributes to include. Included objects will return their full attributes. Attribute names can
            be dotted (up to 3 levels) to included deeply nested objec
    authentication:
      type: apikey
      key: X-Auth-Token
      value: '{{env.EQUINIX_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: metal-ports-rest
    port: 8080
    description: REST adapter for Metal API — Ports. One Spectral-compliant resource per consumed operation, prefixed with
      /v1.
    resources:
    - path: /v1/ports/{id}
      name: ports-id
      description: REST surface for ports-id.
      operations:
      - method: GET
        name: findportbyid
        description: Retrieve a port
        call: metal-ports.findportbyid
        with:
          id: rest.id
          include: rest.include
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/assign
      name: ports-id-assign
      description: REST surface for ports-id-assign.
      operations:
      - method: POST
        name: assignport
        description: Assign a port to virtual network
        call: metal-ports.assignport
        with:
          id: rest.id
          include: rest.include
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/bond
      name: ports-id-bond
      description: REST surface for ports-id-bond.
      operations:
      - method: POST
        name: bondport
        description: Enabling bonding
        call: metal-ports.bondport
        with:
          id: rest.id
          bulk_enable: rest.bulk_enable
          include: rest.include
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/convert/layer-2
      name: ports-id-convert-layer-2
      description: REST surface for ports-id-convert-layer-2.
      operations:
      - method: POST
        name: convertlayer2
        description: Convert to Layer 2
        call: metal-ports.convertlayer2
        with:
          id: rest.id
          include: rest.include
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/convert/layer-3
      name: ports-id-convert-layer-3
      description: REST surface for ports-id-convert-layer-3.
      operations:
      - method: POST
        name: convertlayer3
        description: Convert to Layer 3
        call: metal-ports.convertlayer3
        with:
          id: rest.id
          include: rest.include
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/disbond
      name: ports-id-disbond
      description: REST surface for ports-id-disbond.
      operations:
      - method: POST
        name: disbondport
        description: Disabling bonding
        call: metal-ports.disbondport
        with:
          id: rest.id
          bulk_disable: rest.bulk_disable
          include: rest.include
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/native-vlan
      name: ports-id-native-vlan
      description: REST surface for ports-id-native-vlan.
      operations:
      - method: DELETE
        name: deletenativevlan
        description: Remove native VLAN
        call: metal-ports.deletenativevlan
        with:
          id: rest.id
          include: rest.include
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: assignnativevlan
        description: Assign a native VLAN
        call: metal-ports.assignnativevlan
        with:
          id: rest.id
          vnid: rest.vnid
          include: rest.include
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/unassign
      name: ports-id-unassign
      description: REST surface for ports-id-unassign.
      operations:
      - method: POST
        name: unassignport
        description: Unassign a port
        call: metal-ports.unassignport
        with:
          id: rest.id
          include: rest.include
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/vlan-assignments
      name: ports-id-vlan-assignments
      description: REST surface for ports-id-vlan-assignments.
      operations:
      - method: GET
        name: findportvlanassignments
        description: List Current VLAN assignments for a port
        call: metal-ports.findportvlanassignments
        with:
          id: rest.id
          include: rest.include
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/vlan-assignments/batches
      name: ports-id-vlan-assignments-batches
      description: REST surface for ports-id-vlan-assignments-batches.
      operations:
      - method: GET
        name: findportvlanassignmentbatches
        description: List the VLAN Assignment Batches for a port
        call: metal-ports.findportvlanassignmentbatches
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createportvlanassignmentbatch
        description: Create a new Port-VLAN Assignment management batch
        call: metal-ports.createportvlanassignmentbatch
        with:
          id: rest.id
          include: rest.include
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/vlan-assignments/batches/{batch-id}
      name: ports-id-vlan-assignments-batches-batch-id
      description: REST surface for ports-id-vlan-assignments-batches-batch_id.
      operations:
      - method: GET
        name: findportvlanassignmentbatchbyportidandbatchid
        description: Retrieve a VLAN Assignment Batch's details
        call: metal-ports.findportvlanassignmentbatchbyportidandbatchid
        with:
          id: rest.id
          batch_id: rest.batch_id
          include: rest.include
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ports/{id}/vlan-assignments/{assignment-id}
      name: ports-id-vlan-assignments-assignment-id
      description: REST surface for ports-id-vlan-assignments-assignment_id.
      operations:
      - method: GET
        name: findportvlanassignmentbyportidandassignmentid
        description: Show a particular Port VLAN assignment's details
        call: metal-ports.findportvlanassignmentbyportidandassignmentid
        with:
          id: rest.id
          assignment_id: rest.assignment_id
          include: rest.include
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: metal-ports-mcp
    port: 9090
    transport: http
    description: MCP adapter for Metal API — Ports. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: retrieve-port
      description: Retrieve a port
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: metal-ports.findportbyid
      with:
        id: tools.id
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: assign-port-virtual-network
      description: Assign a port to virtual network
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: metal-ports.assignport
      with:
        id: tools.id
        include: tools.include
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: enabling-bonding
      description: Enabling bonding
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: metal-ports.bondport
      with:
        id: tools.id
        bulk_enable: tools.bulk_enable
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: convert-layer-2
      description: Convert to Layer 2
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: metal-ports.convertlayer2
      with:
        id: tools.id
        include: tools.include
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: convert-layer-3
      description: Convert to Layer 3
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: metal-ports.convertlayer3
      with:
        id: tools.id
        include: tools.include
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: disabling-bonding
      description: Disabling bonding
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: metal-ports.disbondport
      with:
        id: tools.id
        bulk_disable: tools.bulk_disable
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: remove-native-vlan
      description: Remove native VLAN
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: metal-ports.deletenativevlan
      with:
        id: tools.id
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: assign-native-vlan
      description: Assign a native VLAN
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: metal-ports.assignnativevlan
      with:
        id: tools.id
        vnid: tools.vnid
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: unassign-port
      description: Unassign a port
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: metal-ports.unassignport
      with:
        id: tools.id
        include: tools.include
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-current-vlan-assignments-port
      description: List Current VLAN assignments for a port
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: metal-ports.findportvlanassignments
      with:
        id: tools.id
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: list-vlan-assignment-batches-port
      description: List the VLAN Assignment Batches for a port
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: metal-ports.findportvlanassignmentbatches
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: create-new-port-vlan-assignment
      description: Create a new Port-VLAN Assignment management batch
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: metal-ports.createportvlanassignmentbatch
      with:
        id: tools.id
        include: tools.include
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: retrieve-vlan-assignment-batch-s-details
      description: Retrieve a VLAN Assignment Batch's details
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: metal-ports.findportvlanassignmentbatchbyportidandbatchid
      with:
        id: tools.id
        batch_id: tools.batch_id
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: show-particular-port-vlan-assignment-s
      description: Show a particular Port VLAN assignment's details
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: metal-ports.findportvlanassignmentbyportidandassignmentid
      with:
        id: tools.id
        assignment_id: tools.assignment_id
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.