IBM Turbonomic · Capability

Turbonomic Resource Optimization

Workflow capability for automated resource optimization using IBM Turbonomic. Combines entity management, action automation, group scoping, and policy control to enable cloud architects and platform engineers to right-size workloads, reduce cloud costs, and maintain application performance across hybrid environments. Supports AI-assisted action analysis and bulk action execution via MCP.

Run with Naftiko Application Resource ManagementCloud Cost OptimizationIBMMulti-CloudResource OptimizationWorkload Automation

What You Can Do

GET
Get entities — List all managed entities with optional type filtering
/v1/entities
GET
Get entity — Get entity details by UUID
/v1/entities/{uuid}
GET
Get entity actions — Get pending optimization actions for an entity
/v1/entities/{uuid}/actions
GET
Get entity stats — Get resource utilization statistics for an entity
/v1/entities/{uuid}/stats
GET
Get actions — Get all pending optimization actions
/v1/actions
GET
Get action — Get or execute a specific optimization action
/v1/actions/{uuid}
GET
Get groups — List all entity groups
/v1/groups
POST
Create group — Create a new entity group
/v1/groups
GET
Get policies — List all automation policies
/v1/policies
POST
Create policy — Create a new automation policy
/v1/policies
GET
Get targets — List all discovery targets
/v1/targets
GET
Get templates — List all resource templates
/v1/templates
GET
Get topology — Get infrastructure topology definitions
/v1/topology

MCP Tools

list-entities

List managed infrastructure entities (VMs, containers, applications) in Turbonomic

read-only
get-entity

Get details for a specific managed entity by UUID

read-only
list-pending-actions

List all pending AI-recommended optimization actions from the realtime market

read-only
get-entity-actions

Get optimization actions recommended for a specific entity

read-only
execute-action

Execute a specific Turbonomic optimization action to right-size or move a workload

get-entity-stats

Get historical CPU, memory, and storage utilization statistics for an entity

read-only
list-groups

List entity groups used for scoped policy and reporting in Turbonomic

read-only
create-group

Create a new entity group for targeted policy application or cost reporting

delete-group

Delete an entity group from Turbonomic

idempotent
list-policies

List automation and placement policies governing Turbonomic action execution

read-only
create-policy

Create a new automation policy to control how Turbonomic executes actions

list-targets

List all discovery targets (cloud accounts, hypervisors, Kubernetes clusters)

read-only
list-templates

List resource and hardware templates for capacity planning

read-only
get-topology

Get infrastructure topology and supply chain relationships

read-only

APIs Used

turbonomic

Capability Spec

Raw ↑
naftiko: "1.0.0-alpha1"

info:
  label: "Turbonomic Resource Optimization"
  description: >-
    Workflow capability for automated resource optimization using IBM Turbonomic.
    Combines entity management, action automation, group scoping, and policy control
    to enable cloud architects and platform engineers to right-size workloads, reduce
    cloud costs, and maintain application performance across hybrid environments.
    Supports AI-assisted action analysis and bulk action execution via MCP.
  tags:
    - Application Resource Management
    - Cloud Cost Optimization
    - IBM
    - Multi-Cloud
    - Resource Optimization
    - Workload Automation
  created: "2026-05-03"
  modified: "2026-05-03"

binds:
  - namespace: env
    keys:
      TURBONOMIC_BEARER_TOKEN: TURBONOMIC_BEARER_TOKEN

capability:
  consumes:
    - import: turbonomic
      location: ./shared/turbonomic-rest-api.yaml

  exposes:
    - type: rest
      port: 8080
      namespace: resource-optimization-api
      description: "Unified REST API for Turbonomic resource optimization workflows."
      resources:
        - path: /v1/entities
          name: entities
          description: "Managed infrastructure entities"
          operations:
            - method: GET
              name: get-entities
              description: "List all managed entities with optional type filtering"
              call: "turbonomic.get-entities"
              with:
                entity_type: "rest.entity_type"
                limit: "rest.limit"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/entities/{uuid}
          name: entity
          description: "Single entity details"
          operations:
            - method: GET
              name: get-entity
              description: "Get entity details by UUID"
              call: "turbonomic.get-entity-by-uuid"
              with:
                uuid: "rest.uuid"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/entities/{uuid}/actions
          name: entity-actions
          description: "Optimization actions for a specific entity"
          operations:
            - method: GET
              name: get-entity-actions
              description: "Get pending optimization actions for an entity"
              call: "turbonomic.get-entity-actions"
              with:
                uuid: "rest.uuid"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/entities/{uuid}/stats
          name: entity-stats
          description: "Resource utilization statistics"
          operations:
            - method: GET
              name: get-entity-stats
              description: "Get resource utilization statistics for an entity"
              call: "turbonomic.get-entity-stats"
              with:
                uuid: "rest.uuid"
                start_date: "rest.start_date"
                end_date: "rest.end_date"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/actions
          name: actions
          description: "Pending optimization actions from the realtime market"
          operations:
            - method: GET
              name: get-actions
              description: "Get all pending optimization actions"
              call: "turbonomic.get-market-actions"
              with:
                uuid: "Market"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/actions/{uuid}
          name: action
          description: "Single optimization action"
          operations:
            - method: GET
              name: get-action
              description: "Get or execute a specific optimization action"
              call: "turbonomic.get-action-by-uuid"
              with:
                uuid: "rest.uuid"
                accept: "rest.accept"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/groups
          name: groups
          description: "Entity groups for scoped management"
          operations:
            - method: GET
              name: get-groups
              description: "List all entity groups"
              call: "turbonomic.get-groups"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-group
              description: "Create a new entity group"
              call: "turbonomic.create-group"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/policies
          name: policies
          description: "Automation and placement policies"
          operations:
            - method: GET
              name: get-policies
              description: "List all automation policies"
              call: "turbonomic.get-policies"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-policy
              description: "Create a new automation policy"
              call: "turbonomic.create-policy"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/targets
          name: targets
          description: "Discovery targets and integrations"
          operations:
            - method: GET
              name: get-targets
              description: "List all discovery targets"
              call: "turbonomic.get-targets"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/templates
          name: templates
          description: "Resource and hardware templates"
          operations:
            - method: GET
              name: get-templates
              description: "List all resource templates"
              call: "turbonomic.get-templates"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/topology
          name: topology
          description: "Infrastructure topology and supply chains"
          operations:
            - method: GET
              name: get-topology
              description: "Get infrastructure topology definitions"
              call: "turbonomic.get-topology"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      port: 9080
      namespace: resource-optimization-mcp
      transport: http
      description: "MCP server for AI-assisted Turbonomic resource optimization and action management."
      tools:
        - name: list-entities
          description: "List managed infrastructure entities (VMs, containers, applications) in Turbonomic"
          hints:
            readOnly: true
            openWorld: true
          call: "turbonomic.get-entities"
          with:
            entity_type: "tools.entity_type"
            limit: "tools.limit"
          outputParameters:
            - type: object
              mapping: "$."

        - name: get-entity
          description: "Get details for a specific managed entity by UUID"
          hints:
            readOnly: true
            openWorld: false
          call: "turbonomic.get-entity-by-uuid"
          with:
            uuid: "tools.uuid"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-pending-actions
          description: "List all pending AI-recommended optimization actions from the realtime market"
          hints:
            readOnly: true
            openWorld: true
          call: "turbonomic.get-market-actions"
          with:
            uuid: "Market"
          outputParameters:
            - type: object
              mapping: "$."

        - name: get-entity-actions
          description: "Get optimization actions recommended for a specific entity"
          hints:
            readOnly: true
            openWorld: false
          call: "turbonomic.get-entity-actions"
          with:
            uuid: "tools.uuid"
          outputParameters:
            - type: object
              mapping: "$."

        - name: execute-action
          description: "Execute a specific Turbonomic optimization action to right-size or move a workload"
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "turbonomic.get-action-by-uuid"
          with:
            uuid: "tools.uuid"
            accept: "true"
          outputParameters:
            - type: object
              mapping: "$."

        - name: get-entity-stats
          description: "Get historical CPU, memory, and storage utilization statistics for an entity"
          hints:
            readOnly: true
            openWorld: false
          call: "turbonomic.get-entity-stats"
          with:
            uuid: "tools.uuid"
            start_date: "tools.start_date"
            end_date: "tools.end_date"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-groups
          description: "List entity groups used for scoped policy and reporting in Turbonomic"
          hints:
            readOnly: true
            openWorld: true
          call: "turbonomic.get-groups"
          with:
            group_type: "tools.group_type"
          outputParameters:
            - type: object
              mapping: "$."

        - name: create-group
          description: "Create a new entity group for targeted policy application or cost reporting"
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "turbonomic.create-group"
          with:
            displayName: "tools.displayName"
            groupType: "tools.groupType"
          outputParameters:
            - type: object
              mapping: "$."

        - name: delete-group
          description: "Delete an entity group from Turbonomic"
          hints:
            readOnly: false
            destructive: true
            idempotent: true
          call: "turbonomic.delete-group"
          with:
            uuid: "tools.uuid"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-policies
          description: "List automation and placement policies governing Turbonomic action execution"
          hints:
            readOnly: true
            openWorld: true
          call: "turbonomic.get-policies"
          outputParameters:
            - type: object
              mapping: "$."

        - name: create-policy
          description: "Create a new automation policy to control how Turbonomic executes actions"
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "turbonomic.create-policy"
          with:
            displayName: "tools.displayName"
            policyType: "tools.policyType"
            enabled: "tools.enabled"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-targets
          description: "List all discovery targets (cloud accounts, hypervisors, Kubernetes clusters)"
          hints:
            readOnly: true
            openWorld: true
          call: "turbonomic.get-targets"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-templates
          description: "List resource and hardware templates for capacity planning"
          hints:
            readOnly: true
            openWorld: true
          call: "turbonomic.get-templates"
          outputParameters:
            - type: object
              mapping: "$."

        - name: get-topology
          description: "Get infrastructure topology and supply chain relationships"
          hints:
            readOnly: true
            openWorld: true
          call: "turbonomic.get-topology"
          outputParameters:
            - type: object
              mapping: "$."