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 | sh

Then sign in once. fffd login opens your browser, and every command after that runs without it.

fffd login
Upload a batch with tags
fffd upload -t client -t 2026 ~/exports/*.mov
Tagging with client, 2026
Uploading 14 files (20 at a time)
Uploaded 14 files
Make a file you already have public
fffd access q3-review-cut.mp4
312 files loaded
q3-review-cut.mp4 → public
Move files to the trash and bring one back
fffd trash rough-cut-v1.mp4 rough-cut-v2.mp4
312 files loaded
Trashed 2 file(s).
fffd restore rough-cut-v2.mp4
2 trashed files loaded
Restored 1 file(s).
See every command in the CLI reference

MCP 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 app
Claude Code
claude mcp add freakingfast -e FREAKING_FAST_API_TOKEN=<token> -- npx -y freaking-fast-mcp
Any client that reads mcpServers
{
  "mcpServers": {
    "freakingfast": {
      "command": "npx",
      "args": ["-y", "freaking-fast-mcp"],
      "env": { "FREAKING_FAST_API_TOKEN": "<token>" }
    }
  }
}
ToolWhat it does
upload_fileStreams a file from disk and returns its link
get_download_urlGets a fresh 6-hour link for a stored file
list_filesLists the library, newest first
delete_filesMoves files to the trash, or deletes them for good
restore_filesBrings files back from the trash
set_file_visibilitySwitches a file between public and private
get_storage_usageReports 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

  1. Step 1POST /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.
  2. Step 2POST <uploadUrl>Send the file as multipart/form-data, with every uploadForm field included unchanged.
  3. Step 3POST /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.