NodaroAccount
Nodaro Docs
DocumentationNode ReferenceModelsTemplatesAI Agents (MCP)DevelopersSelf-hostingResearchCompare
Tools reference

Uploads

Upload your own images, audio and video to Nodaro from any MCP client with an in-chat picker, a browser upload link, or a presigned URL from a shell.

The upload tools bring your own files into Nodaro, so an assistant can use a photo, a voice recording or a clip in the next generation. There are three ways to upload: an in-chat picker, a link you open in the browser, and a presigned URL for clients that can run shell commands. Every upload tool needs the assets:write permission, and uploading costs no credits.

Which method to use

MethodToolsWorks inHow it works
In-chat pickerupload_image_widget, upload_audio_widget, upload_video_widgetClients that display MCP Apps, such as Claude on the webA file picker opens inside the chat. The public URL goes back to the chat on its own.
Browser linkrequest_image_upload, request_audio_upload, request_video_uploadEvery clientYou open a Nodaro link in your browser and drop the file there.
Presigned URLprepare_image_upload, prepare_audio_upload, prepare_video_uploadClients with shell access, such as Cursor, Cline, Claude Desktop and Claude CodeThe assistant sends the file itself with one curl command.

When a file already has a public URL, for example a result of an earlier job, pass that URL directly and skip the upload.

upload_image_widget

Opens a file picker for images inside the chat. On a phone, the picker opens the camera or the photo library. The widget uploads the files and announces their public URLs back to the chat, so you only tap the picker once. upload_audio_widget and upload_video_widget work the same way for audio and video.

Permission: assets:write. Credits: free.

ParameterTypeNotes
max_filesintegerHow many files the picker accepts, from 1 to 10. Default 1. Use more for flows such as several reference photos of one person.
purposestringA short label shown on the upload card, up to 120 characters, for example product image for the catalog app. It also reminds the assistant what the file is for.

Returns: uploads, a list of { upload_url, public_url } pairs, plus upload_url and public_url for the first file. A client that does not show the picker can still show these as plain links.

request_image_upload

Returns a short Nodaro link that you open in any browser to drop an image. It works in every client and at any file size, because the file travels through your own browser. request_audio_upload and request_video_upload do the same for audio and video.

Permission: assets:write. Credits: free.

This tool has no parameters.

Returns: upload_page_url, the page to open, and public_url, the address the file will have. The public URL is known in advance, so the assistant can use it in the next call once you confirm that the upload finished.

prepare_image_upload

Returns a presigned upload URL that the assistant sends the file to with curl. The file never passes through the conversation, so its size does not matter. prepare_audio_upload and prepare_video_upload do the same for audio and video.

Permission: assets:write. Credits: free.

ParameterTypeNotes
mime_typestringRequired. The type of the file you will send.
ToolAccepted mime_type values
prepare_image_uploadimage/png, image/jpeg, image/webp, image/avif, image/heic, image/heif
prepare_audio_uploadaudio/mpeg, audio/mp4, audio/wav, audio/x-wav, audio/webm, audio/ogg, audio/flac, audio/x-flac, audio/aac, audio/x-m4a
prepare_video_uploadvideo/mp4, video/webm, video/quicktime, video/x-matroska

Returns: upload_url, valid for 1 hour, and public_url. The assistant uploads the file with:

curl -X PUT --data-binary @path/to/file -H 'Content-Type: image/png' '<upload_url>'

Then it passes public_url to the next tool, for example as image_url.

Not for Claude on the web

The presigned upload fails in Claude on the web and in the Claude Android app, because they cannot reach the storage host. Use the in-chat picker or the browser link there.

After the upload

  • Pass the public URL to any tool that takes media, such as modify_image, animate_image, lip_sync or add_captions.
  • Find earlier uploads with browse_uploads, which lists the files you uploaded, separate from the results Nodaro generated.
  • Show a logo in a narrated video. The brand logo of the Video Director must be an image uploaded to Nodaro, so upload it with one of these tools first.

Frequently asked questions

Which upload tool works in every MCP client?

The request upload tools. request_image_upload, request_audio_upload and request_video_upload return a link that you open in your own browser to drop the file, so they work in every client at any file size.

Why does prepare_image_upload fail in Claude on the web?

The presigned upload needs a client that can send the file itself with a shell command. Claude on the web and the Claude Android app cannot reach the storage host, so use the upload picker or the request upload link there.

Can I upload several reference photos at once?

Yes. Pass max_files, from 1 to 10, to upload_image_widget. The picker then accepts that many files and returns one public URL for each.

How do I reuse a file I uploaded earlier?

Ask the assistant to call browse_uploads. It lists your uploads with their URLs, which you can pass to any generation tool.

Last updated on

On this page