Projects
A private file repository for each account, shared by every assistant you connect. Each folder under /projects is a project; files are stored as real files and survive between conversations and between vendors.
From an assistant
No setup beyond connecting AI Power Ups. Ask in plain words and the assistant uses the Projects tools on its own:
- “Draft a plan for my plant watering bot and save it to a project.”
- “We're working on the plant watering bot project. Check where things stand and write the main file.”
- “Save these call notes to a project.” Later: “We're back on the Lisbon offsite.”
Work saved by one assistant is there for the next, from any vendor: a plan Claude saved can be continued in ChatGPT or Codex, and the other way round. You can also open, upload, preview, download and delete files yourself under Projects in the dashboard.
MCP tools
projects_bash: runs a bash command against/projects. Reads and writes go straight to storage:catreads a file,>and heredocs write,mv,cpandrmmove, copy and delete. Supportsls,grep,find,sed,awk,jq,diffand the other common tools. It is a file shell: it cannot run python, node or git and has no network./tmpis scratch space for one command.projects_download: a one-hour link to a file, or to a whole folder as a.zip(/projectsdownloads everything).projects_upload: a one-hour link for uploading files from the machine the assistant runs on, with a resumable address for large files.
projects_bash result
{ "stdout": "PLAN.md\nREADME.md\n", "stderr": "", "exit_code": 0, "truncated": false }REST operations
Every operation accepts an API key, an OAuth token or a dashboard session. Paths are absolute, starting with /projects.
GET /v1/projects(listProjects): projects with size and last change, plususage(used_bytes,allowance_bytes).POST /v1/projects(createProject): body{ "name": "plant-watering-bot" }.GET /v1/projects/tree?path=(getProjectTree): every folder and file below a path.DELETE /v1/projects/files?path=(deleteProjectPath): deletes a file or a folder with everything in it.POST /v1/projects/bash(projectsBash): body{ "command": "…", "cwd"?: "/projects/…" }.POST /v1/projects/links(createProjectLink): body{ "path": "…", "action": "download" | "upload" | "view" }.
curl
curl -s https://api.powerups-ai.store/v1/projects/bash -H "Authorization: Bearer $AIPA_API_KEY" \
-H 'content-type: application/json' \
-d '{"command":"ls /projects && cat /projects/plant-watering-bot/PLAN.md"}'Uploads and downloads
Links from POST /v1/projects/links (or the projects_upload and projects_download tools) need no credentials and expire after one hour.
- Download:
GETthe link and follow the redirect. A file comes straight from storage; a folder is zipped first, then served from storage. - Upload:
PUTthe bytes to the link. For a folder link, add&path=with the file's path inside the folder. An existing file is replaced. - Resumable upload: a single request must finish within 5 minutes, so larger or slower uploads use
resumable_urlwith any tus 1.0.0 client:POSTwithUpload-Length, thenPATCH6 MiB chunks to the returnedLocation;HEADreports the offset to resume from.
curl
# One file into a folder link
curl -T report.pdf "$UPLOAD_URL&path=docs/report.pdf"
# Everything as a zip
curl -L -o projects.zip "$DOWNLOAD_URL"Limits and errors
- The only storage limit is your plan's allowance (shown on the dashboard); there is no per-file size limit. A write or upload that would go over it fails with
413 storage_full, and an upload is cut off the moment it would. projects_bashreads at most 64 MB per file and returns up to 64 KB of output per stream (truncated: truebeyond that). Use a download link for larger files.- Files live directly in a project folder, never in
/projectsitself. Folder and file names can use any characters except/. - Projects is included in every plan and costs no usage tokens.

Private to your account
Every connected assistant and API key on your account sees the same files; nothing is visible to anyone else. File content is treated as data, never as instructions.