Docs / Tool Catalog

Tool catalog

21 authenticated tools at the pro tier. lib_list alone is free; Compose and X publishing use authenticated credits and are unavailable through x402. Version: 1.3

When to use

Use this to scope your agent surface

Use the catalog to understand which tools are available, their sync/async behavior, and which providers each tool supports. Always call tools/list at runtime for the canonical schemas.

ToolCategoryAsyncProvidersDescription
analyze_mediaanalysissyncanthropic, grok, openai, qwen, soundside.ai, vertexAnalyze media: technical metadata, vision_qa, transcribe, detect_segments, detect_shots, export_edl.
apply_effecteditingsyncsoundside.aiCinematic effects: ken_burns (image→video motion), speed_ramp, film_grain, vignette. Returns resource_id.
compose_mediaeditingsyncsoundside.aiLayer text, images, or video onto a base video: add_text, overlay, split_screen. Returns resource_id.
compose_videocompositionpendinggrok, lyria, minimaxCompose a complete video from a timeline plan. Accepts a plan (sparse brief or detailed timeline), enriches it, generates assets in parallel, and assembles with transitions, audio mix, and overlays. Auto-creates a project/collection if none provided. Plans: minimal (just brief+style), moderate (segment outlines), or detailed (providers, prompts, timing). Server fills gaps. Async: returns pending resource_id. Check completion with lib_list (the resource's status); an MCP notification may also arrive, but don't rely on it. Revision: pass reuse_segments mapping indices to prior resource_ids (from metadata.composition.segment_resources). Only changed segments regenerate. Revise (sugar): pass revise_from=<parent composition UUID> with plan={} and regenerate=[indices]. The server rebuilds the plan and reuse map from the parent's durable checkpoint (owner-only): every segment NOT listed in regenerate reuses the parent's clip, and the parent's monolithic narration/music carry over as supplied audio. regenerate=[] (or omitted) re-assembles the parent as-is — every segment reuses, carried audio, full QA + publication; this is the recovery path for a FAILED own parent whose segments all completed. Optional segment_overrides edits regenerated segments (prompt, duration_sec, motion_intensity, camera_position) and requires a non-empty regenerate. The manual reuse_segments path above remains the low-level alternative. Reassemble-only: set reassemble_only=true with ALL segment IDs in reuse_segments and the prior enriched timeline as plan. Skips planning/generation and runs the same assembly, QA review and objective delivery checks. Quality: judges are evidence. No judge verdict fails or regenerates a run; the publication gate is objective checks only (generated media, duration, resolution, audio, narration mix). metadata.delivery_certificate.status is certified, needs_review, draft (qa=false) or failed, and its needs_review list names every judge finding.
create_artifactgenerationsyncdocx, gamma, mermaid, plotly, pptx, weasyprintCreate a business artifact: presentation (slides), chart (data viz), document (sections), or diagram (mermaid). Bundle mode: pass outputs list for multi-format generation. Supports brand kits. Provider 'gamma' for AI presentations.
create_audiogenerationmixedcreative_freedom, grok, minimax, runway, vertexCreate audio: TTS, sound effects, voice cloning/design, voice listing, or the deprecated transcription compatibility shim. Use analyze_media(analysis_type='transcribe') for new transcription integrations.
create_imagegenerationmixedalibaba, creative_freedom, grok, minimax, vertexCreate image from text prompt or reference. Sync (vertex, minimax, grok, creative_freedom) or async (alibaba — poll with lib_list).
create_musicgenerationmixedcreative_freedom, lyriaCreate music from lyrics/prompt. Lyria is synchronous; Creative Freedom is authenticated-only and asynchronous. MiniMax music is unavailable and is not part of the public contract.
create_textgenerationsyncgrok, minimax, qwen, vertexGenerate text via LLM chat completions. Pass messages or prompt.
create_videogenerationpendingalibaba, creative_freedom, grok, minimax, vertexCreate video from text/image. Async: returns pending resource_id, poll with lib_list until completed (5-10s intervals, 600s timeout). Supports character_reference for consistency.
edit_audioeditingsyncsoundside.aiEdit audio on video: mix_audio, replace_audio, pad_audio. Returns resource_id.
edit_videoeditingsyncsoundside.aiEdit video: trim, concat, crossfade, adjust_speed, loop, color_grade, custom, burn_subtitles. Returns resource_id of new media.
extract_mediaeditingsyncsoundside.aiExtract from media: extract_frame, extract_frames, extract_audio. Returns resource_id(s).
lib_listlibrarysyncsoundside.aiList library entities: projects, collections, resources, lineage, brand_kits, credits, or dashboard (composite load). Filter by project_id, collection_id, tags, mime_type_prefix. Supports pagination (limit/offset), sorting, and search.
lib_managelibrarysyncsoundside.aiCRUD for library entities (projects, collections, resources, brand_kits). Large file upload: upload_initiate → PUT to signed URL → upload_complete. To share a resource: set visibility="public" → response includes a permanent short_url. For listing, use lib_list.
lib_sharelibrarysyncsoundside.aiManage project sharing: share by email, list shares, or revoke access. For download URLs, use lib_list with resource_id.
list_adaptersadapterssyncsoundside.aiList LoRA adapters mirrored into the Soundside library.
manage_adapteradaptersmixedsoundside.aiManage a LoRA adapter: inspect, deploy, undeploy, delete, or select_checkpoint.
publish_contentpublishingmixedxRead and manage a connected X account. action defaults to publish. Read actions return bounded posts/profiles and pagination tokens synchronously. Writes (publish/reply/edit/delete/like/unlike/repost/unrepost) require a unique idempotency_key and return a durable receipt: check its status with lib_list; a push may also arrive, but don't rely on it. Reuse a key only with the exact same request; never retry an unknown write using a new key. API-key/OAuth-client automation needs an explicit read, publish (publish/reply), or manage (other writes) grant. Authenticated credits only. Post text max 280 weighted characters; up to four owned JPEG/PNG/WEBP UUIDs (5 MiB each) or one MP4 UUID (512 MiB, 140s, H.264/yuv420p, AAC if audio). made_with_ai is a client choice, default true for compatibility. Editing is limited by X's live edit_controls; delete affects the edit chain. Self-service replies require X's mention/quote eligibility. No DMs/bookmarks. Examples: {"action":"get_account"}; {"action":"list_posts","limit":10}; {"idempotency_key":"film-1","text":"New film","made_with_ai":false}.
remix_videocompositionpendingalibaba, grok, minimaxShot-for-shot video reskin or recast ("remix") of a film you own. Detects cuts in an owned video, shares cast and setting references across shots, transforms the cast and world (mode="reskin") or the performers alone (mode="recast"), normalizes clips and verifies the delivered frame count, and restores the original soundtrack. It preserves edit boundaries and duration; fidelity of generated motion, mouths, hands and lettering is checked rather than guaranteed. It does not clone or replace voices. Import a direct video URL into your library with lib_manage(content_url=...) first. Two recipes, chosen with `recipe`: - `recipe="source_edit"` (default): edit each source shot with shared references, check it against source frames, and attempt targeted repairs within the quoted allowance. The best take is retained. Remaining shot defects are named in `needs_review`. The final synchronized source-left/result-right video is reviewed at 4 sampled frames/second in windows up to 10 seconds; its findings are in `delivery_review` and `unresolved_defects`. Review the full film yourself before publishing. - `recipe="keyframe"`: restyled source stills per action, interpolated by a video model, judged and repaired. It generates motion between stills; `engine_overrides` applies only here. Requires `rights_attested=true`: you are attesting you hold the rights to remix the source. The call is refused otherwise. Async: returns a pending resource_id immediately; the job runs in the background. Check completion with `lib_list` (the resource's status); once it completes, its side-by-side comparison and JSON delivery report are ready too. A `notifications/resources/updated` push may also arrive while your client holds a stream, but don't rely on it. Quote first: `estimate_only=true` returns metadata.quote.total_credits, metadata.shot_plan, metadata.quote_token and metadata.quote_expires_at. Source analysis (probe, cut detection, frame extraction and a capped visual scan) is billed separately even if you do not start a run. Buy the quote within 24 hours using the SAME source, brief and creative settings, quote_token, estimate_only=false, and budget_cap_credits no greater than the accepted quote. The token is account-bound, reuses the frozen plan without reanalysis, and retries return the same parent. Changed creative settings or expired/tampered tokens require a new quote. A concurrent purchase returns retryable QUOTE_BUSY. Pricing: one credit is $0.01. Recast service is 20 credits per newly transformed source second, 200-credit minimum, plus metered processing. Unchanged and source-fallback footage is excluded; reassembly has no service fee. The service fee is waived when final review is incomplete or has unresolved defects. Processing still applies. The account must cover the quoted ceiling; each child operation reserves within that ceiling and unused allowance is not charged. The report separates processing_credits and service_fee_credits. Legacy jobs keep their accepted fee. Authenticated credits only; direct x402 payment is not supported. Revision: pass `revise_from=<parent remix UUID>` (owner-only, requires `brief=""`) with `regenerate_actions` naming which actions to redo; empty/omitted `regenerate_actions` means pure re-assembly of the parent's already-accepted clips. A revision always keeps the parent's recipe. Example (quote only): remix_video(source_resource_id="<uuid>", brief="A neon-drenched cyberpunk world", rights_attested=true, estimate_only=true) Example (buy that quote): remix_video(source_resource_id="<uuid>", brief="A neon-drenched cyberpunk world", rights_attested=true, quote_token="<metadata.quote_token>", budget_cap_credits=<metadata.quote.total_credits>) Example (the older keyframe recipe): remix_video(source_resource_id="<uuid>", brief="A neon-drenched cyberpunk world", recipe="keyframe", rights_attested=true)
train_adapteradapterspendingdashscope, modalTrain a LoRA adapter from library media. Each training_data item needs first_frame_resource_id + video_resource_id (kf2v also needs last_frame_resource_id). Backends: dashscope (wan* models) or modal (hunyuan/ltx/wan-selfhosted/HF repos).

Publishing

Publish finished media to X

publish_content is the bounded X account tool for documented reads and durable writes. It requires authenticated credits; unattended API keys and verified OAuth clients need explicit read, publish, or manage grants. Writes need idempotency keys and return receipts. Read the X account operations guide for setup, limits, pricing, and recovery.

Compose

compose_video contract

Follow the assisted original-story guide to develop a premise, review a timed storyboard and assemble accepted footage with the existing MCP tools.

Compose is an authenticated-credit-only asynchronous parent workflow; it is absent from x402 quotes and discovery. The default quality_profile is stable. Both stable and explicit experimental/high-cost frontier use Grok for visual generation; narration is MiniMax and generated music is Lyria.

Plans are recursively strict. Use a sparse brief or a detailed timeline; unknown nested keys, top-level duration_sec, nested advanced_options, non-Grok providers, media URLs, and public autonomy/task/hold-resume controls are unsupported. Media inputs must be authorized Soundside resource UUIDs.

The provider/count policy is fixed: stable creates two MiniMax narration and two Lyria music candidates; frontier creates three of each. Each missing explicit-cast reference creates exactly one Grok image candidate. Compose runs one generate/evaluate/select round and one narration-transcription attempt. Cast uses separate narration_voice_id and native_video_voice_id namespaces.

Sparse stable plan
{"name":"compose_video","arguments":{"plan":{"brief":"A concise natural-history film about bee pollination"},"quality_profile":"stable"}}
Detailed Grok plan
{"name":"compose_video","arguments":{"plan":{"brief":"A warm pollination explainer","output":{"duration_sec":11},"segments":[{"type":"video","provider":"grok","prompt":"Macro shot of a bee landing on a sunflower","duration_sec":6},{"type":"video","provider":"grok","prompt":"Pollen clings to the bee as it visits another flower","duration_sec":6}]}}}

Crossfades overlap the clips they join, so a detailed timeline runs shorter than the sum of its segments: this one assembles to 11.6 s. The finished film must run at least 10 s and at least 60% of output.duration_sec (30 when omitted), and at most 1.5 times it; narration raises both limits. When a plan sets every segment's duration and has no narration, a timeline outside that range is refused before any charge, with the fix in the error.

The call returns a pending parent resource_id. Check completion or failure with lib_list (the parent's status), including after reconnecting; a notifications/resources/updated push may also arrive, but don't rely on it. Duration is a planning estimate, not an SLA. Successful roots add a five-credit orchestration fee and separately itemize child calls. Judges are evidence: no judge verdict fails or regenerates a run, and only objective checks fail delivery. The certificate reads certified, needs_review (with a needs_review list of judge findings), draft for qa=false, or failed.

Surgical revisions use a proper subset in reuse_segments. Complete checkpoint reassembly uses exactly one of parent_resource_id or reuse_from, reassemble_only=true, and plan={}. Reuse never bypasses ownership checks.

Pricing

Live pricing

One credit is $0.01. Published metered rates are based on provider cost with an approximately 10% platform margin unless a tool-specific flat fee is listed. Compose adds a five-credit success-only orchestration fee and separately itemizes child calls.

Machine-readable pricing is always available at: GET /api/x402/status

The x402 status endpoint covers x402-eligible tools only; Compose and X publishing are intentionally absent. Always check the endpoint rather than hardcoding rates.

Developer docs

Detailed tool reference

For full parameter documentation, examples, and tips, see the Tool Reference on GitHub.

Operational notes

Legacy references

  • • Creative Freedom is authenticated-credit only and intentionally absent from x402.
  • • MiniMax music is unavailable and absent from the public provider schema.