Developer docs
Upload, share and manage files with the fffd CLI, the MCP server, or the HTTP API they both use.
The fffd CLI
fffd uploads, lists, shares and syncs files from your terminal. It's a single binary. It checks for a new version once a day, and fffd update installs it.
curl -fsSL https://public.freakingfast.io/global/fffd/cli/install.sh | shcurl -fsSL https://public.freakingfast.io/global/fffd/cli/install.sh | shirm https://public.freakingfast.io/global/fffd/cli/install.ps1 | iexThen sign in once. fffd login opens your browser, and every command after that runs without it.
fffd loginMCP server
freaking-fast-mcp gives Claude, or any MCP client, 7 tools for your drive. It needs Node 20 or later and one API token.
Create an API token in the appclaude mcp add freakingfast -e FREAKING_FAST_API_TOKEN=<token> -- npx -y freaking-fast-mcp{
"mcpServers": {
"freakingfast": {
"command": "npx",
"args": ["-y", "freaking-fast-mcp"],
"env": { "FREAKING_FAST_API_TOKEN": "<token>" }
}
}
}| Tool | What it does |
|---|---|
| upload_file | Streams a file from disk and returns its link |
| get_download_url | Gets a fresh 6-hour link for a stored file |
| list_files | Lists the library, newest first |
| delete_files | Moves files to the trash, or deletes them for good |
| restore_files | Brings files back from the trash |
| set_file_visibility | Switches a file between public and private |
| get_storage_usage | Reports used, limit, and remaining storage |
- Uploads stream from disk. A 2 TB file never has to fit in memory.
- Storage is checked before an upload starts. If a file won't fit, you find out right away.
- The token is exchanged for a 24-hour session, renewed a minute before it runs out.
- Uploading the same file again, with the same name, size and modified time, returns the stored file instead of sending it twice.
HTTP API
The CLI and the MCP server both use this API. Requests go to https://fffs.freakingfast.io with two headers: a bearer token and X-Absurd-App: fffd.
An API token can't call the file service directly. Exchange it for a session token first; the response has a gelToken to send as the bearer token and expiresIn in seconds.
curl -X POST https://auth.freakingfast.io/exchange-token \
-H "Authorization: Bearer $FREAKING_FAST_API_TOKEN"Upload a file in three calls
- Step 1
POST /generate-file-urlsSend the file's type, name, exact size and object key. You get back an uploadUrl and an uploadForm. The form expires after 2 days. - Step 2
POST <uploadUrl>Send the file as multipart/form-data, with every uploadForm field included unchanged. - Step 3
POST /insert-fileRecord the file. The fileSize you send has to match the stored size exactly.
- File size
- Up to 2 TB per file
- Upload forms
- Expire after 2 days
- Private links
- Expire after 6 hours
For agents
Three files describe FFFD to agents and tools that read them.
- llms.txtA short guide to the drive, its limits, and uploading without the MCP server.
- Agent cardAn A2A agent card with skills for uploading, sharing and managing files.
- OpenAPI specThe full HTTP API, with request and response schemas.