naftiko: 1.0.0-alpha2 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-06' binds: - namespace: env keys: SPOT_API_TOKEN: SPOT_API_TOKEN capability: consumes: - type: http namespace: spot baseUri: https://api.spotinst.io description: Spot by NetApp REST API for cloud optimization authentication: type: bearer token: '{{SPOT_API_TOKEN}}' resources: - name: elastigroup-aws path: /aws/ec2/group description: AWS Elastigroup management operations: - name: list-elastigroups-aws method: GET description: List all AWS Elastigroups inputParameters: - name: accountId in: query type: string required: false description: Spot account ID filter outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-elastigroup-aws method: POST description: Create a new AWS Elastigroup with Spot optimization outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: group: '{{tools.group}}' - name: elastigroup-aws-by-id path: /aws/ec2/group/{groupId} description: Individual AWS Elastigroup operations operations: - name: get-elastigroup-aws method: GET description: Get AWS Elastigroup by ID inputParameters: - name: groupId in: path type: string required: true description: Elastigroup ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: update-elastigroup-aws method: PUT description: Update AWS Elastigroup configuration inputParameters: - name: groupId in: path type: string required: true description: Elastigroup ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: delete-elastigroup-aws method: DELETE description: Delete an AWS Elastigroup inputParameters: - name: groupId in: path type: string required: true description: Elastigroup ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: elastigroup-aws-status path: /aws/ec2/group/{groupId}/status description: AWS Elastigroup instance status operations: - name: get-elastigroup-status method: GET description: Get instance status for an Elastigroup inputParameters: - name: groupId in: path type: string required: true description: Elastigroup ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: elastigroup-aws-costs path: /aws/ec2/group/{groupId}/costs description: AWS Elastigroup cost analysis operations: - name: get-elastigroup-costs method: GET description: Get cost and savings analysis for an Elastigroup inputParameters: - name: groupId in: path type: string required: true description: Elastigroup ID - name: fromDate in: query type: string required: false description: Start date (ISO 8601) - name: toDate in: query type: string required: false description: End date (ISO 8601) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: elastigroup-aws-scale-up path: /aws/ec2/group/{groupId}/scale/up description: Scale up an AWS Elastigroup operations: - name: scale-up-elastigroup method: PUT description: Add capacity to an AWS Elastigroup inputParameters: - name: groupId in: path type: string required: true description: Elastigroup ID - name: adjustment in: query type: integer required: true description: Number of instances to add outputRawFormat: json outputParameters: - name: result type: object value: $. - name: elastigroup-aws-scale-down path: /aws/ec2/group/{groupId}/scale/down description: Scale down an AWS Elastigroup operations: - name: scale-down-elastigroup method: PUT description: Remove capacity from an AWS Elastigroup inputParameters: - name: groupId in: path type: string required: true description: Elastigroup ID - name: adjustment in: query type: integer required: true description: Number of instances to remove outputRawFormat: json outputParameters: - name: result type: object value: $. - name: ocean-aws-cluster path: /ocean/aws/k8s/cluster description: Ocean Kubernetes cluster management on AWS operations: - name: list-ocean-clusters-aws method: GET description: List all Ocean clusters on AWS inputParameters: - name: accountId in: query type: string required: false description: Spot account ID filter outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-ocean-cluster-aws method: POST description: Create an Ocean Kubernetes cluster on AWS outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: cluster: '{{tools.cluster}}' - name: ocean-aws-cluster-by-id path: /ocean/aws/k8s/cluster/{clusterId} description: Individual Ocean cluster operations operations: - name: get-ocean-cluster-aws method: GET description: Get Ocean cluster details inputParameters: - name: clusterId in: path type: string required: true description: Ocean cluster ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: update-ocean-cluster-aws method: PUT description: Update Ocean cluster configuration inputParameters: - name: clusterId in: path type: string required: true description: Ocean cluster ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: delete-ocean-cluster-aws method: DELETE description: Delete an Ocean cluster inputParameters: - name: clusterId in: path type: string required: true description: Ocean cluster ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: ocean-cluster-costs path: /ocean/aws/k8s/cluster/{clusterId}/costs description: Ocean cluster cost and savings data operations: - name: get-ocean-cluster-costs method: GET description: Get cost breakdown and savings for an Ocean cluster inputParameters: - name: clusterId in: path type: string required: true description: Ocean cluster ID - name: startTime in: query type: string required: false description: Start time (ISO 8601) - name: endTime in: query type: string required: false description: End time (ISO 8601) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: rightsizing path: /ocean/aws/k8s/cluster/{clusterId}/rightSizing/suggestions description: Container rightsizing recommendations operations: - name: get-rightsizing-suggestions method: GET description: Get container rightsizing recommendations to reduce waste and cost inputParameters: - name: clusterId in: path type: string required: true description: Ocean cluster ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: accounts path: /setup/account description: Spot account management operations: - name: list-accounts method: GET description: List all Spot accounts outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-account method: POST description: Create a new Spot account outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: account: '{{tools.account}}' - name: audit-log path: /audit/log description: Audit log for account activity operations: - name: get-audit-log method: GET description: Retrieve audit log events for account activity inputParameters: - name: accountId in: query type: string required: false description: Account ID filter - name: fromDate in: query type: string required: false description: Start date filter - name: toDate in: query type: string required: false description: End date filter - name: limit in: query type: integer required: false description: Max results to return outputRawFormat: json outputParameters: - name: result type: object value: $. - name: insights path: /insights/summary description: Cloud cost savings insights operations: - name: get-cost-summary method: GET description: Get cloud cost savings summary from Spot optimization inputParameters: - name: accountId in: query type: string required: false description: Account ID filter - name: fromDate in: query type: string required: false description: Start date - name: toDate in: query type: string required: false description: End date outputRawFormat: json outputParameters: - name: result type: object value: $. 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: $.