Connect your cameras. Give your agent eyes.

How to install the Rikuy Bridge, connect your recorder and add Rikuy to any agent that speaks MCP. Every page here also exists as Markdown, so your agent can read it too.

{{mdPath}}

Overview

Rikuy connects the security cameras a business already has to the owner's own AI agent. The owner decides which cameras the agent can see and when. Every time the agent sees something, Rikuy records a look.

01 · at the storeRikuy BridgeA small box that talks to the recorder and dials out to Rikuy. No ports to open. Drops audio at the source.
02 · in the cloudMCP serverChecks permissions, records the look, then asks the Bridge for frames or a clip. No video is stored in our cloud.
03 · for the ownerapp.rikuy.siCameras, schedule, activity and notices. Cut all access is one tap away on every screen.

The objects

The site, the app and the MCP server use the same names. If it is not in this list, it does not appear in the interface.

ObjectWhat it isStates
Location loc_A storesetup, active, cut, canceled
BridgeThe box at the storeunpaired, online, offline
RecorderThe store's DVR or NVR, where the video livesdiscovered, connected, auth_failed, unreachable
Camera cam_One channel of the recorder, with its name, zone and "what it sees"off, on, blocked · live, offline, not_recording
ScheduleWhen the agent can look: a 7 × 24 hour grid and days back (1 to 30)Every change is logged
Agent connection conn_An agent the owner authorizedactive, revoked
Look look_Each time an agent sees somethingok, error · flagged · reviewed
MembershipThe account's planpending, active, past_due, canceled

Rules the server enforces

  • A camera tagged restroom or changing area is blocked and can never be turned on.
  • No camera turns on while the employee notice and the store sign are not posted.
  • No image leaves without a recorded look. If the record fails, the call fails.
  • A location in cut answers ACCESS_CUT to every look tool.

Quickstart

From an invite to the first look in four steps. Rikuy is in private demo: you need an invite code from our team, or your agent can request one for you.

Requirements

  • A Hikvision or Dahua recorder (Lorex included). Reolink and other RTSP or ONVIF cameras come next.
  • A free Ethernet jack on the store router to plug in the Rikuy Bridge. No ports to open.
  • An agent that speaks MCP: Claude, ChatGPT, Grok, or a self-hosted one.

1. Create the account

You sign up: open rikuy.si/start, verify your email or phone, add your business and location, and accept the terms. The Free plan covers your first location, up to 4 cameras, no card.

Or your agent signs you up: it calls check_cameras and start_membership, then shows you a link and an 8 character code. You approve at rikuy.si/approve, in your own browser. In ChatGPT this step is not available: the plugin sends you to the pricing page.

// your agent → Rikuy
{
  "tool": "start_membership",
  "arguments": { "business": "Sunrise Food Mart", "locations": 1, "recorder": "Hikvision DS-7608NI" }
}
// Rikuy → your agent
{ "status": "pending", "approval_url": "https://rikuy.si/approve", "user_code": "KQ7M-4TZP", "expires_in": 900 }

2. Connect the recorder

Plug the Bridge into power and the router, type its code in Setup, confirm the recorder brand and model, and enter the password of a user you create for Rikuy on the recorder. See Install the Bridge.

3. Name the cameras and set the schedule

Rikuy proposes names from the convenience store template: Register, Lottery counter, Pumps, Coolers, Back door, Office, Restroom. Restroom is blocked. Post the employee notice and the sign, mark them as posted in Notices, then turn cameras on one by one and pick a schedule: Always, Business hours, Night only or Never.

4. Ask your first question

What do you see on the register camera right now?
One customer at the counter, the clerk at the register. Lottery case closed. look_8f2a · 1 frame

The look shows up in Activity within seconds. That is your end to end test.

If something fails

The agent receives a named error and tells you what to fix. The most common in setup are NOTICES_PENDING, CAMERA_OFF and BRIDGE_OFFLINE. Full list in Errors.

Install the Bridge

The Rikuy Bridge sits on the store network, talks to the recorder and opens an outbound connection to Rikuy. You open no ports. Audio is dropped at the source. Video stays on your recorder.

br_01 · online · Hikvision DS-7608NI · clock +2 s

Requirements

  • Power and one Ethernet cable to the router the recorder uses.
  • Outbound internet. No inbound rules, no port forwarding.
  • Admin access to the recorder, once, to create a user for Rikuy.

Steps

  1. Connect the Bridge to power and to the router. During the demo, our team installs it with you on a video call.
  2. In app.rikuy.si, open Setup and type the code printed on the Bridge. It turns online.
  3. The Bridge finds the recorder on the network. Confirm brand and model.
  4. On the recorder, create a user for Rikuy and turn on the right service: ISAPI on Hikvision, the HTTP API on Dahua, RTSP on both. Type that user's password in Setup.
  5. The Bridge tests one frame, a search and a download on one channel. The recorder turns connected and your cameras appear, all off.

Check the clock

The Bridge keeps its own time by NTP and measures the recorder's offset. Rikuy corrects every frame's time, and emails you if the recorder drifts more than 60 seconds. On Hikvision, a clock more than 5 minutes off also breaks digest login.

Errors in setup

What you seeWhat to do
Recorder not foundCheck that the Bridge and the recorder are on the same router. Type the recorder's IP by hand.
Password rejected auth_failedRecreate the Rikuy user on the recorder and check its permissions.
RTSP or ISAPI is offTurn the service on in the recorder's network settings, then retry.
Bridge offline BRIDGE_OFFLINECheck power and cable. If the router reboots itself at night, change its schedule. Ask for help on WhatsApp.

MCP overview

Rikuy is an MCP server. Any agent that speaks MCP can add it with one URL and ask the owner to approve the connection.

server     https://mcp.rikuy.si/mcp
transport  Streamable HTTP, stateless
spec       MCP 2026-07-28
auth       OAuth 2.1 + PKCE, clients by CIMD
card       https://mcp.rikuy.si/mcp/server-card
registry   si.rikuy/cameras

How a look works

  1. Your agent calls list_cameras and picks a camera by its "what it sees".
  2. It calls get_frame, get_frames or get_clip with a time and a purpose.
  3. Rikuy checks, on the server: membership active, location not cut, camera on, hour allowed, days back. If anything fails, it returns a named error.
  4. Rikuy records the look before it asks for any image.
  5. The Bridge brings the frames from the recorder, fixes their time and uploads them. Every answer carries the note "Review the clip before acting on it."
  6. The agent answers the owner, then calls record_answer with its conclusion, and flags it if it found something.

What the server asks of agents

  • Describe facts. Do not identify people by their face.
  • Stop and tell the owner if an image shows a restroom or changing area.
  • Call record_answer after answering, so the owner sees the conclusion next to the look.

Cost to the owner's AI plan

Each image uses tokens from the owner's AI plan. Rikuy sends frames at 1280 × 720 and caps a single look at 24 frames. As a reference, Claude counts about 1,200 tokens for one such frame.

Coming in v1.1

Resources rikuy://locations and rikuy://locations/{loc}/cameras, and a prompt review_night_shift for convenience stores.

Tools

Verb and object, in snake_case. IDs carry a prefix (loc_, cam_, look_, conn_) and match the app. Every look tool is read only and requires purpose, which goes to the activity log.

GroupToolInputReturns
{{t.grp}}{{t.name}}{{t.input}}{{t.out}}

Sign-up, no account needed

{ "tool": "check_cameras", "arguments": { "brand": "Hikvision", "model": "DS-7608NI" } }
→ { "compatible": true, "method": "ISAPI + RTSP" }

Look

{
  "tool": "get_frames",
  "arguments": {
    "camera_id": "cam_01",
    "start": "2026-10-18T22:00:00-04:00",
    "end": "2026-10-19T06:00:00-04:00",
    "count": 12,
    "purpose": "Compare scratch-offs handed out with the lottery terminal report"
  }
}
→ 12 images (JPEG, 1280 px), each with recorder time and corrected time
  "look_id": "look_8f2a", "note": "Review the clip before acting on it."

Activity

{
  "tool": "record_answer",
  "arguments": {
    "look_ids": ["look_8f2a"],
    "summary": "14 tickets handed out after 2 AM with no matching sale.",
    "flagged": true
  }
}
→ { "ok": true }   // the owner gets "Your agent flagged a look"

Limits

  • get_frames: up to 24 frames per look. Long ranges run as an MCP task.
  • get_clip: up to 120 seconds, MP4 without audio, signed link that expires in 24 hours.
  • Each location has a fixed usage limit. Past it, tools answer RATE_LIMITED.

Auth

Your agent never gets a password and never touches a card. The owner approves each agent in their own browser, and can revoke it from the app at any time.

Requirements

  • An MCP client with OAuth 2.1 and PKCE.
  • A client ID published as a CIMD: a URL that describes the client. Rikuy shows its name to the owner and logs it on every look.

Flow

{{s.n}}
{{s.t}}{{s.d}}
GET https://mcp.rikuy.si/.well-known/oauth-protected-resource
→ { "resource": "https://mcp.rikuy.si/mcp", "authorization_servers": ["https://rikuy.si"] }

Revoking

In the app, Agents lists every connection with its last look. Disconnect revokes that agent's tokens at once. Cut all access revokes every agent in every location in under 5 seconds. Turning access back on asks for confirmation.

Errors

An expired or revoked token gets a standard OAuth 401. A valid token on a cut location gets ACCESS_CUT.

Errors

Permissions and schedules are enforced on the server, never in the agent. Each error has a sentence the agent can say to the owner and a place in the app where it is fixed.

ErrorMeaningAgent says to the ownerFixed in
{{e.code}}{{e.mean}}{{e.say}}{{e.fix}}
{
  "isError": true,
  "code": "OUTSIDE_SCHEDULE",
  "message": "That hour is outside the schedule you set.",
  "fix_url": "https://app.rikuy.si/l/loc_7KQ2/schedule"
}

Changelog v2

Published after the private demo. Every change to tools, errors or prices will be listed here and in /docs/changelog.md.

Private demo
First toolscheck_cameras, start_membership, get_membership_status, list_cameras, get_frame, get_frames, get_clip, get_activity_log, record_answer.
v1.1
PlannedMCP resources for locations and cameras, the review_night_shift prompt, WhatsApp alerts for flagged looks.

Install flow for AI agents

If you are an agent, this page is all you need. Check the recorder, start the plan, hand the owner a link and a code. They approve and pay in their own browser. You never touch a card.

https://mcp.rikuy.si/mcp is the server. Pricing: Free for the first location (up to 4 cameras, 3 people). Standard, $7 per person per month. Agents never count.

Eight steps

  1. {{f.n}}
    {{f.title}}{{f.text}}

Call and response

{
  "tool": "start_membership",
  "arguments": { "business": "Sunrise Food Mart", "locations": 1, "recorder": "Hikvision DS-7608NI", "referred_by_agent": "claude" }
}

{
  "status": "pending",
  "approval_url": "https://rikuy.si/approve",
  "user_code": "KQ7M-4TZP",
  "expires_in": 900
}

On ChatGPT, skip step 3. Members sign up at rikuy.si, as OpenAI requires, and the plugin connects afterwards.

Rules

  • {{r.k}} {{r.t}}

Machine-readable files

Every page has a Markdown twin, same source as the HTML, no JavaScript needed. Add .md to any URL.

{{f.path}}{{f.what}}

Stuck in setup? We do it with you.

During the private demo, every store gets a guided install on a video call, in English or Spanish.