add_idea
ChatGPTAdd a video idea to Ideas. as="concept" (default) means the team is going with it: a Raw folder with the same name is created for its raw files. as="idea" just adds it as a suggestion to brainstorm on.
analyze_file
ChatGPTRun (or re-run) AI labeling on a file now: labels, a one-line summary, a transcript for speech, and for loose Raw files a suggested concept. Returns the result. Videos are labeled from frames the web app extracts; without them, from name, notes and audio.
app_board
ChatGPTUsed by Contendoor's in-chat screen to reload the Editor board.
app_download_link
ChatGPTUsed by Contendoor's in-chat screen to get a short-lived download link for a file.
app_open_folder
ChatGPTUsed by Contendoor's in-chat screen to navigate folders.
app_set_stage
ChatGPTUsed by Contendoor's in-chat screen when the user moves a concept on the board.
create_folder
ChatGPTCreate a folder (and any missing parents), e.g. "Raw/Morning routine vlog". Returns the existing folder if it already exists.
create_note
ChatGPTCreate a note: video ideas, scripts, hooks, shot lists, research, briefs, feedback. Write content as Markdown or HTML (both are stored as rich text the team edits in Contendoor): - Markdown: GFM headings, lists, "- [ ]" to-dos, tables, code, quotes, links, images, ==highlight==. - HTML is kept with its styling, so you can design the note: colors, backgrounds, font sizes, alignment, tables with merged or colored cells, images with a width, and · callout: <div data-type="callout" style="background-color:#fef9c3"><p>💡 …</p></div> · toggle: <details><summary>Shot list</summary><p>…</p></details> · columns: <div data-type="columns"><div data-type="column">…</div><div data-type="column">…</div></div> · embed: <iframe src="https://www.youtube.com/embed/ID"></iframe> (YouTube, Vimeo, Loom, Instagram, TikTok, Figma, Google Docs/Slides/Maps, Spotify, Canva, Miro) · highlight: <mark data-color="yellow|green|blue|pink|purple|orange|red|gray">…</mark> · <style> rules and inline styles both work. Wrap anything that must render exactly as written (an SVG chart, a designed card) in <div data-type="html-block">…</div>. Scripts, forms and event handlers are removed. - Images: any https image URL (it's copied into Contendoor, so links that expire keep working), or a Contendoor image file as src="fil_…".
create_task
ChatGPTAdd an item to the team's to-do list, optionally assigned, due, and linked to a concept.
create_upload
ChatGPTStart uploading a local file of any size and any type into any folder: video, audio, photos, HTML, Markdown, text, Word, PDF, or anything else. Returns an upload URL and exact curl commands. Files up to 64 MB are a single PUT; larger files are sent in 32 MB parts, then completed. Missing folders are created. Completed uploads into Raw are automatically processed by Cloudflare AI for labels and, where supported, transcripts.
delete_item
ChatGPTMove a file, folder (with everything inside) or note to Trash (restorable for 30 days). Also deletes to-dos (tsk_…), comments (cmt_…), ideas (ide_…) and Brand profile sources (src_…) permanently.
delete_post
ChatGPTPermanently deletes a post that hasn't gone out (scheduled, failed or canceled), so it never posts; or with account, removes just that account from it. Can't touch anything already live on a platform or being sent right now.
edit_note
ChatGPTChange part of a note without rewriting the rest: exact find-and-replace on the text read_note returned, in the same format. Each find must match exactly once (include a few surrounding words) unless replace_all is set. Edits apply in order and all-or-nothing. An empty replace deletes the text.
fetch
ChatGPTFetch the full content of a search result by id: a note (as Markdown), a folder's listing, or a file's details, text and download link.
generate_ideas
ChatGPTAsk Contendoor's AI for fresh video ideas grounded in the Brand profile and its sources (analytics, website, support chats, competitors). They're saved to Ideas as suggestions. You can also brainstorm yourself and save ideas with add_idea(as="idea").
get_download_url
ChatGPTGet signed HTTPS download links. For a file: one URL plus a curl command. For a folder: every file inside it (recursively) plus a bash script that recreates the folder locally.
get_item
ChatGPTGet metadata for a single file or folder by id or path.
get_posts
ChatGPTLists posts in Contendoor's Publish queue. Without post_id: posts set to go out between from and to (UTC dates; default 30 days ago to 400 days ahead; at most 200), plus any still waiting to go out or failed. Each post shows its files and captions, and for each account: status (scheduled, publishing, published, failed or canceled), error, and the post's link and latest numbers once published. With post_id: that one post, plus the daily numbers Contendoor has synced for it, if any. Reads Contendoor's records only; it doesn't contact the platforms.
get_repurpose
ChatGPTPrepare drafts only; this does not publish, schedule or fetch social analytics. For a finished video: platform specs (Instagram Reels, TikTok, YouTube Shorts, Facebook Reels, LinkedIn, Snapchat Spotlight), the saved title/caption/hashtags/status per platform, spec warnings, and a correctly named download link per platform. Pass generate=true to have Contendoor's AI (re)write the drafts first.
get_social_accounts
ChatGPTThe social accounts connected to this workspace (Instagram, Facebook, Threads, TikTok, X, LinkedIn, YouTube) with followers and whether each needs reconnecting, plus their numbers over the last days: views, interactions and posts per day, and the posts that did best. Pass account for one account. Reads Contendoor's saved numbers; it doesn't contact the platforms. Contendoor refreshes a post's numbers on its own: hourly in its first two days, then less often, and not after 90 days.
inspo_context
ChatGPTThe context behind idea brainstorming, shown on the Brand profile page: the brand profile and data sources (past video analytics, website visits, customer support chats, competitor research, other). Call with no arguments to read everything; pass profile fields to update them, or add_source to store new data (e.g. a pasted analytics export or a support-chat summary).
list_concepts
ChatGPTEvery video concept (folders in Raw) with its production stage, raw file count, top labels, open to-dos, open comments and whether a Final export exists. This is the Editor board.
list_folder
ChatGPTList the subfolders and files inside a folder. Use "/" for the top level (Raw, Final). Returns ids, sizes, uploaders and descriptions.
list_ideas
ChatGPTVideo ideas on the Ideas page. status "idea" = open suggestions (AI daily batch or added by the team), "concept" = the team went with it (it has a Raw folder), "dismissed" = passed on.
list_notes
ChatGPTList notes (ideas, scripts, briefs), most recently edited first. Optionally filter by text.
list_tasks
ChatGPTThe team's to-do list: open items in order, plus recently completed ones. Optionally only a concept's to-dos.
list_unsorted
ChatGPTFiles loose in the Raw root (not yet in a concept folder), with their AI labels and suggested concept, so you can move_item them where they belong.
move_item
ChatGPTMove a file or folder into another folder. Use "/" as destination to move a folder to the top level.
publish_post
ChatGPTCreates a post on the user's connected social accounts and publishes it now or at a set time, or changes, reschedules or retries a post that hasn't fully gone out. Posting is public: unless the user already said exactly what to post, where and when, confirm the media, the accounts, the captions and the time with them first. - New post: pass accounts and when, plus files (any photos or videos in the workspace, by id or path) or nothing for a text post (Facebook, Threads, X and LinkedIn take text posts). Contendoor picks each account's post type from the media unless you set format. - Captions: caption is shared by every account; an account's own caption overrides it. Set ai_captions and Contendoor's AI writes the caption (and the title for YouTube and Facebook videos) for every account that has none of its own, using the media, its transcript, the concept and the Brand profile, with the shared caption as the brief. - when: "now"; a date like 2026-11-03, and Contendoor picks a random time between 9 AM and 9 PM that day; a local date and time like 2026-11-03T18:30; or an ISO time with an offset. Local dates and times need time_zone, the user's time zone. - Existing post (post_id): pass only when to reschedule it or send it now; pass files, accounts or caption to change what it posts (only before any of it is live); set retry_failed to send its failed platforms again. The result says when it will go out in the user's local time, and the caption each account got.
read_file
ChatGPTRead a file's contents directly. Text, HTML, and Markdown (≤ 512 KB) come back as text. PDF and Word come back as text when Contendoor can extract it. Images (≤ 4 MB) come back as images. Audio and video with speech come back as a transcript. Anything else returns metadata and a download link. Every type is stored; this only changes how much of it can be shown inline.
read_note
ChatGPTRead a note. As Markdown (the default), parts with styling or layout (colors, merged table cells, callouts, columns, embeds) appear as inline HTML: keep them as they are when you edit. Ask for html to get the exact stored HTML.
recent_activity
ChatGPTWhat the team (people and agents) did recently: uploads, new folders, note edits, moves, deletions.
rename_item
ChatGPTRename a file or folder in place.
save_attachments
ChatGPTChatGPT: save files the user attached or uploaded in this conversation into a Contendoor folder. Any file type is accepted (HTML, Markdown, text, Word, PDF, video, images, and the rest). ChatGPT fills in files with temporary download links and Contendoor downloads each one itself (up to 4 GB each), so no sandbox or terminal is needed. Other clients: use create_upload for local files or save_from_link for URLs.
save_from_link
ChatGPTSave a file of any type into any Contendoor folder from a URL: video, audio, photos, HTML, Markdown, text, Word, PDF, or anything else. Contendoor downloads it server-side (up to 4 GB), so nothing passes through this conversation and no terminal is needed. Use it for results from other tools (Higgsfield, Descript, Adobe, Canva and other generators), signed asset URLs, and public Google Drive or Dropbox share links. Missing folders are created; the file is AI-labeled like any upload. When you save a finished cut into Final/<concept>, follow with set_stage(stage=review) so the Editor board shows it's up for feedback.
search
ChatGPTSearch folders, files (by name, description, AI labels, summary and transcript), notes, ideas and to-dos.
set_description
ChatGPTSet the shared description on a file or folder (a concept brief, editing notes, which take to use…) and/or replace a file's labels (short tags like "barista pour", "b-roll").
set_stage
ChatGPTMove a concept along the production board: planned, shooting, ready (to edit), editing, review, done.
show_board
ChatGPTShow the Editor board (every video concept by production stage) as an interactive screen in the chat, where the user can move concepts between stages and open them. Clients without screens get the board as text.
show_folder
ChatGPTShow a Contendoor folder as an interactive screen in the chat (Claude, ChatGPT): thumbnails, subfolders, open and download buttons, and uploads that never arrived. Use it when the user wants to see or browse their files. Clients without screens get the listing as text.
show_images
ChatGPTDisplay actual photos from a Contendoor folder as an inline image gallery, not a screenshot or folder listing. Preserves each image's portrait, landscape, or square aspect ratio. Supply image file ids to choose particular images; otherwise show up to 24 images in the folder. Use for requests like 'show two images from Raw here in the chat'. The gallery includes a user-initiated experimental Send to ChatGPT file upload, which requires host support; native attachments are not guaranteed.
update_idea
ChatGPTEdit an idea (title, hook, pitch, format) and/or set its status: "concept" = go with it (creates its Raw folder), "dismissed" = pass, "idea" = back to suggestions.
update_note
ChatGPTChange a note's title, icon, pin or content. Content replaces the note, or with mode=append / mode=prepend is added at the end / start (safe while the team is editing). To change part of a note, use edit_note. Write content as Markdown or HTML (both are stored as rich text the team edits in Contendoor): - Markdown: GFM headings, lists, "- [ ]" to-dos, tables, code, quotes, links, images, ==highlight==. - HTML is kept with its styling, so you can design the note: colors, backgrounds, font sizes, alignment, tables with merged or colored cells, images with a width, and · callout: <div data-type="callout" style="background-color:#fef9c3"><p>💡 …</p></div> · toggle: <details><summary>Shot list</summary><p>…</p></details> · columns: <div data-type="columns"><div data-type="column">…</div><div data-type="column">…</div></div> · embed: <iframe src="https://www.youtube.com/embed/ID"></iframe> (YouTube, Vimeo, Loom, Instagram, TikTok, Figma, Google Docs/Slides/Maps, Spotify, Canva, Miro) · highlight: <mark data-color="yellow|green|blue|pink|purple|orange|red|gray">…</mark> · <style> rules and inline styles both work. Wrap anything that must render exactly as written (an SVG chart, a designed card) in <div data-type="html-block">…</div>. Scripts, forms and event handlers are removed. - Images: any https image URL (it's copied into Contendoor, so links that expire keep working), or a Contendoor image file as src="fil_…".
update_repurpose
ChatGPTSave draft title/caption/hashtags for one platform, or manually record its status (draft, ready, posted, skipped) and a supplied post URL. This updates Contendoor metadata only; it does not publish, schedule, or fetch social analytics.
update_task
ChatGPTCheck off / reopen a to-do (done=true/false), or change its title, notes, assignee, due date or concept.
upload_file
ChatGPTSave a small file (≤ 10 MB) of any type straight from this conversation: HTML, Markdown, text, Word, PDF, scripts, captions, thumbnails, or anything else. Pass text for text files or base64 for binary. For bigger files use create_upload; for anything that has a URL use save_from_link. Raw uploads are automatically processed by Cloudflare AI for labels and supported transcripts.
upload_status
ChatGPTCheck whether Contendoor has received a file started with create_upload. Call it after your PUT (or last part + complete) and before telling the user the file is saved.
whoami
ChatGPTWhich Contendoor user and agent connection these tools act as.