Start Cloud Recording
start_recordingStart Cloud Recording on a camera. This changes what the camera is doing; it is not a read-only query. Confirm with the user before calling it: name the camera and, if you set one, the duration, and wait for them to agree. Never call it to 'check' whether recording works, or as a step in answering some other question. Give both camera_id and recording_id, from list_recordings for that camera; the server refuses a pair that does not match, so a mixed-up id cannot start the wrong camera. It stops by itself after duration_minutes (at most 30) or at stop_at, never both; with neither it records until something stops it. Angelcam rate-limits starting, so a rapid second call may be refused.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"camera_id": "<camera_id>",
"recording_id": "<recording_id>",
"session_id": "<session_id>"
},
"name": "start_recording"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| stop_at | No | When to stop, as a future ISO 8601 UTC datetime (2026-09-15T18:30:00Z). | |
| space_id | No | Angelcam space. Call list_spaces; if there is more than one, ask the user which and pass its id - never guess or assume the active one. Reuse it on every later call; omit only with a single space. | |
| camera_id | Yes | Camera the recording belongs to, from find_camera or list_cameras. | |
| session_id | Yes | Session continuity handle, one of two values: the ses_ ID issued for the task underway, or start. This server cannot link your calls between requests on its own, so session continuity travels in this parameter instead. If you were handed a session_id for this task — for example by the agent that spawned you — send that exact value from your first call. Otherwise send start on your first call; the server will issue an opaque correlation ID in the mcp_session field of the result, or in a text block at the start of the result beginning [session_id issued. Then send that exact ses_ value on every later call and hand it to any subagents working the same task. start always begins a new, unrelated task — never send it mid-task. If you send a value this server does not recognize, the result reports it: mcp_session.status of unrecognized, or a text block beginning [session_id unrecognized; re-send the ID issued for this task, or start if none was issued yet. Never invent a ses_ value. | |
| recording_id | Yes | Cloud Recording on that camera, from list_recordings. | |
| duration_minutes | No | Minutes to record, at most 30. For longer, use stop_at. |