Wahoo Fitness · Capability

Wahoo Cloud API — Routes

GPS route capability for the Wahoo Cloud API. Manage FIT-backed route files used by ELEMNT bike computers and KICKR indoor courses.

Wahoo Cloud API — Routes is a Naftiko capability published by Wahoo Fitness, one of 7 capabilities the APIs.io network indexes for this provider. It bundles 5 operations.

The capability includes 2 read-only operations and 3 state-changing operations. Lead operation: List Wahoo GPS routes. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Wahoo, Routes, GPS, Cycling, and FIT.

Run with Naftiko WahooRoutesGPSCyclingFIT

MCP Tools

wahoo-list-routes

List Wahoo GPS routes.

read-only idempotent
wahoo-create-route

Create a Wahoo GPS route.

wahoo-get-route

Get a Wahoo GPS route.

read-only idempotent
wahoo-update-route

Update a Wahoo GPS route.

idempotent
wahoo-delete-route

Delete a Wahoo GPS route.

idempotent

Capability Spec

cloud-routes.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Wahoo Cloud API — Routes
  description: >-
    GPS route capability for the Wahoo Cloud API. Manage FIT-backed route
    files used by ELEMNT bike computers and KICKR indoor courses.
  tags:
    - Wahoo
    - Routes
    - GPS
    - Cycling
    - FIT
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
  - namespace: env
    keys:
      WAHOO_ACCESS_TOKEN: WAHOO_ACCESS_TOKEN
capability:
  consumes:
    - type: http
      namespace: cloud-routes
      baseUri: https://api.wahooligan.com
      description: Wahoo Cloud Routes surface.
      resources:
        - name: v1-routes
          path: /v1/routes
          operations:
            - name: listRoutes
              method: GET
              description: List routes.
            - name: createRoute
              method: POST
              description: Create a route (multipart with FIT file).
              inputParameters: [{ name: body, in: body, type: object, required: true }]
        - name: v1-routes-id
          path: /v1/routes/{id}
          operations:
            - name: getRoute
              method: GET
              description: Get a route by id.
              inputParameters: [{ name: id, in: path, type: integer, required: true }]
            - name: updateRoute
              method: PUT
              description: Update a route.
              inputParameters:
                - { name: id, in: path, type: integer, required: true }
                - { name: body, in: body, type: object, required: true }
            - name: deleteRoute
              method: DELETE
              description: Delete a route.
              inputParameters: [{ name: id, in: path, type: integer, required: true }]
      authentication:
        type: bearer
        value: '{{env.WAHOO_ACCESS_TOKEN}}'
        placement: header
  exposes:
    - type: mcp
      namespace: cloud-routes-mcp
      port: 9090
      transport: http
      description: MCP adapter for Wahoo Cloud Routes.
      tools:
        - name: wahoo-list-routes
          description: List Wahoo GPS routes.
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: cloud-routes.listRoutes
        - name: wahoo-create-route
          description: Create a Wahoo GPS route.
          hints: { readOnly: false, destructive: false, idempotent: false }
          call: cloud-routes.createRoute
          with: { body: tools.body }
        - name: wahoo-get-route
          description: Get a Wahoo GPS route.
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: cloud-routes.getRoute
          with: { id: tools.id }
        - name: wahoo-update-route
          description: Update a Wahoo GPS route.
          hints: { readOnly: false, destructive: false, idempotent: true }
          call: cloud-routes.updateRoute
          with: { id: tools.id, body: tools.body }
        - name: wahoo-delete-route
          description: Delete a Wahoo GPS route.
          hints: { readOnly: false, destructive: true, idempotent: true }
          call: cloud-routes.deleteRoute
          with: { id: tools.id }