MCP · Tools
Tools: files
Three tools on the data plane. None requires a human. Descriptions are quoted as the agent reads them.
upload_file#
Upload a file to the project's storage. Provide the content as base64. Max 25 MB. visibility 'private' (default) is owner-scoped; 'public' is readable by a signed URL.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
project_id | string | yes | |
filename | string, min 1 | yes | |
content_base64 | string | yes | The file bytes, base64-encoded. |
content_type | string | no | MIME type, e.g. image/png. |
visibility | "private" or "public" | no |
Calls POST /v1/projects/:pid/files with the decoded bytes. Content that is not valid base64 is refused before the call (line breaks are accepted, other characters are not). Every byte travels through the conversation, so this tool is for small files; 25 MB is the API's cap, not a recommendation. A file uploaded by an account key has no owner. Two uploads of the same file create two files.
list_files#
List the files stored in a project.
| Parameter | Type | Required |
|---|---|---|
project_id | string | yes |
Calls GET /v1/projects/:pid/files. Each file carries its url, an absolute signed link: one hour for a private file, no expiry for a public one. There is no tool to read a file's content — the URL is the way.
delete_file#
Delete a file from a project's storage by id.
| Parameter | Type | Required |
|---|---|---|
project_id | string | yes |
file_id | string | yes |
Calls DELETE /v1/projects/:pid/files/:fid. Every link to the file stops working immediately, public ones included — deleting is the only way to take a public link back. Deletions count towards the same 40-per-5-minutes budget as row deletions.
