Skip to the content
FilDocs

MCP tools

Every tool in Fil's MCP server for Claude Code, Codex and Cursor: what each does, its inputs, which spend credits, and the upload limits.

Fil's MCP server gives a connected agent 35 tools. You don't call them yourself: you ask in plain words, and the agent picks the tools and fills in their inputs. Reading and building is free; generate, edit_image, turn_into_skill and captions made with edit_video spend credits, never more than the max_credits they're given. This page walks through a short session, then lists every tool, what it does and its main inputs.

The MCP tools tab on the Agents page: the server speaks Streamable HTTP, which tools spend credits, and the first tool cards, get_account, list_models, list_canvases and create_canvas, each marked free, with inputs where it takes any
The first cards under Agents › MCP tools: account, models and canvases, all free

To see the list in Fil, click Agents in the sidebar (open Agents), then MCP tools. Each card says free or credits, and lists its inputs. edit_video's card says free: only the captions it makes cost credits. To connect an agent first, see Connect an agent.

Example: generate an image and a video from Claude Code

You ask Claude Code: "Make a canvas called Phone launch film. Make a 16:9 hero still of our phone beside a dark boulder, then a 5-second clip from it: a slow push-in as the word Introducing fades in. Tell me the price first." It works through the tools like this:

  1. create_canvas with the name. The agent gives you the canvas's link; open it to watch.
  2. add_nodes puts down two nodes and the link between them in one call: an image node, Hero still (Nano Banana 2.1, 16:9, with its prompt), and a video node, Hero clip (Grok Imagine Video 1.5 Lite, 720p, 5 seconds), fed by the still. Nothing runs yet.
  3. generate on each node with max_credits 0 returns the price without running: up to 7 credits for the still and 18 for the clip, as each node's Generate button shows too. The agent tells you, in words like "The still is up to 7 credits and the clip up to 18, 25 in all. Shall I run them?"
  4. You say yes. log notes it on the canvas.
  5. generate runs the still with max_credits 7, and check_node with wait returns it when it's done, with a preview the agent looks at.
  6. generate runs the clip with max_credits 18, starting from the still, and check_node waits for it again. The agent gives you its link.
The session on the canvas: the two nodes, the still, then the clip made from it

Each change, price check and note is a line in Claude Code log.md beside the nodes, newest first, and under Agents › Activity. Calls that only read, such as check_node, leave no line. The two runs cost at most 25 credits; each charges what it really used when it settles.

Claude Code log.md beside the Hero still: Made this canvas, Added 2 nodes and 1 link at once, Priced Hero still at 7 credits (not run), Priced Hero clip at 18 credits (not run), Ava said yes to 25 credits, then Generated Hero still and Generated Hero clip
The session in the agent's log, a line for each change

Other things to ask for

Each group of tools below answers requests like these:

You askThe agent uses
"Put these three product photos from my desktop on the canvas"upload_file, then add_file for each
"On the Kinfolk site, change the jasmine tea's price to $14"get_site, then set_data
"Make the site's accent colour sage green"set_variables on its design system
"Cut the three shots into a 15-second video with a title, and export it"make_video, edit_video, then export_video
"Make every node on this canvas private"set_visibility
"Turn this flow into a skill I can reuse"turn_into_skill, then check_node for the SKILL.md

Fil MCP tools list

Every tool that works on a canvas takes its canvas_id, from list_canvases or create_canvas, so the tables leave it out. Node ids come from get_canvas, and file ids (asset_id) from search_library or an upload. An input with a ? is optional.

Account and models

ToolWhat it does
get_accountWho you're signed in as, your workspaces with your role in each, and the credits you and each team have.
list_modelsThe models you can use, by kind: their ids, settings, how many reference files each reads, and a run's price at its default settings. Inputs: kind?.

Upscaling, removing a background, rigging and animating are image and 3D models in the list too.

Canvases and the library

ToolWhat it does
list_canvasesYour canvases, newest first, with links. Inputs: query?, limit?, workspace_id?.
create_canvasMakes an empty canvas and returns its link. Inputs: name?, workspace_id?.
get_canvasEvery node with its settings, status, runs and outputs, the links, sections, and which nodes are private.
search_libraryLibrary files by words in their name or prompt, with links and ids. Inputs: query?, kind?.
logAdds a line to the agent's log on the canvas: what you asked for, a decision, what's next. Inputs: text.

kind is image, video, 3d, code or audio (and pdf for the library). Agents read get_canvas before they change a canvas, since people may have changed it.

ToolWhat it does
add_promptA prompt node, wired into the nodes it feeds. Inputs: text, into?.
add_documentA Markdown or text document (a brief, notes, copy) that goes along as reference text; it can show library pictures. Inputs: name, text, into?.
add_skillA skill (a SKILL.md) as a document node; wired into a node, it guides that run. Inputs: name, description, instructions, into?.
add_nodeA generation node with its model and settings, waiting; returns its price when it has a prompt. Inputs: kind, prompt?, inputs?, model?.
add_nodesUp to 60 nodes and 120 links in one call, each node with a ref the links can point at. Inputs: nodes, links?.
connectLinks one or more nodes (from, up to 16) into one node (to): a prompt, document, skill or file into a generation node, or a result into the next node. Inputs: from, to.
update_nodeChanges a node for its next run, or renames, re-icons, resizes or moves a section. Inputs: node_id, then what to change: text?, prompt?, model? and settings, name?, note?, x?, y?, width?, height?, icon?, visibility?, pick?.
remove_nodeRemoves a node and its links; its results stay in the library. On a section, only the frame goes. Inputs: node_id.
add_sectionA named frame around nodes, or an empty one, with an icon: a preset or a picture such as a logo. Inputs: name?, node_ids?, icon?.

update_node changes a node's text, prompt, model, settings, name, note, place, size or visibility; pick sets which of its results feeds the next node. The settings add_node, add_nodes, update_node and generate take are the ones in Fil's own menus, and list_models gives the values each model takes:

SettingValues
aspect_ratioPictures and video: 16:9, 1:1, 9:16, 4:3…
resolutionPictures 1k, 1.5k, 2k or 4k; video 480p, 720p, 768p, 1080p, 2k or 4k; 3D standard or detailed (Tripo), or 2k or 4k (Meshy): each model takes some of these
count, qualityPictures: how many, 1, 2 or 4 (another number makes 1); and low, medium or high on GPT Image 2.5 and Ideogram 4.5
durationVideo and sound, in seconds
soundKling 3.0: off makes a silent clip, a third cheaper below 4K
voiceSpeech: one of the model's voices
loop, prompt_influenceSound effects
rigging3D: off, rig, or rig and animate
formatCode: site (the default), website, react, slides, svg, three, calendar, tasks, post and more
effortCode: how hard the model thinks, low, medium, high, xhigh or max

The tools that add a node (add_prompt, add_document, add_skill, add_file, add_node, add_nodes, make_video) and update_node also take note, a short note shown under the node (up to 500 characters), and x and y, where it goes; left out, it goes beside what it connects to. generate takes neither.

Calendars, task lists and social posts are code nodes with the format calendar, tasks or post; agents read and write them with read_file and write_file.

Files and uploads

ToolWhat it does
add_filePuts a library file, or a file from a public link, on the canvas. Inputs: asset_id? or url?, into?.
upload_fileAn address for files on your computer, sent with curl, good for an hour; each lands unchanged in your library. Inputs: none besides the canvas.

add_file takes a picture, sound, video or GLB model from a public link and saves it to your library first. After an upload, add_file puts the file on the canvas. A GLB model shows as a 3D model you can turn; a sound plays on the canvas and can be wired into an audio node or a prompt.

Generate, edit and check

ToolWhat it does
generateRuns a node, or adds a prompt and a node and runs them, as Generate does; 0 credits returns the price. Inputs: node_id? or kind and prompt, max_credits, payment?.
edit_imageEdits a picture from a described change ("make the sky stormy"). Inputs: node_id, prompt, max_credits.
turn_into_skillWrites a SKILL.md from the flow that led to a node, on Claude Sonnet 5.5, so the work can be made again. Inputs: node_id, max_credits.
check_nodeWhether a run is going, failed or done, with its outputs and previews. Inputs: node_id, wait?.
  • edit_image adds an Edit node fed by the picture and runs it, on Nano Banana 2.1 unless a model is given.
  • Runs return at once and show live on the canvas. A run sets aside its top price and refunds the rest when it's done; a run that fails or is blocked is refunded in full.
  • payment is your own credits or the team's; on a team canvas, the team pays when it has credits.
  • generate and edit_image take visibility. Left out, a new node on Starter, Pro or Max is private, and an edit follows its picture.

Websites and React apps

Each tool here takes the node_id of the page, design system, data or app it works on; get_site takes any node of the site, or none for every site on the canvas.

ToolWhat it does
get_siteA site as Fil keeps it: its pages (address, links, components, data lists), its design system and its data. Inputs: node_id?.
read_fileThe text of a page, design system, site data, skill, calendar, task list or post, or a document's whole text. Inputs: node_id.
write_fileSaves a new version: the whole text, or edits that each replace text found once in it. Inputs: node_id, text? or edits?.
set_dataChanges site data as a CMS does: set a field (such as a product's price), add or remove entries. Inputs: node_id, set?, add?, remove?.
set_variablesSets CSS variables (colours, fonts, text styles, spacing) on a design system, which every page follows, or on one page. Inputs: node_id, variables.
set_componentAdds or changes a design system component's markup and CSS; every page using it follows. Inputs: node_id, key, markup?, css?.
set_moduleAdds, changes or removes one module of a React app (a component, page or stylesheet) by its path. Inputs: node_id, path, code?.
add_pageAdds a page linked into the site's navigation: blank, a duplicate of a page, or one to make with generate. Inputs: node_id, name, mode?.

Every change is a new version, free, and every page using what changed follows at once. Agents can build and edit sites but can't publish them: you click Publish (see Publish a website). See also Dynamic websites with data and React apps.

Video edits

ToolWhat it does
make_videoA Video edit node from canvas nodes: videos, pictures and HTML scenes in order, sounds under them, prompts' words over them. Inputs: node_ids?, shape?.
get_videoAn edit's shape, length, lanes and every clip, and its captions as a list or as an SRT or WebVTT file. Inputs: node_id, captions?.
edit_videoChanges an edit with commands, in order, as the video editor would. Inputs: node_id, commands, max_credits?.
export_videoMakes the MP4 at 720p, 1080p (the default) or 4k, rendered in your open Fil studio and saved on the node. Inputs: node_id, resolution?.

edit_video commands: add, move, reorder, trim, split, remove, duplicate, set (transitions, animations, volume and more), transitions, keyframe, lane, settings, captions, caption, cut, and replace (another picture or video in a scene's place, keeping its length and look). It also adds Fil's inserts: graphics, B-roll, shapes, blur boxes and sound effects.

The video tools are free, except captions made with edit_video, which cost credits by the length of sound, within max_credits. Its captions command takes a service for sounds and videos without a script (a voiceover made in Fil is matched to its own script either way): scribe (ElevenLabs Scribe v2, the default), 22 credits an hour of sound; grok (xAI Grok Voice Transcribe 2.0), 10 credits an hour; or gemini (Google Gemini 3.5 Transcribe), 30 credits an hour.

edit_video (while captions are made) and export_video take wait? as check_node does: up to 25 seconds, about 7 on fil.design. If the canvas isn't open anywhere, the export waits until you open it. See Edit videos with AI.

Visibility

ToolWhat it does
set_visibilityMakes nodes public or private, or every node on the canvas. Inputs: visibility, node_ids?.

Public work is shared in Community with its prompt; private stays with the people on the canvas. Free work is always public. Agents make work public only when you ask. See Private nodes on a shared canvas.

Credits: max_credits and the price first

On paid tools, max_credits is the most a call may spend: nothing runs above it. Fil tells agents to price a run with 0 first, tell you, and run once you agree, unless you've given them a budget. Each connection also has its daily cap; see Credits: the price first, and a daily cap.

For a script that calls the server itself, with a key: the server's tool list (tools/list) carries every tool's full input schema. A price check on the Hero still from the example above is a generate call with these arguments:

{
  "canvas_id": "…",
  "node_id": "…",
  "max_credits": 0
}

It answers with status "needs_approval", credits 7 and payment "personal", and in words (wrapped here):

“Hero still” would cost up to 7 credits
(Nano Banana 2.1, from your credits), over max_credits,
so nothing ran. It’s waiting on the canvas: https://fil.design/#canvas/…
Tell the user the price; to run it, call generate with
node_id … and max_credits of at least 7.

Called again with max_credits 7, it runs: status "generating" and a job_id, and check_node gets the result.

Upload and size limits

WhatLimit
Pictures (PNG, JPEG, WebP, GIF, SVG)4 MB
Sounds (WAV, MP3, M4A/AAC, OGG, FLAC)25 MB
Videos (MP4, MOV, WebM)50 MB
GLB models (glTF 2.0)50 MB
Nodes in one add_nodes call60, with 120 links
Nodes linked in one go (into, inputs, connect's from)16
Commands in one edit_video call; nodes in one make_video60 each
Nodes framed by one add_section200
Nodes in one set_visibility call500
A document's text9,000 bytes (about 9,000 characters of plain text)
A prompt node's text6,000 characters with add_prompt; 9,000 in an add_nodes or update_node call
A skill's instructions8,000 characters
A generation node's own prompt4,000 characters
A line written with log1,200 characters
A page, site data or text written with write_file2 MB
A design system400 KB
A component's markup, and its CSS (set_component)100,000 characters each
A React module (set_module)200,000 characters
What read_file returns400 KB
Waiting in one check_node, edit_video or export_video callUp to 25 seconds; about 7 on fil.design
  • A file is known by its bytes, not its name: a .glb that isn't a glTF 2.0 model is turned down.
  • Sounds, videos and models over 4 MB go straight to storage in three curl steps, which the upload's answer spells out.
  • Every file also has to fit your plan's file size (1 MB on Free, 10 MB on Starter, 50 MB on Pro, 100 MB on Max) and your storage.
  • When a run takes longer than one check_node wait, the agent calls it again.
  • An agent can't use a canvas in the Trash, or change one you can only view.

What's next