Menu
Full tool catalog with args and returns·View as Markdown
MCP tools
Tools wrap shared v1 logic (not HTTP loopback). Unless noted, workspaceId defaults to the API key's workspace.
Upload (read this first)
A PUT to the bucket does not list the file. Call complete_upload after PUT. Scope is files:upload, not files:write. Full steps: Upload flow.
presign_upload- PUT bytes to the returned URL
complete_uploadwith the same key
Do not call REST upload-complete from an agent (Cloudflare 1010). If the object is already in the bucket, call complete_upload only. After register, use file.url to display when it is not null. Use presign_view to display without a public CDN. Use presign_download only when the user should save a file.
Catalog
| Tool | Scope | Maps to |
|---|---|---|
list_workspaces | workspaces:read | GET /workspaces |
list_buckets | buckets:read | GET .../buckets |
list_files | files:read | index listing (not a live bucket list) |
get_file | files:read | GET .../files/{fileId} |
search_files | files:read | keyword + semantic |
similar_files | files:read | similar neighbors |
ask_agent | agent:run | bucket agent |
update_file | files:write | tags / description (not upload register) |
get_intelligence | intelligence:read | config + progress |
start_backfill | intelligence:write | start / resume / pause |
presign_view | files:download | inline/viewable GET URL |
presign_download | files:download | attachment GET URL |
presign_upload | files:upload | PUT URL, then you must complete_upload |
complete_upload | files:upload | register object (required after PUT) |
create_folder | files:write | mkdir |
list_automations | automations:read | GET .../automations |
get_automation | automations:read | GET .../automations/{id} |
create_automation | automations:write | POST .../automations |
update_automation | automations:write | PATCH .../automations/{id} |
delete_automation | automations:write | DELETE .../automations/{id} |
rename_automation | automations:write | POST .../automations/{id}/name |
list_automation_conflicts | automations:read | GET .../automations/conflicts |
get_trash_settings | automations:read | GET .../trash |
set_trash_enabled | automations:write | PATCH .../trash |
trash_files | files:delete | POST .../files/trash |
move_files | files:write | POST .../files/move |
list_suggestions | suggestions:read | GET .../suggestions |
accept_suggestions | suggestions:write | POST .../suggestions accept |
dismiss_suggestions | suggestions:write | dismiss |
sync_suggestions | suggestions:write | sync |
auto_accept_suggestions | suggestions:write | auto-accept |
list_pages | pages:read | GET .../pages |
get_page | pages:read | GET .../pages/{id} |
create_page | pages:write | POST .../pages |
update_page | pages:write | PATCH .../pages/{id} |
delete_page | pages:write | DELETE .../pages/{id} |
add_page_block | pages:write | POST .../pages/{id}/blocks |
update_page_block | pages:write | PATCH .../blocks/{id} |
delete_page_block | pages:write | DELETE .../blocks/{id} |
run_page_block | pages:read | block results (paginated) |
Common args
Most bucket tools take:
bucketId(required)workspaceId(optional; defaults to key workspace)
Automations
list_automations:conflicts?create_automation/update_automation:kind?,name?,scope?,priority?,rules?,enabled?- Trash TTL rule config:
{ ttlDays, minBytes?, maxBytes?, extensions? }
Trash / moves
trash_files:bucketId,keys[]move_files:bucketId,moves: [{ fromKey, toKey }]set_trash_enabled:trashEnabledboolean
Suggestions
list_suggestions:kind?,bucketId?,sync?,countOnly?accept_suggestions:kind,ids[], optional keep/name mapsdismiss_suggestions:ids[]
list_files / search_files
prefix?,parentPrefix?,search?,tag?semantic?(boolean)limit?,offset?- Reads the file.rocks index. Objects missing after PUT need
complete_uploadfirst. - Each file includes
url/thumbnailUrlwhen the bucket has a public domain. Useurlto display images. For an attachment, callpresign_download.
get_file
fileId- Same
url/thumbnailUrlfields aslist_files.
ask_agent
query(string)
update_file
fileId,tags?,description?- Requires
files:write. Does not register uploads.
start_backfill
action:start|pauseestimateToken?(required forstart)
presign_upload
key,contentType?- Returns a PUT URL plus
nextpointing atcomplete_upload. After PUT, callcomplete_upload. See Upload flow.
complete_upload
key,size?,etag?,contentType?,contentHash?- Requires
files:upload(Upload + read preset is enough). Does not set tags — that isupdate_file/files:write. - Also registers an object that is already in the bucket but missing from
list_files. - Returns
file.url(public CDN) when the bucket haspublicDomain. Use that URL to display the image. For a save-as-file link, callpresign_download.
presign_view
key?orfileId?- Viewable URL (
Content-Disposition: inline). Browser displays the file. purpose?:preview(1 hour, default) orembed(7 days)expiresIn?: seconds, 60–604800, overrides purpose default- If the bucket has
publicDomain, returns that durable URL (durable: true) - See Upload flow.
presign_download
key?orfileId?- Attachment URL (
Content-Disposition: attachment). Browser saves the file. - Same
purpose/expiresInaspresign_view - Always signed (even when
publicDomainexists). Cannot be non-expiring. - See Upload flow.
create_folder
key(folder path)
Resources
Doc markdown is exposed as MCP resources (file.rocks://docs/... and/or https .md URIs). For upload, read file.rocks://docs/mcp/upload (also /docs/mcp/upload.md).
Errors
Missing scope or bucket allowlist → tool error with a clear message (same semantics as REST 403).
A Cloudflare 1010 on REST upload-complete is Bot Fight Mode blocking the agent HTTP client. It is not a missing-scope error. Call MCP complete_upload instead.