Save a large file to my Files
connections_storage_save_large_fileSave a file of any size (up to 5 GB, within the member's storage limit) that the caller holds on its own computer, in three steps by action. begin: reserves the space (refused with storage_quota_exceeded, nothing reserved, when it would not fit) and answers presigned S3 upload URLs: upload.kind single (PUT the bytes to url with headers) or multipart (PUT each partSize chunk to its url, keep each response's ETag); takes filename, size_bytes, content_type. refresh: fresh URLs for named parts of a multipart save whose first URLs lapsed (they last 15 minutes); takes id, upload_id, part_numbers; answers { id, parts: [{ partNumber, url }] }. finish: after the bytes are uploaded, assembles the parts (upload_id and parts [{ partNumber, eTag }] for a multipart upload), checks what landed against the storage limit and the file type, and stores it; takes id, upload_id, parts, folder; with abort true it cancels the save and frees the reserved space. Returns id, name, size and folder like save_file. The local Connections MCP does all three steps from path on connections_storage_save_file; use this tool only from a machine that can PUT to S3.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | From save_file_begin. | |
| abort | No | true cancels the save instead of finishing it. | |
| parts | No | Multipart only: every part's number and the ETag S3 answered its PUT with, ascending. | |
| action | Yes | Which. | |
| folder | No | Optional folder name; made when missing. | |
| person | No | Linked person to run this call as (first name). Omit to run as the connection's holder. | |
| dry_run | No | Preview only. | |
| project | No | Workspace to run this call in (id or name). | |
| filename | No | With its extension, e.g. footage.mov. | |
| upload_id | No | refresh and finish, multipart only: upload.uploadId from begin. | |
| size_bytes | No | The file's exact size in bytes, 1 to 5 GB. | |
| content_type | No | Optional MIME type; else from the extension. | |
| part_numbers | No | 1-based part numbers, at most 1000. |