Tools provided
Tools the agent exposes — your AI client calls them automatically when it needs them.
- get_preset_instructions — Resolve a named Higgsfield preset or command and read its instructions without executing it. Entries include image/video recipes, generation workflows such as /genjutsu, and setup instructions such as /use-after-effects and /use-blender. For an explicit slash invocation, resolve the exact token before selecting tools or requesting media. Omit preset to list bundled recipes and commands. Use get_presets for Viral and Marketing Studio browsing (/effects, /product, /motion); a resolved gallery entrRead-onlyidempotentopen internet
- models_explore — Find generation models. Use recommend with goal + input context; use get for model constraints. Items carry supports_unlim when the model accepts free-trial unlimited generations; the top-level unlim block says whether the caller can spend them right now, and the trailing 'Unlim configs' text lists the configurations their allowance actually covers.Read-onlyidempotentopen internet
- generate_image — Generate one image request and render its result(s) in the generation widget. Use count 2-4 only for variants of the same prompt, inputs, and settings; for 2-12 independent image requests with different prompts or inputs, use the headless generate_image_batch tool instead. Apps UI local file media: call `media_upload_widget`; do not ask for Claude chat attachments because remote tools cannot read them. Web media URL: call `media_import_url`, then pass returned `media_id`; `medias[].value` must bCan change dataopen internet
- generate_video — Generate one direct video request and render it in the generation widget. Use count 2-4 only for variants of the same prompt, inputs, and settings; use headless generate_video_batch for 2-12 independent requests. GENJUTSU TRIGGERS: route `Higgsfield Genjutsu` by intent. Copy, repeat, reproduce, mimic, or transfer motion, movement, actions, gestures, dance, or camera motion from one driving video to reference-image subjects -> `hf_mult_motion_control`. Replace, change, or swap an object, product,Can change dataopen internet
- generate_audio — Generate one speech/voice request (text-to-speech) and render it in the generation widget. This tool accepts one prompt; for 2-12 independent lines or prompts, use the headless generate_audio_batch tool instead. DEFAULT model: seed_audio (Seed Audio 1.0 by ByteDance) — use it unless the user explicitly asks for a different engine. seed_audio takes a preset or reference-element voice (voice_type 'preset'|'element' + voice_id) plus optional tuning params (format, sample_rate, speech_rate, loudnessCan change dataopen internet
- generate_image_batch — Submit 1-12 independent image generations in parallel without opening a widget. Each requests[] item accepts generation params with count fixed to 1 and no get_cost, creates one job on successful submission, and keeps its caller-provided index in the response. Use for multiple distinct prompts or inputs; use generate_image for one user-facing generation. Poll returned job IDs with jobs_wait in agent-chosen groups of at most 12. For larger sets, collect indexed jobs across submission batches. AftCan change data
- generate_video_batch — Submit 1-12 independent video generations in parallel without opening a widget. Each requests[] item accepts generation params with count fixed to 1 and no get_cost, creates one job on successful submission, and keeps its caller-provided index in the response. Use for multiple distinct prompts or inputs; use generate_video for one user-facing generation. Poll returned job IDs with jobs_wait in agent-chosen groups of at most 12. For larger sets, collect indexed jobs across submission batches. AftCan change data
- generate_audio_batch — Submit 1-12 independent audio generations in parallel without opening a widget. Each requests[] item accepts generation params with count fixed to 1 and no get_cost, creates one job on successful submission, and keeps its caller-provided index in the response. Use for multiple distinct prompts or inputs; use generate_audio for one user-facing generation. Poll returned job IDs with jobs_wait in agent-chosen groups of at most 12. For larger sets, collect indexed jobs across submission batches. AftCan change data
- generate_3d — Generate a 3D GLB mesh. Use `models_explore(type:'3d')` to pick a model and see its `medias[].roles` and `parameters`. Apps UI local file: call `media_upload_widget`; remote tools cannot read Claude chat attachments. Web media URL: call `media_import_url`, pass returned `media_id`; `medias[].value` must be media_id/job_id, not URL. Defaults: `image_to_3d` for general image-to-3D with optional texturing, PBR, and rigging; `multi_image_to_3d` when 2-4 views of the same subject are available (betteCan change dataopen internet
- animation_actions — Read-only catalog of the 3D rig animation library (678 actions: locomotion, gestures, dancing, combat, daily actions). Search by name or browse by group/category to find the animation_action_id for 3D generation with enable_animation=true. Each result has a preview_url GIF — when several candidates fit (e.g. many Idle or Walk variants), show the user the previews as markdown images and let them pick instead of choosing blindly. Does not create jobs.Read-onlyidempotent
- get_presets — Browse Higgsfield preset galleries without starting a generation. A bare preset slash command or a request to open, preview, or browse a preset only opens its widget. For supplied attachments, use input_schema from get_preset_instructions to map and upload the relevant files before opening any widget. Call get_presets exactly once with source, preset_id and initial_inputs in the exact schema fields. Do not call get_presets just to inspect the schema. Leave omitted settings to schema defaults; neRead-onlyidempotentopen internet
- execute_preset — Request execution of one published preset from the Viral or Marketing Studio gallery. A bare preset slash command or a request to open, preview, or browse a preset only opens its widget. For supplied attachments, use input_schema from get_preset_instructions to map and upload the relevant files before opening any widget. Call get_presets exactly once with source, preset_id and initial_inputs in the exact schema fields. Do not call get_presets just to inspect the schema. Leave omitted settings toCan change dataopen internet
- marketing_list_avatars — Read-only list of user and preset Marketing Studio avatars. Does not create or modify avatars.Read-onlyidempotent
- show_marketing_studio_v2 — Open Marketing Studio — a template gallery widget with category tabs (UGC ads, product shots, motion graphics, posters, ads, marketplace) and a preset grid the user browses and recreates from with their own product image. Use this whenever the user asks for Marketing Studio or wants marketing assets in UGC, ads, posters or marketplace categories. For product-shot or motion catalog browsing, and /marketing-studio, use get_presets instead. The widget handles preset selection, inputs, generation, aRead-onlyidempotentopen internet
- marketing_studio_v2_presets — Widget-internal: load a page of the Marketing Studio v2 preset feed for a category.Read-onlyidempotentopen internet
- marketing_studio_v2_avatars — Widget-internal: list the user's Marketing Studio avatars (preset and custom) for the avatar picker.Read-onlyidempotentopen internet
- marketing_studio_v2_costs — Widget-internal: the Marketing Studio v2 pricing document. credits = cost_units / cost_units_per_credit; video flows cost fixed_cost_units + cost_units_per_second × duration.Read-onlyidempotentopen internet
- marketing_studio_v2_create — Widget-internal: recreate a Marketing Studio v2 preset — validates inputs against the preset's recreate contract and submits one generation.Can change dataopen internet
- marketing_studio_v2_status — Widget-internal: poll status and results of submitted Marketing Studio v2 jobs.Read-onlyidempotentopen internet
- show_generations — Browse completed non-Marketing Studio generation history and render one paginated page in the gallery widget. Returns generations with {id, type, status, model, params, results}. Use only when the user explicitly asks to browse regular generation history. Do not use this history tool after generate_*_batch or jobs_wait; show an exact completed batch with one show_generation_by_ids call instead. Use show_marketing_studio_generations for Marketing Studio video/image/ad history. Pass a prior generaRead-onlyidempotentopen internet
88 more tools
- show_marketing_studio_generations — Browse past completed Marketing Studio generations only. Returns Marketing Studio video and ad/image generations with {id, type, status, model, params, results}. Use show_generations for non-Marketing Studio image/video history.Read-onlyidempotentopen internet
- job_status — Check the status and results of an async job. Returns instantly. For non-terminal jobs the response includes poll_after_seconds — wait that many seconds before calling again. Typical total times: image ~10-20s, video ~60-180s.Read-onlyidempotentopen internet
- job_display — Show one specific previous generation in the single-result UI widget by job ID. Use when the user wants to inspect or re-display that individual result, including workflows that require separate approval of named candidates or individual previews before finalization. Do not call job_display once per job merely to reproduce an ordinary completed batch; use one show_generation_by_ids call for ordinary batch results instead.Read-onlyidempotentopen internet
- reveal_generation — Confirm the user has rights to the content of an `ip_detected` generation and flip its status to `completed`. Backend accepts only seedance-family jobs (cs_3_0, seedance_2_0, ms_video, etc) and only while the job is still in `ip_detected` state. Returns the updated generation. Used by the job-list widget's Reveal button after the user accepts the rights confirmation modal.Can change dataidempotentopen internet
- jobs_wait — Long-poll 1-12 generation jobs together without opening a widget. Waits up to timeout_seconds (default 15, max 15) for every job to reach a terminal state, then returns compact indexed statuses and result URLs. Use job IDs returned by generate_image_batch, generate_video_batch, or generate_audio_batch. For larger sets, choose groups of at most 12 and wait for each group. Permanent lookup failures are returned once without blocking the other jobs; transient lookup failures are retried within theRead-onlyidempotent
- show_generation_by_ids — Render exactly 1-60 requested generation jobs in the full-profile gallery widget, ordered by index and paginated locally in groups of 12. Use once every jobs_wait group is terminal for generate_image_batch, generate_video_batch, or generate_audio_batch. Pass the complete indexed set collected from the batch tools. This tool fetches only those job IDs in bounded groups: it never loads generation history, uses cursors, requests additional pages, or adds other jobs. Do not use show_generations or jRead-onlyidempotent
- media_upload — Upload media for use in generation, or general files (documents, archives, code) for sharing. Returns presigned URLs for clients that can upload bytes themselves; run the generated curl commands or PUT the bytes to each upload_url, then call media_confirm. The media type is inferred from the filename extension: image/video/audio extensions become generation inputs; other whitelisted extensions (pdf, zip, tar, docx, csv, code files, …) are uploaded as general files and return a permanent URL, butCan change dataopen internet
- media_import_url — Import an HTTPS image, video, or audio URL into Higgsfield storage and return a confirmed media_id. Use this before generate_image/generate_video when the user provides a web media URL; generation medias should receive the returned media_id, not the original URL. Max URL payload: 50 MB.Can change dataopen internet
- media_confirm — Confirm file uploads after using media_upload's upload_url method. Call this only after every curl PUT returned HTTP 200. Supports confirming multiple uploads at once via media_ids.Can change dataidempotentopen internet
- media_upload_widget — Required local-media intake for Higgsfield in Apps UI-capable clients. Call this immediately as the only tool in the turn when the user refers to an attached/local photo, image, video, or audio but the prompt has no confirmed media_id yet. Do not inspect /mnt/user-data/uploads, run shell/sandbox commands, or ask the user to attach the file in Claude chat; remote MCP tools cannot read chat attachments. This widget is the upload surface: the user re-selects one or more files in the browser, the brCan change dataopen internet
- show_medias — List your uploaded media files by type. Returns media IDs, URLs, and creation timestamps. Call once with the single type the user asked for (default image); do not enumerate the other types unless the user explicitly asks for them. Pass media IDs as value in the medias array of generation tools. Paginated: if next_cursor is not null, pass it as cursor to get the next page.Read-onlyidempotentopen internet
- scene_builder_3d_create_project — Create a new private 3D Jutsu project for the authenticated user. Supply a descriptive name; the service assigns ownership and the project ID. Use this when the user requests a new project or a new standalone scene. For an existing scene, use scene_builder_3d_list_projects instead. Pass the returned projectId explicitly to subsequent tools; creation does not set a global active project. Call scene_builder_3d_get_project, then scene_builder_3d_query_python to inspect the initial scene and obtainCan change dataopen internet
- scene_builder_3d_list_projects — Discover the authenticated user's 3D Jutsu projects before choosing a scene to read or edit. Follow `nextCursor` to see more results. Use the selected project's `id` as `projectId` in every project-scoped 3D Jutsu tool; no call sets a global active project. Match the user's named project, and ask them to choose if the result is ambiguous. Then call `scene_builder_3d_get_project` for its current state. A project's presence here does not bypass permission checks on subsequent calls. To start a newRead-onlyidempotentopen internet
- scene_builder_3d_show_scene — Show a minimal interactive 3D Jutsu scene preview with orbit, pan, zoom, a basic animation timeline with play/pause and seeking, and a link to the website. Choose projectId with scene_builder_3d_list_projects, scene_builder_3d_create_project, or the user's explicit selection. Pass revisionAfter from a successful edit to show that exact result, or omit revision for the latest committed GLB. Wait for edits to settle with scene_builder_3d_get_operation before showing their result. This reads an exiRead-onlyidempotentopen internet
- scene_builder_3d_get_project — Read a 3D Jutsu project's current revision, scene sequence, active operation, and committed artifacts. Obtain `projectId` from `scene_builder_3d_list_projects`, `scene_builder_3d_create_project`, or an explicit user selection. An authorized project with `exists: false` is a valid empty scene at revision 0. Use `scene_builder_3d_query_python` to inspect actual objects, dimensions, materials, cameras, and lights before editing. If an operation is active, use `scene_builder_3d_get_operation` to setRead-onlyidempotentopen internet
- scene_builder_3d_query_python — Inspect the latest settled Blender scene without committing changes. `bpy` and the `artifacts` registry are available; assign concise JSON-serializable findings to `result`. Query exact names, metre-scale dimensions, transforms, parents, collections, materials, cameras, lights, visibility, and animation settings as needed. Inspect Blender RNA when an API or enum is uncertain. Temporary scene changes are discarded, including camera changes used for inspection. A query can render and publish imageCan change dataopen internet
- scene_builder_3d_run_python — Commit one coherent Blender scene edit against the exact revision and scene sequence you inspected with `scene_builder_3d_get_project` or `scene_builder_3d_query_python`. `bpy` and `artifacts` are available; assign JSON-serializable findings to `result`. Keep one mutation active per project, including imports. If this operation remains active, poll `scene_builder_3d_get_operation` before editing again. Reuse `operationId` only for the identical code and preconditions. On a stale-state conflict,Can delete dataopen internet
- scene_builder_3d_get_operation — Read or wait for a submitted Python operation in this project. Only `succeeded`, `failed`, `timed_out`, and `expired` are terminal; all other statuses require another poll using the same project and operation IDs. An HTTP success or a wait timeout does not mean the operation finished. Do not submit another mutation while one is active. On success, use the returned revision and scene sequence for subsequent work; obtain published images and videos through `scene_builder_3d_get_artifact`. On failuRead-onlyidempotentopen internet
- scene_builder_3d_search_assets — Search the curated GLB model catalog available to 3D Jutsu. This read is authorized against `projectId`; the catalog itself is shared. Pass a returned `assetId` to `scene_builder_3d_import_asset` for the same selected project. Search results are available models, not objects already present in the scene. Inspect existing scene objects with `scene_builder_3d_query_python` before deciding what to add. Never invent an asset ID or turn a catalog URL into Python download code. Copy the returned imporRead-onlyidempotentopen internet
- scene_builder_3d_import_asset — Import a confirmed catalog GLB from `scene_builder_3d_search_assets` into the selected project as a collaborative scene entity. Supply the catalog's asset ID, not a URL. The tool runtime resolves and uploads the bytes, reads the project guards, submits the import, and waits for it to appear in the settled scene. Do not import while another mutation is active. After import, inspect dimensions, placement, orientation, contact, and materials with `scene_builder_3d_query_python` before further editsCan change dataopen internet
- scene_builder_3d_get_glb — For an interactive scene preview use `scene_builder_3d_show_scene`. Resolve a short-lived download for the current committed GLB, or a specified historical revision. This retrieves an existing export; it does not run Blender, render, or create a new export. Settle any active mutation with `scene_builder_3d_get_operation` first if you need its result. Use GLB for portable scene delivery, and `scene_builder_3d_get_blend` for the editable Blender source. Procedural shading, world lighting, and someRead-onlyidempotentopen internet
- scene_builder_3d_get_blend — Resolve a short-lived download for the current committed editable Blender file, or a specified historical revision. This retrieves the existing scene; it does not create a revision or render a preview. Settle any active mutation with `scene_builder_3d_get_operation` first when you need its result. Use `scene_builder_3d_get_glb` for portable model delivery and `scene_builder_3d_get_artifact` for published images or videos.Read-onlyidempotentopen internet
- scene_builder_3d_get_artifact — Resolve a short-lived download for an image or video that a successful Python operation published through `artifacts`. Use the artifact ID and operation ID or revision returned by that operation; do not invent IDs or filesystem paths. Query artifacts can be operation-scoped without a new committed revision. This retrieves an existing artifact and does not render one. To create a preview, render and publish it with `scene_builder_3d_query_python` or `scene_builder_3d_run_python`. Inspect the retuRead-onlyidempotentopen internet
- shorts_studio_list_presets — Browse Shorts Studio style presets — the visual STYLE a short is restyled toward. Use this when the user wants to make a short and needs to choose a look: they can pick one of these or create their own style with shorts_studio_create_preset. Returns the user's own presets first, then the CMS library; each item carries a `preset_source` to pass straight into shorts_studio_create. Paginated: if next_cursor is not null, pass it as cursor to get the next page.Read-onlyidempotentopen internet
- shorts_studio_create_preset — Create a user-owned Shorts Studio style preset from reference media (videos + images). This just stores a STYLE — no generation, no credits. Reference media must be public https URLs (use an uploaded media's url or media_import_url first). Limits: ≤10 media total, each video's duration ≤30s (send `duration` so the cap applies). Returns the id and preset_source to feed into shorts_studio_create. If the user did not give a name, invent a random friendly two-word name yourself (e.g. 'Amber Drift',Can change dataopen internet
- shorts_studio_create — Start a Shorts Studio short: restyle one uploaded source video (4s–120s) into a set of AI-generated short-form clips using a style preset. PAID — reserves credits. Prerequisites, gathered in whatever order fits the conversation: (1) a style preset — pick one via shorts_studio_list_presets or make one with shorts_studio_create_preset; (2) a source video — an uploaded video_input id from media_upload_widget (type=video). If the user hasn't provided a source video yet, ask them to upload one beforeCan change dataopen internet
- shorts_studio_list_sessions — List the caller's past Shorts Studio sessions (newest first) to find a session_id to poll with shorts_studio_status.Read-onlyidempotentopen internet
- shorts_studio_status — Poll one Shorts Studio session. Returns {id, status, job_ids}. status='completed' means every clip job is terminal (not necessarily successful). Poll each job_id via job_status for its clip video url and per-clip status.Read-onlyidempotentopen internet
- video_analysis_create — Start a scene-by-scene analysis of a video. Provide EXACTLY ONE of: (a) video_input_id — UUID of a video the user has uploaded via media_upload/media_confirm, or (b) youtube_url — a YouTube link (youtube.com / youtu.be hosts only). Returns immediately with status='queued'; poll video_analysis_status until status='completed'. Processing typically takes 3-5 minutes on average. IMPORTANT: warn the user up front that the longer the video, the less accurate the scene-by-scene analysis becomes — shortCan change dataopen internet
- video_analysis_status — Get the status and result of a video analysis. Poll this after video_analysis_create until status='completed' (scenes populated) or 'failed' (fail_reason populated). Analyses typically finish in 3-5 minutes — poll accordingly every 30-60 seconds.Read-onlyidempotentopen internet
- video_analysis_jobs — List the user's video analyses in the current workspace, newest first. Paginate by passing the previous response's cursor.Read-onlyidempotentopen internet
- get_explainer_presets — Show the explainer video style presets (CMS-managed catalog). Returns preset ids, names, and preview media. When the user picks one, resolve it with resolve_explainer_preset to get the style reference media_id for generations.Read-onlyidempotentopen internet
- resolve_explainer_preset — Resolve a explainer video style preset (from get_explainer_presets) into a style reference media_id: the backend imports the preset's style image into the user's media storage. Pass the returned media_id as the style reference image in generation calls for every scene of the explainer.Can change dataidempotentopen internet
- list_voices — List available voices for speech and voice tools. Returns built-in preset voices plus the user's own custom voices. Each voice has a voice_id and a voice_type ('preset' or 'element'); pass that exact pair to the audio models (via generate_audio — seed_audio or text2speech_v2) and to the voice_change tool to select the speaking voice. Use the preview_url to hear a sample. Paginate with the returned next_cursor.Read-onlyidempotentopen internet
- voice_change — Replace the spoken voice in a video with a different voice while keeping the original timing and visuals, then re-merge the new audio onto the video. Use this when the user asks to change, swap, or revoice the speaker in a clip. Pass video_id for the source video (a confirmed uploaded media_id or a completed video generation job_id) and voice_id for the target voice. voice_type selects whether voice_id is a built-in preset voice ('preset') or a workspace reference element ('element'). This toolCan change dataopen internet
- reframe — Expand or reframe an existing video to a new aspect ratio while preserving the source content. Use this when the user asks to make a video vertical, horizontal, square, wider, taller, or fill new edges around a video. Pass medias with exactly one source video and aspect_ratio for the target canvas. Optional image references can guide the filled area; optional start_image can pin the first frame when the user provides a first-frame anchor. For source videos over 15 seconds, pass duration_secondsCan change dataopen internet
- motion_control — Animate an existing character image with the motion and camera movement from a reference video using Kling 3.0 Motion Control. Use this when the user asks to recast, puppeteer, transfer motion, or make a character follow a driving clip. Pass image_id for the character still and motion_video_id for the reference motion video; each can be a confirmed uploaded media_id or a completed generation job_id. This tool does not use prompt or count; the scene prompt and background setup are handled automatCan change dataopen internet
- dubbing — Dub a video into another language: translate the spoken audio, synthesize it in the target language, and lip-sync the result back onto the video. Use this when the user asks to dub, translate the speech of, or localize a clip into another language. Pass video_id for the source video (a confirmed uploaded media_id or a completed video generation job_id) and target_language as one of the supported language codes. Supported languages (code=language): eng=English, cmn=Chinese, fra=French, hin=Hindi,Can change dataopen internet
- create_voice — Open the Create Voice Apps UI. Call this immediately when the user asks to create a voice, call the Create Voice tool, or needs a local browser record/upload surface and no confirmed audio_media_id is already present. Do not ask the user to upload an audio file or provide the name in chat first; the widget collects the required name plus record/upload audio. If the user already has or attached an audio file in chat, still call this tool with initial_tab='upload' — remote tools cannot read ClaudeCan change dataopen internet
- create_voice_from_confirmed_audio — Backend-only creation of a cloned voice from an already confirmed audio upload. Do not call this tool until audio_media_id and name are already known. For direct creation, first upload speech audio with media_upload, PUT the bytes, then call media_confirm with type='audio'. Pass that confirmed media_id here as audio_media_id plus a required name. If the user needs to record or upload local audio in an Apps UI-capable client, call create_voice instead; that widget records/uploads, confirms, and cCan change dataopen internet
- remove_background — Remove or cut out the background from an existing image or video. Use this when the user asks for background removal, a transparent background, an isolated subject, a clean cutout, or a subject-only asset. Pass media_id for the source media and media_type as image or video; the matching background remover is selected automatically. This tool does not use prompt, count, or style parameters.Can change dataopen internet
- outpaint_image — Expand or uncrop an existing image by outpainting beyond the original frame while preserving the source content. Use this when the user asks to extend the background, make an image wider or taller, change the canvas shape, or fill new edges around an image. Pass image_id for the source image and aspect_ratio for the target canvas. Optional width and height can be provided together; otherwise they default from aspect_ratio. This tool does not use prompt or count. Set params.get_cost=true to estimCan change dataopen internet
- upscale_image — Upscale and enhance an existing image. Use this when the user asks to upscale, enhance, or increase the resolution of an image to 2K/4K. This tool does not use prompt or count. Provider selects the upscale backend; currently only 'bytedance' is supported (the default). You MUST pass the source image's width and height in pixels (the caller supplies them; the server does not infer them). Set params.get_cost=true to preflight credits (flat cost) without submitting a job.Can change dataopen internet
- upscale_video — Upscale and enhance an existing video. Use this when the user asks to upscale, enhance, sharpen, denoise, restore, or convert a video to higher resolution. This tool does not use prompt or count, and does not support cost preflight. Choose a provider: 'bytedance' (preset-based, target 1080p/2K/4K — you MUST pass the source video width/height in pixels and may set fps to 24/30/60) or 'topaz' (Topaz Video, aspect-ratio based, target 1080p/2160p — no source dimensions needed).Can change dataopen internet
- virality_predictor — Virality Predictor predicts a video's virality potential, engagement, attention, audience response, retention risk, hook strength, and creative performance with an interactive dashboard. Use when the user asks whether a video can go viral or wants creative-performance analysis. Create starts analysis from a confirmed uploaded video or completed generated video; preview re-opens an existing dashboard.Can change dataopen internet
- balance — Get the user's available credits and current subscription plan. For transaction history, call `transactions` instead.Read-onlyidempotentopen internet
- transactions — List the user's credit transactions (spend/refund/grant/deduct), newest first. Paginated: if next_cursor is not null, pass it as cursor to get the next page.Read-onlyidempotentopen internet
- list_workspaces — List every workspace the user can access (their private workspace plus any shared/team workspaces). The `is_selected` field marks which workspace MCP operations currently target. Use when the user asks which workspaces they have, or wants to switch workspace.Read-onlyidempotentopen internet
- select_workspace — Set or clear the active workspace — the one all subsequent MCP operations bill against and read from (generations, balance, transactions, uploads, custom references). How to work with workspaces: (1) call `list_workspaces` first to see the user's workspaces with their `id`, plan, available credits, and which one is currently active (`is_selected`); (2) call `select_workspace` with the chosen `workspace_id` to switch — e.g. to run and bill work under a shared/team workspace instead of the privateCan change dataidempotentopen internet
- create_project — Create a private Higgsfield media project for this conversation. Call once when the conversation needs a new media project, then retain project_id, workspace_id and default_folder_id in this conversation and pass folder_id on subsequent generate_* calls. Reuse the existing project on later turns; never create one per generation or reuse another conversation's project. This does not create a chat, website or 3D scene. No starter/brief subfolder is created. Resolve workspace_id before the first caCan change data
- create_folder — Create one subfolder in an existing Higgsfield media project. Use project_id returned by create_project in this conversation or explicitly supplied by the user. Omit parent_folder_id to create directly under the root. Keep using the project's default_folder_id for generation unless the user wants outputs in this subfolder; then pass its folder_id. This does not create a project or a local filesystem folder. Creation is not idempotent: do not automatically retry after a timeout or uncertain resulCan change data
- list_projects — List or find existing accessible Higgsfield media projects before choosing a generation destination. Returns project_id, default_folder_id and each project's actual workspace_id. Includes accessible shared projects across workspaces; workspace_id sets authenticated request context, not a filter. Does not list websites, 3D scenes or local directories and never creates a project. Read one page at a time; pass cursor with the same workspace and search to continue. An empty page with has_more=true iRead-onlyidempotent
- list_folders — List direct subfolders of a Higgsfield media project or an explicit parent_folder_id. Use a project_id from list_projects, create_project or the user. Search matches child names under that parent, not the entire tree. Returns folder_id values for subsequent generation destinations and the actual project workspace even for an empty page. Does not list local directories or create folders. Continue with cursor and the same original workspace, project, parent and search; use has_more, not item countRead-onlyidempotent
- list_project_assets — List generations and uploaded media/files placed in a Higgsfield media project, newest first. Omit folder_id for all accessible ordinary folders in the project; supply it for exactly that folder without descendants. Filter by source_types or output_kinds. Returns metadata and IDs, not prompts, playable URLs or previews. placement_id identifies the folder placement; item_id identifies the original job or upload. For type=job use item_id with job_status or job_display to inspect the generation. ThRead-onlyidempotent
- show_reference_elements — Elements widget — reusable characters / environments / props per workspace. Actions: - `list` (default; paginated by `created_at` DESC, use `cursor` from prev `next_cursor`). - `get` (default when `element_id` is set). - `create`: pass `medias[]` as `{ id, url, type: 'media_input' | 'image_job' }`. Upload first via media_upload → PUT bytes → media_confirm. `category='auto'` lets the server classify (use explicit only on user ask). Omit `name` to auto-derive (per-workspace unique, collisions getCan change dataopen internet
- show_plans_and_credits — Open the single combined pricing widget for everything billing-related. The widget has two tabs the user can switch between: **Upgrade Plan** (Plus + Ultra, monthly + annual subscription cards) and **Top-up Credits** (one-time credit packs of 500 / 1,000 / 2,000 / 4,000 credits). Cards include feature lists, 7-Day Unlimited highlights, and 365-Day Unlimited blocks pulled from the live pricing config. Each plan card and credit pack has a CTA that links directly to the relevant Stripe or HiggsfielCan change dataopen internet
- confirm_billing_purchase — INTERNAL — invoked ONLY by the plans widget on an explicit user Confirm click. Do NOT call this tool yourself; it charges the user's real saved payment method off-session. To help a user upgrade, top up, or set auto top-up, call `show_plans_and_credits` instead — it returns checkout links and, in UI clients, opens the widget where the user confirms the charge. Covers auto_topup and topup via the `action` field (upgrade_plan is temporarily disabled — plan upgrades use the hosted checkout link). TCan delete dataopen internet
- cancel_trial_auto_renewal — Cancel the auto-renewal of the Higgsfield MCP free trial. Call this when the user asks to cancel the trial, cancel auto-renewal, stop the upcoming charge, or asks how to cancel. IMPORTANT SEMANTICS: cancelling stops the automatic charge at the end of the trial ONLY — the user KEEPS trial access and remaining trial credits until the trial ends; nothing is charged. First call WITHOUT `confirm` (or confirm=false): in UI clients this opens a confirmation card with 'Keep trial with auto-renewal' andCan delete dataidempotentopen internet
- confirm_trial_cancel — INTERNAL — invoked ONLY by the cancel-trial confirmation widget on an explicit user click of 'Cancel auto-renewal'. Do NOT call this tool yourself; to cancel the trial's auto-renewal use `cancel_trial_auto_renewal` instead. Stops the trial's auto-renewal (cancel_at_period_end) — trial access and remaining credits stay until the trial ends.Can delete dataidempotentopen internet
- show_credit_reset — Open the Credit Reset widget when the user invokes /reset-credits or asks to see their reset offer. Opening it never claims credits or changes the subscription. Use the returned scenario and phase. Errors mean availability could not be checked, not account ineligibility. Never invent an offer, amount or successful claim.Read-onlyidempotentopen internet
- reset_balance — INTERNAL — claim the displayed reset ONLY after the user clicks Reset balance in the widget. Pass the exact scope and workspace_id from that offer. Never call this tool from the assistant or automatically retry a claim. After a conflict or uncertain result, refresh availability with show_credit_reset.Can change dataidempotentopen internet
- sync_agents — Sync Agents — imports the user's user-authored Skills and a personality dump from the current host LLM into Higgsfield. One trigger, one upload, one final confirmation. Calling modes: 1. `message: "/sync-agents"` — server returns a short ack in `content[0].text` plus an assistant-only directive containing a self-contained Python upload script (pre-wired with a one-time presigned POST URL scoped to one per-user prefix). Print the ack verbatim. Then follow the directive: enumerate user-authoredCan change dataopen internet
- get_workflow_instructions — For an explicit named preset slash command, resolve get_preset_instructions first and follow its recipe instead of selecting a workflow by name similarity. Ad Multiplier — load workflow 'ad-multiplier' when the user asks to 'multiply my video', 'multiply my ad', create multiple independently edited versions of one supplied 4-30 second video, or regenerate the same ad with different people or products. Load this workflow before Marketing Studio, model browsing, or direct generation. Brand Asset CRead-onlyidempotent
- get_workflow_bundle_file — Read a safe text file or directory from a workflow's resource folder. Use this after get_workflow_instructions when the SKILL.md requires a template, reference, or script file.Read-onlyidempotent
- create_website — Start a new full-stack website. Creates the website and a git repo: a React 19 + TanStack Start app, server-rendered, in ONE Cloudflare Worker, with D1 / R2 / KV / Durable Objects / Containers available (all DISABLED by default). Returns a website_id — pass it to every later website tool. The 'type' param is REQUIRED and is the USER'S choice, not yours: unless the user has already made it unambiguous, ASK the user whether they want a plain website (no Higgsfield integration) or a Higgsfield-inteCan change dataopen internet
- list_websites — List the websites you own — each with its id, name, slug, and live URL. Use this to find the id of a website you created earlier so you can edit, deploy, or check its status.Read-onlyidempotent
- list_website_categories — List the content categories a website can be filed under — each with a slug, label, description, and display position. create_website REQUIRES a `category`; call this first to get the valid slugs, then pass the closest one ('other' when nothing fits).Read-onlyidempotent
- website_repo_access — Prepare a credential-free checkout in sandbox_exec (operation checkout), or push committed changes (operation push). Use the returned checkout_path to edit and commit with sandbox_exec; then call this tool with push before deploy_website. Each call reserves the user's sandbox for 15 minutes. Checkout reuses existing files; it never resets work. Push rejects uncommitted files and non-fast-forward updates. No Git credentials are returned or installed in the editing sandbox.Can change dataidempotentopen internet
- website_secrets — List configured secret names only. Values are never returned. Configure or remove secret values through Higgsfield's website settings; do not ask the user to paste credentials into chat. Secret changes take effect on the next deploy_website.Read-onlyidempotent
- deploy_website — Build and deploy the website via CI, then return its live URL. Every deploy ships the live site at the website's public URL (there is no separate preview stage). IMPORTANT: commit and git push ALL your changes BEFORE calling this — the build runs from the pushed repo. Deploy again after ANY later change: publish_website does NOT deploy (it only lists the already-live build on the community feed), so this tool is the only way changes ship. A failed build returns the log; a still-running build retCan change dataopen internet
- rename_website — Rename the website's SUBDOMAIN (the slug in its public URL). The site is re-deployed under the new subdomain and the OLD subdomain STOPS WORKING — anyone holding the old URL must be given the new one. Storage (database, files, config) and the code repo are KEPT; only the public address changes. Runs a full re-deploy and can take a couple of minutes; returns once the site is live at the new URL. Fails if the new subdomain is already taken or reserved, or if a deploy is already in flight — pick anCan delete dataidempotentopen internet
- publish_website — Publish the website: lists the website's CURRENT LIVE production deploy on the Higgsfield community feed ('show in feed'), where other users can discover it. This does NOT deploy — deploy_website (which every build flow already runs) must have shipped the latest changes first; publishing with undeployed changes lists the OLD live build, and re-publishing does not re-deploy. BEFORE publishing, the page metadata in app/src/app-meta.json MUST be filled with real values — og_title, og_description, fCan change dataidempotentopen internet
- participate_in_contest — Enter the website in the current Higgsfield app contest, together with the social-media links promoting it. A website not yet PUBLISHED to the community feed is published automatically by the entry — no need to call publish_website first. The website DOES need a live production deploy (deploy_website), else the entry is rejected. BEFORE entering, make sure the page metadata in app/src/app-meta.json is filled with real values (og_title etc.) — the auto-publish lists the website on the feed and anCan change dataidempotentopen internet
- website_status — Get the website's deploy status — the live URL and the status of the last deploy. Use to check a deploy that returned 'pending', or to fetch the live URL.Read-onlyidempotent
- website_db — Inspect the website's database (D1 / SQLite), READ-ONLY. The website has ONE database — the live site's real data. Pick an operation: 'tables' (list tables); 'schema' (a table's columns — needs table); 'rows' (a page of rows — needs table; optional filters, order_by + order_dir, limit (default 50) + offset); 'query' (one read-only SELECT/WITH — needs sql). Writes and DDL are rejected.Read-onlyidempotent
- apps_search — Search Higgsfield Marketplace apps callable through MCP. Returns each app's id, name, and the actions it exposes. Flow: apps_search to find an app → apps_describe(app_id, action) to get an action's argument schema + manifest_revision → apps_invoke to run it. Read-only; does not call any app.Read-onlyidempotentopen internet
- apps_describe — Get an app's action contract: with `action`, the full input/output schema + execution mode for that one action; without it, a summary of every action. Also returns `manifest_revision`, which apps_invoke requires. Read-only.Read-onlyidempotentopen internet
- apps_invoke — Run one described action on a Marketplace app AS the current user. First call apps_describe(app_id, action) to get the exact `arguments` schema and the `manifest_revision`, then pass them here. Long-running actions return { id, status: "queued" }. If a widget is visible, it polls the status action automatically — do not re-invoke get_* as a follow-up poll. In text-only clients, poll by invoking the app's status action (e.g. get_render) until status is completed/failed. The action's own annotatioCan change dataopen internet
- sandbox_exec — Execute a shell command in a remote Higgsfield cloud Linux sandbox — NOT your local machine or the client's own shell. Use it for Higgsfield media workflows and website_repo_access checkouts that require the hosted toolchain. Do not use it to inspect a local repository, install desktop software, or control applications on the user's computer. Preinstalled: ffmpeg/ffprobe, ImageMagick, sox, python3 with Pillow and faster-whisper, node/npm/npx, sharp-cli, Playwright with headless Chromium, captionCan change dataopen internet
- show_characters — Soul Characters widget — reusable trained identity models. Actions: `list` (browse), `train` (needs `name` + 5-20 ref images, ~10 min, non-blocking — widget polls), `status` (inspect by `soul_id`). Presence of `name`/`images`/`medias` ⇒ train mode. Call `train` only on explicit ask for a reusable Soul / digital twin / identity, or when 5+ ref photos are supplied. Ref images accept: media_id UUIDs from media_confirm, completed image-job IDs, or https URLs. Never local paths — upload via media_uplCan change dataopen internet
- tiktok_accounts — List the user's connected TikTok accounts. Returns each account's connector_id (needed by other tiktok_* tools) and status. `active` accounts are ready; `error` accounts need tiktok_reconnect; no accounts ⇒ offer tiktok_connect. Read-only.Read-onlyidempotentopen internet
- tiktok_connect — Start connecting the user's TikTok account. Returns an authorize_url — show it to the user as a link; they open it in a browser, approve access on TikTok, and land on a confirmation page. Afterwards call tiktok_accounts to verify the account became `active`. The URL expires in ~10 minutes. If an account already exists in `error` status, use tiktok_reconnect instead.Can change dataopen internet
- tiktok_reconnect — Re-run the TikTok OAuth for an existing connector in `error` status (expired/revoked access). Returns a fresh authorize_url — show it to the user as a link, then verify with tiktok_accounts.Can change dataopen internet
- tiktok_music_trending — List trending commercially licensed tracks from TikTok's Commercial Music Library for the connected account. Show the user tracks with their listen links. To attach music, ask the user to select and tune it in the publish-form widget opened by tiktok_prepare_publish; choices here are not applied to the post. Music works for DIRECT_POST only (TikTok drafts don't keep it). There is no keyword search — offer genre/country/date_range filters instead. Read-only.Read-onlyidempotentopen internet
- tiktok_music_tune — Open the tuning editor for one Commercial Music Library track the user already picked (via tiktok_music_trending): trim start/end and set track/original volumes. Pass the same genre/country_code/date_range filters that were used when the track was found, or the lookup may miss. This editor previews settings only; they are not applied to the post. For publication, ask the user to select and tune music in the publish-form widget opened by tiktok_prepare_publish. Read-only.Read-onlyidempotentopen internet
- tiktok_prepare_publish — Step 1 of publishing to TikTok. Validates the media and TikTok account, creates a publish session, and returns what the user must review and choose (preview, privacy options, required declarations, confirmations). The media URL must be a Higgsfield-hosted asset (TikTok requires a verified source domain). The user reviews and submits the publish-form widget, including optional music selection and tuning. Do not call tiktok_publish yourself. Clients without MCP Apps cannot publish. mode=DIRECT_POSCan change dataopen internet
- tiktok_publish — Publish a prepared TikTok post from the publish-form widget after the user reviews and submits it. Requires the short-lived publish_token delivered only in tiktok_prepare_publish result metadata. Chat confirmations and boolean attestations do not authorize publication. Use tiktok_prepare_publish to open the form; clients without MCP Apps cannot publish. Track a submitted post with tiktok_publish_status. PUBLISH QUOTAS per account, enforced before TikTok is called: at most 5 posts per minute andCan change dataopen internet
- tiktok_publish_status — Step 3 of publishing. Fetch processing status for a publish_id returned by tiktok_publish. TikTok may take a few minutes to process before the post is live. Read-only.Read-onlyidempotentopen internet
