# Autopo (remote · autopoiesis-mcp-267405155162.us-west1.run.app)

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

- Trust score: 75/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `autopoiesis-mcp-267405155162.us-west1.run.app`: 75/100 (this document), [markdown](https://verifymcp.io/servers/autopoiesis-ai-mcp/autopoiesis-mcp-267405155162.md), [page](https://verifymcp.io/servers/autopoiesis-ai-mcp/autopoiesis-mcp-267405155162)
- npm · `@autopo/mcp`: 34/100, [markdown](https://verifymcp.io/servers/autopoiesis-ai-mcp/autopo-mcp.md), [page](https://verifymcp.io/servers/autopoiesis-ai-mcp/autopo-mcp)

## Channel facts

- Endpoint: `https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp`
- Transports: `streamable-http`
- Auth: `required (not validated)`
- Version: `0.6.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 76/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (fair).
  - Tool/resource definitions use about 9656 tokens (~87/item across 110 items; 99 tools + 11 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 10/100
  - Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 80/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 31% of tool parameters carry a description.
  - Structured output schemas are declared (95% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 101 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).
  - Supports UI / widget rendering.

## Install

### How do I install the Autopo MCP server?

Autopo is a hosted endpoint at https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http autopoiesis-ai-mcp 'https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "autopoiesis-ai-mcp": {
      "url": "https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "autopoiesis-ai-mcp": {
      "type": "http",
      "url": "https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.autopoiesis-ai-mcp]
url = "https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "autopoiesis-ai-mcp": {
      "type": "remote",
      "url": "https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add autopoiesis-ai-mcp --url 'https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  autopoiesis-ai-mcp:
    url: "https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "autopoiesis-ai-mcp": {
      "Transport": "http",
      "Url": "https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add autopoiesis-ai-mcp -t streamable-http -u 'https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp'
```

### Other

```json
{
  "mcpServers": {
    "autopoiesis-ai-mcp": {
      "type": "http",
      "url": "https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 75, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] New tool “answer_errand”, which the server declares destructive
- [security] Tool “create_artifact” rewrote its description, which is the text the model reads
- [security] Tool “get_artifact” rewrote its description, which is the text the model reads
- [security] Tool “share_artifact” rewrote its description, which is the text the model reads
- [security] Tool “revise_artifact” rewrote its description, which is the text the model reads
- [security] Tool “open_in_app” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 7107 → 9656
- [functional regression] Schema quality: 7107 → 9534
- [functional improvement] Tool coverage: 25% → 31%
- [functional] Schema quality: fair → good
- [functional] New resource “artifact-view”
- [functional] Server version: 0.6.2 → 0.6.3
- [functional] Server version: 0.6.1 → 0.6.2
- [functional] New tool “app_artifact”
- [functional] New tool “manage_competitor”
- [functional] New tool “chat_coworkers”
- [functional] New tool “competitors”
- [functional] New tool “connect_shopify”
- [functional] New tool “create_artifact”
- [functional] New tool “draft_errand”
- [functional] New tool “errand_sign_in”
- [functional] New tool “get_errand”
- [functional] New tool “list_errands”
- [functional] New tool “list_members”
- [functional] New tool “plan”
- [functional] New tool “plan_settings”
- [functional] New tool “revise_artifact”
- [functional] New tool “share_artifact”
- [functional] New tool “shopify_store”
- [functional] New tool “start_errand”
- [functional] New tool “sync_shopify”
- [functional] New tool “unshare_artifact”
- [functional] New tool “artifact_links”
- [functional] New tool “billing_page”
- [functional] New tool “change_plan”

### 2026-11-03 (score 74, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-11-02 (score 73)

First indexed and scored.

## MCP tools (99)

### `list_companies` (~37 tokens)

List companies

The companies you belong to (id, name, stage, kind). Other tools take `company`: one of these ids. Start here.

### `whoami` (~27 tokens)

Who am I

The signed-in person: name, email, preferences, and how many companies they are in.

### `founder_home` (~76 tokens)

Founder home

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'.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `company_overview` (~49 tokens)

Company overview

The company: its charter, stage, team, budget and gates.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `activity` (~71 tokens)

Activity feed

The company's activity feed, newest first (who did what, when). `after`: only events after this ISO time.

Input parameters:

- `after` (string)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `limit` (integer)

### `list_briefings` (~66 tokens)

List briefings

The CEO's board briefings (spoken updates), newest first, with their text.

Input parameters:

- `before` (string): ISO time: older than this
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `get_briefing` (~34 tokens)

Get briefing

One briefing: its sections, the decisions it asked for, and what was said.

Input parameters:

- `briefing` (string, required)

### `brief_me_now` (~74 tokens)

Brief me now

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.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `list_decisions` (~109 tokens)

Inbox

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`.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `page` (integer)
- `page_size` (integer)
- `status` (string): pending (default), decided, or a comma list

### `get_decision` (~38 tokens)

Get decision

One inbox card in full: the ask, the agent's case, the options, the work behind it.

Input parameters:

- `decision` (string, required)

### `decide` (~117 tokens)

Decide a card

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.

Input parameters:

- `answer`: for a question card: the chosen option value
- `choice` (string, required)
- `decision` (string, required): the card's id
- `edited_input` (object)
- `note` (string)

### `comment_on_decision` (~39 tokens)

Comment on a card

Ask the team something about a card before deciding; the requesting agent answers.

Input parameters:

- `body` (string, required)
- `decision` (string, required)

### `list_tasks` (~120 tokens)

List tasks

The work board: tasks by status, assignee role or goal; `q` searches titles; `mine: true` only what you asked for (your requests).

Input parameters:

- `assignee` (string): a role key, e.g. engineer
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `mine` (boolean)
- `page` (integer)
- `page_size` (integer)
- `q` (string)
- `status` (string)

### `get_task` (~47 tokens)

Get task

One task in full: description, criteria, status, the thread's last comments, its pull requests and deliverables.

Input parameters:

- `task` (string, required): its id or key (AUTO-12)

### `create_task` (~125 tokens)

Create task

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).

Input parameters:

- `acceptance_criteria` (array)
- `assignee` (string)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `description` (string)
- `goal` (string)
- `priority` (string)
- `title` (string, required)

### `update_task` (~86 tokens)

Update task

Change a task: its title, description, status, priority, assignee or criteria. To cancel one, use cancel_task.

Input parameters:

- `acceptance_criteria` (array)
- `assignee` (string)
- `description` (string)
- `priority` (string)
- `status` (string)
- `task` (string, required)
- `title` (string)

### `comment_on_task` (~46 tokens)

Comment on task

Write in a task's thread as the founder: the assignee reads it and answers (a comment wakes them).

Input parameters:

- `body` (string, required)
- `task` (string, required)

### `cancel_task` (~67 tokens)

Cancel task

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.

Input parameters:

- `preview` (boolean)
- `reason` (string)
- `task` (string, required)

### `list_agents` (~59 tokens)

List agents

The team: every agent with its role, title, state and whether it is on. Chat with one through ask_agent.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `ask_agent` (~169 tokens)

Ask an agent

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.

Input parameters:

- `agent` (string, required)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `message` (string, required)
- `production` (string)
- `wait_seconds` (integer)

### `continue_chat` (~43 tokens)

Continue chat

Send another message in an existing chat and wait for the reply.

Input parameters:

- `chat` (string, required)
- `message` (string, required)
- `wait_seconds` (integer)

### `read_chat` (~47 tokens)

Read chat

A chat's messages, oldest first (the last reply's status says whether it is still answering).

Input parameters:

- `chat` (string, required)
- `last` (integer): only the last N messages

### `list_chats` (~70 tokens)

List chats

Your chats across the team (pinned first, then recent); `q` searches titles and content.

Input parameters:

- `agent` (string)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `q` (string)

### `apply_chat_action` (~98 tokens)

Apply a chat proposal

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.

Input parameters:

- `action` (string, required)
- `dismiss` (boolean)
- `edits` (object)

### `list_runs` (~89 tokens)

List runs

Agent runs: `status` active (queued, running), finished, or a comma list; `agent` an agent id.

Input parameters:

- `agent` (string)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `page` (integer)
- `page_size` (integer)
- `status` (string)

### `get_run` (~58 tokens)

Get run

One run: its status, cost, and its events (tool calls, text) from `after_seq`.

Input parameters:

- `after_seq` (integer)
- `events` (boolean): include the events (default true)
- `run` (string, required)

### `nudge_run` (~44 tokens)

Nudge a run

Steer a run that is still going: a line of guidance the agent reads at its next step.

Input parameters:

- `guidance` (string, required)
- `run` (string, required)

### `list_artifacts` (~113 tokens)

List artifacts

What the team made: documents, research, decks, tables, videos, designs (`type`), delivered work, `q` searches, `starred` only yours.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `page` (integer)
- `page_size` (integer)
- `q` (string)
- `starred` (boolean)
- `status` (string)
- `type` (string)

### `get_artifact` (~44 tokens)

Get artifact

One artifact in full (its body, content, version, who made it), with `app_url`: its page in the web app.

Input parameters:

- `artifact` (string, required)

### `artifact_feedback` (~47 tokens)

Ask for a revision

Ask for a revision of an artifact: a task for the agent who made it; the change lands as a new version.

Input parameters:

- `artifact` (string, required)
- `body` (string, required)

### `studio_overview` (~87 tokens)

Studio overview

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`).

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `studio_settings` (~89 tokens)

Studio settings

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).

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `default_models` (object)
- `voice` (string)

### `list_media` (~129 tokens)

Media library

The media library: images, clips, voice lines and music, with filters (`kind` image|video|audio, `source` generated|uploaded|recorded|rendered, `q`, `starred`).

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `kind` (string)
- `page` (integer)
- `page_size` (integer)
- `purpose` (string)
- `q` (string)
- `source` (string)
- `starred` (boolean)

### `get_media` (~31 tokens)

Get media

One piece of media: its prompt, model, settings, link and state.

Input parameters:

- `media` (string, required)

### `generate_media` (~229 tokens)

Generate media

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.

Input parameters:

- `aspect_ratio` (string)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `count` (integer)
- `duration` (number)
- `kind` (string, required)
- `model` (string)
- `production` (string)
- `prompt` (string, required)
- `purpose` (string)
- `references` (array)
- `shot` (string)
- `title` (string)
- `voice` (string)

### `list_videos` (~51 tokens)

List videos

The Studio's videos (productions): title, status, shape, length.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `get_video` (~136 tokens)

Get 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), `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).

Input parameters:

- `video` (string, required)

### `create_video` (~219 tokens)

Create video

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.

Input parameters:

- `aspect_ratio` (string)
- `brief` (string, required)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `draft` (boolean)
- `engine` (string): only when the person asks for a method: remotion is a code film, ffmpeg the joiner; otherwise the Creative Director picks
- `seconds` (integer)
- `style` (object)
- `title` (string, required)

### `set_video_shots` (~90 tokens)

Set the storyboard

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.

Input parameters:

- `shots` (array, required)
- `video` (string, required)

### `upload_media` (~269 tokens)

Upload your files

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).

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `files` (array, required)
- `in_order` (boolean): put the files, in order, on the shots without a picture
- `video` (string): the video the files are for (optional)

### `attach_media` (~108 tokens)

Put media on a shot

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.

Input parameters:

- `keep_audio` (boolean)
- `media` (string)
- `shot` (string, required)
- `video` (string, required)
- `voice` (string)

### `update_video` (~135 tokens)

Update video

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}.

Input parameters:

- `aspect_ratio` (string)
- `brief` (string)
- `style` (object)
- `title` (string)
- `video` (string, required)

### `make_video_media` (~98 tokens)

Make the video’s media

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.

Input parameters:

- `model` (string)
- `video` (string, required)
- `voice` (string)
- `what` (string)

### `video_keyframes` (~71 tokens)

Make keyframes

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.

Input parameters:

- `shots` (array)
- `video` (string, required)

### `critique_video` (~105 tokens)

Critique takes or the cut

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).

Input parameters:

- `stage` (string, required)
- `video` (string, required)

### `wait_for_video` (~76 tokens)

Wait for the video

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.

Input parameters:

- `video` (string, required)
- `wait_seconds` (integer)

### `render_video` (~84 tokens)

Render video

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.

Input parameters:

- `video` (string, required)

### `design_video_cards` (~66 tokens)

Design the cards

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).

Input parameters:

- `remove` (boolean)
- `video` (string, required)

### `video_plan` (~44 tokens)

Video plan

A video as a plan (JSON): its shots, presenter, style, media ids. Change it and import it back with import_video_plan.

Input parameters:

- `video` (string, required)

### `import_video_plan` (~193 tokens)

Import a video plan

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.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `path` (string): a zip, a plan.json or a folder on this machine
- `plan` (object)
- `url` (string): a link to a zip or plan.json

### `export_video` (~36 tokens)

Export video

A link to a zip of the video’s plan and every file it names (works for a week).

Input parameters:

- `video` (string, required)

### `delete_video` (~32 tokens)

Delete video

Delete a video (its media stay in the library). You confirm in a dialog.

Input parameters:

- `video` (string, required)

### `update_media` (~72 tokens)

Update media

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.

Input parameters:

- `action` (string)
- `media` (string, required)
- `starred` (boolean)
- `title` (string)

### `convert_video_to_code` (~166 tokens)

Cut in code

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.

Input parameters:

- `note` (string)
- `video` (string, required): the video id (list_videos)

### `get_video_code` (~123 tokens)

Get video code

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.

Input parameters:

- `file` (string): a path of the head, for its content
- `video` (string, required): the video id (list_videos)

### `write_video_code` (~191 tokens)

Write video code

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.

Input parameters:

- `files` (array, required)
- `note` (string): what changed, for the version list
- `video` (string, required): the video id (list_videos)

### `check_video_code` (~92 tokens)

Check video code

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.

Input parameters:

- `video` (string, required): the video id (list_videos)

### `video_frames` (~109 tokens)

Video frames

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.

Input parameters:

- `every_seconds` (number)
- `frames` (array)
- `video` (string, required): the video id (list_videos)

### `video_code_versions` (~64 tokens)

Video code versions

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.

Input parameters:

- `video` (string, required): the video id (list_videos)

### `restore_video_code` (~58 tokens)

Restore video code

Bring an earlier version of a video's code film back as a new version (source restore), checked at once.

Input parameters:

- `version` (integer, required): a number from video_code_versions
- `video` (string, required): the video id (list_videos)

### `plan` (~104 tokens)

Plan

The workspace’s plan: run-minutes used and left this period, the plans on offer, how each model and media provider is paid (your own key, or Autopo’s billed to the card daily), today’s unbilled use and the recent daily charges. `enabled: false` means plans are off and credits pay for everything (budget).

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `change_plan` (~108 tokens)

Change plan

Move the workspace to another plan (free, starter, pro, max). From free or legacy it opens a Stripe checkout in your browser (nothing is charged until you pay there); between paid plans it changes at once and invoices the difference now, so you confirm in a dialog; to free it cancels at the period’s end.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `plan` (string, required)

### `plan_settings` (~130 tokens)

Plan settings

Change how the plan may spend: `overage_cap_cents` (Max only: the most overage a period may run up, 0–10,000,000) and `disabled_providers` (every model or media provider to turn off, on your key and Autopo’s alike; `[]` turns all back on). You confirm in a dialog.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `disabled_providers` (array)
- `overage_cap_cents` (integer)

### `billing_page` (~82 tokens)

Billing page

Open a Stripe page in your browser: `card` saves a card for daily billing of Autopo’s keys (nothing is bought), `portal` is the customer portal (card, invoices, cancelling).

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `what` (string, required)

### `create_artifact` (~299 tokens)

Make an artifact

Add your own artifact to the company’s documents, made by you (agents read it as material, not instructions): exactly one of `markdown`, `html`, `media_ids`, `upload_id` or `type` + `content`. `use_as_context` (default true) lets the team read it. Nothing is spent. The result has `app_url`, its page in the web app: give the person that link.

Input parameters:

- `body_md` (string): with `type` + `content`: the body as markdown
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `content` (object): with `type`: the structured content
- `html` (string): a whole HTML page (up to 2 MB), titled from its <title>
- `markdown` (string): markdown: `---`-separated slides become a deck, under 300 words a note, else a report
- `media_ids` (array): finished Studio media: one video, or 1–12 images
- `title` (string)
- `type` (string): an artifact type (with `content`), checked against its schema
- `upload_id` (string): a finished file you uploaded (PDF, Word, PowerPoint, Excel, image, .md, .html, .csv)
- `use_as_context` (boolean)

### `revise_artifact` (~261 tokens)

Revise your artifact

A new version of an artifact a member made (agents’ work is revised with artifact_feedback): the same kinds of input as create_artifact, or `content` alone; it keeps its type. `base_version` guards against overwriting someone else’s newer version. The result has `app_url`.

Input parameters:

- `artifact` (string, required)
- `base_version` (integer)
- `body_md` (string): with `type` + `content`: the body as markdown
- `change_note` (string)
- `content` (object): with `type`: the structured content
- `html` (string): a whole HTML page (up to 2 MB), titled from its <title>
- `markdown` (string): markdown: `---`-separated slides become a deck, under 300 words a note, else a report
- `media_ids` (array): finished Studio media: one video, or 1–12 images
- `title` (string)
- `type` (string): an artifact type (with `content`), checked against its schema
- `upload_id` (string): a finished file you uploaded (PDF, Word, PowerPoint, Excel, image, .md, .html, .csv)

### `artifact_links` (~42 tokens)

Artifact links

The public links an artifact has been shared by, newest first: the address, the version it shows, views, expiry, revoked.

Input parameters:

- `artifact` (string, required)

### `share_artifact` (~139 tokens)

Share an artifact

Make a public link to an artifact that anyone with the address can open without signing in (review notes, costs and hidden parts never show). `version` pins it (else it follows the latest), `scope` view_history also shows past versions, `expires_at` (ISO with offset) ends it. You confirm in a dialog; unshare_artifact revokes it. The result has `share_url` (the public page) and `app_url` (its page in the web app).

Input parameters:

- `artifact` (string, required)
- `expires_at` (string)
- `scope` (string)
- `version` (integer)

### `unshare_artifact` (~52 tokens)

Revoke a link

Revoke a public link to an artifact (`link` is its token from artifact_links): the address stops opening at once.

Input parameters:

- `artifact` (string, required)
- `link` (string, required): the share token

### `list_errands` (~78 tokens)

List errands

Errands (web chores Peyk does in a browser, stopping before anything you can’t undo): what needs you, the one on it, what is up next, drafts, and the 20 newest finished.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `get_errand` (~45 tokens)

Get errand

One errand in full: its plan, its stops (the checkpoints waiting on you, with their ids), its steps and its receipt.

Input parameters:

- `errand` (string, required)

### `draft_errand` (~129 tokens)

Draft an errand

Write what you need done on the web (`text`, 3–2000 chars) and Peyk drafts a plan: its sites, steps and the stops where he waits for you. One cheap model call (about 2¢), confirmed in a dialog; nothing runs until start_errand. `agent` picks another teammate to run it.

Input parameters:

- `agent` (string): an agent id (list_agents); default Peyk
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `text` (string, required)

### `start_errand` (~104 tokens)

Start an errand

Start a drafted errand: Peyk (or `agent`) works its plan in a browser and stops at every checkpoint for you (answer_errand). Runs cost credits up to the plan’s cap; you confirm the plan in a dialog first.

Input parameters:

- `agent` (string)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `errand` (string, required): the draft’s id

### `answer_errand` (~124 tokens)

Answer an errand

Answer an errand’s stop (its card): `yes` lets that step through (a payment, a submit, a send), `no` stops it, `myself` you do it in the Chrome on your computer, `done` for a hand-off you did. `note` is what you tell Peyk (a reference, a choice). You confirm in a dialog.

Input parameters:

- `decision` (string, required)
- `errand` (string, required)
- `note` (string)
- `stop` (string, required): the stop id (get_errand)

### `errand_sign_in` (~99 tokens)

Sign in for an errand

Before a drafted errand that needs your accounts: `open` opens the site in the Chrome on your paired computer so you sign in yourself (Peyk never types a password); `done` says you are signed in and closes the window. `site` is one of the plan’s sign-in sites (default the first).

Input parameters:

- `action` (string, required)
- `errand` (string, required)
- `site` (string)

### `list_members` (~58 tokens)

List members

The people in the company (owner, admins, members, viewers) with their user ids and whether they are online.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `chat_coworkers` (~85 tokens)

Coworkers in a chat

Bring a coworker (a person of the company, `user` id from list_members) into a chat with the agents, or take them out (`remove`; leaving is removing yourself). Members read it live, write in it and apply what the agents suggest.

Input parameters:

- `action` (string, required)
- `chat` (string, required)
- `user` (string, required)

### `competitors` (~63 tokens)

Competitors

The competitor radar: the rivals watched (and those proposed, waiting for your yes) and what changed on their pages in the last 60 days.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `manage_competitor` (~154 tokens)

Manage competitors

Change the radar: `add` a rival (`name`, `url`, `note`?; up to 8), `confirm` a proposed one (`competitor`), `remove` one (its history stays), `discover` rivals from a few web searches (proposed for your yes), or `scan` their pages now (once an hour). Removing and discovering ask first.

Input parameters:

- `action` (string, required)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `competitor` (string): for confirm and remove
- `name` (string)
- `note` (string)
- `url` (string)

### `shopify_store` (~72 tokens)

Shopify store

The company’s Shopify store, read-only: whether it is connected, the store, its currency, the webhooks, when it last synced and how many products and orders were read.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `connect_shopify` (~86 tokens)

Connect Shopify

Connect the company’s Shopify store (`shop`: its name, myshopify.com domain or admin URL): opens Shopify in your browser to install the Autopo app, which only reads products, orders, inventory and customers.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `shop` (string, required)

### `sync_shopify` (~63 tokens)

Sync Shopify

Read the connected store again now (`check` instead tests that the connection still works and has every permission).

Input parameters:

- `check` (boolean)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `brand_brain` (~61 tokens)

Brand brain

The brand brain: what the company says about itself, for whom, against whom, in what voice (every writer reads it).

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `social_accounts` (~52 tokens)

Social accounts

The company’s social accounts and networks, and what each account may post on its own.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `list_posts` (~71 tokens)

List posts

Social posts: upcoming, published or failed (`status`), per `account`.

Input parameters:

- `account` (string)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `limit` (integer)
- `status` (string)

### `check_posts` (~64 tokens)

Check posts

Run the pre-publish gate on posts you wrote (nothing is posted): each post’s review against the brand.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `posts` (array, required)

### `create_posts` (~91 tokens)

Post to social

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.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `posts` (array, required)
- `schedule_at` (string)

### `marketing_learnings` (~57 tokens)

Marketing learnings

What worked and what didn’t: the learnings log, newest first.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `status` (string)

### `budget` (~51 tokens)

Budget

The month’s spend against the budget, by agent and kind, and the credits left.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `ledger` (~75 tokens)

Ledger

Every charge, newest first (`kind`, `agent` filter).

Input parameters:

- `agent` (string)
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `kind` (string)
- `page` (integer)
- `page_size` (integer)

### `buy_credits` (~72 tokens)

Buy credits

Open a checkout in your browser to add credits to a company (1 credit = $1). Nothing is charged until you pay there.

Input parameters:

- `amount` (integer): credits to buy
- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise

### `api_request` (~109 tokens)

Call the API

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.

Input parameters:

- `body` (object)
- `method` (string, required)
- `path` (string, required)
- `query` (object)

### `api_reference` (~81 tokens)

API reference

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.

Input parameters:

- `method` (string)
- `path` (string)
- `search` (string)

### `open_in_app` (~114 tokens)

Open in the app

Open a place in the Autopo web app in your browser: `what` is home, hive, inbox, task, work, knowledge, team, chat, studio, video, marketing, social, money, connectors or settings; `id` the card, task, artifact, chat or video when there is one.

Input parameters:

- `company` (string): the company id (list_companies); not needed when you have one company, asked for otherwise
- `id` (string)
- `what` (string, required)

### `app_decide` (~54 tokens)

Decide (from the inbox view)

Decide a card from the inbox view. Hidden from the model: the click is the confirmation.

Input parameters:

- `answer`
- `choice` (string, required)
- `decision` (string, required)
- `note` (string)

### `app_refresh_inbox` (~33 tokens)

Refresh the inbox view

Reload the pending cards for the inbox view.

Input parameters:

- `company` (string, required)
- `status` (string)

### `app_video` (~47 tokens)

Video (from the storyboard view)

Reload a video, or act on it: keyframes, make media, critique, render. The click is the confirmation.

Input parameters:

- `action` (string)
- `video` (string, required)

### `app_media` (~47 tokens)

Media (from the gallery view)

Star, retry or reload media from the gallery view.

Input parameters:

- `action` (string)
- `company` (string)
- `kind` (string)
- `media` (string)

### `app_artifact` (~42 tokens)

Artifact (from the artifact view)

Reload an artifact with its links, or make its public link. The click is the confirmation.

Input parameters:

- `action` (string)
- `artifact` (string, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/autopoiesis-ai-mcp/autopoiesis-mcp-267405155162#diagnostics

## Score history

- 2026-11-05: 75
- 2026-11-04: 74
- 2026-11-03: 74
- 2026-11-02: 73

## Common questions

### What is the Autopo MCP server?

Autopo is an MCP server listed in the public MCP registry as io.github.Autopoiesis-ai/mcp. Run your AI-run company from Claude Code, Codex, Cursor or ChatGPT: inbox, tasks, team, Studio. This page covers its hosted endpoint (https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp).

### Is the Autopo MCP server safe to use?

Autopo scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Autopo MCP server expose?

Autopo exposes 99 tools: list_companies, whoami, founder_home, company_overview, activity, and 94 more. Their descriptions and schemas cost roughly 8,860 tokens of context every time the server is loaded.

### Does the Autopo MCP server require authentication?

Yes. Autopo asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Autopo MCP server still maintained?

Autopo is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://autopoiesis-mcp-267405155162.us-west1.run.app/mcp
- Authorisation metadata: https://autopoiesis-mcp-267405155162.us-west1.run.app/.well-known/oauth-protected-resource/mcp
- Website: https://autopoiesis.app/
- Changelog RSS feed: https://verifymcp.io/servers/autopoiesis-ai-mcp/autopoiesis-mcp-267405155162.xml
- Changelog JSON feed: https://verifymcp.io/servers/autopoiesis-ai-mcp/autopoiesis-mcp-267405155162.json
- HTML version of this page: https://verifymcp.io/servers/autopoiesis-ai-mcp/autopoiesis-mcp-267405155162
