Skip to main content

Files

MCP tools for the Files module. See the Files module docs for permissions and data model.

list-files​

List all files

Arguments​

ArgumentTypeRequiredDescription
project_idstringnoFilter files by project ID
path_prefixstringnoOnly files under this directory. The prefix is a path boundary, not a substring: /reports returns /reports/q1.txt and never /reports-archive/q1.txt, and / selects the whole project. A leading slash is optional and a trailing one is ignored, so reports, /reports and /reports/ are the same filter. % and _ are literal characters, not wildcards. Naming a directory under /.system/ is what includes platform-written files, which a list without this parameter leaves out.
tagsarraynoFilter by tag pairs, written key:value (split on the first colon, so a value may contain colons). Repeat the parameter for several pairs; all must be present with exactly that value.
limitnumbernoMaximum number of results to return
offsetnumbernoNumber of results to skip

create-file​

Create a file

Arguments​

ArgumentTypeRequiredDescription
project_idstringnoPublic ID of the project. Optional when authenticating with a project-scoped API key, which defaults to the key's project; required otherwise.
prefixstringnoDirectory within the project (e.g. /images). Optional; defaults to / (root). Combined with filename to form the file's key (path).
filenamestringnoOriginal / download name and the key's leaf segment (e.g. logo.png).
content_typestringnoMIME type of the file
sizenumber | nullnoFile size in bytes
metadataanynoCaller-owned annotations on a resource, stored as the object they were written as: the types a value was written with are the types a read returns, so a filter can ask an ordering question about a number. Unlike other body fields, keys are stored and returned verbatim in the casing supplied — they are not converted between snake_case and camelCase. No key is reserved, and that is the point: every piece of state the platform owns lives in its own typed column, so nothing written here reaches platform state. The platform never reads the bag — it is not an IAM context, not a policy input and not part of a prompt — which is what separates it from a tag bag.

upload-file​

Upload a file

Arguments​

This tool takes no arguments.

upload-file-base64​

Upload a file using base64 encoding

Arguments​

ArgumentTypeRequiredDescription
project_idstringnoPublic ID of the project
contentstringyesBase64-encoded file content
prefixstringnoDirectory within the project (e.g. /documents). Optional; defaults to / (root).
filenamestringnoOriginal / download name and the key's leaf segment.
content_typestringnoMIME type of the file
metadataanynoCaller-owned annotations on a resource, stored as the object they were written as: the types a value was written with are the types a read returns, so a filter can ask an ordering question about a number. Unlike other body fields, keys are stored and returned verbatim in the casing supplied — they are not converted between snake_case and camelCase. No key is reserved, and that is the point: every piece of state the platform owns lives in its own typed column, so nothing written here reaches platform state. The platform never reads the bag — it is not an IAM context, not a policy input and not part of a prompt — which is what separates it from a tag bag.

create-presigned-url​

Create a presigned upload URL

Arguments​

ArgumentTypeRequiredDescription
project_idstringyesPublic ID of the project
prefixstringnoDirectory within the project (e.g. /documents). Optional; defaults to / (root).
filenamestringnoOriginal / download name and the key's leaf segment.
content_typestringnoMIME type of the file to be uploaded

upload-file-with-token​

Upload a file using an upload token

Arguments​

ArgumentTypeRequiredDescription
tokenstringyesThe single-use upload token (e.g. upt_...)
contentstringnoBase64-encoded file content (alternative to multipart file)
filenamestringnoOriginal / download name (overrides the token's filename)
content_typestringnoMIME type of the file (overrides the token's content type)
metadataanynoCaller-owned annotations on a resource, stored as the object they were written as: the types a value was written with are the types a read returns, so a filter can ask an ordering question about a number. Unlike other body fields, keys are stored and returned verbatim in the casing supplied — they are not converted between snake_case and camelCase. No key is reserved, and that is the point: every piece of state the platform owns lives in its own typed column, so nothing written here reaches platform state. The platform never reads the bag — it is not an IAM context, not a policy input and not part of a prompt — which is what separates it from a tag bag.

get-file​

Get a file by ID

Arguments​

ArgumentTypeRequiredDescription
file_idstringyesFile ID

delete-file​

Delete a file

Arguments​

ArgumentTypeRequiredDescription
file_idstringyesID of the file to delete

update-file-metadata​

Update file metadata

Arguments​

ArgumentTypeRequiredDescription
file_idstringyesFile ID
metadataanynoReplaces the stored bag; null clears it.
prefixstringnoNew directory — moves the file. The resulting path (prefix + filename) must be unique within the project.
filenamestringnoNew filename — renames the key's leaf and the download name.

download-file-base64​

Download file as base64

Arguments​

ArgumentTypeRequiredDescription
file_idstringyesFile ID
tokenstringnoSigned single-file download token, an alternative to a bearer credential (issued for ingestion-rule converters).

get-file-tags​

Get file tags

Arguments​

ArgumentTypeRequiredDescription
file_idstringyesFile ID

replace-file-tags​

Replace file tags

Arguments​

ArgumentTypeRequiredDescription
file_idstringyesFile ID

merge-file-tags​

Merge file tags

Arguments​

ArgumentTypeRequiredDescription
file_idstringyesFile ID