create_asset_uploads Authorize up to 100 local files in one round-trip, then N plain PUTs. Send files:[{sha256,bytes}]; each file gets its own url; one shared headers set (a single token) authorizes all of them for 30 minutes. PUT raw bytes to each url with exactly those headers, at most 20 concurrently per board (slots shared across clients). On 429 wait Retry-After (else back off 1-60s with jitter), then retry failed files one at a time with the same unexpired headers and bytes. Recovery, deduplication and size limits match create_asset_upload. Details: /docs/mcp/create_asset_uploads. Authorize a whole set of local files in one call: files:[{sha256,bytes}] up to 100, each entry computed locally. Returns one upload per file (url, byte count, parts for large files) plus one shared PUT method, Authorization and Content-Type headers (a single token for the whole batch) and expiry, which is 30 minutes so a long batch does not expire midway. PUT each file's raw bytes to its own url with exactly the shared headers, sequentially or in parallel; every PUT answers with the standard immutable asset response. Duplicate hashes collapse to one ticket, and content already stored is deduplicated on arrival. Recovery, limits and finalization match create_asset_upload: no finalize call, recover a lost response with get_asset_upload(boardId,assetId), and repeat identical PUT bytes while the ticket is valid. Use this whenever you have more than a couple of local files, such as several candidate takes per review question; use upload_asset_from_url when the bytes already sit behind a public HTTPS URL, and base64 upload_asset only as a last resort.