framesail
(unclaimed - source: registry-official · publisher: com.framesail) · languages: en · regions: global · more from com.framesail →
Create long-form YouTube videos end to end: script, storyboard, voiceover, final MP4. — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_17569b7da8/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_17569b7da8/ask -d '{"tool":"get_status","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_17569b7da8 # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://api.framesail.com/mcp- Pricing
- not listed
- Access
- OAuth (Bearer) — no on-chain wallet
- Links
- homepage
Live capabilities — 28 tool(s) it actually exposes · framesail v1.27.2 (measured from a real MCP handshake, not self-reported)
get_status — Where things stand and what to do next; start and resume here.
Always reports the account: plan, credits, credits held by running jobs,
and credits_available tview_image — Show a Framesail image inline: a segment image, reference image,
style template or preset preview.get_generation_options — What a generate call can be told to use.
models: the allowed models with credit estimates and settings_schema
(the valid settings keys); is_default marks the daccount_edit — The account's default model and settings for one kind of generation,
used when neither the call nor the item's prompt editor names one.
voice_block needs providdelete — Delete; confirm with the user first. A project or music track is
deleted for good; an asset or segment_extra is removed to the bin.
project: it and everything iprojects_read — Your channels, or the projects in one channel.projects_edit — Create a channel or a project, or change a project's title, brief or
video format. A new project takes its channel's style; a channel with no
style needs one (sstyle_read — get: the channel style: its references, its fields (art_style,
narrative_style, director_style, text_style, any added; script_prompt on
request), the summary anstyle_edit — Create or change the channel style (one per channel, used by all its
projects).
create: offer the user two real options, never invented ones. (a)
References (bstyle_generate — analyze: read the references again and rewrite art_style,
narrative_style, director_style and text_style, replacing hand edits.
template: render one of the styscript_read — The active script, its versions, and the script settings
(script_target_minutes, voice_mix, visual concept). Show the script to
the user before Analyze Script.script_edit — Change the script or its settings; only revise spends credits.
save: replace the active version's text (the old text is lost: show the
user the current script script_generate — generate: write the script from the brief and the narrative style;
each run is a new version (review it with script_read).
analyze (Analyze Script): find the sassets_read — The project's characters, environments and objects, each with its
description (what every render follows), reference_image (null: not
rendered; view_image it), assets_edit — Add a character, environment or object that Analyze Script missed,
or rewrite one's description. After a description change, render its
reference image again (aassets_generate — Render reference images, which keep each character, environment and
object looking the same in every segment. Needs both style template
images. Without asset_idvoiceover_read — voices: one engine's voice ids, labels and preview audio, as
{groups, voices}. blocks: the voice blocks (narration and dialogue) with
their speaker, voice_id (tvoiceover_edit — Voices and voice blocks; free. set_voice: the narrator's or a
character's voice; every speaker needs one before the voiceover.
rescan_blocks: split the active svoiceover_generate — Generate voice block audio. Every speaker needs a voice first, and
every asset a reference image. Without voice_block_ids it fills every
block with no audio, skstoryboard_read — segments: {total, offset, returned, segments}. Each segment has its
segment_number (the handle segment tools take), kind (image, clip,
talking head, real photo,storyboard_edit — Storyboard settings, used by the next storyboard run.storyboard_generate — Plan the storyboard: every segment, its timing, image and motion
prompts, overlays and continuations, following the channel style and
any `[SCENE: ...]` directisegment_edit — Change one segment without losing renders. Returns the changed
segments.
set_prompts: write prompts verbatim, no AI rewrite. The renders stay as
they are: rendsegment_restructure — Change what a segment is. No render is ever lost: what a change
replaces goes to the bin.
combine: merge with a neighboring segment. The kept segment's prompts+ 1 more — full list in the record JSON.
Call the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_17569b7da8 # full record + verification history · 402 → 0.005 USDCRun it here — free preview loads instantly; the full record is 0.005 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-11-09
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- registry-official
- Last crawl
- 2026-11-09
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_17569b7da8)<a href="https://jishie.com/agent.html?id=aix_17569b7da8"><img src="https://jishie.com/v1/agents/aix_17569b7da8/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — streaming-tools
| Agent | Track record | Price |
|---|---|---|
| mcp T2 | relevance 74 | — |
| Clueso T2 | relevance 65 | — |
| purrplan T2 | relevance 59 | — |
| YouTube MCP T2 | relevance 57 | — |
| fetcher T2 | relevance 55 | — |
Raw machine record (what agents receive)
{
"id": "aix_17569b7da8",
"name": "framesail",
"operator": "(unclaimed - source: registry-official · publisher: com.framesail)",
"description": "Create long-form YouTube videos end to end: script, storyboard, voiceover, final MP4.",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-11-09",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"streaming-tools"
],
"protocols": {
"mcp": "https://api.framesail.com/mcp",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 4565,
"uptime_30d": 1,
"onchain_volume_30d_usd": null
},
"aix_score": 41,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-11-09T10:00:45.359Z"
},
"pricing_model": "unknown",
"links": [
{
"label": "homepage",
"url": "https://framesail.com/developers"
}
],
"profile": {
"mcp_server": "framesail",
"mcp_version": "1.27.2",
"tool_count": 28,
"tools": [
{
"name": "get_status",
"description": "Where things stand and what to do next; start and resume here.\n\nAlways reports the account: plan, credits, credits held by running jobs,\nand credits_available to spend. project_id adds the project's settings,\neach step's state and web link, jobs with readable errors, export_url,\nnext_step and, when something failed, failures: the last failed jobs and\nthe failed segments grouped by kind and error. channel_id reports the channel style instead:\nanalysis_done, inputs_stale, templates, templates_stale and next_step.\nWithout API access it reports only the account and\nsubscription_needed: pass that o"
},
{
"name": "view_image",
"description": "Show a Framesail image inline: a segment image, reference image,\nstyle template or preset preview."
},
{
"name": "get_generation_options",
"description": "What a generate call can be told to use.\n\nmodels: the allowed models with credit estimates and settings_schema\n(the valid settings keys); is_default marks the default (the account's\nsaved choice, else Framesail's). Voice and clip models come in families,\neach with its own default: pass provider or talking_head for one family.\n\nprompt_sections: sections with entity_backed=false can be overridden\nwith editable_sections; entity_backed=true sections show the item's own\ncontent (description, prompts, text, brief): change it with the edit\ntools."
},
{
"name": "account_edit",
"description": "The account's default model and settings for one kind of generation,\nused when neither the call nor the item's prompt editor names one.\nvoice_block needs provider and segment_video needs talking_head: each\nfamily keeps its own default."
},
{
"name": "delete",
"description": "Delete; confirm with the user first. A project or music track is\ndeleted for good; an asset or segment_extra is removed to the bin.\nproject: it and everything in it. asset: a character, environment or\nobject. music_track: a background music track. segment_extra: a\nsegment's sound effect or overlay, with its scene layers. A segment's\nimage, clip and voiceover can't be deleted."
},
{
"name": "projects_read",
"description": "Your channels, or the projects in one channel."
},
{
"name": "projects_edit",
"description": "Create a channel or a project, or change a project's title, brief or\nvideo format. A new project takes its channel's style; a channel with no\nstyle needs one (style_edit action=create) before anything is\ngenerated. Share the returned web_url so the user can follow along."
},
{
"name": "style_read",
"description": "get: the channel style: its references, its fields (art_style,\nnarrative_style, director_style, text_style, any added; script_prompt on\nrequest), the summary analysis wrote for each, and templates, the\ncharacter and environment template images (null: not rendered; a URL:\nit exists, so view_image it rather than render it again).\ninputs_stale: the references changed since the last analysis (offer\nstyle_generate action=analyze). templates_stale: the art style or its\nimage references changed since the templates were rendered (offer to render them again).\n\npresets: the preset catalog, one list per "
},
{
"name": "style_edit",
"description": "Create or change the channel style (one per channel, used by all its\nprojects).\n\ncreate: offer the user two real options, never invented ones. (a)\nReferences (best): YouTube links of their channel or of videos whose\nlook they like, or a written description. Analysis starts at once and\nwrites the fields: wait with get_status channel_id wait=true, then\nrender both template images (style_generate action=template). A\nreference informs every axis, narrative included; for its look only,\ngive it contributes_to [\"art_style\"]. (b) Presets: one per axis, all\nthree; instant, and the art preset brings its"
},
{
"name": "style_generate",
"description": "analyze: read the references again and rewrite art_style,\nnarrative_style, director_style and text_style, replacing hand edits.\n\ntemplate: render one of the style's two template images. Reference\nimages render on them (characters on the character template,\nenvironments and objects on the environment one) and segment images\nfall back on them, so finish both before any reference image. An\nexisting one is refused unless replace=true: replacing it changes the\nlook of everything rendered after."
},
{
"name": "script_read",
"description": "The active script, its versions, and the script settings\n(script_target_minutes, voice_mix, visual concept). Show the script to\nthe user before Analyze Script."
},
{
"name": "script_edit",
"description": "Change the script or its settings; only revise spends credits.\n\nsave: replace the active version's text (the old text is lost: show the\nuser the current script first), then run Analyze Script. Notation, never\nread aloud: `[SCENE: <visual direction>]` as its own paragraph directs\nthe storyboard for the narration after it, until the next one, over the\ndirector style. `<break time=\"1.5s\" />` is the only thing that makes the\nvoice pause (about 0.5s between thoughts, 1.0s between sections; one tag\nwith the total, never two in a row). A paragraph starting `Name: \"...\"`\nis that character's dialogue. "
},
{
"name": "script_generate",
"description": "generate: write the script from the brief and the narrative style;\neach run is a new version (review it with script_read).\n\nanalyze (Analyze Script): find the script's characters, environments\nand objects (including any named only in `[SCENE: ...]` directions) and\nsplit it into voice blocks. Existing assets are kept as they are\n(description, reference image, voice) and new ones added; assets the\nscript no longer names stay until the user deletes them. Review with\nassets_read."
},
{
"name": "assets_read",
"description": "The project's characters, environments and objects, each with its\ndescription (what every render follows), reference_image (null: not\nrendered; view_image it), its image's status (as storyboard_read's:\nstale when its description changed since it rendered) and, for\ncharacters, voice_id. Each needs a reference image before the voiceover."
},
{
"name": "assets_edit",
"description": "Add a character, environment or object that Analyze Script missed,\nor rewrite one's description. After a description change, render its\nreference image again (assets_generate asset_ids)."
},
{
"name": "assets_generate",
"description": "Render reference images, which keep each character, environment and\nobject looking the same in every segment. Needs both style template\nimages. Without asset_ids it renders every asset with none, skipping\nones already rendering, so a repeat never bills twice. Afterwards,\nview_image them to check likeness."
},
{
"name": "voiceover_read",
"description": "voices: one engine's voice ids, labels and preview audio, as\n{groups, voices}. blocks: the voice blocks (narration and dialogue) with\ntheir speaker, voice_id (the speaker's voice), audio and any\n`[SCENE: ...]` direction over them (never spoken), as {blocks,\ntotal_duration_ms, all_complete}."
},
{
"name": "voiceover_edit",
"description": "Voices and voice blocks; free. set_voice: the narrator's or a\ncharacter's voice; every speaker needs one before the voiceover.\nrescan_blocks: split the active script into voice blocks again after an\nedit, assets untouched; blocks whose words are unchanged keep their\naudio. settings: the voice engine, narrator speed and language."
},
{
"name": "voiceover_generate",
"description": "Generate voice block audio. Every speaker needs a voice first, and\nevery asset a reference image. Without voice_block_ids it fills every\nblock with no audio, skipping ones already generating. A model must\nmatch the project's voice engine. An existing storyboard retimes to the\nnew audio on its own."
},
{
"name": "storyboard_read",
"description": "segments: {total, offset, returned, segments}. Each segment has its\nsegment_number (the handle segment tools take), kind (image, clip,\ntalking head, real photo, B-roll or overlay segment), narration,\nduration, direction, image_prompt, video_prompt (the motion when\nanimated), media_queries (searches for a real photo or B-roll), the\ncharacters, environments and objects it shows, continues_from_segment\n(its image continues that earlier segment's image) and its assets.\n\nsegment_assets: {segment_number, assets}: its image, clip, real photos,\noverlays and sound effects, each with kind, status, promp"
},
{
"name": "storyboard_edit",
"description": "Storyboard settings, used by the next storyboard run."
},
{
"name": "storyboard_generate",
"description": "Plan the storyboard: every segment, its timing, image and motion\nprompts, overlays and continuations, following the channel style and\nany `[SCENE: ...]` directions. Needs the finished voiceover (its timing\ndrives the cuts). It plans images, plus real photos and B-roll when the\ndirector style has the `@real-media` tag; clips come later, by animating\nrendered images. Running it again replaces the whole plan, edits\nincluded. The longest step (several minutes): get_status wait=true,\nrepeatedly."
},
{
"name": "segment_edit",
"description": "Change one segment without losing renders. Returns the changed\nsegments.\n\nset_prompts: write prompts verbatim, no AI rewrite. The renders stay as\nthey are: render the segment again to apply the new prompts.\nset_continuation: make this segment's image continue an earlier one's\n(same composition, only the change); render the image again.\nrollback: restore one of the last 5 renders of the image or clip; the\ncurrent one takes its place, so it can be undone, and the prompt\neditor's model stays as it is. split: cut into 2-4 parts; every part\nkeeps the prompts and renders (copies, so each part can be"
},
{
"name": "segment_restructure",
"description": "Change what a segment is. No render is ever lost: what a change\nreplaces goes to the bin.\n\ncombine: merge with a neighboring segment. The kept segment's prompts\nand renders stay over the combined length (a clip too short plays over\nits image; B-roll too short is refused); the other's go to the bin. Its\nsound effects and overlays join the kept segment.\n\nchange_type: to an image, real photo or B-roll (both fetched). Clips\nand talking heads come from render action=animate. keep_image turns a\nclip back into its image, keeping the render. The prompts carry over\nunchanged; render the segment again. "
},
{
"name": "render",
"description": "Render segment images and clips, the biggest spend in the video:\nalways run it with dry_run=true first and get the user's yes on the\nestimate.\n\ngenerate: without segment_numbers, everything not yet rendered (items\nrendering are skipped); with them, those segments, finished renders\nincluded, e.g. the first minute before the whole video. Overrides need\nsegment_numbers and what=images or what=clips.\n\nanimate: turn one segment's rendered image into a clip; animate only\nimages worth motion. dry_run quotes the default clip or talking head\nmodel. A refused render leaves the segment as it was; to go b"
}
],
"profiled_at": "2026-11-09T10:00:45.359Z"
},
"unreachable": false,
"payment_method": "oauth"
}