Freestyle · Capability

Freestyle VMs API — Vms

Freestyle VMs API vms surface. 17 operations. Lead operation: list_vms. Self-contained Naftiko capability for one Freestyle business surface.

Freestyle VMs API — Vms is a Naftiko capability published by Freestyle, one of 30 capabilities the APIs.io network indexes for this provider. It bundles 17 operations across the POST, GET, and DELETE methods rooted at /v1/v1/vms.

The capability includes 4 read-only operations and 13 state-changing operations. Lead operation: list-vms. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Freestyle, VM, and Vms.

Run with Naftiko FreestyleVMVms

What You Can Do

GET
List vms — list-vms
/v1/v1/vms
POST
Create vm — create-vm
/v1/v1/vms
POST
Resize vm — resize-vm
/v1/v1/vms/{id}/resize
GET
Get vm — get-vm
/v1/v1/vms/{vm_id}
DELETE
Delete vm — delete-vm
/v1/v1/vms/{vm_id}
POST
Wait vm — wait-vm
/v1/v1/vms/{vm_id}/await
GET
Get build for vm — get-build-for-vm
/v1/v1/vms/{vm_id}/build
POST
Exec await — exec-await
/v1/v1/vms/{vm_id}/exec-await
POST
Fork vm — fork-vm
/v1/v1/vms/{vm_id}/fork
POST
Kill vm — kill-vm
/v1/v1/vms/{vm_id}/kill
POST
Optimize vm — optimize-vm
/v1/v1/vms/{vm_id}/optimize
POST
Snapshot vm — snapshot-vm
/v1/v1/vms/{vm_id}/snapshot
POST
Start vm — start-vm
/v1/v1/vms/{vm_id}/start
GET
Stats stream — stats-stream
/v1/v1/vms/{vm_id}/stats/stream
POST
Stop vm — stop-vm
/v1/v1/vms/{vm_id}/stop
POST
Suspend vm — suspend-vm
/v1/v1/vms/{vm_id}/suspend
POST
Watch files — watch-files
/v1/v1/vms/{vm_id}/watch-files

MCP Tools

freestyle-list-vms

list-vms

read-only idempotent
freestyle-create-vm

create-vm

freestyle-resize-vm

resize-vm

freestyle-get-vm

get-vm

read-only idempotent
freestyle-delete-vm

delete-vm

idempotent
freestyle-wait-vm

wait-vm

freestyle-get-build-for-vm

get-build-for-vm

read-only idempotent
freestyle-exec-await

exec-await

freestyle-fork-vm

fork-vm

freestyle-kill-vm

kill-vm

freestyle-optimize-vm

optimize-vm

freestyle-snapshot-vm

snapshot-vm

freestyle-start-vm

start-vm

freestyle-stats-stream

stats-stream

read-only idempotent
freestyle-stop-vm

stop-vm

freestyle-suspend-vm

suspend-vm

freestyle-watch-files

watch-files

Capability Spec

vm-vms.yaml Raw ↑
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: $.