Skip to content

Autopo

io.github.Autopoiesis-ai/mcpAutopoiesis-aistreamable-httpv0.6.1Scanned

Run your AI-run company from Claude Code, Codex, Cursor or ChatGPT: inbox, tasks, team, Studio.

76 tools: 6 can delete or cancel things, 1 do something that can't be undone, 47 change things and 22 only read.

Tools: 6 delete, 1 irreversible, 47 write, 22 read.
  • Reads private data · 8
  • Reads text others write · 10
  • Can send data out · 4
  • No findings

Anlyon alternative

54 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

76 tools

Deletes or cancels 6Claude Code: deny
  • api_requestCall any endpoint of the Autopo REST API as yourself: `method`, `path` (starts with /api/, ids filled in), optional JSON `body` and `query`.No findings

    Why it is in this group

    • The name "api_request" says "request": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Call any endpoint of the Autopo REST API as yourself: `method`, `path` (starts with /api/, ids filled in), optional JSON `body` and `query`. api_reference is the manual: use this for anything the other tools don’t cover. Reads go straight through; anything else is real, so you confirm it in a dialog first.

    Annotations the server declares

    • title: Call the API
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • app_decideDecide a card from the inbox view.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Decide a card from the inbox view. Hidden from the model: the click is the confirmation.

    Annotations the server declares

    • destructiveHint: true
  • cancel_taskCancel a task (and its open subtasks, pending cards and live runs).No findings

    Why it is in this group

    • The name "cancel_task" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel a task (and its open subtasks, pending cards and live runs). `preview: true` only says what it would take. You confirm in a dialog before it is final.

    Annotations the server declares

    • title: Cancel task
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • create_postsPost as yourself (no card): `posts` [{account, text, media?}], now or at `schedule_at` (ISO).Can send data outNo findings

    Why it is in this group

    • The name "create_posts" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • outboundThe name "create_posts" says "create" and "post": it writes something other people read.
    Description, as the server wrote it
    Post as yourself (no card): `posts` [{account, text, media?}], now or at `schedule_at` (ISO). You confirm in a dialog: a post cannot be unpublished from here.

    Annotations the server declares

    • title: Post to social
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • decideDecide an inbox card as the founder: approve, reject (a `note` is required) or cancel.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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. You are asked to confirm in a dialog before it is final.

    Annotations the server declares

    • title: Decide a card
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • delete_videoDelete a video (its media stay in the library).No findings

    Why it is in this group

    • The name "delete_video" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a video (its media stay in the library). You confirm in a dialog.

    Annotations the server declares

    • title: Delete video
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
Can't be undone 1Claude Code: ask
  • continue_chatSend another message in an existing chat and wait for the reply.Can send data outNo findings

    Why it is in this group

    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.

    What it can reach

    • outboundThe description's first verb is "send": it sends or publishes something to other people.
    Description, as the server wrote it
    Send another message in an existing chat and wait for the reply.

    Annotations the server declares

    • title: Continue chat
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
Changes things 47Claude Code: ask
  • activityThe company's activity feed, newest first (who did what, when).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The company's activity feed, newest first (who did what, when). `after`: only events after this ISO time.

    Annotations the server declares

    • title: Activity feed
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • api_referenceThe REST API’s reference (OpenAPI): with no arguments, every endpoint in brief (method, path, summary); `search` narrows by words in the path or summary; `path` (+ `method`) gives …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The REST API’s reference (OpenAPI): with no arguments, every endpoint in brief (method, path, summary); `search` narrows by words in the path or summary; `path` (+ `method`) gives one endpoint’s parameters and body.

    Annotations the server declares

    • title: API reference
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • app_mediaStar, retry or reload media from the gallery view.No findings

    Why it is in this group

    • The description's first verb is "star": a word for a change.
    Description, as the server wrote it
    Star, retry or reload media from the gallery view.

    Annotations the server declares

    • destructiveHint: false
  • app_refresh_inboxReload the pending cards for the inbox view.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Reload the pending cards for the inbox view.

    Annotations the server declares

    • readOnlyHint: true
  • app_videoReload a video, or act on it: keyframes, make media, critique, render.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Reload a video, or act on it: keyframes, make media, critique, render. The click is the confirmation.

    Annotations the server declares

    • destructiveHint: false
  • apply_chat_actionApply 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`.No findings

    Why it is in this group

    • The name "apply_chat_action" says "apply": a word for a change.
    Description, as the server wrote it
    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. Applying can start work or spend credits, so you confirm in a dialog.

    Annotations the server declares

    • title: Apply a chat proposal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • artifact_feedbackAsk for a revision of an artifact: a task for the agent who made it; the change lands as a new version.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Ask for a revision of an artifact: a task for the agent who made it; the change lands as a new version.

    Annotations the server declares

    • title: Ask for a revision
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ask_agentStart a chat with an agent (list_agents) and wait for the answer.No findings

    Why it is in this group

    • The description's first verb is "start": a word for a change.
    Description, as the server wrote it
    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 300) is how long to wait for the reply.

    Annotations the server declares

    • title: Ask an agent
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • attach_mediaPut a library item on one shot: `media` (an image or clip: the shot's picture, as footage) or `voice` (an audio item: the shot's line).No findings

    Why it is in this group

    • The name "attach_media" says "attach": a word for a change.
    Description, as the server wrote it
    Put a library item on one shot: `media` (an image or clip: the shot's picture, as footage) or `voice` (an audio item: the shot's line). The other shots stay as they are. `keep_audio: true` keeps the clip's own sound under the voice-over.

    Annotations the server declares

    • title: Put media on a shot
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • brand_brainThe brand brain: what the company says about itself, for whom, against whom, in what voice (every writer reads it).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The brand brain: what the company says about itself, for whom, against whom, in what voice (every writer reads it).

    Annotations the server declares

    • title: Brand brain
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • brief_me_nowAsk the CEO for a fresh briefing since your last one (at most 3 a day).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Brief me now
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • budgetThe month’s spend against the budget, by agent and kind, and the credits left.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The month’s spend against the budget, by agent and kind, and the credits left.

    Annotations the server declares

    • title: Budget
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • buy_creditsOpen a checkout in your browser to add credits to a company (1 credit = $1).No findings

    Why it is in this group

    • The description's first verb is "open": a word for a change.
    Description, as the server wrote it
    Open a checkout in your browser to add credits to a company (1 credit = $1). Nothing is charged until you pay there.

    Annotations the server declares

    • title: Buy credits
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • check_postsRun the pre-publish gate on posts you wrote (nothing is posted): each post’s review against the brand.Can send data outNo findings

    Why it is in this group

    • The name "check_posts" says "post": a word for a change.

    What it can reach

    • outboundThe name "check_posts" says "post": it sends or publishes something to other people.
    Description, as the server wrote it
    Run the pre-publish gate on posts you wrote (nothing is posted): each post’s review against the brand.

    Annotations the server declares

    • title: Check posts
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • check_video_codeCheck a video's code film again without changing it: tsc, the lint, the scene list and the preview bundle run on the head.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Check video code
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • comment_on_decisionAsk the team something about a card before deciding; the requesting agent answers.No findings

    Why it is in this group

    • The name "comment_on_decision" says "comment": a word for a change.
    Description, as the server wrote it
    Ask the team something about a card before deciding; the requesting agent answers.

    Annotations the server declares

    • title: Comment on a card
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • comment_on_taskWrite in a task's thread as the founder: the assignee reads it and answers (a comment wakes them).No findings

    Why it is in this group

    • The name "comment_on_task" says "comment": a word for a change.
    Description, as the server wrote it
    Write in a task's thread as the founder: the assignee reads it and answers (a comment wakes them).

    Annotations the server declares

    • title: Comment on task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • company_overviewThe company: its charter, stage, team, budget and gates.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The company: its charter, stage, team, budget and gates.

    Annotations the server declares

    • title: Company overview
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • convert_video_to_codeOverride how a video is cut: the Creative Director picks per film (`cut_choice` on get_video), so call this only when the person asks for a code film, and leave a film she chose al…No findings

    Why it is in this group

    • The name "convert_video_to_code" says "convert": a word for a change.
    Description, as the server wrote it
    Override how a video is cut: the Creative Director picks per film (`cut_choice` on get_video), so call this only when the person asks for a code film, and leave a film she chose alone otherwise. 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 the guide (autopoiesis://guide/code-film) before editing.

    Annotations the server declares

    • title: Cut in code
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_taskGive 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.No findings

    Why it is in this group

    • The name "create_task" says "create": a word for a change.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Create task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_videoStart 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.No findings

    Why it is in this group

    • The name "create_video" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create video
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • critique_videoThe critic judges the latest generated takes (`stage` keyframes or clips) against each shot’s direction and puts the best on the shot.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    The critic judges the latest generated takes (`stage` keyframes or clips) against each shot’s direction and puts the best on the shot. `stage` cut is the audience review of the render, for any film, generated or not: the viewer it is made for watches it and answers a fixed checklist, naming the shot and the change for each miss (a little model time, billed like an agent’s).

    Annotations the server declares

    • title: Critique takes or the cut
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • design_video_cardsMake (or re-sync) the cards drawn over a video’s shots, one scene per shot, editable in the Studio’s design editor.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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 (you confirm in a dialog).

    Annotations the server declares

    • title: Design the cards
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • export_videoA link to a zip of the video’s plan and every file it names (works for a week).No findings

    Why it is in this group

    • The description's first verb is "link": a word for a change.
    Description, as the server wrote it
    A link to a zip of the video’s plan and every file it names (works for a week).

    Annotations the server declares

    • title: Export video
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • founder_homeWhat 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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'.

    Annotations the server declares

    • title: Founder home
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • generate_mediaMake an image, a clip, a voice line or music in the Studio (spends credits; you confirm the cost in a dialog): `kind`, a `prompt`, optionally a `model` (studio_overview), `aspect_r…No findings

    Why it is in this group

    • The name "generate_media" says "generate": a word for a change.
    Description, as the server wrote it
    Make an image, a clip, a voice line or music in the Studio (spends credits; you confirm the cost in a dialog): `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.

    Annotations the server declares

    • title: Generate media
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • import_video_planA whole video at once from a plan (the shape video_plan returns: title, brief, aspect_ratio, style, presenter, shots).Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "import_video_plan" says "import": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    A whole video at once from a plan (the shape video_plan returns: title, brief, aspect_ratio, style, presenter, shots). Give the `plan` as JSON, or a `path` on this machine (a zip with plan.json and the files it names as file:…, a plan.json with those files beside it, or the folder holding them), or a `url` to such a zip or plan.json. Footage, voice tracks and icons the plan names are uploaded first (in chunks, any size), then the plan is imported with their media ids.

    Annotations the server declares

    • title: Import a video plan
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • ledgerEvery charge, newest first (`kind`, `agent` filter).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Every charge, newest first (`kind`, `agent` filter).

    Annotations the server declares

    • title: Ledger
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • make_video_mediaMake what a video still lacks (spends credits; you confirm the cost in a dialog): `what` all (clips and voice lines), visuals, voice, or music (composed from the style’s music cue)…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Make what a video still lacks (spends credits; you confirm the cost in a dialog): `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. Then wait_for_video.

    Annotations the server declares

    • title: Make the video’s media
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • marketing_learningsWhat worked and what didn’t: the learnings log, newest first.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    What worked and what didn’t: the learnings log, newest first.

    Annotations the server declares

    • title: Marketing learnings
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • nudge_runSteer a run that is still going: a line of guidance the agent reads at its next step.No findings

    Why it is in this group

    • The name "nudge_run" says "run": a word for a change.
    Description, as the server wrote it
    Steer a run that is still going: a line of guidance the agent reads at its next step.

    Annotations the server declares

    • title: Nudge a run
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • open_in_appOpen a place in the Autopo web app in your browser: `what` is home, hive, inbox, task, work, team, chat, studio, video, marketing, social, money, connectors or settings; `id` the c…Reads text others writeNo findings

    Why it is in this group

    • The name "open_in_app" says "open": a word for a change.

    What it can reach

    • untrusted-inputThe description's first sentence says "open" and "web": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Open a place in the Autopo web app in your browser: `what` is home, hive, inbox, task, work, team, chat, studio, video, marketing, social, money, connectors or settings; `id` the card, task, chat or video when there is one.

    Annotations the server declares

    • title: Open in the app
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • render_videoCut the video into one MP4 (free).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Cut the video into one MP4 (free). get_video says what is missing when it refuses; the render takes a minute or two: wait_for_video. 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.

    Annotations the server declares

    • title: Render video
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • restore_video_codeBring an earlier version of a video's code film back as a new version (source restore), checked at once.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Bring an earlier version of a video's code film back as a new version (source restore), checked at once.

    Annotations the server declares

    • title: Restore video code
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • set_video_shotsReplace a video's storyboard: shots in order, each {visual: generate|footage|title|presenter, prompt, voiceover, on_screen_text, duration_seconds, media?, voice?, direction?, keep_…No findings

    Why it is in this group

    • The name "set_video_shots" says "set": a word for a change.
    Description, as the server wrote it
    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; a shot without one is new.

    Annotations the server declares

    • title: Set the storyboard
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • social_accountsThe company’s social accounts and networks, and what each account may post on its own.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The company’s social accounts and networks, and what each account may post on its own.

    Annotations the server declares

    • title: Social accounts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • studio_overviewThe 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 whethe…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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`).

    Annotations the server declares

    • title: Studio overview
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • studio_settingsChange 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).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Studio settings
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • update_mediaRename, star or delete a piece of media; `retry` makes a failed generation again (it spends credits again: you confirm in a dialog); `cancel` stops one.No findings

    Why it is in this group

    • The name "update_media" says "update": a word for a change.
    Description, as the server wrote it
    Rename, star or delete a piece of media; `retry` makes a failed generation again (it spends credits again: you confirm in a dialog); `cancel` stops one.

    Annotations the server declares

    • title: Update media
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • update_taskChange a task: its title, description, status, priority, assignee or criteria.No findings

    Why it is in this group

    • The name "update_task" says "update": a word for a change.
    Description, as the server wrote it
    Change a task: its title, description, status, priority, assignee or criteria. To cancel one, use cancel_task.

    Annotations the server declares

    • title: Update task
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • update_videoChange 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,…No findings

    Why it is in this group

    • The name "update_video" says "update": a word for a change.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Update video
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • upload_mediaPut your own files into the Studio library: recordings, screen captures, photos, a voice track, music.Reads text others writeNo findings

    Why it is in this group

    • The name "upload_media" says "upload": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Put your own files into the Studio library: recordings, screen captures, photos, a voice track, music. Each item is a `path` on the machine this server runs on (a file, or a folder: every image, clip and audio file in it, in name order; you confirm the list in a dialog before anything leaves the machine) or a public `url`. Only images, clips and audio can be uploaded. The server uploads them itself, in 8 MB chunks, straight to the platform. With `video`, the files belong to that video; an item's `shot` (a shot id) puts it on that shot (a clip or image becomes the shot's picture as footage, audio becomes its voice line); `in_order: true` puts the files, in order, on the video's shots that have no picture yet. Returns the media ids (processing for a moment, then ready; wait_for_video waits for them).

    Annotations the server declares

    • title: Upload your files
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • video_code_versionsEvery 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Video code versions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • video_framesDraw 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 eve…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Video frames
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • video_keyframesMake the keyframes first (a still of each generate shot’s first frame, cents each; you confirm in a dialog) so the look is locked before clips are paid for.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Make the keyframes first (a still of each generate shot’s first frame, cents each; you confirm in a dialog) so the look is locked before clips are paid for. `shots`: shot ids, default every shot without one.

    Annotations the server declares

    • title: Make keyframes
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • video_planA video as a plan (JSON): its shots, presenter, style, media ids.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    A video as a plan (JSON): its shots, presenter, style, media ids. Change it and import it back with import_video_plan.

    Annotations the server declares

    • title: Video plan
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • write_video_codeWrite 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…No findings

    Why it is in this group

    • The name "write_video_code" says "write": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Write video code
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
Only reads 22Show 22 read-only tools
  • get_artifactOne artifact in full (its body, content, version, who made it).No findings

    Why it is in this group

    • The name "get_artifact" says "get": a word for reading.
    Description, as the server wrote it
    One artifact in full (its body, content, version, who made it).

    Annotations the server declares

    • title: Get artifact
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_briefingOne briefing: its sections, the decisions it asked for, and what was said.No findings

    Why it is in this group

    • The name "get_briefing" says "get": a word for reading.
    Description, as the server wrote it
    One briefing: its sections, the decisions it asked for, and what was said.

    Annotations the server declares

    • title: Get briefing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_decisionOne inbox card in full: the ask, the agent's case, the options, the work behind it.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "get_decision" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "inbox": it reads mail.
    • untrusted-inputThe description's first sentence says "inbox": it reads inbound email, which other people can write.
    Description, as the server wrote it
    One inbox card in full: the ask, the agent's case, the options, the work behind it.

    Annotations the server declares

    • title: Get decision
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_mediaOne piece of media: its prompt, model, settings, link and state.No findings

    Why it is in this group

    • The name "get_media" says "get": a word for reading.
    Description, as the server wrote it
    One piece of media: its prompt, model, settings, link and state.

    Annotations the server declares

    • title: Get media
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_runOne run: its status, cost, and its events (tool calls, text) from `after_seq`.No findings

    Why it is in this group

    • The name "get_run" says "get": a word for reading.
    Description, as the server wrote it
    One run: its status, cost, and its events (tool calls, text) from `after_seq`.

    Annotations the server declares

    • title: Get run
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_taskOne task in full: description, criteria, status, the thread's last comments, its pull requests and deliverables.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "get_task" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "thread": it reads messages.
    • untrusted-inputThe description's first sentence says "thread": it reads messages, which other people can write.
    Description, as the server wrote it
    One task in full: description, criteria, status, the thread's last comments, its pull requests and deliverables.

    Annotations the server declares

    • title: Get task
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_videoA 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…No findings

    Why it is in this group

    • The name "get_video" says "get": a word for reading.
    Description, as the server wrote it
    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), `cut_choice` who chose that and why (the Creative Director picks per film; `engine` follows when she reaches the cut), and `code` where a code film stands (version, checked, errors; get_video_code for the project).

    Annotations the server declares

    • title: Get video
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_video_codeA video's code film (a Remotion project its storyboard compiles to): the version, the head's files (paths), the scenes, the last check (ok, errors with file and line, warnings), th…Reads private dataNo findings

    Why it is in this group

    • The name "get_video_code" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "file": it reads files.
    • private-dataThe input names a file (input.file), and the tool reads: it reads files.
    Description, as the server wrote it
    A video's code film (a Remotion project its storyboard compiles to): 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.

    Annotations the server declares

    • title: Get video code
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_agentsThe team: every agent with its role, title, state and whether it is on.No findings

    Why it is in this group

    • The name "list_agents" says "list": a word for reading.
    Description, as the server wrote it
    The team: every agent with its role, title, state and whether it is on. Chat with one through ask_agent.

    Annotations the server declares

    • title: List agents
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_artifactsWhat the team made: documents, research, decks, tables, videos, designs (`type`), delivered work, `q` searches, `starred` only yours.Reads private dataNo findings

    Why it is in this group

    • The name "list_artifacts" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "document": it reads documents.
    Description, as the server wrote it
    What the team made: documents, research, decks, tables, videos, designs (`type`), delivered work, `q` searches, `starred` only yours.

    Annotations the server declares

    • title: List artifacts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_briefingsThe CEO's board briefings (spoken updates), newest first, with their text.No findings

    Why it is in this group

    • The name "list_briefings" says "list": a word for reading.
    Description, as the server wrote it
    The CEO's board briefings (spoken updates), newest first, with their text.

    Annotations the server declares

    • title: List briefings
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_chatsYour chats across the team (pinned first, then recent); `q` searches titles and content.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "list_chats" says "list": a word for reading.

    What it can reach

    • private-dataThe name "list_chats" says "list" and "chat": it reads messages.
    • private-dataThe description's first sentence says "chat": it reads messages.
    • untrusted-inputThe name "list_chats" says "list" and "chat": it reads messages, which other people can write.
    • untrusted-inputThe description's first sentence says "chat": it reads messages, which other people can write.
    Description, as the server wrote it
    Your chats across the team (pinned first, then recent); `q` searches titles and content.

    Annotations the server declares

    • title: List chats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_companiesThe companies you belong to (id, name, stage, kind).No findings

    Why it is in this group

    • The name "list_companies" says "list": a word for reading.
    Description, as the server wrote it
    The companies you belong to (id, name, stage, kind). Other tools take `company`: one of these ids. Start here.

    Annotations the server declares

    • title: List companies
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_decisionsThe Board inbox: cards waiting for you (`status` pending, default), or decided ones.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "list_decisions" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "inbox": it reads mail.
    • untrusted-inputThe description's first sentence says "inbox": it reads inbound email, which other people can write.
    Description, as the server wrote it
    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`.

    Annotations the server declares

    • title: Inbox
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_mediaThe media library: images, clips, voice lines and music, with filters (`kind` image|video|audio, `source` generated|uploaded|recorded|rendered, `q`, `starred`).No findings

    Why it is in this group

    • The name "list_media" says "list": a word for reading.
    Description, as the server wrote it
    The media library: images, clips, voice lines and music, with filters (`kind` image|video|audio, `source` generated|uploaded|recorded|rendered, `q`, `starred`).

    Annotations the server declares

    • title: Media library
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_postsSocial posts: upcoming, published or failed (`status`), per `account`.Reads text others writeNo findings

    Why it is in this group

    • The name "list_posts" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe name "list_posts" says "list" and "post": it reads posts, which other people can write.
    • untrusted-inputThe description's first sentence says "post": it reads posts, which other people can write.
    Description, as the server wrote it
    Social posts: upcoming, published or failed (`status`), per `account`.

    Annotations the server declares

    • title: List posts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_runsAgent runs: `status` active (queued, running), finished, or a comma list; `agent` an agent id.No findings

    Why it is in this group

    • The name "list_runs" says "list": a word for reading.
    Description, as the server wrote it
    Agent runs: `status` active (queued, running), finished, or a comma list; `agent` an agent id.

    Annotations the server declares

    • title: List runs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_tasksThe work board: tasks by status, assignee role or goal; `q` searches titles; `mine: true` only what you asked for (your requests).No findings

    Why it is in this group

    • The name "list_tasks" says "list": a word for reading.
    Description, as the server wrote it
    The work board: tasks by status, assignee role or goal; `q` searches titles; `mine: true` only what you asked for (your requests).

    Annotations the server declares

    • title: List tasks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_videosThe Studio's videos (productions): title, status, shape, length.No findings

    Why it is in this group

    • The name "list_videos" says "list": a word for reading.
    Description, as the server wrote it
    The Studio's videos (productions): title, status, shape, length.

    Annotations the server declares

    • title: List videos
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • read_chatA chat's messages, oldest first (the last reply's status says whether it is still answering).Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "read_chat" says "read": a word for reading.

    What it can reach

    • private-dataThe name "read_chat" says "read" and "chat": it reads messages.
    • private-dataThe description's first sentence says "chat": it reads messages.
    • untrusted-inputThe name "read_chat" says "read" and "chat": it reads messages, which other people can write.
    • untrusted-inputThe description's first sentence says "chat": it reads messages, which other people can write.
    Description, as the server wrote it
    A chat's messages, oldest first (the last reply's status says whether it is still answering).

    Annotations the server declares

    • title: Read chat
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • wait_for_videoWait while a video’s media or render is being made (up to `wait_seconds`, default 60, max 120) and return where it stands: shots generating, the render, what is still missing.No findings

    Why it is in this group

    • The name "wait_for_video" says "wait": a word for reading.
    Description, as the server wrote it
    Wait while a video’s media or render is being made (up to `wait_seconds`, default 60, max 120) and return where it stands: shots generating, the render, what is still missing. Call it again if it is still going.

    Annotations the server declares

    • title: Wait for the video
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • whoamiThe signed-in person: name, email, preferences, and how many companies they are in.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "whoami" says "whoami": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "email": it reads mail.
    • untrusted-inputThe description's first sentence says "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    The signed-in person: name, email, preferences, and how many companies they are in.

    Annotations the server declares

    • title: Who am I
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

320 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 4 outbound tools breaks every one.

Reads private data8
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write10
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out4
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__autopoiesis-ai__check_posts",
      "mcp__autopoiesis-ai__continue_chat",
      "mcp__autopoiesis-ai__create_posts",
      "mcp__autopoiesis-ai__import_video_plan"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

  1. Tools11 added, 2 removed, 65 changed.+11 added−2 removed~65 changedView diff

Install

Pinned to version 0.6.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http autopoiesis-ai https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp --header 'Authorization: <your-authorization>'
claude mcp add --transport http autopoiesis-ai https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__autopoiesis-ai__list_companies",
      "mcp__autopoiesis-ai__whoami",
      "mcp__autopoiesis-ai__list_briefings",
      "mcp__autopoiesis-ai__get_briefing",
      "mcp__autopoiesis-ai__list_decisions",
      "mcp__autopoiesis-ai__get_decision",
      "mcp__autopoiesis-ai__list_tasks",
      "mcp__autopoiesis-ai__get_task",
      "mcp__autopoiesis-ai__list_agents",
      "mcp__autopoiesis-ai__read_chat",
      "mcp__autopoiesis-ai__list_chats",
      "mcp__autopoiesis-ai__list_runs",
      "mcp__autopoiesis-ai__get_run",
      "mcp__autopoiesis-ai__list_artifacts",
      "mcp__autopoiesis-ai__get_artifact",
      "mcp__autopoiesis-ai__list_media",
      "mcp__autopoiesis-ai__get_media",
      "mcp__autopoiesis-ai__list_videos",
      "mcp__autopoiesis-ai__get_video",
      "mcp__autopoiesis-ai__wait_for_video",
      "mcp__autopoiesis-ai__get_video_code",
      "mcp__autopoiesis-ai__list_posts"
    ],
    "ask": [
      "mcp__autopoiesis-ai__founder_home",
      "mcp__autopoiesis-ai__company_overview",
      "mcp__autopoiesis-ai__activity",
      "mcp__autopoiesis-ai__brief_me_now",
      "mcp__autopoiesis-ai__comment_on_decision",
      "mcp__autopoiesis-ai__create_task",
      "mcp__autopoiesis-ai__update_task",
      "mcp__autopoiesis-ai__comment_on_task",
      "mcp__autopoiesis-ai__ask_agent",
      "mcp__autopoiesis-ai__continue_chat",
      "mcp__autopoiesis-ai__apply_chat_action",
      "mcp__autopoiesis-ai__nudge_run",
      "mcp__autopoiesis-ai__artifact_feedback",
      "mcp__autopoiesis-ai__studio_overview",
      "mcp__autopoiesis-ai__studio_settings",
      "mcp__autopoiesis-ai__generate_media",
      "mcp__autopoiesis-ai__create_video",
      "mcp__autopoiesis-ai__set_video_shots",
      "mcp__autopoiesis-ai__upload_media",
      "mcp__autopoiesis-ai__attach_media",
      "mcp__autopoiesis-ai__update_video",
      "mcp__autopoiesis-ai__make_video_media",
      "mcp__autopoiesis-ai__video_keyframes",
      "mcp__autopoiesis-ai__critique_video",
      "mcp__autopoiesis-ai__render_video",
      "mcp__autopoiesis-ai__design_video_cards",
      "mcp__autopoiesis-ai__video_plan",
      "mcp__autopoiesis-ai__import_video_plan",
      "mcp__autopoiesis-ai__export_video",
      "mcp__autopoiesis-ai__update_media",
      "mcp__autopoiesis-ai__convert_video_to_code",
      "mcp__autopoiesis-ai__write_video_code",
      "mcp__autopoiesis-ai__check_video_code",
      "mcp__autopoiesis-ai__video_frames",
      "mcp__autopoiesis-ai__video_code_versions",
      "mcp__autopoiesis-ai__restore_video_code",
      "mcp__autopoiesis-ai__brand_brain",
      "mcp__autopoiesis-ai__social_accounts",
      "mcp__autopoiesis-ai__check_posts",
      "mcp__autopoiesis-ai__marketing_learnings",
      "mcp__autopoiesis-ai__budget",
      "mcp__autopoiesis-ai__ledger",
      "mcp__autopoiesis-ai__buy_credits",
      "mcp__autopoiesis-ai__api_reference",
      "mcp__autopoiesis-ai__open_in_app",
      "mcp__autopoiesis-ai__app_refresh_inbox",
      "mcp__autopoiesis-ai__app_video",
      "mcp__autopoiesis-ai__app_media"
    ],
    "deny": [
      "mcp__autopoiesis-ai__decide",
      "mcp__autopoiesis-ai__cancel_task",
      "mcp__autopoiesis-ai__delete_video",
      "mcp__autopoiesis-ai__create_posts",
      "mcp__autopoiesis-ai__api_request",
      "mcp__autopoiesis-ai__app_decide"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as autopoiesis-ai. Review it before you use it.

Capability tags behind 15 rules
  • mcp__autopoiesis-ai__whoami private-data, untrusted-input
  • mcp__autopoiesis-ai__list_decisions private-data, untrusted-input
  • mcp__autopoiesis-ai__get_decision private-data, untrusted-input
  • mcp__autopoiesis-ai__get_task private-data, untrusted-input
  • mcp__autopoiesis-ai__continue_chat outbound
  • mcp__autopoiesis-ai__read_chat private-data, untrusted-input
  • mcp__autopoiesis-ai__list_chats private-data, untrusted-input
  • mcp__autopoiesis-ai__list_artifacts private-data
  • mcp__autopoiesis-ai__upload_media untrusted-input
  • mcp__autopoiesis-ai__import_video_plan untrusted-input, outbound
  • mcp__autopoiesis-ai__get_video_code private-data
  • mcp__autopoiesis-ai__list_posts untrusted-input
  • mcp__autopoiesis-ai__check_posts outbound
  • mcp__autopoiesis-ai__create_posts outbound
  • mcp__autopoiesis-ai__open_in_app untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.github.Autopoiesis-ai/mcp/verify?hash=e9f088d7a60bb0d32aad38a2250e3b96874e79a614f4151690724bb233ac4a4f" | jq -e '.changed == false'

Pinned hash e9f088d7a60b, from Nov 2, 2026, 11:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.github.Autopoiesis-ai/mcp/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.github.Autopoiesis-ai/mcp
[![anlyon.dev](https://anlyon.dev/badge/io.github.Autopoiesis-ai/mcp.svg)](https://anlyon.dev/servers/io.github.Autopoiesis-ai/mcp)

Source: MCP Registry. Synced Nov 2, 2026, 11:17 UTC.