> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trycontinuum.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Library, media, and video

> MCP tools for the Library, media search and upload, web-page captures, stock photos, and Video Studio edits: inputs, examples, and errors.

Generated from the server's own tool registry, as released on 2026-11-05. Every section lists what the tool needs, whether it waits for a yes, how it completes, each action's inputs, valid example calls, and the errors it can return. Before you call a tool, fetch its live schema with `help_describe`; if the server and this page disagree, the server wins.

| Tool | What it does | Changes things |
| - | - | - |
| [`library_manage`](#library_manage) | Browses the Library, shows where a creative has run, adds comments, sets review status, and uploads media. | Yes |
| [`media_search`](#media_search) | Finds media by describing it. | No |
| [`media_upload_and_clip`](#media_upload_and_clip) | Uploads a video to clip. Clipping finishes in the Continuum app. | Yes |
| [`media_capture_url`](#media_capture_url) | Turns a public web page into a screenshot or a scroll-through video in your Library. | Yes |
| [`unsplash_search`](#unsplash_search) | Searches Unsplash stock photos to use as references. | No |
| [`video_editor`](#video_editor) | Edits video in Video Studio: cut silences, cut to the beat, captions, text, music, formats, export, and undo. | Yes |

### `library_manage`

Browses the Library, shows where a creative has run, adds comments, sets review status, and uploads media.

| Contract | Behavior |
| - | - |
| Changes things | Yes |
| Listed in your assistant | Always. |
| Role | Viewer or higher to read. Operator or higher for `comment_add`, `set_review_status`, `import_ad_creative`, `upload_inline`, `upload_url`, `upload_begin`, `upload_finalize`, and `render_retry`. |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Retry with the same `idempotency_key` to avoid duplicates. |

**Actions** (`action`):

| action | Required inputs | Other inputs it uses |
| - | - | - |
| `browse` | `action` | `query`, `reviewStatus`, `kind`, `source`, `tags`, `limit`, `offset` |
| `asset_detail` | `action`, `assetId` | `window` |
| `comment_add` | `action`, `assetId`, `body` | `annotation`, `parentCommentId`, `operation_id` |
| `set_review_status` | `action`, `assetId`, `toStatus` | `expectedCurrentStatus`, `note`, `operation_id` |
| `import_ad_creative` | `action`, `creativeRowId` | `operation_id` |
| `upload_inline` | `action`, `files` | `operation_id` |
| `upload_url` | `action`, `uploads` | — |
| `upload_finalize` | `action`, `uploaded` | — |
| `upload_begin` | `action` | `max_files` |
| `upload_status` | `action`, `upload_intent_id` | — |
| `render_status` | `action`, `render_job_id` | — |
| `render_retry` | `action`, `render_job_id` | — |

In this table, `a|b` means one of them and `a+b` means together.

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Browse approved creatives only: `{"name":"library_manage","arguments":{"action":"browse","reviewStatus":"approved","limit":20}}`
* Read the feedback on an asset: `{"name":"library_manage","arguments":{"action":"asset_detail","assetId":"00000000-0000-0000-0000-000000000000"}}`
* Which version of this creative is winning, and where is it running (last 7 days): `{"name":"library_manage","arguments":{"action":"asset_detail","assetId":"00000000-0000-0000-0000-000000000000","window":"d7"}}`
* Import a running Meta ad creative into the Library so it can be reviewed: `{"name":"library_manage","arguments":{"action":"import_ad_creative","creativeRowId":"00000000-0000-0000-0000-000000000000"}}`
* Leave a timestamped comment on a video: `{"name":"library_manage","arguments":{"action":"comment_add","assetId":"00000000-0000-0000-0000-000000000000","body":"Tighten the hook — cut to the product by second 2.","annotation":{"kind":"time","timeMs":2000}}}`
* Approve an asset: `{"name":"library_manage","arguments":{"action":"set_review_status","assetId":"00000000-0000-0000-0000-000000000000","toStatus":"approved","note":"Cleared for paid usage."}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `needs_role` | `comment_add`, `set_review_status` and `import_ad_creative` are writes: the session needs the operator role (returned as a structured `needs_role` result, not a thrown error). |
| `NOT_FOUND` | assetId (or parentCommentId, or creativeRowId) does not resolve to a live asset/comment/synced ad creative in the active brand. |
| `VALIDATION_ERROR` | Missing per-action fields — `comment_add` needs assetId + body; `set_review_status` needs assetId + toStatus; `import_ad_creative` needs creativeRowId. |
| `UPSTREAM_ERROR` | `import_ad_creative` could not fetch the creative's media: Meta CDN URLs expire, and the re-read from Graph also failed (`creative_media_unavailable`) — nothing was imported, and no empty asset was created. |
| `CONFLICT` | The item changed or is busy. Read it again, then retry with the current state. |
| `UNAUTHENTICATED` | The sign-in is missing or expired. Reconnect the assistant. |
| `needs_brand` | No brand is active. Call `brands_select`. |

**Related:** `media_search`, `content_create`, `analytics_creative_insights`.

Full schema: `help_describe {"tool":"library_manage","action":"browse"}`. As JSON: [`/mcp/schemas/library_manage.json`](https://docs.trycontinuum.ai/mcp/schemas/library_manage.json).

### `media_search`

Finds media by describing it.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | When your role on a brand you can reach allows it. |
| Role | Viewer or higher |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Safe to retry: it only reads. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `query` | string | Yes | Natural-language description of the creative media to find. |
| `tags` | array | No | Optional tags; an asset matches only if it carries ALL of them. |
| `kind` | string | No | Optional media type filter (image \| video). One of `image`, `video`, `file`, `audio`. |
| `source` | string | No | Optional origin filter (upload, `ai_generated`, canvas, inspiration, …). One of `upload`, `ai_generated`, `backfill`, `canvas`, `inspiration`, `hyperframe`, `chat_upload`, `clip`, `reel`, `meta_ad`, `figma`, `goal_artifact`, `forge`. |
| `reviewStatus` | string | No | Optional review-workflow filter; pass 'approved' to restrict to assets the brand has signed off on. One of `none`, `draft`, `in_review`, `needs_changes`, `approved`. |
| `limit` | integer | No | The most items to return. |
| `threshold` | number | No | — |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Find approved product shots: `{"name":"media_search","arguments":{"query":"flat lay of the coffee bag on a wooden table","kind":"image","reviewStatus":"approved","limit":10}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `BRAND_NOT_SELECTED` | No brand is active. Call `brands_select`. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `library_manage`.

Full schema: `help_describe {"tool":"media_search"}`. As JSON: [`/mcp/schemas/media_search.json`](https://docs.trycontinuum.ai/mcp/schemas/media_search.json).

### `media_upload_and_clip`

Uploads a video to clip. Clipping finishes in the Continuum app.

| Contract | Behavior |
| - | - |
| Changes things | Yes |
| Listed in your assistant | Always. |
| Role | Operator or higher |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Retry with the same `idempotency_key` to avoid duplicates. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `file_name` | string | No | The file's name, with its extension. |
| `mime_type` | string | No | The file's MIME type, such as `image/png`. One of `video/mp4`, `video/quicktime`, `video/webm`, `video/x-m4v`. |
| `media_base64` | string | No | — |
| `upload_token` | string | No | — |
| `title` | string | No | A display title. |
| `clip` | boolean | No | — |
| `idempotency_key` | string | No | A key you choose. Reuse it only to retry the same request without doing it twice. |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Start a signed upload of a long video: `{"name":"media_upload_and_clip","arguments":{"file_name":"founder-interview.mp4","mime_type":"video/mp4","title":"Founder interview","clip":true}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `INTERNAL` | Something went wrong on our side. Retry once, then contact support. |
| `NOT_FOUND` | The item doesn't exist, or this brand can't see it. |
| `UPSTREAM_ERROR` | A platform or provider returned an error. `details` carries its message. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |
| `needs_brand` | No brand is active. Call `brands_select`. |
| `needs_role` | The person's role is too low for this call. Needs: Operator or higher. Ask an Admin or Owner. |

**Related:** `forge_manage`, `video_editor`.

Full schema: `help_describe {"tool":"media_upload_and_clip"}`. As JSON: [`/mcp/schemas/media_upload_and_clip.json`](https://docs.trycontinuum.ai/mcp/schemas/media_upload_and_clip.json).

### `media_capture_url`

Turns a public web page into a screenshot or a scroll-through video in your Library.

**Good to know:**

* Public https pages only: sign-in walls, private networks, and plain http are refused. A capture takes 10 to 40 seconds and returns Library asset ids.

| Contract | Behavior |
| - | - |
| Changes things | Yes |
| Listed in your assistant | Always. |
| Role | Operator or higher |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Safe to retry: repeating the call gives the same result. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `url` | string | Yes | The public https page to capture (product, reviews, pricing, press article, demo). |
| `device` | string | No | reel = 1080x1920 (default), iphone = 1179x2556, desktop = 1920x1080. One of `reel`, `iphone`, `desktop`. |
| `outputs` | array | No | screenshot = a PNG still; recording = an MP4 scroll-through. Default both. |
| `full_page` | boolean | No | Screenshot the whole page instead of one screen (capped at 16,000 px tall). |
| `duration_sec` | number | No | Recording length in seconds (2-15, default 8, 30 fps). |
| `highlight_selector` | string | No | CSS selector of one element to outline; the capture scrolls to it. |
| `highlight_text` | string | No | Visible text to outline instead of a selector (e.g. "4.9 stars"). |
| `locale` | string | No | Browser language, e.g. es-CL, so a localized site serves that language. Default en-US. |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Reviews page as proof b-roll: `{"name":"media_capture_url","arguments":{"url":"https://brand.com/reviews","highlight_text":"4.9"}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `UNAVAILABLE_HERE` | This input can't be used from this server, for example a private or non-https URL. |
| `UPSTREAM_ERROR` | A platform or provider returned an error. `details` carries its message. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |
| `needs_brand` | No brand is active. Call `brands_select`. |
| `needs_role` | The person's role is too low for this call. Needs: Operator or higher. Ask an Admin or Owner. |

**Related:** `video_editor`, `media_search`.

Full schema: `help_describe {"tool":"media_capture_url"}`. As JSON: [`/mcp/schemas/media_capture_url.json`](https://docs.trycontinuum.ai/mcp/schemas/media_capture_url.json).

### `unsplash_search`

Searches Unsplash stock photos to use as references.

**Good to know:**

* Photos are references, not Library assets: attach one to a canvas with `studio_workflow`, or pass it to `content_create` as `unsplash_photos`.
* Credit the photographer and Unsplash whenever you show a photo.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | When your role on a brand you can reach allows it. |
| Role | Viewer or higher |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Safe to retry: it only reads. |
| Rate limit | 60 calls per 1 hour per brand. See [Limits](https://docs.trycontinuum.ai/mcp/reference.md#limits). |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `query` | string | Yes | What to look for, in plain words. |
| `orientation` | string | No | One of `landscape`, `portrait`, `squarish`. |
| `page` | integer | No | — |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Find stock photos for a canvas reference: `{"name":"unsplash_search","arguments":{"query":"gym interior"}}`
* Vertical photos for a story or reel reference: `{"name":"unsplash_search","arguments":{"query":"runner at sunrise","orientation":"portrait"}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `RATE_LIMITED` | Unsplash's shared hourly quota or this brand's 60/hour budget is spent — retry later. |
| `configured=false` | The deployment has no Unsplash key; this is not an empty search. |
| `BRAND_NOT_SELECTED` | No brand is active. Call `brands_select`. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `studio_workflow`, `content_create`, `media_search`, `integrations_list`.

Full schema: `help_describe {"tool":"unsplash_search"}`. As JSON: [`/mcp/schemas/unsplash_search.json`](https://docs.trycontinuum.ai/mcp/schemas/unsplash_search.json).

### `video_editor`

Edits video in Video Studio: cut silences, cut to the beat, captions, text, music, formats, export, and undo.

**Good to know:**

* Every timeline edit names the project's current `revision` and returns the new one. `undo` restores the previous revision.
* `export` starts a render job that saves an MP4 to the Library. Poll `export_status` for its link.

| Contract | Behavior |
| - | - |
| Changes things | Yes |
| Listed in your assistant | Always. |
| Role | Viewer or higher. |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns right away. Longer work continues as a job; read the id in the result. |
| Retry | Not idempotent. Check the current state before retrying. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `action` | string | Yes | The editor operation. Pass that operation’s own fields alongside it. One of `list_workflows`, `save_workflow`, `list_projects`, `create_project`, `get_project`, `get_transcript`, `get_beats`, `get_frame`, `apply_commands`, `undo`, `cut_silence`, `cut_ranges`, `beat_cut`, `collage`, `set_captions`, `set_speed`, `edit_caption_cues`, `get_composed_frame`, `set_format`, `add_text`, `add_clip`, `animate_clip`, `get_motion`, `keyframe_clip`, `stagger_clips`, `retime_motion`, `add_hyperframes_clip`, `add_motion_graphic`, `get_hyperframes_clip_motion`, `edit_hyperframes_clip_motion`, `add_transition`, `apply_effect`, `draft_cut`, `draft_cut_status`, `list_variants`, `export`, `export_status`, `get_pool`, `generate`, `generate_status`. |
| `projectId` | string | No | — |
| `name` | string | No | A display name. |
| `prompt` | string | No | Instructions in plain words. |
| `limit` | integer | No | The most items to return. |
| `assetIds` | array | No | — |
| `title` | string | No | A display title. |
| `preset` | string | No | — |
| `full` | boolean | No | Return the full content instead of a summary. |
| `clipId` | string | No | — |
| `force` | boolean | No | — |
| `timeSec` | number | No | — |
| `maxWidth` | integer | No | — |
| `expectedRevision` | integer | No | The revision number from your last read. The write is refused if it changed since. |
| `commands` | array | No | — |
| `toRevision` | integer | No | The revision to go back to. |
| `minSilenceSec` | number | No | — |
| `paddingSec` | number | No | — |
| `thresholdDb` | number | No | — |
| `ranges` | array | No | — |
| `ripple` | boolean | No | — |
| `mode` | string | No | How the call runs. For writes, `preview` returns a token and `confirm` applies it. See the allowed values. One of `cut_on_beat`, `switch_shots`, `jump_cuts`. |
| `everyNBeats` | number | No | Beats per shot: 0.5 = every half beat, 0.25 = every quarter beat, 1 = every beat. For quick splices or doka doka doka use 0.5. |
| `clipIds` | array | No | — |
| `audioClipId` | string | No | — |
| `range` | object | No | — |
| `layout` | string | No | One of `stack`, `side_by_side`, `grid`. |
| `atSec` | number | No | — |
| `durationSec` | number | No | — |
| `style` | string\|object | No | — |
| `highlight` | string | No | One of `none`, `word`, `karaoke`. |
| `maxWordsPerLine` | integer | No | — |
| `position` | string | No | One of `bottom`, `middle`, `top`. |
| `highlightColor` | string | No | — |
| `rate` | number | No | — |
| `cues` | array | No | — |
| `fit` | string | No | One of `cover`, `contain`. |
| `kind` | string | No | The type to filter by. See the allowed values. |
| `template` | string | No | One of `hook_title`, `lower_third`, `kinetic_words`, `cta_end_card`, `listicle_number`, `quote`, `stat_callout`, `subtitle_bar`. |
| `text` | string | No | Plain text content. |
| `secondaryText` | string | No | — |
| `startSec` | number | No | — |
| `animationIn` | string | No | One of `none`, `fade`, `pop`, `scale-in`, `float-in`, `slide-up`, `slide-down`, `slide-left`, `slide-right`, `typewriter`, `word-pop`, `bounce`, `blur-in`, `zoom-out`, `wipe`. |
| `animationOut` | string | No | One of `none`, `fade`, `pop`, `scale-in`, `float-in`, `slide-up`, `slide-down`, `slide-left`, `slide-right`, `typewriter`, `word-pop`, `bounce`, `blur-in`, `zoom-out`, `wipe`. |
| `assetId` | string | No | A Library asset ID an earlier call returned. |
| `versionId` | string | No | A Library asset version ID, returned with the asset. |
| `trackId` | string | No | — |
| `newTrack` | boolean | No | — |
| `sourceInSec` | number | No | — |
| `property` | string | No | One of `transform.position`, `transform.scaleX`, `transform.scaleY`, `transform.rotationDeg`, `transform.rotateXDeg`, `transform.rotateYDeg`, `transform.opacity`, `audio.volume`, `audio.pan`, `effect.parameter`, `text.tracking`, `text.fontSize`. |
| `parameterName` | string | No | — |
| `effectInstanceId` | string | No | effect.parameter only: which of the clip effects; default the first with it |
| `keys` | array | No | — |
| `replace` | boolean | No | Replace what is there instead of adding to it. |
| `eachSec` | number | No | — |
| `from` | string | No | One of `start`, `end`, `center`. |
| `shiftSec` | number | No | — |
| `ease` | string | No | One of `hold`, `spring`, `linear`, `easeIn`, `easeOut`, `easeInOut`, `easeInBack`, `easeOutBack`, `easeInOutBack`, `gentle`, `quick`, `bouncy`, `slow`. |
| `bezier` | array | No | A custom ease as \[x1, y1, x2, y2] (x1, x2 in 0..1), instead of ease |
| `revisionId` | string | No | A revision ID an earlier call returned. |
| `recipe` | string | No | `glass_graph`: a liquid glass card that refracts the footage under it while a line graph climbs to a figure (label, value, unit, points). `particle_push`: particle… One of `glass_graph`, `particle_push`, `dot_matrix`, `word_lock`, `screen_push`, `over_shoulder`. |
| `color` | string | No | — |
| `label` | string | No | `glass_graph`: the metric, 1–3 words ("Retention") |
| `value` | number | No | `glass_graph`: the figure the graph climbs to |
| `unit` | string | No | `glass_graph`: "%", "\$", "k", "x" or empty |
| `points` | array | No | `glass_graph`: the line, 2–12 values in order; omit for a steady climb |
| `steps` | array | No | `particle_push`: 1–3 step labels of one or two words |
| `words` | array | No | `dot_matrix`: 1–6 words, shown one after another |
| `keyword` | string | No | `word_lock`: the one word locked in the centre |
| `lines` | array | No | `word_lock`: 3–10 sentences, each containing the keyword |
| `cards` | array | No | `over_shoulder`: the start card (over the left shoulder) then the end card, each `{ label, big, small }` — "BEFORE" \| "`$3,200`" \| "per month" |
| `lightSpeed` | boolean | No | `over_shoulder`: the start card's big text flies into the end card at light speed |
| `faceX` | number | No | `over_shoulder`: the middle of the face across the frame, 0–1, read from `get_frame` |
| `faceWidth` | number | No | `over_shoulder`: the head's width ear to ear as a share of the frame width |
| `eyeY` | number | No | `over_shoulder`: the eyes' height in the frame, 0 = top |
| `opsJson` | string | No | A JSON array of 1 to 50 HyperFrames motion ops in composition seconds: `add_animation`, stagger, retime, ease, `set_keyframes`, `upsert_keyframe`, `remove_keyframes`, … |
| `fromClipId` | string | No | — |
| `toClipId` | string | No | — |
| `all` | boolean | No | — |
| `type` | string | No | The type of post or item. See the allowed values. One of `cut`, `crossfade`, `dip_to_black`, `dip_to_white`, `wipe`, `slide`, `zoom`, `blur`. |
| `effect` | string | No | One of `bw`, `vintage`, `vivid`, `cool`, `warm`, `noir`, `dream`, `blur`, `tint`, `vignette`, `film_grain`, `dust`, `light_leaks`, `chromatic_aberration`, `vhs`, `pixelate`, `corner_radius`, `chroma_key`. |
| `strength` | number | No | — |
| `remove` | boolean | No | — |
| `brief` | string | No | A short brief, in plain words, that steers what gets made. |
| `targetDurationSec` | number | No | — |
| `variants` | integer | No | — |
| `captions` | boolean | No | — |
| `sourceAssetIds` | array | No | Omit to use enabled timeline videos. An explicit list is exclusive: selected timeline videos keep their pinned versions; new Library videos use their head vers… |
| `music` | boolean | No | — |
| `musicPrompt` | string | No | — |
| `hookTitle` | boolean | No | — |
| `broll` | boolean | No | — |
| `brandCaptions` | boolean | No | — |
| `jobId` | string | No | A job ID an earlier call returned. |
| `captionMode` | string | No | One of `burn_in`, `none`. |
| `quickStart` | string | No | One of `create_image`, `restyle_image`, `edit_image`, `storyboard_to_video`, `keyframes_to_video`, `rotate_360`, `music_bed`, `voiceover`, `headless_concept`. |
| `refs` | array | No | — |
| `place` | object | No | — |
| `voice` | string | No | — |
| `concept` | string | No | One of `offer-direct`, `problem-solution`, `street-interview`, `street-price-guess`, `reply-to-comment`, `car-storytime`, `expectation-vs-reality`, `pov`, `unpopular-opinion`, `busy-day-routine`, `tour`, `lookbook`. |
| `duck` | boolean | No | — |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* List Video Studio projects: `{"name":"video_editor","arguments":{"action":"list_projects"}}`
* Cut silences from a project: `{"name":"video_editor","arguments":{"action":"cut_silence","projectId":"b7d3f9a1-4c6e-4a2b-8d5f-6e9c1b3a7d40","minSilenceSec":0.6}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `CONFLICT` | The item changed or is busy. Read it again, then retry with the current state. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |
| `needs_brand` | No brand is active. Call `brands_select`. |

**Related:** `media_upload_and_clip`.

Full schema: `help_describe {"tool":"video_editor"}`. As JSON: [`/mcp/schemas/video_editor.json`](https://docs.trycontinuum.ai/mcp/schemas/video_editor.json).

## What's next

* [All tools](https://docs.trycontinuum.ai/mcp/tools.md): Every tool on one page, and the machine-readable index.
* [Account, brand, and jobs](https://docs.trycontinuum.ai/mcp/tools/account.md): Lists the brands you can access, and more.
* [Analytics, trends, and competitors](https://docs.trycontinuum.ai/mcp/tools/insights.md): Organic, paid, and website results by platform: accounts, top posts, campaigns, ad sets, and ads, and more.
* [Organic+ planning and publishing](https://docs.trycontinuum.ai/mcp/tools/organic.md): Reads and proposes a week of posts, approves it, reschedules and copies posts, and attaches media, and more.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.