Reolink · Capability

Reolink Camera Management

Unified workflow for managing and monitoring Reolink IP cameras and NVRs. Combines device system management, PTZ control, recording search and playback, AI-powered object detection, motion alarm configuration, and LED/lighting control into a single interface for security operators, smart home integrators, and IoT automation platforms.

Run with Naftiko IoTSecurity CamerasSurveillanceSmart HomePTZ

What You Can Do

GET
Get device info — Get camera device information and firmware details
/v1/device/info
GET
Get time — Get device date and time settings
/v1/device/time
POST
Set time — Set device date and time
/v1/device/time
GET
Get channel status — Get status of all camera channels
/v1/device/channels
GET
Get hdd info — Get hard drive storage information
/v1/device/storage
POST
Ptz control — Control camera pan, tilt, and zoom
/v1/ptz/control
GET
Get ptz presets — Get saved PTZ preset positions
/v1/ptz/presets
GET
Get recording settings — Get recording schedule and settings
/v1/recordings/settings
POST
Search recordings — Search recordings by date and time range
/v1/recordings/search
GET
Get motion alarm — Get motion detection configuration
/v1/alarms/motion
POST
Set motion alarm — Configure motion detection settings
/v1/alarms/motion
GET
Get ai state — Get current AI detection state (person, vehicle, animal)
/v1/ai/state
POST
Capture snapshot — Capture a snapshot image from the camera
/v1/video/snapshot
GET
Get ir lights — Get infrared LED settings
/v1/led/ir
POST
Set ir lights — Configure infrared LED mode
/v1/led/ir

MCP Tools

get-device-info

Get Reolink camera device information including model, firmware, and hardware details

read-only
get-channel-status

Get the online/offline status of all camera channels on the NVR

read-only
get-hdd-info

Get storage drive capacity and status for the camera or NVR

read-only
reboot-camera

Reboot the Reolink camera or NVR device

idempotent
ptz-move

Control PTZ camera movement: pan left/right, tilt up/down, zoom in/out, or go to preset

get-ptz-presets

Get saved PTZ preset positions for a camera channel

read-only
search-recordings

Search camera recordings by date/time range and channel

read-only
get-recording-settings

Get recording schedule and configuration settings for a channel

read-only
get-ai-state

Get current AI object detection state (person, vehicle, animal) for a channel

read-only
get-ai-config

Get AI detection configuration and sensitivity settings for a channel

read-only
set-ai-config

Configure AI object detection parameters (person/vehicle/animal sensitivity) for a channel

idempotent
get-motion-alarm

Get motion detection alarm configuration for a camera channel

read-only
set-motion-alarm

Configure motion detection sensitivity, zones, and schedule for a channel

idempotent
capture-snapshot

Capture a JPEG snapshot from a specific camera channel

read-only
get-ir-lights

Get infrared LED settings for night vision on a camera channel

read-only
set-ir-lights

Configure infrared LED mode (auto/on/off) for night vision

idempotent

APIs Used

reolink

Capability Spec

camera-management.yaml Raw ↑
naftiko: "1.0.0-alpha1"

info:
  label: "Reolink Camera Management"
  description: >-
    Unified workflow for managing and monitoring Reolink IP cameras and NVRs.
    Combines device system management, PTZ control, recording search and playback,
    AI-powered object detection, motion alarm configuration, and LED/lighting control
    into a single interface for security operators, smart home integrators, and IoT
    automation platforms.
  tags:
    - IoT
    - Security Cameras
    - Surveillance
    - Smart Home
    - PTZ
  created: "2026-05-02"
  modified: "2026-05-02"

binds:
  - namespace: env
    keys:
      REOLINK_USERNAME: REOLINK_USERNAME
      REOLINK_PASSWORD: REOLINK_PASSWORD
      REOLINK_CAMERA_IP: REOLINK_CAMERA_IP

capability:
  consumes:
    - import: reolink
      location: ./shared/camera-api.yaml

  exposes:
    - type: rest
      port: 8080
      namespace: reolink-management-api
      description: "Unified REST API for Reolink camera management and surveillance."
      resources:
        - path: /v1/device/info
          name: device-info
          description: "Device system information"
          operations:
            - method: GET
              name: get-device-info
              description: "Get camera device information and firmware details"
              call: "reolink.get-device-info"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/device/time
          name: device-time
          description: "Device time configuration"
          operations:
            - method: GET
              name: get-time
              description: "Get device date and time settings"
              call: "reolink.get-time"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: set-time
              description: "Set device date and time"
              call: "reolink.set-time"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/device/channels
          name: channels
          description: "Camera channel status"
          operations:
            - method: GET
              name: get-channel-status
              description: "Get status of all camera channels"
              call: "reolink.get-channel-status"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/device/storage
          name: storage
          description: "Storage drive information"
          operations:
            - method: GET
              name: get-hdd-info
              description: "Get hard drive storage information"
              call: "reolink.get-hdd-info"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/ptz/control
          name: ptz-control
          description: "PTZ movement control"
          operations:
            - method: POST
              name: ptz-control
              description: "Control camera pan, tilt, and zoom"
              call: "reolink.ptz-control"
              with:
                channel: "rest.channel"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/ptz/presets
          name: ptz-presets
          description: "PTZ preset positions"
          operations:
            - method: GET
              name: get-ptz-presets
              description: "Get saved PTZ preset positions"
              call: "reolink.get-ptz-presets"
              with:
                channel: "rest.channel"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/recordings/settings
          name: recording-settings
          description: "Recording configuration"
          operations:
            - method: GET
              name: get-recording-settings
              description: "Get recording schedule and settings"
              call: "reolink.get-recording-settings"
              with:
                channel: "rest.channel"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/recordings/search
          name: recordings-search
          description: "Search recorded footage"
          operations:
            - method: POST
              name: search-recordings
              description: "Search recordings by date and time range"
              call: "reolink.search-recordings"
              with:
                channel: "rest.channel"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/alarms/motion
          name: motion-alarm
          description: "Motion detection alarm settings"
          operations:
            - method: GET
              name: get-motion-alarm
              description: "Get motion detection configuration"
              call: "reolink.get-motion-alarm"
              with:
                channel: "rest.channel"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: set-motion-alarm
              description: "Configure motion detection settings"
              call: "reolink.set-motion-alarm"
              with:
                channel: "rest.channel"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/ai/state
          name: ai-state
          description: "AI object detection state"
          operations:
            - method: GET
              name: get-ai-state
              description: "Get current AI detection state (person, vehicle, animal)"
              call: "reolink.get-ai-state"
              with:
                channel: "rest.channel"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/video/snapshot
          name: snapshot
          description: "Capture snapshots"
          operations:
            - method: POST
              name: capture-snapshot
              description: "Capture a snapshot image from the camera"
              call: "reolink.capture-snapshot"
              with:
                channel: "rest.channel"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/led/ir
          name: ir-lights
          description: "Infrared LED control"
          operations:
            - method: GET
              name: get-ir-lights
              description: "Get infrared LED settings"
              call: "reolink.get-ir-lights"
              with:
                channel: "rest.channel"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: set-ir-lights
              description: "Configure infrared LED mode"
              call: "reolink.set-ir-lights"
              with:
                channel: "rest.channel"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      port: 9080
      namespace: reolink-management-mcp
      transport: http
      description: "MCP server for AI-assisted Reolink camera management and surveillance monitoring."
      tools:
        - name: get-device-info
          description: "Get Reolink camera device information including model, firmware, and hardware details"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.get-device-info"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-channel-status
          description: "Get the online/offline status of all camera channels on the NVR"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.get-channel-status"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-hdd-info
          description: "Get storage drive capacity and status for the camera or NVR"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.get-hdd-info"
          outputParameters:
            - type: object
              mapping: "$."
        - name: reboot-camera
          description: "Reboot the Reolink camera or NVR device"
          hints:
            readOnly: false
            destructive: false
            idempotent: true
          call: "reolink.reboot"
          outputParameters:
            - type: object
              mapping: "$."
        - name: ptz-move
          description: "Control PTZ camera movement: pan left/right, tilt up/down, zoom in/out, or go to preset"
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "reolink.ptz-control"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-ptz-presets
          description: "Get saved PTZ preset positions for a camera channel"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.get-ptz-presets"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: search-recordings
          description: "Search camera recordings by date/time range and channel"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.search-recordings"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-recording-settings
          description: "Get recording schedule and configuration settings for a channel"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.get-recording-settings"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-ai-state
          description: "Get current AI object detection state (person, vehicle, animal) for a channel"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.get-ai-state"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-ai-config
          description: "Get AI detection configuration and sensitivity settings for a channel"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.get-ai-config"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: set-ai-config
          description: "Configure AI object detection parameters (person/vehicle/animal sensitivity) for a channel"
          hints:
            readOnly: false
            destructive: false
            idempotent: true
          call: "reolink.set-ai-config"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-motion-alarm
          description: "Get motion detection alarm configuration for a camera channel"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.get-motion-alarm"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: set-motion-alarm
          description: "Configure motion detection sensitivity, zones, and schedule for a channel"
          hints:
            readOnly: false
            destructive: false
            idempotent: true
          call: "reolink.set-motion-alarm"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: capture-snapshot
          description: "Capture a JPEG snapshot from a specific camera channel"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.capture-snapshot"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-ir-lights
          description: "Get infrared LED settings for night vision on a camera channel"
          hints:
            readOnly: true
            openWorld: false
          call: "reolink.get-ir-lights"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."
        - name: set-ir-lights
          description: "Configure infrared LED mode (auto/on/off) for night vision"
          hints:
            readOnly: false
            destructive: false
            idempotent: true
          call: "reolink.set-ir-lights"
          with:
            channel: "tools.channel"
          outputParameters:
            - type: object
              mapping: "$."