skylight_upload_photo
Upload a photo or video to a Skylight frame slideshow, with a preview and confirmation before sending.
Instructions
Upload a photo or video to the Skylight frame (it appears in the slideshow). Pass exactly ONE of image_path (a local file — local installs), image_blob_key (on the hosted connector: call skylight_upload_slots first, PUT the file to the returned uploadUrl, then pass its blobKey) or image_inline (base64; small files only). Two-step: signs an S3 upload with temporary credentials, then registers it as a frame message. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token (and the same file) proceeds (see MCP_CONFIRM_MODE). The preview names the file (absolute image_path, or filename and image_blob_key), detected mime, size, SHA-256 and caption; nothing is uploaded until it is confirmed, and a file that changed in between is refused. A blob-store upload is deleted once Skylight accepts the photo (reported as blob.deleted) and kept if the upload fails.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "skylight_upload_photo"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| caption | No | Caption shown with the photo. | |
| frameId | No | ||
| frame_ids | No | Frame ids to post to; defaults to the resolved frame. | |
| image_path | No | LOCAL installs only: absolute path to an image/video file inside the upload directories (SKYLIGHT_UPLOAD_DIR; by default ~/Pictures and ~/Downloads) (jpg, jpeg, png, heic, gif, webp, mp4, mov; max 200 MiB). Anything else — a file outside those directories, a hidden file, a symlink, or a file whose contents do not match its extension — is refused. Refused on a hosted deployment (the claude.ai connector): use image_blob_key there. | |
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| image_inline | No | The file itself as base64: {filename, contentBase64, mimeType?}. Small files only — the whole file rides inside one tool call (a hosted deployment caps a request at about 9.9 MiB). Same types as image_path; the bytes must match the type. | |
| image_blob_key | No | Hosted deployments: the blobKey from skylight_upload_slots, after the file was PUT to its uploadUrl. Same types as image_path, max 200 MiB. The upload is deleted from the blob store once Skylight accepts it, and kept if the upload fails. |