Viam · Capability

Viam Motion Service — Planning

Plan and execute motion for components — Move, MoveOnMap, MoveOnGlobe, StopPlan, GetPlan.

Viam Motion Service — Planning is a Naftiko capability published by Viam, one of 27 capabilities the APIs.io network indexes for this provider. It bundles 6 operations.

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

Tagged areas include Viam, Motion, and Planning.

Run with Naftiko ViamMotionPlanning

MCP Tools

viam-move

Plan and execute motion.

viam-move-on-map

Move on SLAM map.

viam-move-on-globe

Move on globe.

viam-stop-plan

Stop motion plan.

idempotent
viam-list-plan-statuses

List motion plans.

read-only idempotent
viam-get-plan

Get motion plan.

read-only idempotent

Capability Spec

motion-planning.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Viam Motion Service — Planning
  description: Plan and execute motion for components — Move, MoveOnMap, MoveOnGlobe, StopPlan, GetPlan.
  tags: [Viam, Motion, Planning]
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
- namespace: env
  keys:
    VIAM_API_KEY: VIAM_API_KEY
    VIAM_MACHINE_ADDRESS: VIAM_MACHINE_ADDRESS
capability:
  consumes:
  - type: http
    namespace: motion-planning
    baseUri: '{{env.VIAM_MACHINE_ADDRESS}}'
    description: Viam MotionService.
    resources:
    - name: move
      path: /viam.service.motion.v1.MotionService/Move
      operations:
      - { name: move, method: POST, description: Plan and execute a motion., outputRawFormat: json, inputParameters: [{ name: body, in: body, type: object, required: true }] }
    - name: move-on-map
      path: /viam.service.motion.v1.MotionService/MoveOnMap
      operations:
      - { name: moveOnMap, method: POST, description: Move on a SLAM map., outputRawFormat: json, inputParameters: [{ name: body, in: body, type: object, required: true }] }
    - name: move-on-globe
      path: /viam.service.motion.v1.MotionService/MoveOnGlobe
      operations:
      - { name: moveOnGlobe, method: POST, description: Move on GPS coordinates., outputRawFormat: json, inputParameters: [{ name: body, in: body, type: object, required: true }] }
    - name: stop-plan
      path: /viam.service.motion.v1.MotionService/StopPlan
      operations:
      - { name: stopPlan, method: POST, description: Stop a motion plan., outputRawFormat: json, inputParameters: [{ name: body, in: body, type: object, required: true }] }
    - name: list-plan-statuses
      path: /viam.service.motion.v1.MotionService/ListPlanStatuses
      operations:
      - { name: listPlanStatuses, method: POST, description: List motion plans., outputRawFormat: json, inputParameters: [{ name: body, in: body, type: object, required: true }] }
    - name: get-plan
      path: /viam.service.motion.v1.MotionService/GetPlan
      operations:
      - { name: getPlan, method: POST, description: Get a motion plan., outputRawFormat: json, inputParameters: [{ name: body, in: body, type: object, required: true }] }
    authentication:
      type: apikey
      key: key
      value: '{{env.VIAM_API_KEY}}'
      placement: header
  exposes:
  - type: mcp
    namespace: motion-planning-mcp
    port: 9090
    transport: http
    description: MCP adapter for motion planning.
    tools:
    - { name: viam-move, description: Plan and execute motion., hints: { readOnly: false, destructive: false, idempotent: false }, call: motion-planning.move, with: { body: tools.body } }
    - { name: viam-move-on-map, description: Move on SLAM map., hints: { readOnly: false, destructive: false, idempotent: false }, call: motion-planning.moveOnMap, with: { body: tools.body } }
    - { name: viam-move-on-globe, description: Move on globe., hints: { readOnly: false, destructive: false, idempotent: false }, call: motion-planning.moveOnGlobe, with: { body: tools.body } }
    - { name: viam-stop-plan, description: Stop motion plan., hints: { readOnly: false, destructive: true, idempotent: true }, call: motion-planning.stopPlan, with: { body: tools.body } }
    - { name: viam-list-plan-statuses, description: List motion plans., hints: { readOnly: true, destructive: false, idempotent: true }, call: motion-planning.listPlanStatuses, with: { body: tools.body } }
    - { name: viam-get-plan, description: Get motion plan., hints: { readOnly: true, destructive: false, idempotent: true }, call: motion-planning.getPlan, with: { body: tools.body } }