naftiko: 1.0.0-alpha2 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-06' binds: - namespace: env keys: TURBONOMIC_BEARER_TOKEN: TURBONOMIC_BEARER_TOKEN capability: consumes: - type: http namespace: turbonomic baseUri: https://{turbonomic_host}/api/v3 description: IBM Turbonomic Application Resource Management REST API authentication: type: bearer token: '{{TURBONOMIC_BEARER_TOKEN}}' resources: - name: entities path: /entities description: Managed entities including VMs, containers, and applications operations: - name: get-entities method: GET description: Retrieve all entities in the Turbonomic environment inputParameters: - name: entity_type in: query type: string required: false description: Filter by entity type (VirtualMachine, Container, Application) - name: limit in: query type: integer required: false description: Maximum number of entities to return outputRawFormat: json outputParameters: - name: result type: object value: $. - name: entity-by-uuid path: /entities/{uuid} description: Single entity by UUID operations: - name: get-entity-by-uuid method: GET description: Retrieve a specific entity by its unique identifier inputParameters: - name: uuid in: path type: string required: true description: The unique identifier of the entity outputRawFormat: json outputParameters: - name: result type: object value: $. - name: entity-actions path: /entities/{uuid}/actions description: Optimization actions for a specific entity operations: - name: get-entity-actions method: GET description: Retrieve pending optimization actions for a specific entity inputParameters: - name: uuid in: path type: string required: true description: The unique identifier of the entity outputRawFormat: json outputParameters: - name: result type: object value: $. - name: entity-stats path: /entities/{uuid}/stats description: Resource utilization statistics for an entity operations: - name: get-entity-stats method: GET description: Retrieve historical and projected resource statistics for an entity inputParameters: - name: uuid in: path type: string required: true description: The unique identifier of the entity - name: start_date in: query type: string required: false description: Start date for statistics (ISO 8601) - name: end_date in: query type: string required: false description: End date for statistics (ISO 8601) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: markets path: /markets description: Turbonomic markets for environment state projections operations: - name: get-markets method: GET description: Retrieve all Turbonomic markets outputRawFormat: json outputParameters: - name: result type: object value: $. - name: market-actions path: /markets/{uuid}/actions description: Optimization actions pending in a market operations: - name: get-market-actions method: GET description: Retrieve all pending optimization actions for a market inputParameters: - name: uuid in: path type: string required: true description: Market UUID (use 'Market' for realtime) - name: ascending in: query type: boolean required: false description: Sort order for results outputRawFormat: json outputParameters: - name: result type: object value: $. - name: actions path: /actions/{uuid} description: Individual optimization actions operations: - name: get-action-by-uuid method: GET description: Retrieve or execute a specific optimization action inputParameters: - name: uuid in: path type: string required: true description: The unique identifier of the action - name: accept in: query type: boolean required: false description: If true, execute this action outputRawFormat: json outputParameters: - name: result type: object value: $. - name: groups path: /groups description: Logical entity groups operations: - name: get-groups method: GET description: Retrieve all entity groups inputParameters: - name: group_type in: query type: string required: false description: Filter by group type outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-group method: POST description: Create a new entity group outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: displayName: '{{tools.displayName}}' groupType: '{{tools.groupType}}' isStatic: '{{tools.isStatic}}' - name: group-by-uuid path: /groups/{uuid} description: Single entity group by UUID operations: - name: get-group-by-uuid method: GET description: Retrieve a specific entity group inputParameters: - name: uuid in: path type: string required: true description: The unique identifier of the group outputRawFormat: json outputParameters: - name: result type: object value: $. - name: delete-group method: DELETE description: Delete an entity group inputParameters: - name: uuid in: path type: string required: true description: The unique identifier of the group outputRawFormat: json outputParameters: - name: result type: object value: $. - name: policies path: /policies description: Automation and placement policies operations: - name: get-policies method: GET description: Retrieve all automation and placement policies outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-policy method: POST description: Create a new automation or placement policy outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: displayName: '{{tools.displayName}}' policyType: '{{tools.policyType}}' enabled: '{{tools.enabled}}' - name: targets path: /targets description: Discovery targets connected to Turbonomic operations: - name: get-targets method: GET description: Retrieve all discovery targets outputRawFormat: json outputParameters: - name: result type: object value: $. - name: templates path: /templates description: Resource and hardware templates operations: - name: get-templates method: GET description: Retrieve all resource and hardware templates outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-template method: POST description: Create a new resource or hardware template outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: displayName: '{{tools.displayName}}' className: '{{tools.className}}' - name: stats path: /stats description: Aggregated environment statistics operations: - name: get-stats method: POST description: Retrieve aggregated statistics for entities matching criteria outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: statistics: '{{tools.statistics}}' - name: topology path: /topology description: Infrastructure topology and supply chain definitions operations: - name: get-topology method: GET description: Retrieve topology definitions and infrastructure relationships outputRawFormat: json outputParameters: - name: result type: object value: $. 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: $.