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.
| Group | Tool | Input | Returns |
|---|---|---|---|
| Sign-up | check_cameras | brand, model | Whether the recorder is compatible and how Rikuy connects to it. No account needed. |
| Sign-up | start_membership | business, locations, recorder | A pending approval: link, 8 character code, expires in 15 minutes. |
| Sign-up | get_membership_status | none | pending, active, past_due or canceled. |
| Look | list_cameras | none | Cameras with id, name, zone, what it sees, whether it can be seen now, days back, time zone, clock offset. |
| Look | get_frame | camera_id, at, purpose | One JPEG up to 1280 px, recorder time, corrected time, look_id. at is "now" or a date and time. |
| Look | get_frames | camera_id, start, end, count, purpose | Up to 24 frames sampled across the range, with their times and a look_id. |
| Look | get_clip | camera_id, start, end, purpose | Signed link to an MP4 without audio, up to 120 s, expires in 24 h, look_id. |
| Activity | get_activity_log | since, until | The looks this agent made in that range. |
| Activity | record_answer | look_ids, summary, flagged | Confirmation. The conclusion is saved next to the look. Writes only to the log. |
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.