work

Call work.file

File or move any item — a document, photo, video, file, table, email, post, site, automation — or a whole project into a project the member names — 'move the onboarding video to the Clients project', 'put the Holiday gift boxes project under Wholesale cafes', 'the menu photos belong in Spring launch'. Any item (a site, an automation, a video or short, a post, an image or photo, a document, an uploaded file, a data table, an email, a widget) or a project, which takes everything inside it along. This verb finds the item itself, so call it on the ask: put the member's words for the thing in item_name, a generic name too ('the new doc', 'that photo from Friday'), for any item but a widget. Among several matches it takes the one in the project the member is on, then the exact name; otherwise it moves nothing and answers with the matches by name and place, so you can ask which. Read board.tree for to_project_id, the id of the project the member names; the tree lists projects, not the items inside them, so look for the item through this verb rather than in the tree. The project the member is on (the page's board_id) is where the item comes from, so it is never to_project_id here; putting a thing on that project is items.place. It leaves where it was and lives only in the new project; its shortcuts follow it, nothing is copied or deleted, and the member can undo it. A null to_project_id takes a project out to the top level of Projects; name a project being moved with item_kind project and its id from board.tree. Not for putting something on the project the member is on right now (items.place), or for showing it in a second project while it stays where it lives (work.shortcut).

Every result names the workspace it ran in. Say which workspace the answer is about. When the account has more than one workspace and none is selected, this tool refuses with workspace_ambiguous and lists the choices — offer them, never pick one.

post/api/v1/tools/work.file

Request

  • Base URL: https://app.goosybear.ai
  • URL: https://app.goosybear.ai/api/v1/tools/work.file
  • Auth: HTTP bearer

Headers

x-request-idstring

Your own id for this request, echoed back and recorded on the audit trail. 1–128 characters from A–Z a–z 0–9 . _ : -, starting with a letter or digit; anything else is replaced by a generated id.

Idempotency-Keystring required

Your key for this write: send the same key when you retry and the first result comes back instead of a second action. Keys are honoured for at least 24 hours. 1–200 visible ASCII characters. Replaces the idempotency_key body field, which still works until 2026-12-31; this action needs a key on one of the two, and the header is the one to send.

Request body

item_kind'site' | 'automation' | 'video' | 'post' | 'image' | 'document' | 'file' | 'table' | 'email' | 'widget' | 'project'

What it is: a site, an automation, a video (or short), a post, an image (a photo or picture), a document, an uploaded file, a data table, an email, a widget, or a project.

item_idstring uuid

Its id, only when a verb or the page already showed it to you (a project's from board.tree, a widget's from widget.list). Otherwise send item_name: never call a list just to find an id.

item_namestring

The member's words for its name, title or subject ('the latte video', 'price list', 'the Monday report automation'), a generic name included. It works for every kind but a project and a widget; the tool finds the item itself, with no read first, and when several things match the answer lists them by name and place so you can ask which.

to_project_idstring uuid nullable required

The project the member names as where it goes, by its id from board.tree. null only to take a project out to the top level of Projects.

idempotency_keystring

Deprecated on REST: send the Idempotency-Key header instead. Still accepted until 2026-12-31; if both are sent they must match.

workspacestring

Which workspace to run in — its slug. Omit to use your default. With more than one reachable workspace and no default, the call is refused and the choices are listed.

Response

The call was admitted and dispatched. ok says whether the tool succeeded — a refusal the tool itself produced is still a 200, exactly as it is a successful JSON-RPC result over MCP.

OR

Changes

No recorded changes to this operation across all 6 revisions of this API.