upload_file
Upload a file into the platform project's own files entity. Works over any transport (local stdio or the hosted mcp.aaly.io endpoint) — no local filesystem access required. Platform-project only — for uploading into an end-customer's own project, call that project's own REST API (POST /files/presigned-url, then POST /files) directly, the same way the generated app does; this tool does not do that.
Three ways to use it, in order of preference:
Pass content_base64 (the file's bytes, base64-encoded) with filename and mime_type — this tool uploads and registers it in one call. Keep it under 8MB for this mode; base64 in a single tool-call argument gets unreliable well before that.
If you can perform your own HTTP request (e.g. a sandboxed curl/fetch capability) and the file is larger: call with filename, mime_type, and size only (no content_base64, no s3_key) to get back a presigned upload URL — POST the file directly to it yourself (uploadFields as form fields, the file's bytes as the LAST field, named 'file'), then call this tool again with s3_key set to the returned value (plus the same filename/mime_type/size) to register the record.
If neither is possible in your environment, don't force it — tell the user to upload the file directly through the AALY platform app instead.
100MB cap either way (enforced server-side at the presign step).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | File size in bytes. Required for modes 2 and 3 above; derived automatically from content_base64 in mode 1. | |
| s3_key | No | The s3Key from a prior mint-only call (mode 2), after you've uploaded the bytes yourself — registers the record (mode 3). | |
| filename | Yes | Filename to store. | |
| mime_type | No | MIME type of the file. Defaults to application/octet-stream. | |
| content_base64 | No | The file's bytes, base64-encoded (mode 1) — this tool uploads and registers it in one call. |