naftiko: 1.0.0-alpha2 info: label: "Freestyle VMs API \u2014 Vms" description: 'Freestyle VMs API vms surface. 17 operations. Lead operation: list_vms. Self-contained Naftiko capability for one Freestyle business surface.' tags: - Freestyle - VM - Vms created: '2026-05-25' modified: '2026-05-25' binds: - namespace: env keys: FREESTYLE_API_KEY: FREESTYLE_API_KEY capability: consumes: - type: http namespace: vm-vms baseUri: https://api.freestyle.sh description: Freestyle VMs API vms business capability. resources: - name: v1-vms path: /v1/vms operations: - name: list-vms method: GET description: list_vms outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: string required: false - name: offset in: query type: string required: false - name: vmState in: query type: string required: false - name: includeDeleted in: query type: string required: false - name: search in: query type: string required: false - name: create-vm method: POST description: create_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms-resize path: /v1/vms/{id}/resize operations: - name: resize-vm method: POST description: resize_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms path: /v1/vms/{vm_id} operations: - name: get-vm method: GET description: get_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: delete-vm method: DELETE description: delete_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: v1-vms-await path: /v1/vms/{vm_id}/await operations: - name: wait-vm method: POST description: wait_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms-build path: /v1/vms/{vm_id}/build operations: - name: get-build-for-vm method: GET description: get_build_for_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: v1-vms-exec-await path: /v1/vms/{vm_id}/exec-await operations: - name: exec-await method: POST description: exec_await outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms-fork path: /v1/vms/{vm_id}/fork operations: - name: fork-vm method: POST description: fork_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms-kill path: /v1/vms/{vm_id}/kill operations: - name: kill-vm method: POST description: kill_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms-optimize path: /v1/vms/{vm_id}/optimize operations: - name: optimize-vm method: POST description: optimize_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms-snapshot path: /v1/vms/{vm_id}/snapshot operations: - name: snapshot-vm method: POST description: snapshot_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms-start path: /v1/vms/{vm_id}/start operations: - name: start-vm method: POST description: start_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms-stats-stream path: /v1/vms/{vm_id}/stats/stream operations: - name: stats-stream method: GET description: stats_stream outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: interval_ms in: query type: string required: false - name: v1-vms-stop path: /v1/vms/{vm_id}/stop operations: - name: stop-vm method: POST description: stop_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms-suspend path: /v1/vms/{vm_id}/suspend operations: - name: suspend-vm method: POST description: suspend_vm outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-vms-watch-files path: /v1/vms/{vm_id}/watch-files operations: - name: watch-files method: POST description: watch_files outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: vm_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false authentication: type: apikey key: Authorization value: Bearer {{env.FREESTYLE_API_KEY}} placement: header exposes: - type: rest namespace: vm-vms-rest port: 8080 description: REST adapter for Freestyle VMs API vms. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/v1/vms name: v1-vms description: REST surface for v1-vms. operations: - method: GET name: list-vms description: list-vms call: vm-vms.list-vms with: {} outputParameters: - type: object mapping: $. - method: POST name: create-vm description: create-vm call: vm-vms.create-vm with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{id}/resize name: v1-vms-resize description: REST surface for v1-vms-resize. operations: - method: POST name: resize-vm description: resize-vm call: vm-vms.resize-vm with: id: rest.path.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id} name: v1-vms description: REST surface for v1-vms. operations: - method: GET name: get-vm description: get-vm call: vm-vms.get-vm with: vm_id: rest.path.vm_id outputParameters: - type: object mapping: $. - method: DELETE name: delete-vm description: delete-vm call: vm-vms.delete-vm with: vm_id: rest.path.vm_id outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/await name: v1-vms-await description: REST surface for v1-vms-await. operations: - method: POST name: wait-vm description: wait-vm call: vm-vms.wait-vm with: vm_id: rest.path.vm_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/build name: v1-vms-build description: REST surface for v1-vms-build. operations: - method: GET name: get-build-for-vm description: get-build-for-vm call: vm-vms.get-build-for-vm with: vm_id: rest.path.vm_id outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/exec-await name: v1-vms-exec-await description: REST surface for v1-vms-exec-await. operations: - method: POST name: exec-await description: exec-await call: vm-vms.exec-await with: vm_id: rest.path.vm_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/fork name: v1-vms-fork description: REST surface for v1-vms-fork. operations: - method: POST name: fork-vm description: fork-vm call: vm-vms.fork-vm with: vm_id: rest.path.vm_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/kill name: v1-vms-kill description: REST surface for v1-vms-kill. operations: - method: POST name: kill-vm description: kill-vm call: vm-vms.kill-vm with: vm_id: rest.path.vm_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/optimize name: v1-vms-optimize description: REST surface for v1-vms-optimize. operations: - method: POST name: optimize-vm description: optimize-vm call: vm-vms.optimize-vm with: vm_id: rest.path.vm_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/snapshot name: v1-vms-snapshot description: REST surface for v1-vms-snapshot. operations: - method: POST name: snapshot-vm description: snapshot-vm call: vm-vms.snapshot-vm with: vm_id: rest.path.vm_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/start name: v1-vms-start description: REST surface for v1-vms-start. operations: - method: POST name: start-vm description: start-vm call: vm-vms.start-vm with: vm_id: rest.path.vm_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/stats/stream name: v1-vms-stats-stream description: REST surface for v1-vms-stats-stream. operations: - method: GET name: stats-stream description: stats-stream call: vm-vms.stats-stream with: vm_id: rest.path.vm_id outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/stop name: v1-vms-stop description: REST surface for v1-vms-stop. operations: - method: POST name: stop-vm description: stop-vm call: vm-vms.stop-vm with: vm_id: rest.path.vm_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/suspend name: v1-vms-suspend description: REST surface for v1-vms-suspend. operations: - method: POST name: suspend-vm description: suspend-vm call: vm-vms.suspend-vm with: vm_id: rest.path.vm_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/vms/{vm_id}/watch-files name: v1-vms-watch-files description: REST surface for v1-vms-watch-files. operations: - method: POST name: watch-files description: watch-files call: vm-vms.watch-files with: vm_id: rest.path.vm_id body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: vm-vms-mcp port: 9090 transport: http description: MCP adapter for Freestyle VMs API vms. One tool per consumed operation. tools: - name: freestyle-list-vms description: list-vms hints: readOnly: true destructive: false idempotent: true call: vm-vms.list-vms with: {} outputParameters: - type: object mapping: $. - name: freestyle-create-vm description: create-vm hints: readOnly: false destructive: false idempotent: false call: vm-vms.create-vm with: body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-resize-vm description: resize-vm hints: readOnly: false destructive: false idempotent: false call: vm-vms.resize-vm with: id: tools.path.id body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-get-vm description: get-vm hints: readOnly: true destructive: false idempotent: true call: vm-vms.get-vm with: vm_id: tools.path.vm_id outputParameters: - type: object mapping: $. - name: freestyle-delete-vm description: delete-vm hints: readOnly: false destructive: true idempotent: true call: vm-vms.delete-vm with: vm_id: tools.path.vm_id outputParameters: - type: object mapping: $. - name: freestyle-wait-vm description: wait-vm hints: readOnly: false destructive: false idempotent: false call: vm-vms.wait-vm with: vm_id: tools.path.vm_id body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-get-build-for-vm description: get-build-for-vm hints: readOnly: true destructive: false idempotent: true call: vm-vms.get-build-for-vm with: vm_id: tools.path.vm_id outputParameters: - type: object mapping: $. - name: freestyle-exec-await description: exec-await hints: readOnly: false destructive: false idempotent: false call: vm-vms.exec-await with: vm_id: tools.path.vm_id body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-fork-vm description: fork-vm hints: readOnly: false destructive: false idempotent: false call: vm-vms.fork-vm with: vm_id: tools.path.vm_id body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-kill-vm description: kill-vm hints: readOnly: false destructive: false idempotent: false call: vm-vms.kill-vm with: vm_id: tools.path.vm_id body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-optimize-vm description: optimize-vm hints: readOnly: false destructive: false idempotent: false call: vm-vms.optimize-vm with: vm_id: tools.path.vm_id body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-snapshot-vm description: snapshot-vm hints: readOnly: false destructive: false idempotent: false call: vm-vms.snapshot-vm with: vm_id: tools.path.vm_id body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-start-vm description: start-vm hints: readOnly: false destructive: false idempotent: false call: vm-vms.start-vm with: vm_id: tools.path.vm_id body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-stats-stream description: stats-stream hints: readOnly: true destructive: false idempotent: true call: vm-vms.stats-stream with: vm_id: tools.path.vm_id outputParameters: - type: object mapping: $. - name: freestyle-stop-vm description: stop-vm hints: readOnly: false destructive: false idempotent: false call: vm-vms.stop-vm with: vm_id: tools.path.vm_id body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-suspend-vm description: suspend-vm hints: readOnly: false destructive: false idempotent: false call: vm-vms.suspend-vm with: vm_id: tools.path.vm_id body: tools.body outputParameters: - type: object mapping: $. - name: freestyle-watch-files description: watch-files hints: readOnly: false destructive: false idempotent: false call: vm-vms.watch-files with: vm_id: tools.path.vm_id body: tools.body outputParameters: - type: object mapping: $.