Spot by NetApp · Capability

Spot by NetApp Cloud Cost Optimization

Unified cloud infrastructure cost optimization capability composing Spot by NetApp APIs for Elastigroup management, Ocean Kubernetes optimization, rightsizing analysis, cost reporting, and account administration across AWS, Azure, and GCP.

Run with Naftiko Cloud OptimizationFinOpsKubernetesCost ManagementAuto ScalingSpot Instances

What You Can Do

GET
List elastigroups — List all AWS Elastigroups
/v1/elastigroups
GET
Get elastigroup — Get Elastigroup details
/v1/elastigroups/{groupId}
DELETE
Delete elastigroup — Delete Elastigroup
/v1/elastigroups/{groupId}
GET
Get elastigroup status — Get Elastigroup instance status
/v1/elastigroups/{groupId}/status
GET
Get elastigroup costs — Get Elastigroup cost and savings
/v1/elastigroups/{groupId}/costs
GET
List ocean clusters — List all Ocean clusters on AWS
/v1/ocean-clusters
GET
Get ocean cluster — Get Ocean cluster details
/v1/ocean-clusters/{clusterId}
DELETE
Delete ocean cluster — Delete Ocean cluster
/v1/ocean-clusters/{clusterId}
GET
Get ocean costs — Get Ocean cluster cost breakdown and savings
/v1/ocean-clusters/{clusterId}/costs
GET
Get rightsizing — Get container rightsizing recommendations
/v1/ocean-clusters/{clusterId}/rightsizing
GET
Get cost summary — Get cloud cost savings summary
/v1/cost-summary
GET
Get audit log — Get audit log events
/v1/audit-log
GET
List accounts — List Spot accounts
/v1/accounts

MCP Tools

list-elastigroups-aws

List all AWS Elastigroup intelligent auto-scaling groups. Each Elastigroup uses Spot instances to reduce compute costs 60-90%.

read-only
get-elastigroup-aws

Get details for a specific AWS Elastigroup including capacity, strategy, and instance type configuration.

read-only
create-elastigroup-aws

Create a new AWS Elastigroup with Spot instance optimization for a workload.

update-elastigroup-aws

Update an AWS Elastigroup's configuration including capacity, instance types, or strategy.

idempotent
delete-elastigroup-aws

Delete an AWS Elastigroup and terminate associated instances.

idempotent
get-elastigroup-status

Get current instance status and health for an AWS Elastigroup.

read-only
get-elastigroup-costs

Get cost analysis and savings data for an AWS Elastigroup over a time period.

read-only
scale-up-elastigroup

Scale up an AWS Elastigroup by adding a specified number of instances.

scale-down-elastigroup

Scale down an AWS Elastigroup by removing a specified number of instances.

list-ocean-clusters-aws

List all Ocean Kubernetes clusters on AWS for container cost optimization.

read-only
get-ocean-cluster-aws

Get Ocean cluster details including auto-scaler config and capacity.

read-only
create-ocean-cluster-aws

Create a new Ocean cluster for Kubernetes cost optimization on AWS.

get-ocean-cluster-costs

Get cost breakdown and savings for an Ocean Kubernetes cluster.

read-only
get-rightsizing-suggestions

Get container rightsizing recommendations to eliminate over-provisioning and reduce costs.

read-only
get-cost-summary

Get overall cloud cost savings summary showing actual vs. potential spend and total savings percentage from Spot optimization.

read-only
get-audit-log

Retrieve audit log events recording API and console activity for compliance and troubleshooting.

read-only
list-accounts

List all Spot accounts associated with the organization.

read-only

APIs Used

spot

Capability Spec

cloud-cost-optimization.yaml Raw ↑
naftiko: "1.0.0-alpha1"

info:
  label: "Spot by NetApp Cloud Cost Optimization"
  description: >-
    Unified cloud infrastructure cost optimization capability composing Spot by NetApp
    APIs for Elastigroup management, Ocean Kubernetes optimization, rightsizing analysis,
    cost reporting, and account administration across AWS, Azure, and GCP.
  tags:
    - Cloud Optimization
    - FinOps
    - Kubernetes
    - AWS
    - Cost Management
    - Auto Scaling
    - Spot Instances
  created: "2026-05-02"
  modified: "2026-05-02"

binds:
  - namespace: env
    keys:
      SPOT_API_TOKEN: SPOT_API_TOKEN

capability:
  consumes:
    - import: spot
      location: ./shared/spot.yaml

  exposes:
    - type: rest
      port: 8082
      namespace: cloud-cost-optimization-api
      description: "Unified REST API for cloud cost optimization via Spot by NetApp."
      resources:
        - path: /v1/elastigroups
          name: elastigroups
          description: "Spot Elastigroup intelligent auto-scaling groups"
          operations:
            - method: GET
              name: list-elastigroups
              description: "List all AWS Elastigroups"
              call: "spot.list-elastigroups-aws"
              with:
                accountId: "rest.accountId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/elastigroups/{groupId}
          name: elastigroup
          description: "Individual Elastigroup"
          operations:
            - method: GET
              name: get-elastigroup
              description: "Get Elastigroup details"
              call: "spot.get-elastigroup-aws"
              with:
                groupId: "rest.groupId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: DELETE
              name: delete-elastigroup
              description: "Delete Elastigroup"
              call: "spot.delete-elastigroup-aws"
              with:
                groupId: "rest.groupId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/elastigroups/{groupId}/status
          name: elastigroup-status
          description: "Elastigroup instance status"
          operations:
            - method: GET
              name: get-elastigroup-status
              description: "Get Elastigroup instance status"
              call: "spot.get-elastigroup-status"
              with:
                groupId: "rest.groupId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/elastigroups/{groupId}/costs
          name: elastigroup-costs
          description: "Elastigroup cost analysis"
          operations:
            - method: GET
              name: get-elastigroup-costs
              description: "Get Elastigroup cost and savings"
              call: "spot.get-elastigroup-costs"
              with:
                groupId: "rest.groupId"
                fromDate: "rest.fromDate"
                toDate: "rest.toDate"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/ocean-clusters
          name: ocean-clusters
          description: "Ocean Kubernetes clusters"
          operations:
            - method: GET
              name: list-ocean-clusters
              description: "List all Ocean clusters on AWS"
              call: "spot.list-ocean-clusters-aws"
              with:
                accountId: "rest.accountId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/ocean-clusters/{clusterId}
          name: ocean-cluster
          description: "Individual Ocean cluster"
          operations:
            - method: GET
              name: get-ocean-cluster
              description: "Get Ocean cluster details"
              call: "spot.get-ocean-cluster-aws"
              with:
                clusterId: "rest.clusterId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: DELETE
              name: delete-ocean-cluster
              description: "Delete Ocean cluster"
              call: "spot.delete-ocean-cluster-aws"
              with:
                clusterId: "rest.clusterId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/ocean-clusters/{clusterId}/costs
          name: ocean-cluster-costs
          description: "Ocean cluster cost analysis"
          operations:
            - method: GET
              name: get-ocean-costs
              description: "Get Ocean cluster cost breakdown and savings"
              call: "spot.get-ocean-cluster-costs"
              with:
                clusterId: "rest.clusterId"
                startTime: "rest.startTime"
                endTime: "rest.endTime"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/ocean-clusters/{clusterId}/rightsizing
          name: rightsizing
          description: "Container rightsizing recommendations"
          operations:
            - method: GET
              name: get-rightsizing
              description: "Get container rightsizing recommendations"
              call: "spot.get-rightsizing-suggestions"
              with:
                clusterId: "rest.clusterId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/cost-summary
          name: cost-summary
          description: "Overall cloud cost savings summary"
          operations:
            - method: GET
              name: get-cost-summary
              description: "Get cloud cost savings summary"
              call: "spot.get-cost-summary"
              with:
                accountId: "rest.accountId"
                fromDate: "rest.fromDate"
                toDate: "rest.toDate"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/audit-log
          name: audit-log
          description: "Account activity audit log"
          operations:
            - method: GET
              name: get-audit-log
              description: "Get audit log events"
              call: "spot.get-audit-log"
              with:
                accountId: "rest.accountId"
                fromDate: "rest.fromDate"
                toDate: "rest.toDate"
                limit: "rest.limit"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/accounts
          name: accounts
          description: "Spot account management"
          operations:
            - method: GET
              name: list-accounts
              description: "List Spot accounts"
              call: "spot.list-accounts"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      port: 9082
      namespace: cloud-cost-optimization-mcp
      transport: http
      description: "MCP server for AI-assisted cloud cost optimization and FinOps with Spot by NetApp."
      tools:
        - name: list-elastigroups-aws
          description: "List all AWS Elastigroup intelligent auto-scaling groups. Each Elastigroup uses Spot instances to reduce compute costs 60-90%."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.list-elastigroups-aws"
          with:
            accountId: "tools.accountId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-elastigroup-aws
          description: "Get details for a specific AWS Elastigroup including capacity, strategy, and instance type configuration."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.get-elastigroup-aws"
          with:
            groupId: "tools.groupId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-elastigroup-aws
          description: "Create a new AWS Elastigroup with Spot instance optimization for a workload."
          hints:
            readOnly: false
            destructive: false
          call: "spot.create-elastigroup-aws"
          with:
            group: "tools.group"
          outputParameters:
            - type: object
              mapping: "$."
        - name: update-elastigroup-aws
          description: "Update an AWS Elastigroup's configuration including capacity, instance types, or strategy."
          hints:
            readOnly: false
            idempotent: true
          call: "spot.update-elastigroup-aws"
          with:
            groupId: "tools.groupId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: delete-elastigroup-aws
          description: "Delete an AWS Elastigroup and terminate associated instances."
          hints:
            readOnly: false
            destructive: true
            idempotent: true
          call: "spot.delete-elastigroup-aws"
          with:
            groupId: "tools.groupId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-elastigroup-status
          description: "Get current instance status and health for an AWS Elastigroup."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.get-elastigroup-status"
          with:
            groupId: "tools.groupId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-elastigroup-costs
          description: "Get cost analysis and savings data for an AWS Elastigroup over a time period."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.get-elastigroup-costs"
          with:
            groupId: "tools.groupId"
            fromDate: "tools.fromDate"
            toDate: "tools.toDate"
          outputParameters:
            - type: object
              mapping: "$."
        - name: scale-up-elastigroup
          description: "Scale up an AWS Elastigroup by adding a specified number of instances."
          hints:
            readOnly: false
            destructive: false
          call: "spot.scale-up-elastigroup"
          with:
            groupId: "tools.groupId"
            adjustment: "tools.adjustment"
          outputParameters:
            - type: object
              mapping: "$."
        - name: scale-down-elastigroup
          description: "Scale down an AWS Elastigroup by removing a specified number of instances."
          hints:
            readOnly: false
            destructive: false
          call: "spot.scale-down-elastigroup"
          with:
            groupId: "tools.groupId"
            adjustment: "tools.adjustment"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-ocean-clusters-aws
          description: "List all Ocean Kubernetes clusters on AWS for container cost optimization."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.list-ocean-clusters-aws"
          with:
            accountId: "tools.accountId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-ocean-cluster-aws
          description: "Get Ocean cluster details including auto-scaler config and capacity."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.get-ocean-cluster-aws"
          with:
            clusterId: "tools.clusterId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-ocean-cluster-aws
          description: "Create a new Ocean cluster for Kubernetes cost optimization on AWS."
          hints:
            readOnly: false
            destructive: false
          call: "spot.create-ocean-cluster-aws"
          with:
            cluster: "tools.cluster"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-ocean-cluster-costs
          description: "Get cost breakdown and savings for an Ocean Kubernetes cluster."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.get-ocean-cluster-costs"
          with:
            clusterId: "tools.clusterId"
            startTime: "tools.startTime"
            endTime: "tools.endTime"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-rightsizing-suggestions
          description: "Get container rightsizing recommendations to eliminate over-provisioning and reduce costs."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.get-rightsizing-suggestions"
          with:
            clusterId: "tools.clusterId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-cost-summary
          description: "Get overall cloud cost savings summary showing actual vs. potential spend and total savings percentage from Spot optimization."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.get-cost-summary"
          with:
            accountId: "tools.accountId"
            fromDate: "tools.fromDate"
            toDate: "tools.toDate"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-audit-log
          description: "Retrieve audit log events recording API and console activity for compliance and troubleshooting."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.get-audit-log"
          with:
            accountId: "tools.accountId"
            fromDate: "tools.fromDate"
            toDate: "tools.toDate"
            limit: "tools.limit"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-accounts
          description: "List all Spot accounts associated with the organization."
          hints:
            readOnly: true
            openWorld: false
          call: "spot.list-accounts"
          outputParameters:
            - type: object
              mapping: "$."