Autopo
Run your AI-run company from Claude Code, Codex, Cursor or ChatGPT: inbox, tasks, team, Studio.
사용해야 할까요
품질 및 안전성
발견 사항 (11)
- LOWlist_companies에서
- LOWget_briefing에서
- LOWget_decision에서
- LOWcomment_on_decision에서
- LOWlist_agents에서
- LOWget_artifact에서
- LOWartifact_feedback에서
- LOWstudio_settings에서
- LOWlist_videos에서
- LOWimport_video_plan에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"@autopo/mcp"
]
}
}
}실행 가능한 패키지
0.5.0stdio원격 엔드포인트
https://autopoiesis-api-267405155162.us-west1.run.app/mcpstreamable-http할 수 있는 일
도구 목록
도구 (67)
🟢list_companies
The companies you belong to (id, name, stage, kind). Other tools take `company`: one of these ids.
입력 스키마
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢founder_home(company)
What needs you, what improved and what is stuck in a company right now: the home screen's digest, the open decisions, running work, delivered work and your requests. Start here for 'what happened'.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
}
},
"required": [],
"additionalProperties": false
}🟢company_overview(company)
The company: its charter, stage, team, budget and gates (GET /companies/{id} and /overview).
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
}
},
"required": [],
"additionalProperties": false
}🟢activity(company, after, limit)
The company's activity feed, newest first (who did what, when). `after`: only events after this ISO time.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"after": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [],
"additionalProperties": false
}🟢list_briefings(company, before)
The CEO's board briefings (spoken updates), newest first, with their text.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"before": {
"type": "string",
"description": "ISO time: older than this"
}
},
"required": [],
"additionalProperties": false
}🟢get_briefing(briefing)
One briefing: its sections, the decisions it asked for, and what was said.
입력 스키마
{
"type": "object",
"properties": {
"briefing": {
"type": "string"
}
},
"required": [
"briefing"
],
"additionalProperties": false
}🟢brief_me_now(company)
Ask the CEO for a fresh briefing since your last one (at most 3 a day). It is written and voiced in the background: read it with get_briefing in a minute.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
}
},
"required": [],
"additionalProperties": false
}🟢list_decisions(company, status, page, page_size)
The Board inbox: cards waiting for you (`status` pending, default), or decided ones. Each card says what the team wants, why, the risk tier and the amount; decide with `decide`.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"status": {
"type": "string",
"description": "pending (default), decided, or a comma list"
},
"page": {
"type": "integer",
"minimum": 1
},
"page_size": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [],
"additionalProperties": false
}🟢get_decision(decision)
One inbox card in full: the ask, the agent's case, the options, the work behind it.
입력 스키마
{
"type": "object",
"properties": {
"decision": {
"type": "string"
}
},
"required": [
"decision"
],
"additionalProperties": false
}🔴decide(decision, choice, note, answer, edited_input)
Decide an inbox card as the founder: approve, reject (a `note` is required) or cancel. For a question card, `answer` is the chosen option's value. `edited_input` approves with a change to what was asked.
입력 스키마
{
"type": "object",
"properties": {
"decision": {
"type": "string",
"description": "the card's id"
},
"choice": {
"type": "string",
"enum": [
"approve",
"reject",
"cancel"
]
},
"note": {
"type": "string"
},
"answer": {
"type": "object"
},
"edited_input": {
"type": "object"
}
},
"required": [
"decision",
"choice"
],
"additionalProperties": false
}⚪comment_on_decision(decision, body)
Ask the team something about a card before deciding; the requesting agent answers.
입력 스키마
{
"type": "object",
"properties": {
"decision": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": [
"decision",
"body"
],
"additionalProperties": false
}🟢list_tasks(company, status, assignee, q, mine, ...)
The work board: tasks by status, assignee role or goal; `q` searches titles; `mine: true` only what you asked for (your requests).
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"status": {
"type": "string"
},
"assignee": {
"type": "string",
"description": "a role key, e.g. engineer"
},
"q": {
"type": "string"
},
"mine": {
"type": "boolean"
},
"page": {
"type": "integer",
"minimum": 1
},
"page_size": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [],
"additionalProperties": false
}🟢get_task(task)
One task in full: description, criteria, status, the thread's last comments, its pull requests and deliverables.
입력 스키마
{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "its id or key (AUTO-12)"
}
},
"required": [
"task"
],
"additionalProperties": false
}🟡create_task(company, title, description, assignee, priority, ...)
Give the team work, or make a request of your own (the CEO routes it when no assignee is named): a title, what done looks like, criteria. `assignee` is an agent id (list_agents).
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"assignee": {
"type": "string"
},
"priority": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"urgent"
]
},
"acceptance_criteria": {
"type": "array",
"items": {
"type": "string"
}
},
"goal": {
"type": "string"
}
},
"required": [
"title"
],
"additionalProperties": false
}🔴update_task(task, title, description, status, priority, ...)
Change a task: its title, description, status, priority, assignee or criteria. To cancel one, use cancel_task.
입력 스키마
{
"type": "object",
"properties": {
"task": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string"
},
"priority": {
"type": "string"
},
"assignee": {
"type": "string"
},
"acceptance_criteria": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"task"
],
"additionalProperties": false
}🟡comment_on_task(task, body)
Write in a task's thread as the founder: the assignee reads it and answers (a comment wakes them).
입력 스키마
{
"type": "object",
"properties": {
"task": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": [
"task",
"body"
],
"additionalProperties": false
}🔴cancel_task(task, reason, preview)
Cancel a task (and its open subtasks, pending cards and live runs). `preview: true` only says what it would take.
입력 스키마
{
"type": "object",
"properties": {
"task": {
"type": "string"
},
"reason": {
"type": "string"
},
"preview": {
"type": "boolean"
}
},
"required": [
"task"
],
"additionalProperties": false
}🟢list_agents(company)
The team: every agent with its role, title, state and whether it is on. Chat with one through ask_agent.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
}
},
"required": [],
"additionalProperties": false
}⚪ask_agent(company, agent, message, production, wait_seconds)
Start a chat with an agent (list_agents) and wait for the answer. `agent` is the agent's id or role key (ceo, cto, creative…). Beside the Studio, pass `production` (a video id) so the Creative Director sees that video. The reply's `actions` are proposals (a task, media to make, a card): apply one with apply_chat_action. `wait_seconds` (default 90, max 600) is how long to wait for the reply.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"agent": {
"type": "string"
},
"message": {
"type": "string"
},
"production": {
"type": "string"
},
"wait_seconds": {
"type": "integer"
}
},
"required": [
"agent",
"message"
],
"additionalProperties": false
}🟡continue_chat(chat, message, wait_seconds)
Send another message in an existing chat and wait for the reply.
입력 스키마
{
"type": "object",
"properties": {
"chat": {
"type": "string"
},
"message": {
"type": "string"
},
"wait_seconds": {
"type": "integer"
}
},
"required": [
"chat",
"message"
],
"additionalProperties": false
}🟢read_chat(chat, last)
A chat's messages, oldest first (the last reply's status says whether it is still answering).
입력 스키마
{
"type": "object",
"properties": {
"chat": {
"type": "string"
},
"last": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "only the last N messages"
}
},
"required": [
"chat"
],
"additionalProperties": false
}🟢list_chats(company, q, agent)
Your chats across the team (pinned first, then recent); `q` searches titles and content.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"q": {
"type": "string"
},
"agent": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}🔴apply_chat_action(action, edits, dismiss)
Apply a proposal an agent made in a chat (a task, a note, media to make, a card): the action's id from the reply's `actions`. `edits` changes fields of its payload first. `dismiss: true` declines it.
입력 스키마
{
"type": "object",
"properties": {
"action": {
"type": "string"
},
"edits": {
"type": "object"
},
"dismiss": {
"type": "boolean"
}
},
"required": [
"action"
],
"additionalProperties": false
}🟢list_runs(company, status, agent, page, page_size)
Agent runs: `status` active (queued, running), finished, or a comma list; `agent` an agent id.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"status": {
"type": "string"
},
"agent": {
"type": "string"
},
"page": {
"type": "integer",
"minimum": 1
},
"page_size": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [],
"additionalProperties": false
}🟢get_run(run, after_seq, events)
One run: its status, cost, and its events (tool calls, text) from `after_seq`.
입력 스키마
{
"type": "object",
"properties": {
"run": {
"type": "string"
},
"after_seq": {
"type": "integer"
},
"events": {
"type": "boolean",
"description": "include the events (default true)"
}
},
"required": [
"run"
],
"additionalProperties": false
}⚪nudge_run(run, guidance)
Steer a run that is still going: a line of guidance the agent reads at its next step.
입력 스키마
{
"type": "object",
"properties": {
"run": {
"type": "string"
},
"guidance": {
"type": "string"
}
},
"required": [
"run",
"guidance"
],
"additionalProperties": false
}🟢list_artifacts(company, type, status, q, starred, ...)
What the team made: documents, research, decks, tables, videos, designs (`type`), delivered work (`kind`), `q` searches, `starred` only yours.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"type": {
"type": "string"
},
"status": {
"type": "string"
},
"q": {
"type": "string"
},
"starred": {
"type": "boolean"
},
"page": {
"type": "integer",
"minimum": 1
},
"page_size": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [],
"additionalProperties": false
}🟢get_artifact(artifact)
One artifact in full (its body, content, version, who made it).
입력 스키마
{
"type": "object",
"properties": {
"artifact": {
"type": "string"
}
},
"required": [
"artifact"
],
"additionalProperties": false
}🟡artifact_feedback(artifact, body)
Ask for a revision of an artifact: a task for the agent who made it; the change lands as a new version.
입력 스키마
{
"type": "object",
"properties": {
"artifact": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": [
"artifact",
"body"
],
"additionalProperties": false
}🟢studio_overview(company)
The Studio: every model this company can run (what it is for, price, shapes, availability), the voices, the default models and narrator, providers, the team's allowance, and whether this server can check and render code films (`can_render_code`).
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
}
},
"required": [],
"additionalProperties": false
}🟡studio_settings(company, default_models, voice)
Change the Studio's defaults: `default_models` by kind (image, video, voice, music: model keys from studio_overview) and the default narrator `voice` (a voice key).
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"default_models": {
"type": "object"
},
"voice": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}🟢list_media(company, kind, source, q, starred, ...)
The media library: images, clips, voice lines and music, with filters (`kind` image|video|audio, `source` generated|uploaded|recorded|rendered, `q`, `starred`).
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"kind": {
"type": "string"
},
"source": {
"type": "string"
},
"q": {
"type": "string"
},
"starred": {
"type": "boolean"
},
"purpose": {
"type": "string"
},
"page": {
"type": "integer",
"minimum": 1
},
"page_size": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [],
"additionalProperties": false
}🟢get_media(media)
One piece of media: its prompt, model, settings, link and state.
입력 스키마
{
"type": "object",
"properties": {
"media": {
"type": "string"
}
},
"required": [
"media"
],
"additionalProperties": false
}🔴generate_media(company, kind, prompt, model, aspect_ratio, ...)
Make an image, a clip, a voice line or music in the Studio (spends credits): `kind`, a `prompt`, optionally a `model` (studio_overview), `aspect_ratio`, `duration` (seconds, clips), `count` (images), `voice` (a voice key, for kind audio with purpose voice), `purpose` (voice|music for audio), `references` (media ids). Returns the media ids (status queued): read them later with get_media.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"kind": {
"type": "string",
"enum": [
"image",
"video",
"audio"
]
},
"prompt": {
"type": "string"
},
"model": {
"type": "string"
},
"aspect_ratio": {
"type": "string"
},
"duration": {
"type": "number"
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 4
},
"voice": {
"type": "string"
},
"purpose": {
"type": "string",
"enum": [
"voice",
"music"
]
},
"references": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string"
},
"production": {
"type": "string"
},
"shot": {
"type": "string"
}
},
"required": [
"kind",
"prompt"
],
"additionalProperties": false
}🟢list_videos(company)
The Studio's videos (productions): title, status, shape, length.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
}
},
"required": [],
"additionalProperties": false
}🟢get_video(video)
A video's storyboard in full: every shot (picture, line, text, seconds, direction, takes), the style and models it is made with, the presenter, cards, the finished render, and what is missing before it can render. `engine` says how it is cut (ffmpeg: the joiner; remotion: a code film) and `code` where a code film stands (version, checked, errors; get_video_code for the project).
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
}
},
"required": [
"video"
],
"additionalProperties": false
}🟡create_video(company, title, brief, aspect_ratio, seconds, ...)
Start a video: a title, the brief (who it's for, what it must show, the one thing to feel), the shape (16:9, 9:16, 1:1, 4:5) and the length in seconds. The platform drafts the storyboard from the brief (a little model time, billed like an agent's); then shape it with set_video_shots or ask the Creative Director (ask_agent creative, with `production`). `draft: false` makes an empty video to fill yourself.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"title": {
"type": "string"
},
"brief": {
"type": "string"
},
"aspect_ratio": {
"type": "string",
"enum": [
"16:9",
"9:16",
"1:1",
"4:5"
]
},
"seconds": {
"type": "integer",
"minimum": 10,
"maximum": 180
},
"draft": {
"type": "boolean"
},
"style": {
"type": "object"
}
},
"required": [
"title",
"brief"
],
"additionalProperties": false
}🟡set_video_shots(video, shots)
Replace a video's storyboard: shots in order, each {visual: generate|footage|title|presenter, prompt, voiceover, on_screen_text, duration_seconds, media?, voice?, direction?, keep_audio?, notes?}. Send a shot's `id` to keep its media, voice and direction (a `direction` sets only the keys it carries; a key set to null is removed); a shot without one is new. A title's line breaks (\n in on_screen_text) are kept on the card.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
},
"shots": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 60
}
},
"required": [
"video",
"shots"
],
"additionalProperties": false
}🟡update_video(video, title, brief, aspect_ratio, style)
Change a video: title, brief, shape, or its `style`: music, captions, transition (cut|fade), colours, the narrator `voice`, the `look` (palette, light, camera, texture, mood, type, avoid, brand light|balanced|strong), the music cue (`music_prompt`, `music_bpm`, `beat_sync`), and `models` {clip, keyframe, voice, music, speaking}.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
},
"title": {
"type": "string"
},
"brief": {
"type": "string"
},
"aspect_ratio": {
"type": "string"
},
"style": {
"type": "object"
}
},
"required": [
"video"
],
"additionalProperties": false
}🔴make_video_media(video, what, model, voice)
Make what a video still lacks (spends credits): `what` all (clips and voice lines), visuals, voice, or music (composed from the style's music cue). `model` overrides the clip model for this call.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
},
"what": {
"type": "string",
"enum": [
"all",
"visuals",
"voice",
"music"
]
},
"model": {
"type": "string"
},
"voice": {
"type": "string"
}
},
"required": [
"video"
],
"additionalProperties": false
}🔴video_keyframes(video, shots)
Make the keyframes first (a still of each generate shot's first frame, cents each) so the look is locked before clips are paid for. `shots`: shot ids, default every shot without one.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
},
"shots": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"video"
],
"additionalProperties": false
}⚪critique_video(video, stage)
The critic judges the latest takes (`stage` keyframes or clips) against each shot's direction and puts the best on the shot.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
},
"stage": {
"type": "string",
"enum": [
"keyframes",
"clips"
]
}
},
"required": [
"video",
"stage"
],
"additionalProperties": false
}🟢render_video(video)
Cut the video into one MP4 (free). get_video says what is missing when it refuses; the render takes a minute or two. A code film (`engine` remotion) renders its last checked version through Remotion, so the check must pass first (check_video_code); the refusal names the film's problem.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
}
},
"required": [
"video"
],
"additionalProperties": false
}🔴design_video_cards(video, remove)
Make (or re-sync) the cards drawn over a video's shots, one scene per shot, editable in the Studio's design editor. `remove: true` takes them off.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
},
"remove": {
"type": "boolean"
}
},
"required": [
"video"
],
"additionalProperties": false
}🟢video_plan(video)
A video as a plan (JSON): its shots, presenter, style, media ids. Change it and import it back with import_video_plan.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
}
},
"required": [
"video"
],
"additionalProperties": false
}⚪import_video_plan(company, plan)
A whole video at once from a plan (the shape video_plan returns): title, brief, aspect_ratio, style, presenter, shots.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"plan": {
"type": "object"
}
},
"required": [
"plan"
],
"additionalProperties": false
}⚪export_video(video)
A link to a zip of the video's plan and every file it names (works for a week).
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
}
},
"required": [
"video"
],
"additionalProperties": false
}🔴delete_video(video)
Delete a video (its media stay in the library).
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string"
}
},
"required": [
"video"
],
"additionalProperties": false
}🔴update_media(media, title, starred, action)
Rename, star or delete a piece of media; `retry` makes a failed generation again; `cancel` stops one.
입력 스키마
{
"type": "object",
"properties": {
"media": {
"type": "string"
},
"title": {
"type": "string"
},
"starred": {
"type": "boolean"
},
"action": {
"type": "string",
"enum": [
"delete",
"retry",
"cancel"
]
}
},
"required": [
"media"
],
"additionalProperties": false
}🟡convert_video_to_code(video, note)
Cut a video in code: its storyboard compiles to a Remotion project (`engine` remotion, version 1 from the compiler, checked and built where the server has Node). The storyboard, media and direction stay as they are; from here the picture is drawn by the project's scenes, which you edit with write_video_code. On a film that exists it brings src/film.json up to date. Read read_studio_guide {file: 'film-code/SKILL.md'} before editing.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string",
"description": "the video id (list_videos)"
},
"note": {
"type": "string"
}
},
"required": [
"video"
],
"additionalProperties": false
}🟢get_video_code(video, file)
A video's code film (a Remotion project its storyboard compiles to; API contract §91): the version, the head's files (paths), the scenes, the last check (ok, errors with file and line, warnings), the preview link and the latest versions. With `file` (a path, e.g. src/Film.tsx) one file's content and who wrote it. 404 before convert_video_to_code.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string",
"description": "the video id (list_videos)"
},
"file": {
"type": "string",
"description": "a path of the head, for its content"
}
},
"required": [
"video"
],
"additionalProperties": false
}🟡write_video_code(video, files, note)
Write files of a video's code film: `files` [{path, content}] (content null removes a file; paths under src/ ending .ts, .tsx, .js, .jsx, .css or .json; src/film.json, package.json and tsconfig.json are the compiler's and follow the storyboard). A new version is made and checked at once (tsc, the lint, the scene list, the preview build): `check` says ok, or the errors with file and line. Free. Only `@autopo/film`, react, remotion, `@remotion/*`, zod and the film's own files may be imported; words live in film.json, not in code.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string",
"description": "the video id (list_videos)"
},
"files": {
"type": "array",
"minItems": 1,
"maxItems": 40,
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"content": {
"type": [
"string",
"null"
],
"description": "the file's text, or null to remove it"
}
},
"required": [
"path",
"content"
]
}
},
"note": {
"type": "string",
"description": "what changed, for the version list"
}
},
"required": [
"video",
"files"
],
"additionalProperties": false
}🟢check_video_code(video)
Check a video's code film again without changing it: tsc, the lint, the scene list and the preview bundle run on the head. `check` has ok, errors (file, line, shot, message), warnings (craft: a card over 7 words, no hook by 2 s…) and the running time. Free.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string",
"description": "the video id (list_videos)"
}
},
"required": [
"video"
],
"additionalProperties": false
}⚪video_frames(video, frames, every_seconds)
Draw stills of a video's code film as Studio images (free; seconds after the first build): `frames` (frame numbers at the film's fps) or `every_seconds`; neither: the middle of every shot. Up to 12 a call. Needs a passing check. Each result has a url and thumb_url to look at before a render.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string",
"description": "the video id (list_videos)"
},
"frames": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0
},
"maxItems": 12
},
"every_seconds": {
"type": "number",
"minimum": 0.5
}
},
"required": [
"video"
],
"additionalProperties": false
}🟢video_code_versions(video)
Every version of a video's code film, newest first: number, source (compiler, agent, founder, restore), note, files, who made it and when; `head` is the current one.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string",
"description": "the video id (list_videos)"
}
},
"required": [
"video"
],
"additionalProperties": false
}⚪restore_video_code(video, version)
Bring an earlier version of a video's code film back as a new version (source restore), checked at once.
입력 스키마
{
"type": "object",
"properties": {
"video": {
"type": "string",
"description": "the video id (list_videos)"
},
"version": {
"type": "integer",
"minimum": 1,
"description": "a number from video_code_versions"
}
},
"required": [
"video",
"version"
],
"additionalProperties": false
}🟢brand_brain(company)
The brand brain: what the company says about itself, for whom, against whom, in what voice (every writer reads it).
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
}
},
"required": [],
"additionalProperties": false
}🟢list_posts(company, status, account, limit)
Social posts: upcoming, published or failed (`status`), per `account`.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"status": {
"type": "string"
},
"account": {
"type": "string"
},
"limit": {
"type": "integer"
}
},
"required": [],
"additionalProperties": false
}🟢social_accounts(company)
The company's social accounts and networks, and what each account may post on its own.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
}
},
"required": [],
"additionalProperties": false
}🟡check_posts(company, posts)
Run the pre-publish gate on posts you wrote (nothing is posted): each post's review against the brand.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"posts": {
"type": "array",
"items": {
"type": "object"
}
}
},
"required": [
"posts"
],
"additionalProperties": false
}🔴create_posts(company, posts, schedule_at)
Post as yourself (no card): `posts` [{account, text, media?}], now or at `schedule_at` (ISO).
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"posts": {
"type": "array",
"items": {
"type": "object"
}
},
"schedule_at": {
"type": "string"
}
},
"required": [
"posts"
],
"additionalProperties": false
}🟢marketing_learnings(company, status)
What worked and what didn't: the learnings log, newest first.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"status": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}🟢budget(company)
The month's spend against the budget, by agent and kind, and the credits left.
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
}
},
"required": [],
"additionalProperties": false
}🟢ledger(company, kind, agent, page, page_size)
Every charge, newest first (`kind`, `agent` filter).
입력 스키마
{
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "the company id (list_companies); optional when you have one"
},
"kind": {
"type": "string"
},
"agent": {
"type": "string"
},
"page": {
"type": "integer",
"minimum": 1
},
"page_size": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [],
"additionalProperties": false
}🔴api_request(method, path, body, query)
Call any endpoint of the Autopo REST API as yourself: `method`, `path` (starts with /api/, ids filled in), optional JSON `body` and `query`. The contract (read_api_contract) is the manual: use it for anything the other tools don't cover. Writes are real.
입력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": [
"GET",
"POST",
"PATCH",
"PUT",
"DELETE"
]
},
"path": {
"type": "string"
},
"body": {
"type": "object"
},
"query": {
"type": "object"
}
},
"required": [
"method",
"path"
],
"additionalProperties": false
}🟢read_api_contract(section, search)
The REST API contract (docs/API_CONTRACT.md): its table of contents with no arguments; a `section` number (e.g. 17 for the Studio) or a `search` word returns the text.
입력 스키마
{
"type": "object",
"properties": {
"section": {
"type": "string"
},
"search": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}🟢read_studio_guide(file)
The Creative Director's own guide to the Studio (how films, images, voice and music are made, which model for which job): the index with no `file`, or one of its files. Under `film-code/` (SKILL.md, references/*) her guide to code films: the Remotion project a video's storyboard compiles to, the kit, the contract, the recipes. Read it before convert_video_to_code, get_video_code, write_video_code, check_video_code, video_frames, video_code_versions and restore_video_code; the resources under autopoiesis://film-kit/ carry kit.md and contract.md on their own. Under `swipe-file/` the swipe file: the SaaS and B2B spots a film's concepts cite, as structured notes.
입력 스키마
{
"type": "object",
"properties": {
"file": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}커뮤니티
증거