Portworx · Capability

OpenStorage SDK — OpenStorageNode

OpenStorage SDK — OpenStorageNode. 9 operations. Lead operation: Enumerate returns the ids of all the nodes in the current cluster. Self-contained Naftiko capability covering one Portworx business surface.

Run with Naftiko PortworxOpenStorageNode

What You Can Do

GET
Openstoragenodeenumerate — Enumerate returns the ids of all the nodes in the current cluster
/v1/v1/nodes
PUT
Openstoragenodecordonattachments — CordonAttachments disables any new volume attachments
/v1/v1/nodes/attachments/disable/{node-id}
PUT
Openstoragenodedrainattachments — DrainAttachments creates a task to drain volume attachments
/v1/v1/nodes/attachments/drain/{node-id}
PUT
Openstoragenodeuncordonattachments — UncordonAttachments re-enables volume attachments
/v1/v1/nodes/attachments/enable/{node-id}
POST
Openstoragenodevolumebytesusedbynode — Returns bytes used of multiple volumes for a give node
/v1/v1/nodes/bytesused
GET
Openstoragenodeenumeratewithfilters — EnumerateWithFilters returns all the nodes in the current cluster
/v1/v1/nodes/filters
GET
Openstoragenodeinspect — Inspect returns information about the specified node
/v1/v1/nodes/inspect/{node-id}
GET
Openstoragenodeinspectcurrent — InspectCurrent returns information about the storage node
/v1/v1/nodes/inspectcurrent
GET
Openstoragenoderelaxedreclaimpurge — Triggers RelaxedReclaim purge for a give node
/v1/v1/nodes/usage/{node-id}

MCP Tools

enumerate-returns-ids-all-nodes

Enumerate returns the ids of all the nodes in the current cluster

read-only idempotent
cordonattachments-disables-any-new-volume

CordonAttachments disables any new volume attachments

idempotent
drainattachments-creates-task-drain-volume

DrainAttachments creates a task to drain volume attachments

idempotent
uncordonattachments-re-enables-volume-attachments

UncordonAttachments re-enables volume attachments

idempotent
returns-bytes-used-multiple-volumes

Returns bytes used of multiple volumes for a give node

enumeratewithfilters-returns-all-nodes-current

EnumerateWithFilters returns all the nodes in the current cluster

read-only idempotent
inspect-returns-information-about-specified

Inspect returns information about the specified node

read-only idempotent
inspectcurrent-returns-information-about-storage

InspectCurrent returns information about the storage node

read-only idempotent
triggers-relaxedreclaim-purge-give-node

Triggers RelaxedReclaim purge for a give node

read-only idempotent

Capability Spec

portworx-openstoragenode.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: OpenStorage SDK — OpenStorageNode
  description: 'OpenStorage SDK — OpenStorageNode. 9 operations. Lead operation: Enumerate returns the ids of all the nodes
    in the current cluster. Self-contained Naftiko capability covering one Portworx business surface.'
  tags:
  - Portworx
  - OpenStorageNode
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    PORTWORX_API_KEY: PORTWORX_API_KEY
capability:
  consumes:
  - type: http
    namespace: portworx-openstoragenode
    baseUri: ''
    description: OpenStorage SDK — OpenStorageNode business capability. Self-contained, no shared references.
    resources:
    - name: v1-nodes
      path: /v1/nodes
      operations:
      - name: openstoragenodeenumerate
        method: GET
        description: Enumerate returns the ids of all the nodes in the current cluster
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-nodes-attachments-disable-node_id
      path: /v1/nodes/attachments/disable/{node_id}
      operations:
      - name: openstoragenodecordonattachments
        method: PUT
        description: CordonAttachments disables any new volume attachments
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: node_id
          in: path
          type: string
          description: Node ID on which any further volume attachments will be disabled
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: v1-nodes-attachments-drain-node_id
      path: /v1/nodes/attachments/drain/{node_id}
      operations:
      - name: openstoragenodedrainattachments
        method: PUT
        description: DrainAttachments creates a task to drain volume attachments
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: node_id
          in: path
          type: string
          description: Id of the node to drain
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: v1-nodes-attachments-enable-node_id
      path: /v1/nodes/attachments/enable/{node_id}
      operations:
      - name: openstoragenodeuncordonattachments
        method: PUT
        description: UncordonAttachments re-enables volume attachments
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: node_id
          in: path
          type: string
          description: Node ID on which any further volume attachments will be enabled
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: v1-nodes-bytesused
      path: /v1/nodes/bytesused
      operations:
      - name: openstoragenodevolumebytesusedbynode
        method: POST
        description: Returns bytes used of multiple volumes for a give node
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: v1-nodes-filters
      path: /v1/nodes/filters
      operations:
      - name: openstoragenodeenumeratewithfilters
        method: GET
        description: EnumerateWithFilters returns all the nodes in the current cluster
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-nodes-inspect-node_id
      path: /v1/nodes/inspect/{node_id}
      operations:
      - name: openstoragenodeinspect
        method: GET
        description: Inspect returns information about the specified node
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: node_id
          in: path
          type: string
          description: Id of node to inspect
          required: true
    - name: v1-nodes-inspectcurrent
      path: /v1/nodes/inspectcurrent
      operations:
      - name: openstoragenodeinspectcurrent
        method: GET
        description: InspectCurrent returns information about the storage node
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-nodes-usage-node_id
      path: /v1/nodes/usage/{node_id}
      operations:
      - name: openstoragenoderelaxedreclaimpurge
        method: GET
        description: Triggers RelaxedReclaim purge for a give node
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: node_id
          in: path
          type: string
          description: Id of the node to trigger the purge
          required: true
    authentication:
      type: bearer
      token: '{{env.PORTWORX_API_KEY}}'
  exposes:
  - type: rest
    namespace: portworx-openstoragenode-rest
    port: 8080
    description: REST adapter for OpenStorage SDK — OpenStorageNode. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/v1/nodes
      name: v1-nodes
      description: REST surface for v1-nodes.
      operations:
      - method: GET
        name: openstoragenodeenumerate
        description: Enumerate returns the ids of all the nodes in the current cluster
        call: portworx-openstoragenode.openstoragenodeenumerate
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/nodes/attachments/disable/{node-id}
      name: v1-nodes-attachments-disable-node-id
      description: REST surface for v1-nodes-attachments-disable-node_id.
      operations:
      - method: PUT
        name: openstoragenodecordonattachments
        description: CordonAttachments disables any new volume attachments
        call: portworx-openstoragenode.openstoragenodecordonattachments
        with:
          node_id: rest.node_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/nodes/attachments/drain/{node-id}
      name: v1-nodes-attachments-drain-node-id
      description: REST surface for v1-nodes-attachments-drain-node_id.
      operations:
      - method: PUT
        name: openstoragenodedrainattachments
        description: DrainAttachments creates a task to drain volume attachments
        call: portworx-openstoragenode.openstoragenodedrainattachments
        with:
          node_id: rest.node_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/nodes/attachments/enable/{node-id}
      name: v1-nodes-attachments-enable-node-id
      description: REST surface for v1-nodes-attachments-enable-node_id.
      operations:
      - method: PUT
        name: openstoragenodeuncordonattachments
        description: UncordonAttachments re-enables volume attachments
        call: portworx-openstoragenode.openstoragenodeuncordonattachments
        with:
          node_id: rest.node_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/nodes/bytesused
      name: v1-nodes-bytesused
      description: REST surface for v1-nodes-bytesused.
      operations:
      - method: POST
        name: openstoragenodevolumebytesusedbynode
        description: Returns bytes used of multiple volumes for a give node
        call: portworx-openstoragenode.openstoragenodevolumebytesusedbynode
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/nodes/filters
      name: v1-nodes-filters
      description: REST surface for v1-nodes-filters.
      operations:
      - method: GET
        name: openstoragenodeenumeratewithfilters
        description: EnumerateWithFilters returns all the nodes in the current cluster
        call: portworx-openstoragenode.openstoragenodeenumeratewithfilters
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/nodes/inspect/{node-id}
      name: v1-nodes-inspect-node-id
      description: REST surface for v1-nodes-inspect-node_id.
      operations:
      - method: GET
        name: openstoragenodeinspect
        description: Inspect returns information about the specified node
        call: portworx-openstoragenode.openstoragenodeinspect
        with:
          node_id: rest.node_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/nodes/inspectcurrent
      name: v1-nodes-inspectcurrent
      description: REST surface for v1-nodes-inspectcurrent.
      operations:
      - method: GET
        name: openstoragenodeinspectcurrent
        description: InspectCurrent returns information about the storage node
        call: portworx-openstoragenode.openstoragenodeinspectcurrent
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/nodes/usage/{node-id}
      name: v1-nodes-usage-node-id
      description: REST surface for v1-nodes-usage-node_id.
      operations:
      - method: GET
        name: openstoragenoderelaxedreclaimpurge
        description: Triggers RelaxedReclaim purge for a give node
        call: portworx-openstoragenode.openstoragenoderelaxedreclaimpurge
        with:
          node_id: rest.node_id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: portworx-openstoragenode-mcp
    port: 9090
    transport: http
    description: MCP adapter for OpenStorage SDK — OpenStorageNode. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: enumerate-returns-ids-all-nodes
      description: Enumerate returns the ids of all the nodes in the current cluster
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: portworx-openstoragenode.openstoragenodeenumerate
      outputParameters:
      - type: object
        mapping: $.
    - name: cordonattachments-disables-any-new-volume
      description: CordonAttachments disables any new volume attachments
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: portworx-openstoragenode.openstoragenodecordonattachments
      with:
        node_id: tools.node_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: drainattachments-creates-task-drain-volume
      description: DrainAttachments creates a task to drain volume attachments
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: portworx-openstoragenode.openstoragenodedrainattachments
      with:
        node_id: tools.node_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: uncordonattachments-re-enables-volume-attachments
      description: UncordonAttachments re-enables volume attachments
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: portworx-openstoragenode.openstoragenodeuncordonattachments
      with:
        node_id: tools.node_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: returns-bytes-used-multiple-volumes
      description: Returns bytes used of multiple volumes for a give node
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: portworx-openstoragenode.openstoragenodevolumebytesusedbynode
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: enumeratewithfilters-returns-all-nodes-current
      description: EnumerateWithFilters returns all the nodes in the current cluster
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: portworx-openstoragenode.openstoragenodeenumeratewithfilters
      outputParameters:
      - type: object
        mapping: $.
    - name: inspect-returns-information-about-specified
      description: Inspect returns information about the specified node
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: portworx-openstoragenode.openstoragenodeinspect
      with:
        node_id: tools.node_id
      outputParameters:
      - type: object
        mapping: $.
    - name: inspectcurrent-returns-information-about-storage
      description: InspectCurrent returns information about the storage node
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: portworx-openstoragenode.openstoragenodeinspectcurrent
      outputParameters:
      - type: object
        mapping: $.
    - name: triggers-relaxedreclaim-purge-give-node
      description: Triggers RelaxedReclaim purge for a give node
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: portworx-openstoragenode.openstoragenoderelaxedreclaimpurge
      with:
        node_id: tools.node_id
      outputParameters:
      - type: object
        mapping: $.