Pulsoid · Capability

Pulsoid API

Pulsoid enables real-time heart rate data transmission from peripherals (BLE heart rate monitors, smartwatches, etc.) to clients. The Pulsoid REST API provides endpoints to read and submit heart rate data, manage widgets, profile, and validate tokens. Real-time streaming is available via WebSocket endpoints.

Run with Naftiko PulsoidAPI

What You Can Do

GET
Validatetoken — Validate authorization token
/api/v1/token/validate
GET
Getlatestheartrate — Get latest heart rate
/api/v1/data/heart_rate/latest
POST
Submitheartrate — Submit heart rate data
/api/v1/data
GET
Getstatistics — Read heart rate statistics
/api/v1/statistics
GET
Listwidgets — List widgets
/api/v1/widgets
POST
Createwidget — Create widget
/api/v1/widgets
POST
Updatewidget — Update widget configuration
/api/v1/widgets/{widgetId}
GET
Getprofile — Read user profile
/api/v1/profile
GET
Getgdconfig — Get GD mod configuration
/api/v1/geometry-dash-mod/configuration
POST
Updategdconfig — Update GD mod configuration
/api/v1/geometry-dash-mod/configuration
GET
Getfeature — Check feature availability
/api/v1/features/{featureId}
POST
Oauthauthorize — OAuth2 authorize
/oauth2/authorize
POST
Oauthtoken — OAuth2 token exchange/refresh
/oauth2/token
POST
Oauthdeviceauthorization — OAuth2 device authorization
/oauth2/device_authorization
POST
Oauthrevoke — Revoke access token
/oauth2/revoke

MCP Tools

validatetoken

Validate authorization token

read-only idempotent
getlatestheartrate

Get latest heart rate

read-only idempotent
submitheartrate

Submit heart rate data

getstatistics

Read heart rate statistics

read-only idempotent
listwidgets

List widgets

read-only idempotent
createwidget

Create widget

updatewidget

Update widget configuration

getprofile

Read user profile

read-only idempotent
getgdconfig

Get GD mod configuration

read-only idempotent
updategdconfig

Update GD mod configuration

getfeature

Check feature availability

read-only idempotent
oauthauthorize

OAuth2 authorize

oauthtoken

OAuth2 token exchange/refresh

oauthdeviceauthorization

OAuth2 device authorization

oauthrevoke

Revoke access token

Capability Spec

pulsoid-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Pulsoid API
  description: Pulsoid enables real-time heart rate data transmission from peripherals (BLE heart rate monitors, smartwatches,
    etc.) to clients. The Pulsoid REST API provides endpoints to read and submit heart rate data, manage widgets, profile,
    and validate tokens. Real-time streaming is available via WebSocket endpoints.
  tags:
  - Pulsoid
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: pulsoid
    baseUri: https://dev.pulsoid.net
    description: Pulsoid API HTTP API.
    authentication:
      type: bearer
      token: '{{PULSOID_TOKEN}}'
    resources:
    - name: api-v1-token-validate
      path: /api/v1/token/validate
      operations:
      - name: validatetoken
        method: GET
        description: Validate authorization token
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-v1-data-heart-rate-latest
      path: /api/v1/data/heart_rate/latest
      operations:
      - name: getlatestheartrate
        method: GET
        description: Get latest heart rate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-v1-data
      path: /api/v1/data
      operations:
      - name: submitheartrate
        method: POST
        description: Submit heart rate data
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-v1-statistics
      path: /api/v1/statistics
      operations:
      - name: getstatistics
        method: GET
        description: Read heart rate statistics
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-v1-widgets
      path: /api/v1/widgets
      operations:
      - name: listwidgets
        method: GET
        description: List widgets
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createwidget
        method: POST
        description: Create widget
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-v1-widgets-widgetid
      path: /api/v1/widgets/{widgetId}
      operations:
      - name: updatewidget
        method: POST
        description: Update widget configuration
        inputParameters:
        - name: widgetId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-v1-profile
      path: /api/v1/profile
      operations:
      - name: getprofile
        method: GET
        description: Read user profile
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-v1-geometry-dash-mod-configuration
      path: /api/v1/geometry-dash-mod/configuration
      operations:
      - name: getgdconfig
        method: GET
        description: Get GD mod configuration
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: updategdconfig
        method: POST
        description: Update GD mod configuration
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-v1-features-featureid
      path: /api/v1/features/{featureId}
      operations:
      - name: getfeature
        method: GET
        description: Check feature availability
        inputParameters:
        - name: featureId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: oauth2-authorize
      path: /oauth2/authorize
      operations:
      - name: oauthauthorize
        method: POST
        description: OAuth2 authorize
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: oauth2-token
      path: /oauth2/token
      operations:
      - name: oauthtoken
        method: POST
        description: OAuth2 token exchange/refresh
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: oauth2-device-authorization
      path: /oauth2/device_authorization
      operations:
      - name: oauthdeviceauthorization
        method: POST
        description: OAuth2 device authorization
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: oauth2-revoke
      path: /oauth2/revoke
      operations:
      - name: oauthrevoke
        method: POST
        description: Revoke access token
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: pulsoid-rest
    description: REST adapter for Pulsoid API.
    resources:
    - path: /api/v1/token/validate
      name: validatetoken
      operations:
      - method: GET
        name: validatetoken
        description: Validate authorization token
        call: pulsoid.validatetoken
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/v1/data/heart_rate/latest
      name: getlatestheartrate
      operations:
      - method: GET
        name: getlatestheartrate
        description: Get latest heart rate
        call: pulsoid.getlatestheartrate
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/v1/data
      name: submitheartrate
      operations:
      - method: POST
        name: submitheartrate
        description: Submit heart rate data
        call: pulsoid.submitheartrate
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/v1/statistics
      name: getstatistics
      operations:
      - method: GET
        name: getstatistics
        description: Read heart rate statistics
        call: pulsoid.getstatistics
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/v1/widgets
      name: listwidgets
      operations:
      - method: GET
        name: listwidgets
        description: List widgets
        call: pulsoid.listwidgets
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/v1/widgets
      name: createwidget
      operations:
      - method: POST
        name: createwidget
        description: Create widget
        call: pulsoid.createwidget
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/v1/widgets/{widgetId}
      name: updatewidget
      operations:
      - method: POST
        name: updatewidget
        description: Update widget configuration
        call: pulsoid.updatewidget
        with:
          widgetId: rest.widgetId
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/v1/profile
      name: getprofile
      operations:
      - method: GET
        name: getprofile
        description: Read user profile
        call: pulsoid.getprofile
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/v1/geometry-dash-mod/configuration
      name: getgdconfig
      operations:
      - method: GET
        name: getgdconfig
        description: Get GD mod configuration
        call: pulsoid.getgdconfig
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/v1/geometry-dash-mod/configuration
      name: updategdconfig
      operations:
      - method: POST
        name: updategdconfig
        description: Update GD mod configuration
        call: pulsoid.updategdconfig
        outputParameters:
        - type: object
          mapping: $.
    - path: /api/v1/features/{featureId}
      name: getfeature
      operations:
      - method: GET
        name: getfeature
        description: Check feature availability
        call: pulsoid.getfeature
        with:
          featureId: rest.featureId
        outputParameters:
        - type: object
          mapping: $.
    - path: /oauth2/authorize
      name: oauthauthorize
      operations:
      - method: POST
        name: oauthauthorize
        description: OAuth2 authorize
        call: pulsoid.oauthauthorize
        outputParameters:
        - type: object
          mapping: $.
    - path: /oauth2/token
      name: oauthtoken
      operations:
      - method: POST
        name: oauthtoken
        description: OAuth2 token exchange/refresh
        call: pulsoid.oauthtoken
        outputParameters:
        - type: object
          mapping: $.
    - path: /oauth2/device_authorization
      name: oauthdeviceauthorization
      operations:
      - method: POST
        name: oauthdeviceauthorization
        description: OAuth2 device authorization
        call: pulsoid.oauthdeviceauthorization
        outputParameters:
        - type: object
          mapping: $.
    - path: /oauth2/revoke
      name: oauthrevoke
      operations:
      - method: POST
        name: oauthrevoke
        description: Revoke access token
        call: pulsoid.oauthrevoke
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: pulsoid-mcp
    transport: http
    description: MCP adapter for Pulsoid API for AI agent use.
    tools:
    - name: validatetoken
      description: Validate authorization token
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulsoid.validatetoken
      outputParameters:
      - type: object
        mapping: $.
    - name: getlatestheartrate
      description: Get latest heart rate
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulsoid.getlatestheartrate
      outputParameters:
      - type: object
        mapping: $.
    - name: submitheartrate
      description: Submit heart rate data
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulsoid.submitheartrate
      outputParameters:
      - type: object
        mapping: $.
    - name: getstatistics
      description: Read heart rate statistics
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulsoid.getstatistics
      outputParameters:
      - type: object
        mapping: $.
    - name: listwidgets
      description: List widgets
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulsoid.listwidgets
      outputParameters:
      - type: object
        mapping: $.
    - name: createwidget
      description: Create widget
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulsoid.createwidget
      outputParameters:
      - type: object
        mapping: $.
    - name: updatewidget
      description: Update widget configuration
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulsoid.updatewidget
      with:
        widgetId: tools.widgetId
      inputParameters:
      - name: widgetId
        type: string
        description: widgetId
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: getprofile
      description: Read user profile
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulsoid.getprofile
      outputParameters:
      - type: object
        mapping: $.
    - name: getgdconfig
      description: Get GD mod configuration
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulsoid.getgdconfig
      outputParameters:
      - type: object
        mapping: $.
    - name: updategdconfig
      description: Update GD mod configuration
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulsoid.updategdconfig
      outputParameters:
      - type: object
        mapping: $.
    - name: getfeature
      description: Check feature availability
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulsoid.getfeature
      with:
        featureId: tools.featureId
      inputParameters:
      - name: featureId
        type: string
        description: featureId
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: oauthauthorize
      description: OAuth2 authorize
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulsoid.oauthauthorize
      outputParameters:
      - type: object
        mapping: $.
    - name: oauthtoken
      description: OAuth2 token exchange/refresh
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulsoid.oauthtoken
      outputParameters:
      - type: object
        mapping: $.
    - name: oauthdeviceauthorization
      description: OAuth2 device authorization
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulsoid.oauthdeviceauthorization
      outputParameters:
      - type: object
        mapping: $.
    - name: oauthrevoke
      description: Revoke access token
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulsoid.oauthrevoke
      outputParameters:
      - type: object
        mapping: $.
binds:
- namespace: env
  keys:
    PULSOID_TOKEN: PULSOID_TOKEN