Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization not required, issuer https://morphareels.ai
Authorization not required, issuer https://morphareels.ai
Authorization not required, issuer https://morphareels.ai
Changed the definition of "render_status" and "render_video"
⟨32 unchanged words⟩ { downloadUrl, editorUrl, expiresAt, videoSeconds, scale,chargedCents} } once the MP4 is ready. `downloadUrl` ⟨21 unchanged words⟩ is deleted at `expiresAt` (7 days).`chargedCents` is what the render cost the subscription.A render that failed answers ok:false with a plain reason andisusesnevernocharged.allowance. Only the account that started a render can read it.
⟨32 unchanged words⟩ render_status with that renderId after about 30 seconds.THIS COSTS THE ACCOUNT MONEY andIt
Authorization not required, issuer https://morphareels.ai
Authorization not required, issuer https://morphareels.ai
Authorization not required, issuer https://morphareels.ai
Removed "create_anonymous_account"; changed the definition of "add_audio_overlay", "add_caption_track", "add_color_keyframe" and 95 more (99 tools before, 98 now)
⟨6 unchanged words⟩ at a frame-aligned start. The asset must alreadyexistbeatuploadedusers/<userId>/assets/<projectId>/<filename>.(upload_audio, create_upload_link, or the editor); pass the upload's returned `filename`, and its `name` as the track's label. 30 fps; convert seconds with frames = round ⟨16 unchanged words⟩
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"endFrame":{"description":"Optional end frame; omit
Authorization not required, issuer https://morphareels.ai
Changed the definition of "create_anonymous_account", "render_video" and "set_embed_origins"
⟨138 unchanged words⟩ into their own Morpha account, and theypresschooseRenderShare,therethen Download (oneRenderclickMP4 on a phone), which is free,and adds nowatermark).watermark. An anonymous account nobody claims is deleted after ⟨15 unchanged words⟩
Changed the definition of "add_color_keyframe", "add_embed_origin", "add_keyframe" and 10 more
{"destructiveHint":falsetrue,"openWorldHint":false,"readOnlyHint":false,"title" ⟨3 unchanged words⟩
⟨31 unchanged words⟩ to a bare lowercased hostname (scheme/port/path stripped). Morpha sends that website no request; any page on it may then load the project. Reference: https://morphareels.ai/docs/tools#addembedoriginorigin
Added "create_upload_link"; changed the definition of "clip_processing_status", "set_duration", "set_matte_source" and 2 more (98 tools before, 99 now)
⟨101 unchanged words⟩ audio_demux, proxy, audio_split, transcript, text_regions }, audio_demux_reason? }], allProcessed } }, where each step is 'ready' | 'pending' | 'running' | 'unavailable' | 'error'. When audio_demux is 'unavailable', audio_demux_reason says why: 'no-audio' or 'unsupported' means the video is silent or its audio is not AAC, so nothing will transcribe it; 'miss' or 'over-budget' means the video may well have sound but the server could not read its audio track (a long recording, or a container it could not parse), and the editor takes the sound from the preview copy. Use it to know whether transcribe_clip / detect_text_regions ⟨12 unchanged words⟩
Authorization not required, issuer https://morphareels.ai
Changed the definition of "add_audio_overlay", "add_caption_track", "add_color_keyframe" and 95 more
before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}Changed the definition of "render_video"
⟨138 unchanged words⟩ own size, which is faster and cheaper. The cost is reserved against the subscription's credits before the render starts, so a render is refused up front when the credit to pay for it is not there rather than discovered afterwards; you are then billed the real measured cost, never more than the amount reserved. Refused for a composition longer than 30 minutes,andwhenafterthe10remaining credit will not cover it, or while 3 rendersinareanalreadyhour.running for this account. The finished file stays downloadable for 7 days ⟨12 unchanged words⟩
Authorization not required, issuer https://morphareels.ai
Certificate recorded, valid to 2026-11-15
Authorization not required, issuer https://morphareels.ai
First tool surface recorded: 98 tools (server version 1.0.329)
Showing the latest 19 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨52 unchanged words⟩ at the canvas's own size for a faster,cheaperfilefile.that uses less allowance. Nothing else is accepted.","type":"number ⟨4 unchanged words⟩
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"clip_element_id":{"description":"Optional \"video.<id>\" ⟨265 unchanged words⟩ number"}},"required":["lines","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"easing":{"description":"Interpolation to the next ⟨134 unchanged words⟩ ","property","frame","value","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"arrow_head":{"enum":["none","end" ⟨94 unchanged words⟩ ","y1","x2","y2","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"origin":{"description":"Hostname or URL to ⟨36 unchanged words⟩ string"}},"required":["origin","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"The item's element id ⟨32 unchanged words⟩ ,"required":["projectId","sourceProjectId","elementId","anonymousToken"],"type":"object"}
Add an image layer. The asset must alreadyexist at users/<userId>/assets/<projectId>/<filename>be(uploadedvia(the editor's drag-drop, upload_image, create_upload_link, or POST /api/upload-asset/<projectId> with the raw bytes and anX-FilenameX-Upload-Name header). Every upload returns { filename, name }: pass `filename` (the stored file's id) here, and `name` as the layer's label. To duplicate an existing layer, reuse its ⟨8 unchanged words⟩
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"block":{"description":"OPTIONAL timeline window — ⟨94 unchanged words⟩ :"object"},"filename":{"description":"AssetThe stored filenameinantheuploadproject'sreturnedassets(anbucketid such as 3f2a9c1e-….png,e.g.orstar.png.an older project's own name).","type":"string"},"height":{ ⟨7 unchanged words⟩ 0).","type":"number"},"name":{"description":"Optional label people see in the Inspector and Timeline: pass the upload's returned `name`. Without it the layer is labelled by an older project's own filename, or by kind; never by a stored id.","type":"string"},"projectId":{"description":"Opaque project id ( ⟨50 unchanged words⟩ ","y","width","height","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"easing":{"description":"Interpolation to the next ⟨87 unchanged words⟩ ","property","frame","value","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"Layer id (video.<id>, ⟨124 unchanged words⟩ :["elementId","property","keyframes","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"projectId":{"description":"Opaque project id ( ⟨54 unchanged words⟩ string"}},"required":["source_morpha_id","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"duplicate_index":{"description":"Optional. 0-based index of ⟨41 unchanged words⟩ type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"block":{"description":"OPTIONAL timeline window — ⟨175 unchanged words⟩ number"}},"required":["kind","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"video.<id>.","type": ⟨45 unchanged words⟩ :["elementId","frame","rate","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"block":{"description":"OPTIONAL timeline window — ⟨715 unchanged words⟩ type":"number"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"The element id to ⟨29 unchanged words⟩ string"}},"required":["elementId","projectId","anonymousToken"],"type":"object"}
Add a video layer. The clip must alreadyexist atbeusers/<userId>/clips/<projectId>/<clip>uploaded (uploadedtheviamorphareels-sdk's/api/upload-clipclient.addVideo, or the editor). An upload returns { filename, name }: pass `filename` (the stored clip's id) as `clip`, and `name` as the layer's label. To duplicate an existing layer, reuse its ⟨9 unchanged words⟩
{"properties":{"anonymousTokenclip":{"description":"Thetoken create_anonymous_account returned. ThisstoredconnectioncliphasfilenamenoanMorphauploadkey,returnedso(aneveryidcallsuchcarriesasit.","type":"string"}3f2a9c1e-….mp4,"clip":{"description":"Clipfilenameorinantheolder project'sclips bucket, e.g.owndemo.mp4.name).","type":"string"},"height":{ ⟨10 unchanged words⟩ number"},"name":{"description":"Optionalfriendlylabelshownpeople see in the Inspector+andTimeline.Timeline: pass the upload's returned `name`.","type":"string"},"projectId":{ ⟨54 unchanged words⟩ ","y","width","height","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"type":"string"},"preset" ⟨41 unchanged words⟩ ,"required":["elementId","preset","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementIds":{"description":"Layers to animate, ⟨75 unchanged words⟩ ,"required":["elementIds","preset","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"clip":{"description":"Optional clip filename ( ⟨21 unchanged words⟩ type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"fromProjectId":{"description":"Optional id of an ⟨97 unchanged words⟩ ,"type":["string","null"]}},"required":["anonymousToken"],"type":"object"}
⟨21 unchanged words⟩ (.woff2/.woff/.ttf/.otf). Returns { uploadUrl, filename, name, command, expiresAt, maxBytes }. Run `command` from ⟨11 unchanged words⟩ to uploadUrl), then pass the returned `filename` (the file's id, never shown to a person) to add_image_layer, add_audio_overlay or set_custom_font. The link takes one file, stored under thenameid it was mintedforwith, for 15 minutes; a second upload in that windowoverwritesreplaces the first. The upload is checked as an ⟨50 unchanged words⟩ machine: use the morphareels-sdk's client.addVideo. Reference: https://morphareels.ai/docs/tools#createuploadlinkfilename//morphareels.ai/docs/tools#createuploadlinkname
{"properties":{"anonymousTokenname":{"description":"Thetoken create_anonymous_account returned. This connection has no Morphafile'skey,ownsonameeveryorcallpathcarriesonit.","type":"string"}disk,"filename":{"description":"Thefile's own namewith its extension (e.g. hero.jpg).Stored`command`lowercaseduploadswiththatunsafepath,characterspeoplereplaced;seetheitsresult'slast`filename`segment,isand the file is storedname.under a new id.","type":"string"},"projectId":{ ⟨7 unchanged words⟩ "string"}},"required":["projectId","filename","anonymousTokenname"],"type":"object"}
⟨71 unchanged words⟩ string"},"filename":{"description":"Thestoredfile'snameid: what add_image_layer, add_audio_overlay and set_custom_font take. Never shown to a person.","type":"string"},"maxBytes":{ ⟨7 unchanged words⟩ in bytes.","type":"number"},"renamedFromname":{"description":"PresentThewhenfile'ssanitisingdisplaychangedname, what people see: thenamelastyousegmentpassed:ofwhatthe name you passed.","type":"string"},"uploadUrl
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"name":{"description":"Human-readable workspace name, ⟨6 unchanged words⟩ type":"string"}},"required":["name","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"endFrame":{"description":"End frame of the ⟨51 unchanged words⟩ ,"required":["startFrame","endFrame","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"index":{"description":"0-based index of the ⟨24 unchanged words⟩ string"}},"required":["index","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"projectId":{"description":"Project to delete.","type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"projectId":{"description":"Project whose version to ⟨14 unchanged words⟩ string"}},"required":["projectId","versionId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"projectId":{"description":"Opaque project id ( ⟨13 unchanged words⟩ type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"clip":{"description":"Video clip filename ( ⟨36 unchanged words⟩ type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"count":{"description":"Number of copies to ⟨71 unchanged words⟩ ,"required":["elementId","count","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"name":{"description":"Optional name for the ⟨81 unchanged words⟩ ","null"]}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"type":"string"},"fromFrame" ⟨38 unchanged words⟩ ","toFrame","fromOpacity","toOpacity","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"projectId":{"description":"Opaque project id ( ⟨13 unchanged words⟩ type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"video.<id> to freeze.", ⟨80 unchanged words⟩ :["elementId","frame","image","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementIds":{"description":"Element ids of the ⟨40 unchanged words⟩ string"}},"required":["elementIds","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementIds":{"description":"Element ids to inspect ⟨35 unchanged words⟩ string"}},"required":["elementIds","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"}},"required":["anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"limit":{"description":"Max entries to return ⟨67 unchanged words⟩ type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"workspaceId":{"description":"Optional workspace id ( ⟨21 unchanged words⟩ ,"type":"string"}},"required":["anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"projectId":{"description":"Project whose versions to list.","type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"}},"required":["anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementIds":{"description":"Two or more caption ⟨29 unchanged words⟩ string"}},"required":["elementIds","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"bandId":{"description":"The embedded band's group ⟨43 unchanged words⟩ ,"required":["bandId","start","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"clear_animation":{"description":"Only meaningful when setting ⟨225 unchanged words⟩ number"}},"required":["elementId","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"projectId":{"description":"Id of the project ⟨26 unchanged words⟩ "]}},"required":["projectId","workspaceId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"projectId":{"description":"Id of the project to open.","type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"newId":{"description":"Optional new id — ⟨23 unchanged words⟩ type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"id":{"description":"Overlay id (e.g. ⟨23 unchanged words⟩ string"}},"required":["id","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"Element id. The canvas ⟨43 unchanged words⟩ :["elementId","property","frame","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"origin":{"description":"Hostname or URL to ⟨30 unchanged words⟩ string"}},"required":["origin","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"The element id to ⟨25 unchanged words⟩ string"}},"required":["elementId","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"type":"string"},"frame" ⟨35 unchanged words⟩ :["elementId","property","frame","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"video.<id>, image.<id>, text.<id> ⟨23 unchanged words⟩ string"}},"required":["elementId","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"video.<id>.","type": ⟨28 unchanged words⟩ ,"required":["elementId","frame","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"groupId":{"type":"string"},"name" ⟨22 unchanged words⟩ ,"required":["groupId","name","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"video.<id>, image.<id>, shapes.<id> ⟨42 unchanged words⟩ ,"required":["elementId","name","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"name":{"description":"New human-readable label. Empty ⟨18 unchanged words⟩ string"}},"required":["projectId","name","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"name":{"description":"New human-readable label. Must ⟨27 unchanged words⟩ ,"required":["projectId","versionId","name","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"name":{"description":"New human-readable name.", ⟨14 unchanged words⟩ string"}},"required":["workspaceId","name","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"renderId":{"description":"The renderId render_video returned.","type":"string"}},"required":["renderId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"page":{"description":"Optional 0-based page index ⟨59 unchanged words⟩ type":"number"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"type":"string"},"newIndex" ⟨31 unchanged words⟩ ,"required":["elementId","newIndex","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"from_index":{"description":"0-based index of the ⟨35 unchanged words⟩ ,"required":["from_index","to_index","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"page_index":{"description":"Optional. 0-based index into ⟨49 unchanged words⟩ string"}},"required":["projectId","versionId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"bandHeight":{"description":"Vertical granularity in source ⟨53 unchanged words⟩ string"}},"required":["projectId","clip","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"name":{"description":"Short label describing what ⟨34 unchanged words⟩ type":"string"}},"required":["projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"index":{"description":"0-based index of the ⟨25 unchanged words⟩ string"}},"required":["index","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"height":{"description":"Canvas height in px ⟨36 unchanged words⟩ ,"required":["width","height","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"video.<id>.","type": ⟨42 unchanged words⟩ ,"required":["elementId","speed","projectId","anonymousToken"],"type":"object"}
⟨60 unchanged words⟩ already uploaded to the project's asset bucket (create_upload_link, or POST /api/upload-asset/<projectId>,with raw bytes +X-Filenamean X-Upload-Name header; .woff2/.woff/.ttf/.otf).: pass the filename the upload returned. Like add_image_layer, this does NOT verify an ⟨71 unchanged words⟩
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"family":{"description":"Family name text layers ⟨79 unchanged words⟩ ,"required":["family","src","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"projectId":{"description":"Opaque project id ( ⟨34 unchanged words⟩ number"}},"required":["seconds","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"origins":{"description":"Full desired allowlist. Each ⟨45 unchanged words⟩ string"}},"required":["origins","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"box_height":{"description":"Backdrop height in px ⟨40 unchanged words⟩ :["elementId","box_width","box_height","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"Full element id: ⟨60 unchanged words⟩ ,"required":["elementId","parentGroupId","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"duration":{"description":"How many frames the ⟨72 unchanged words⟩ :["elementId","start","duration","projectId","anonymousToken"],"type":"object"}
⟨24 unchanged words⟩ The asset must already exist at users/<userId>/assets/<projectId>/<filename> (uploaded viathe editor's drag-drop, upload_image, create_upload_link, or POST /api/upload-asset/<projectId> with the raw bytes and anX-FilenameX-Upload-Name header).; pass the `filename` the upload returned, and its `name` as the label. Use this to swap a layer's image WITHOUT ⟨16 unchanged words⟩
{"properties":{"anonymousTokenelementId":{"description":"The token create_anonymous_account returned. This connection has noImageMorphalayerkeyid,so every call carries it.image.<id>.","type":"string"},"elementIdfilename":{"description":"ImageThelayeruploaded file's id,:image.<id>.the `filename` its upload returned.","type":"string"},"filenamename":{"description":"AssetOptionalfilenamelabelinpeople see for theproject'slayer:assetspassbucket,thee.g.upload'sdrake.png.returned `name`. Omit to keep the current label; null or an empty string clears it.","type":["string","null"]},"projectId":{"description":"Opaque project ⟨16 unchanged words⟩ ,"required":["elementId","filename","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"keyframes":{"description":"One or more keyframe ⟨100 unchanged words⟩ string"}},"required":["keyframes","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"duration":{"description":"How many frames the ⟨65 unchanged words⟩ :["elementId","start","duration","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"clear_animation":{"description":"Only meaningful on a ⟨155 unchanged words⟩ ,"required":["elementId","fill","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"curve":{"description":"Curve the text onto ⟨597 unchanged words⟩ string"}},"required":["elementId","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"curve":{"description":"Optional easing override ( ⟨185 unchanged words⟩ :["elementId","edge","kind","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"type":"string"},"projectId" ⟨22 unchanged words⟩ ,"required":["elementId","visible","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"Target layer — text.<id> ⟨67 unchanged words⟩ ,"required":["elementId","values","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"Host being masked: ⟨85 unchanged words⟩ ,"required":["elementId","matte_source_id","projectId","anonymousToken"],"type":"object"}
⟨39 unchanged words⟩ ,"br"],"type":"string"},"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"image.<id>, video.<id>, shapes.<id> ⟨24 unchanged words⟩ ,"required":["elementId","anchor","projectId","anonymousToken"],"type":"object"}
⟨134 unchanged words⟩ with fit=cover|contain.","type":"number"},"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"blend_mode":{"description":"Photoshop-style layer blend mode ⟨304 unchanged words⟩ number"}},"required":["elementId","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"clear_animation":{"description":"Only meaningful when `fill` ⟨215 unchanged words⟩ number"}},"required":["elementId","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"Layer id (video/image/shape/group) ⟨44 unchanged words⟩ :["elementId","property","mode","projectId","anonymousToken"],"type":"object"}
⟨23 unchanged words⟩ the source mp4 changes. The clip must alreadyexist at users/<userId>/clips/<projectId>/<clip>be(uploadedvia(the editor's'+Addvideo' buttonvideo, or/api/upload-clipthe morphareels-sdk's client.addVideo).; pass the `filename` the upload returned, and its `name` as the label. Use this to swap a video layer's source WITHOUT losing its keyframes.
{"properties":{"anonymousTokenclip":{"description":"Thetoken create_anonymous_account returned. This connection has nouploadedMorphaclip'skey,id:sotheevery`filename`callitscarriesuploadit.returned.","type":"string"},"clipelementId":{"description":"Clip filename in the project'sVideoclipslayerbucketid,e.g. mickey-tiktok.mp4.video.<id>.","type":"string"},"elementIdname":{"description":"VideoOptional label people see for the layer:id,passvideo.<id>.the upload's returned `name`. Omit to keep the current label; null or an empty string clears it.","type":["string","null"]},"projectId":{"description":"Opaque project ⟨16 unchanged words⟩ ,"required":["elementId","clip","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"Video layer id, ⟨36 unchanged words⟩ ,"required":["elementId","muted","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"video.<id> of the layer ⟨74 unchanged words⟩ number"}},"required":["elementId","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"elementId":{"description":"The group's id ( ⟨50 unchanged words⟩ ,"required":["elementId","start","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"delta":{"description":"Added to every keyframe's ⟨47 unchanged words⟩ :["elementId","property","delta","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"atFrame":{"description":"Composition frame to split ⟨51 unchanged words⟩ ,"required":["elementId","atFrame","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"clip":{"description":"Clip filename (video.<id>.clip) ⟨11 unchanged words⟩ string"}},"required":["projectId","clip","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"groupId":{"description":"Bare group id ( ⟨29 unchanged words⟩ string"}},"required":["groupId","projectId","anonymousToken"],"type":"object"}
{"properties":{"anonymousToken":{"description":"The token create_anonymous_account returned. This connection has no Morpha key, so every call carries it.","type":"string"},"denoiseStrength":{"description":"Clean-strength wet/dry mix 0..1 ⟨55 unchanged words⟩ {"type":"number"},"filename":{"description":"Replace the track's audio: the stored filename an upload returned.","type":"string"},"gain":{"description" ⟨5 unchanged words⟩ ,"id":{"type":"string"},"name":{"description":"The track's label people see (pass the upload's returned `name` alongside a replacement `filename`), or null to remove it.","type":["string","null"]},"projectId":{"description":"Opaque project id ( ⟨53 unchanged words⟩ number"}},"required":["id","projectId","anonymousToken"],"type":"object"}
⟨29 unchanged words⟩ MCP/HTTP (add_audio_overlay / update_audio_overlay only reference afilenamefile thatmustis alreadybeuploaded). The target is the URL you ⟨33 unchanged words⟩ .mp3/.m4a/.wav/.ogg/.aac, stores it in the project's asset bucket under a new id, and returns { filename, name, sizeBytes, contentType }. Then pass the returned `filename` (the file's id, never shown to a person) to add_audio_overlay (add a second track) or update_audio_overlay ⟨6 unchanged words⟩ file — find the id via describe_video's audio_overlays)., with `name` as the track's name. The url must be a direct, publicly-fetchable http ⟨22 unchanged words⟩ own disk, use create_upload_link instead. Reference: https://morphareels.ai/docs/tools#uploadaudiourl-filename//morphareels.ai/docs/tools#uploadaudiourl-name
{"properties":{"anonymousTokenname":{"description":"The token create_anonymous_account returned. This connection has noOptionalMorphadisplaykeyname,so every call carries it.","type":"string"},"filename":{"description":"Optionalwhatstoredpeoplefilenamesee (.mp3/.m4a/.wav/.ogg/.aace.g. Theme.mp3). Defaults to thebasenameURL'soffilethename.URLItpath;neversanitiseddecides
⟨53 unchanged words⟩ .png/.jpg/.jpeg/.gif/.webp/.svg, stores it in the project's asset bucket under a new id, and returns { filename, name, sizeBytes, contentType }—: pass the returned `filename`to add_image_layer.(theTherefile'sisid,noneverimageshownSEARCHtoonathisperson)surfaceto(itadd_image_layer,runsandon`name`theiscaller'swhatside:peoplethesee.editor'sThisprompttoolpanel,doesornotthesearchSDK'sforfindPublicImage)images:findpass a direct image file URL,withsuchyourasownonewebthesearchperson—hasWikimediagivenCommonsyou, andmost stock sites answer plain file links — mindrespect the licencethe page states, and pass theitsURLsourcehere.states. The url must be a direct, publicly-fetchable ⟨51 unchanged words⟩ own disk, use create_upload_link instead. Reference: https://morphareels.ai/docs/tools#uploadimageurl-filename//morphareels.ai/docs/tools#uploadimageurl-name
{"properties":{"anonymousTokenname":{"description":"The token create_anonymous_account returned. This connection has noOptionalMorphadisplaykeyname,so every call carries it.","type":"string"},"filename":{"description":"Optionalwhatstoredpeoplefilenamesee (.png/.jpg/.jpeg/.gif/.webp/.svge.g. Logo.png). Defaults to thebasenameURL'soffilethename.URLItpath;neversanitiseddecides
Create anonymous account — Create an anonymous Morpha account for an AI agent, and get its API key. Morpha built this so an agent can start with nothing: calling it is expected, and nobody has to set anything up first. It takes no email, password or payment details and costs nothing. The account holds 1 project and 250 MB and cannot use Morpha's own AI, so drive the tools with your own model, which is free and unmetered. Pass the returned `token` on every later call: over MCP as the `anonymousToken` argument, over HTTP as `Authorization: Bearer <token>`. Skip this if you already have a key: a call made with one is refu…
⟨85 unchanged words⟩ the editorUrl every project result carries and theypresschoose Share, then Download (Render MP4 on a phone) in the editor,(onefreeclick,and with nowatermark),watermark; or a script runs the morphareels-sdk npm client's ⟨148 unchanged words⟩
⟨84 unchanged words⟩ page on an allowed host can show it. The embed serves only saved bookmarks (save_version), never unsaved edits, and leaves out who the project is shared with. Reference: https://morphareels.ai/docs/tools#setembedoriginsorigins
{"destructiveHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Add embed origin"}
{"destructiveHint":falsetrue,"openWorldHint":false,"readOnlyHint":false,"title":"Add keyframe"}
{"destructiveHint":falsetrue,"openWorldHint":false,"readOnlyHint":false,"title":"Add keyframes"}
{"destructiveHint":falsetrue,"openWorldHint":false,"readOnlyHint":false,"title" ⟨3 unchanged words⟩
⟨98 unchanged words⟩ : [{ clip, processed, steps: {audio_demux,proxy, audio_split, transcript, text_regions },audio_demux_reason?}], allProcessed } }, where each step is 'ready' | 'pending' | 'running' | 'unavailable' |'error'.'cancelled'When|audio_demux'error'. 'cancelled' is'unavailable',aaudio_demux_reasontranscriptsaysthewhy:user'no-audio'stoppedorin'unsupported'themeanseditor:theitvideostaysisstoppedsilentacrossoropens,itsandaudioonlyisthenoteditor'sAAC,Re-runsostartsnothingitwillagain.transcribeaudio_splitit;stays'miss''pending'oruntil'over-budget'themeansuser splits thevideoclip'smayaudiowellintohaveitssoundownbuttrack in theservereditorcould(Inspectornot→readAudioits→audioSplittrackaudio)(aorlongtherecording,SDK'soraudio_splitastepcontainerruns; itcouldnevernotgatesparse)`processed`, andthe editor takesantheunsplitsoundclipfromplaystheitspreviewowncopy.sound. Use it to know whether transcribe_clip / detect_text_regions ⟨12 unchanged words⟩
⟨45 unchanged words⟩ costs nothing. The account holds 1 project and500250 MB and cannot use Morpha's own AI, ⟨34 unchanged words⟩ this if you already have a key:itawouldcallmakemadeawithsecond,oneemptyisaccount.refused. The account can become permanent. When you are ⟨60 unchanged words⟩
⟨26 unchanged words⟩ (the public embed endpoint 404s the project). Morpha sends that website no request; a page on it stops loading the project. Reference: https://morphareels.ai/docs/tools#removeembedoriginorigin
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Remove embed origin"}
⟨230 unchanged words⟩ the project stays and can be rendered again. The render downloads the project's fonts from their hosts, including a custom font's own URL (set_custom_font). Reference: https://morphareels.ai/docs/tools#rendervideopage-scale
{"destructiveHint":falsetrue,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Render video"}
{"destructiveHint":falsetrue,"openWorldHint":false,"readOnlyHint":false,"title":"Save version"}
{"destructiveHint":truefalse,"openWorldHint":false,"readOnlyHint":false,"title":"Select page"}
⟨123 unchanged words⟩ font (served same-origin) is the robust path. A URL is not fetched when this tool runs: Morpha's renderer and every browser that opens the project download it later. Reference: https://morphareels.ai/docs/tools#setcustomfontfamily-src-weight-style
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Set custom font"}
⟨58 unchanged words⟩ //example.com/x" → "example.com"); duplicates are dropped. Morpha sends the listed websites no request: the list decides which of them may load the project, so any page on an allowed host can show it. Reference: https://morphareels.ai/docs/tools#setembedoriginsorigins
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Set embed origins"}
⟨41 unchanged words⟩ :{"description":"Composition length in seconds (clamped1-secondtofloor,1..600no ceiling). 30 fps; durationInFrames = ceil(seconds*30). ⟨8 unchanged words⟩
⟨90 unchanged words⟩ source must be a shape (shapes.<id>).Make theThe source is CONSUMED: it stops painting as a layerhiddenof its own, so do NOT hide itactsorpurelysetasits opacity to 0 (an invisible stencil empties thestencil.mask and the host vanishes). It has no time window of its own: it follows the host's, and attaching drops its block and edge transitions (`source_window_dropped` in the result). Its position, scale, rotation and keyframes shape the mask. Pass null to clear.
⟨141 unchanged words⟩ Worker memory, so capped at 50 MB. For a file on the caller's own disk, use create_upload_link instead. Reference: https://morphareels.ai/docs/tools#uploadaudiourl-filename
⟨174 unchanged words⟩ Worker memory, so capped at 16 MB. For a file on the caller's own disk, use create_upload_link instead. Reference: https://morphareels.ai/docs/tools#uploadimageurl-filename
Create upload link — Put a file from the caller's own disk into a project: an image (.png/.jpg/.jpeg/.gif/.webp/.svg), an audio track (.mp3/.m4a/.wav/.ogg/.aac) or a font (.woff2/.woff/.ttf/.otf). Returns { uploadUrl, filename, command, expiresAt, maxBytes }. Run `command` from a shell (a curl line that PUTs the file's raw bytes to uploadUrl), then pass the returned `filename` to add_image_layer, add_audio_overlay or set_custom_font. The link takes one file, under the name it was minted for, for 15 minutes; a second upload in that window overwrites the first. The upload is checked as an editor drag-drop is: size …
before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The project that was created, blank or cloned.","properties":{"assetsCopied":{"description":"How many assets the clone copied.","type":"number"},"claimUrl":{"description":"Present only when the caller is an anonymous account: the link that hands its projects to a person.","type":"string"},"clipsCopied":{"description":"How many source clips the clone copied.","type":"number"},"editorUrl":{"description":"A link that opens this project in the editor.","type":"string"},"fromProjectId":{"description":"The project it was cloned from, or null for a blank one.","type":["string","null"]},"projectId":{"description":"The new project's opaque id.","type":"string"},"workspaceId":{"description":"The workspace it landed in, or null for Personal.","type":["string","null"]}},"required":["projectId","editorUrl"],"type":"object"},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The caller's projects.","properties":{"claimUrl":{"description":"Present only when the caller is an anonymous account: the link that hands its projects to a person.","type":"string"},"projects":{"description":"One entry per project, newest first.","items":{"description":"One project.","properties":{"editorUrl":{"description":"A link that opens this project in the editor.","type":"string"},"id":{"description":"Opaque project id: what every other tool's `projectId` takes.","type":"string"},"name":{"description":"The label a person sees (\"Untitled\" when unnamed). Refer to a project by this, never by its id.","type":"string"}},"required":["id","name","editorUrl"],"type":"object"},"type":"array"}},"required":["projects"],"type":"object"},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The project, as a person would refer to it.","properties":{"claimUrl":{"description":"Present only when the caller is an anonymous account: the link that hands its projects to a person.","type":"string"},"editorUrl":{"description":"A link that opens this project in the editor.","type":"string"},"name":{"description":"The project's name.","type":"string"}},"required":["name","editorUrl"],"type":"object"},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}before
—after
{"description":"The result envelope every Morpha tool returns.","properties":{"data":{"description":"The payload, shaped by the tool.","type":["object","array","string","number","boolean","null"]},"editorUrl":{"description":"Opens this project in the editor.","type":"string"},"error":{"description":"Why it failed.","type":"string"},"note":{"description":"What to do next when not ready.","type":"string"},"ok":{"description":"Whether the call succeeded.","type":"boolean"},"status":{"description":"For cache-backed readers: whether the answer was ready.","enum":["ready","not-ready"],"type":"string"}},"required":["ok"],"type":"object"}