@gentbajko/slopify 3.17.0 → 3.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/edge/http/actions.js +2 -2
  2. package/dist/edge/http/actor.js +10 -0
  3. package/dist/edge/http/app.js +21 -0
  4. package/dist/edge/http/checkpoints.js +14 -6
  5. package/dist/edge/http/external-reviews.js +95 -0
  6. package/dist/edge/http/projects.js +36 -10
  7. package/dist/edge/http/reviews.js +53 -18
  8. package/dist/edge/http/revisions.js +5 -1
  9. package/dist/edge/http/settings.js +9 -1
  10. package/dist/edge/http/starts.js +41 -0
  11. package/dist/edge/mcp/attribution.js +38 -0
  12. package/dist/edge/mcp/call-route.js +203 -0
  13. package/dist/edge/mcp/excluded-routes.js +95 -0
  14. package/dist/edge/mcp/file-tools.js +141 -0
  15. package/dist/edge/mcp/http.js +79 -0
  16. package/dist/edge/mcp/instructions.js +17 -0
  17. package/dist/edge/mcp/library-tools.js +143 -0
  18. package/dist/edge/mcp/remake-tools.js +90 -0
  19. package/dist/edge/mcp/review-tools.js +64 -0
  20. package/dist/edge/mcp/route-tool.js +61 -0
  21. package/dist/edge/mcp/server.js +48 -0
  22. package/dist/edge/mcp/state-shapes.js +60 -0
  23. package/dist/edge/mcp/tools-channels.js +153 -0
  24. package/dist/edge/mcp/tools-library.js +151 -0
  25. package/dist/edge/mcp/tools-planning.js +137 -0
  26. package/dist/edge/mcp/tools-projects.js +167 -0
  27. package/dist/edge/mcp/tools-publishing.js +148 -0
  28. package/dist/edge/mcp/tools-runs.js +94 -0
  29. package/dist/edge/mcp/tools-schedules.js +143 -0
  30. package/dist/edge/mcp/tools-setup.js +234 -0
  31. package/dist/edge/mcp/tools-storage.js +99 -0
  32. package/dist/edge/mcp/tools.js +21 -0
  33. package/dist/extension/slopify-studio-chrome.zip +0 -0
  34. package/dist/extension/slopify-studio-firefox.zip +0 -0
  35. package/dist/kernel/db/migrations/0055-external-reviews.sql +56 -0
  36. package/dist/kernel/db/migrations/0056-agent-actions.sql +20 -0
  37. package/dist/kernel/db/migrations/0057-agent-action-once.sql +5 -0
  38. package/dist/kernel/db/migrations/0058-revision-work-admission.sql +3 -0
  39. package/dist/kernel/db/migrations/0059-external-review-canceled.sql +29 -0
  40. package/dist/kernel/db/migrations/0060-reservation-work.sql +4 -0
  41. package/dist/kernel/db/migrations/0061-project-control-counts.sql +4 -0
  42. package/dist/kernel/db/migrations/0062-told-failures.sql +8 -0
  43. package/dist/kernel/pipeline.js +6 -0
  44. package/dist/kernel/runner/graph.js +37 -2
  45. package/dist/kernel/runner/index.js +6 -3
  46. package/dist/main.js +29 -13
  47. package/dist/patch-notes/3.18.0.md +13 -0
  48. package/dist/patch-notes/3.18.1.md +11 -0
  49. package/dist/patch-notes/3.18.2.md +10 -0
  50. package/dist/patch-notes/index.json +18 -0
  51. package/dist/slices/admission/admitted-work.js +53 -0
  52. package/dist/slices/admission/heads.js +5 -0
  53. package/dist/slices/admission/repo.js +47 -29
  54. package/dist/slices/admission/schema.js +1 -0
  55. package/dist/slices/admission/stage-writes.js +21 -0
  56. package/dist/slices/admission/start.js +2 -1
  57. package/dist/slices/admission/state-words.js +110 -0
  58. package/dist/slices/agents/attention-work.js +233 -0
  59. package/dist/slices/agents/attention.js +168 -0
  60. package/dist/slices/agents/connection.js +15 -0
  61. package/dist/slices/agents/model.js +29 -0
  62. package/dist/slices/agents/repo.js +66 -0
  63. package/dist/slices/cancel/index.js +4 -1
  64. package/dist/slices/control/index.js +2 -1
  65. package/dist/slices/episodes/summarize.js +2 -1
  66. package/dist/slices/estimate/index.js +6 -2
  67. package/dist/slices/images/run.js +2 -1
  68. package/dist/slices/library/transfer.js +69 -0
  69. package/dist/slices/narration/run.js +2 -1
  70. package/dist/slices/notifications/address.js +40 -0
  71. package/dist/slices/notifications/notifier.js +43 -10
  72. package/dist/slices/notifications/rules.js +111 -45
  73. package/dist/slices/notifications/server.js +14 -0
  74. package/dist/slices/notifications/settings.js +1 -1
  75. package/dist/slices/notifications/subject.js +30 -0
  76. package/dist/slices/notifications/told.js +33 -0
  77. package/dist/slices/play-drafts/readiness.js +9 -2
  78. package/dist/slices/play-drafts/schema.js +2 -1
  79. package/dist/slices/rebuild/narration-words.js +76 -0
  80. package/dist/slices/rebuild/recipe-model.js +1 -0
  81. package/dist/slices/rebuild/recipe-reviews.js +44 -23
  82. package/dist/slices/rebuild/recovery-repo.js +0 -20
  83. package/dist/slices/rebuild/recovery-selection.js +14 -3
  84. package/dist/slices/rebuild/recovery.js +5 -2
  85. package/dist/slices/rebuild/remake-outdated.js +27 -0
  86. package/dist/slices/rebuild/repo.js +7 -2
  87. package/dist/slices/rebuild/review-redo.js +12 -0
  88. package/dist/slices/rebuild/runtime-agent-review.js +121 -0
  89. package/dist/slices/rebuild/runtime-export-inputs.js +26 -11
  90. package/dist/slices/rebuild/runtime-review.js +12 -2
  91. package/dist/slices/rebuild/runtime-run.js +11 -2
  92. package/dist/slices/rebuild/runtime-store.js +32 -5
  93. package/dist/slices/reruns/index.js +2 -1
  94. package/dist/slices/research/run.js +2 -1
  95. package/dist/slices/reviews/external-model.js +21 -0
  96. package/dist/slices/reviews/external-release.js +38 -0
  97. package/dist/slices/reviews/external-repo.js +109 -0
  98. package/dist/slices/reviews/external-rows.js +68 -0
  99. package/dist/slices/reviews/external-waiting.js +75 -0
  100. package/dist/slices/reviews/holds.js +144 -0
  101. package/dist/slices/reviews/model.js +14 -0
  102. package/dist/slices/reviews/repo.js +27 -10
  103. package/dist/slices/reviews/rules.js +5 -3
  104. package/dist/slices/reviews/verdict.js +18 -8
  105. package/dist/slices/revisions/repo.js +3 -0
  106. package/dist/slices/revisions/schema.js +1 -0
  107. package/dist/slices/schedules/agenda.js +47 -17
  108. package/dist/slices/schedules/prepare.js +6 -0
  109. package/dist/slices/schedules/schema.js +13 -1
  110. package/dist/slices/storage/arrange.js +21 -8
  111. package/dist/slices/storage/consequences.js +27 -0
  112. package/dist/slices/storage/portable.js +3 -0
  113. package/dist/slices/storage/project-files.js +66 -0
  114. package/dist/slices/storage/trim.js +6 -2
  115. package/dist/slices/subtitles/prepare.js +2 -1
  116. package/dist/slices/uploads/repo.js +12 -6
  117. package/dist/slices/uploads/rules.js +5 -0
  118. package/dist/slices/video/write-export.js +1 -1
  119. package/dist/slices/video/write-subtitles.js +1 -1
  120. package/dist/tutorials/Agents-MCP.md +168 -0
  121. package/dist/tutorials/Calendar.md +2 -1
  122. package/dist/tutorials/First-Launch-and-Welcome.md +1 -0
  123. package/dist/tutorials/Home-and-Projects.md +16 -9
  124. package/dist/tutorials/Home.md +1 -0
  125. package/dist/tutorials/Notifications.md +25 -6
  126. package/dist/tutorials/Project-Page.md +9 -3
  127. package/dist/tutorials/Publishing-to-YouTube.md +1 -0
  128. package/dist/tutorials/Recovery-and-Retries.md +17 -3
  129. package/dist/tutorials/Reviews-and-Checkpoints.md +22 -5
  130. package/dist/tutorials/Schedules.md +1 -1
  131. package/dist/tutorials/Settings-Reference.md +16 -1
  132. package/dist/tutorials/Troubleshooting.md +3 -1
  133. package/dist/tutorials/Where-Your-Files-Live.md +3 -3
  134. package/dist/tutorials/Your-First-Short.md +1 -0
  135. package/dist/tutorials/_Sidebar.md +1 -0
  136. package/dist/web/assets/{index-DpdXRssU.css → index-BKbZIxAq.css} +1 -1
  137. package/dist/web/assets/index-DASWFus0.js +326 -0
  138. package/dist/web/assets/{pdf-B42WW32R.js → pdf-CF97Fw5v.js} +1 -1
  139. package/dist/web/index.html +2 -2
  140. package/package.json +1 -1
  141. package/dist/web/assets/index-CbmBh8V-.js +0 -325
@@ -1,6 +1,6 @@
1
1
  import { rmSync, statSync } from "node:fs";
2
2
  import { transact } from "../../kernel/db/tx.js";
3
- import { setStageProgress } from "../admission/repo.js";
3
+ import { setStageProgress } from "../admission/stage-writes.js";
4
4
  import { outputPath } from "../storage/layout.js";
5
5
  import { deleteOutput, insertOutput, outputsOf } from "../storage/repo.js";
6
6
  import { subtitleRoles } from "../subtitles/prepare.js";
@@ -0,0 +1,168 @@
1
+ # Agents (MCP)
2
+
3
+ Slopify has a built-in MCP server, so an AI agent on your computer (Claude Code, Codex, or any other client that speaks MCP over HTTP) can run Slopify for you. It can start and fix runs, edit the Library and your setup, answer reviews and approve checkpoints, with the same checks, costs and refusals as the buttons in the web page. Run on a schedule, an agent can clear everything that would otherwise wait for you, right up to **Ready to upload**. Uploading stays yours.
4
+
5
+ **Where to find it:** **Settings → Connections → Agents (MCP)**.
6
+
7
+ ## What the Agents tab shows
8
+
9
+ | Part | What it is |
10
+ | --- | --- |
11
+ | **MCP address** | The address agents connect to: this install's address with `/mcp` after it, for example `http://127.0.0.1:6969/mcp`. It uses the address in your browser's address bar, so it matches your port and Docker's published port. |
12
+ | **Claude Code** | The command that adds Slopify to Claude Code, with **Copy**. Run it once in a terminal. |
13
+ | **Codex** | The lines that add Slopify to Codex, with **Copy**. Add them to `~/.codex/config.toml`. |
14
+ | Last connected | When an agent last connected, or "No agent has connected yet." |
15
+ | **What agents did** | The latest 20 changes made by agents, newest first: what was done, the project or schedule it was done to, and when. Changes outside a project (a Library prompt, a schedule, a setting) are listed here too. "No agent has changed anything yet." when there are none. |
16
+
17
+ If the browser blocks the clipboard, **Copy** says so; select the line and copy it yourself.
18
+
19
+ ## Connect an agent
20
+
21
+ Slopify must be running. The address in these examples is the default (`127.0.0.1`, port `6969`); copy the real lines from the Agents tab.
22
+
23
+ ### Claude Code
24
+
25
+ 1. Open **Settings → Connections → Agents (MCP)** and press **Copy** next to **Claude Code**.
26
+ 2. Paste it in a terminal and run it:
27
+
28
+ ```
29
+ claude mcp add --transport http slopify http://127.0.0.1:6969/mcp
30
+ ```
31
+
32
+ 3. Start Claude Code. `/mcp` there should list `slopify` as connected, and the Agents tab now shows when it last connected.
33
+
34
+ ### Codex
35
+
36
+ 1. Press **Copy** next to **Codex**.
37
+ 2. Add the lines to `~/.codex/config.toml`:
38
+
39
+ ```
40
+ [mcp_servers.slopify]
41
+ url = "http://127.0.0.1:6969/mcp"
42
+ ```
43
+
44
+ 3. Start Codex again so it reads the file.
45
+
46
+ ### Other agents
47
+
48
+ Any MCP client that connects by URL over Streamable HTTP takes the same **MCP address**. Slopify keeps no session: every request is a plain `POST`.
49
+
50
+ ### Docker
51
+
52
+ Nothing changes: the agent runs on your computer and connects to the port Docker publishes, the same address you open Slopify at. Copy the lines from the Agents tab in that Slopify. See [Docker](Docker).
53
+
54
+ ## No token, and what keeps web pages out
55
+
56
+ There is no key or token to set up, the same as the web page itself: Slopify has no login, and it listens on `127.0.0.1` so only your own computer reaches it.
57
+
58
+ Web pages are kept out by one check. A request that comes from a web page at another address (a browser always says where a request came from) is refused with "Slopify refused this MCP request because it came from a web page at another address." Agents on the command line send no such address and are let in. Pages on this computer's own addresses (`localhost`, `127.0.0.1`) are let in too.
59
+
60
+ If you start Slopify with `--host 0.0.0.0` (or another address other computers can reach), anyone who reaches the port can drive it through `/mcp`, just as they can through the web page. Keep it on `127.0.0.1` unless you mean that. See [Install](Install).
61
+
62
+ ## What agents can do
63
+
64
+ Anything you can do in the web page, except the few things listed under [What agents cannot do](#what-agents-cannot-do). That includes:
65
+
66
+ - **Projects:** make projects from Play drafts and templates (after the same review and estimate you see), read them, edit them, pause, continue and cancel runs, **Keep as is**, move projects to another channel, delete and restore them.
67
+ - **Fixing runs:** **Try ... again**, **Soften and retry**, remake a step or one item, regenerate a narration chunk, and **Choose what to remake**, with its estimate.
68
+ - **Reviews:** answer reviews set to **External agent (MCP)**, **Overrule** or **Redo** flagged items, and approve review checkpoints.
69
+ - **Planning:** release times, the posting plan, **Mark uploaded**, **Deleted on YouTube**, and **Prepare upload** up to **Ready to upload**.
70
+ - **Schedules:** schedules, their topic lists, approving or turning down held topics, and **Prepare**.
71
+ - **Library and setup:** prompts (with history), templates, channels and cast, Library import and export, and settings other than those below.
72
+ - **Reading:** Home's work list, the calendar, costs and estimates, a project's files (pictures come back as pictures; audio and video as their address in Slopify), and the material a review looks at.
73
+ - **Storage:** **Delete old versions** for one project.
74
+
75
+ Agents never start paid work you could not see: before a remake they get the same **Choose what to remake** list with its estimate, and they must accept it, as you do. There is no extra budget or limit for agents; the costs are the same as yours. Actions with a consequence (deleting, for example) need the agent to confirm them, as a dialog asks you.
76
+
77
+ Agents and their tools use the same state words as the page: **Queued**, **Running**, **Paused**, **Waiting for your review**, **Waiting for the agent**, **Prepared**, **Stopped**, **Kept as is**, **Failed**, **Done**.
78
+
79
+ ## What agents cannot do
80
+
81
+ | Not for agents | Why |
82
+ | --- | --- |
83
+ | Upload to YouTube, or send a video to the Studio extension (**Fill in YouTube Studio**, **Upload**) | Agents stop at **Ready to upload**. Uploading is yours; Slopify never makes a video public. See [Publishing to YouTube](Publishing-to-YouTube). |
84
+ | The extension's automatic pinned comment setting | It posts comments in your name. |
85
+ | Read or change provider keys, or make the extension's pairing token | They are credentials. Agents see each provider only as configured or missing. |
86
+ | Read the **Notification URL** | It can hold a secret (a private ntfy topic). Agents see only whether one is configured or missing, though they may set a new one. |
87
+ | Backups: export, import, restore, and the daily backup settings | They are yours, in Settings → Backup & storage. |
88
+ | Update Slopify, start at login, CLI paths, the extension's download | They are yours. |
89
+ | **Delete all old versions** and **Clean up everything** (all projects) | They are yours, in Settings → Backup & storage. **Delete old versions** for one project is allowed. |
90
+ | Open a folder on your desktop | Agents read files through Slopify instead. |
91
+
92
+ A request for any of these is refused with a sentence that says it is yours and where to do it.
93
+
94
+ ## Shown as "by agent"
95
+
96
+ Everything an agent changes is marked, so you can always tell its work from yours:
97
+
98
+ | Where | What you see |
99
+ | --- | --- |
100
+ | Project page → **Project history** | Versions an agent saved end in **· by agent**, and **Done by agents** lists what agents did to the project (approvals, retries, verdicts and so on). |
101
+ | Review badges | **Passed by agent**, **Flagged by agent**, **Redone after agent review**, **Accepted by agent** (an agent pressed Overrule), **Made again by agent** (an agent pressed Redo). |
102
+ | Notifications | A run an agent started ends its notices with **· started by agent** ("Started: *title* · by agent" in the browser); a flag from an agent's review ends with **· by agent**. |
103
+ | Settings → Agents (MCP) | **What agents did**: the latest 20 changes of every kind. |
104
+
105
+ ## The External agent reviewer
106
+
107
+ Instead of paying a reviewer model, you can let your agent do the [automatic reviews](Reviews-and-Checkpoints#automatic-reviews).
108
+
109
+ 1. On Play, open the **Reviews** row (or Edit project → **Reviews** on a project).
110
+ 2. Set **Who reviews** to **External agent (MCP)**. **Reviewer** and **Reviewer model** are greyed: the agent needs neither.
111
+ 3. Pick **Flag only** or **Flag and redo** for each stage, as usual. Picture stages (images, the thumbnail, shorts) work too: the agent is shown the pictures.
112
+
113
+ Reviews by the agent cost nothing and add nothing to the estimate. Redos it asks for cost what the item cost, as always.
114
+
115
+ ### What happens during the run
116
+
117
+ 1. When an item is made, its review waits for the agent. What depends on it waits too; other work carries on.
118
+ 2. If nothing else holds the run, the project reads **Waiting for the agent** everywhere: its header, Projects, Home's **Running now** and the calendar. The project page says "An agent is reviewing what was made." with nothing to press. It is not in **Needs you**, no "Waiting for you" notice goes out and there is no **Continue the run** to press: it goes on by itself.
119
+ 3. The agent reads the item and answers **pass** or **fail**. A fail needs at least one reason; at most 10 reasons, each up to 500 characters. The answer goes through the stage's mode, exactly like a model's verdict: a pass lets the work go on, a fail is flagged or made again.
120
+ 4. **The first answer wins.** If two agents answer the same review, the first one saved is kept and the second is refused ("This review was already answered"). The same goes for you: once an agent has pressed Overrule or Redo on a flagged item, or approved a checkpoint, pressing it yourself changes nothing and says it was already decided.
121
+
122
+ ### If no agent answers
123
+
124
+ A review nobody answers **passes by itself 2 hours** after it began waiting. Its badge reads **Passed without review** ("No agent answered within 2 hours, so it went ahead without review."), the work goes on, and you get a notification: **Passed without review: no agent answered in 2 h**, naming the project and the item. The two hours are saved with the review, so a restart neither resets nor loses them.
125
+
126
+ - **Paused project:** the review still passes at its two hours, but nothing runs until the run is continued.
127
+ - **Canceled run:** its waiting reviews stop and never pass. If you (or an agent) take the step up again, the review asks again and waits a fresh two hours.
128
+ - **Item made again meanwhile** (an edit or a remake): the old review is dropped and the new item gets its own.
129
+
130
+ ## Paused and stopped runs
131
+
132
+ An agent may **continue any paused run**, whoever paused it, once nothing else on the project still needs fixing. It may also press **Continue the run** on a run a restart left **Stopped**. If you want a run to stay put while an agent routine is running, cancel it instead of pausing it: canceled runs are not on the agent's list.
133
+
134
+ ## needs_attention and the attend routine
135
+
136
+ Slopify cannot wake an agent; the agent looks. Its work list is the `needs_attention` tool: Home's **Needs you**, as an agent reads it, oldest first.
137
+
138
+ | Entry | What the agent does |
139
+ | --- | --- |
140
+ | An external review waiting for a verdict | Reads the item and answers. |
141
+ | A flagged verdict nobody acted on | **Overrule** or **Redo**. |
142
+ | A review checkpoint waiting for approval | Checks the work before it and approves. A checkpoint from the template's own **Before Video** is listed; a schedule's **Prepared** hold is not, since that one waits for its day. |
143
+ | A failed step | Does what the error's own sentence says: for example regenerates narration chunk 5, accepts the **Choose what to remake** estimate, then continues the run. |
144
+ | A paused run, or a run a restart **Stopped** | Continues it once nothing on the project still needs fixing. |
145
+ | Topics a schedule holds for approval | Approves the ones that fit and turns down the rest. |
146
+ | A video marked **Late · upload now** | Reports it. It cannot upload. |
147
+ | A finishing touch the Studio extension failed (captions, end screen, pinned comment) | Reports it. Fixing it is the extension's or yours. |
148
+
149
+ Projects that are **Kept as is** are not listed. Each entry says whether Slopify is already retrying or redoing it by itself (the agent leaves those alone and looks again later) and whether the agent can act on it at all.
150
+
151
+ The steps above are the **attend routine**. Slopify hands it to every agent that connects, and offers it as the MCP prompt **attend**: in Claude Code, `/mcp__slopify__attend` runs it. To have it run unattended, schedule it in your agent, for example as a Claude Code scheduled task or a Codex automation every hour. An hourly routine answers external reviews well inside their two hours.
152
+
153
+ ## Tips
154
+
155
+ - Pair the External agent reviewer with an hourly attend routine, and a [Notification URL](Notifications#get-notifications-on-your-phone-notification-url) so you hear when a review passed without an answer: that usually means the routine stopped running.
156
+ - Check **What agents did** in the Agents tab now and then; each project's **Project history** has the full story for that project.
157
+ - If an agent's request is refused because the project changed meanwhile, it reads the project again and retries once; you do not need to do anything.
158
+
159
+ ## Related pages
160
+
161
+ - [Reviews and Checkpoints](Reviews-and-Checkpoints)
162
+ - [Notifications](Notifications)
163
+ - [Recovery and Retries](Recovery-and-Retries)
164
+ - [Home and Projects](Home-and-Projects)
165
+ - [Schedules](Schedules)
166
+ - [Publishing to YouTube](Publishing-to-YouTube)
167
+ - [Settings Reference](Settings-Reference)
168
+ - [AI CLIs](AI-CLIs)
@@ -10,7 +10,7 @@ The calendar starts on this week's Monday and shows four weeks, Monday to Sunday
10
10
 
11
11
  - **Scheduled runs**, each with the project title it will make. A run shows **Queued** when a topic is lined up, **Needs a topic** when its topic is still waiting for your approval or for generation, and **Paused** when its schedule is paused.
12
12
  - **Needs you**, above the weeks: every project that is waiting on you or ready to upload (see below).
13
- - **Projects** running or finished on their day, with their state: **Running**, **Paused**, **Queued**, **Failed**, **Done with problems**, **Done** or **Canceled**. A project waiting for a CLI plan says so, for example **Waiting for Codex limits (resets at 14:00)**.
13
+ - **Projects** running or finished on their day, with their state: **Running**, **Waiting for the agent**, **Paused**, **Queued**, **Waiting for your review**, **Prepared**, **Stopped**, **Kept as is**, **Failed**, **Done with problems**, **Done** or **Canceled**. A project waiting for a CLI plan says so, for example **Waiting for Codex limits (resets at 14:00)**.
14
14
  - **Batch queue**: projects waiting to start (see below).
15
15
  - **Suggested topics**, beside the weeks, for schedules that hold generated topics for approval.
16
16
 
@@ -26,6 +26,7 @@ Above the weeks, **Needs you** lists what cannot move on without you, then what
26
26
  | --- | --- | --- |
27
27
  | A failed project | **Failed** | **Open to fix** |
28
28
  | A project you paused | **Paused** | **Open to continue** |
29
+ | A project a restart stopped before it finished | **Stopped** | **Open to continue** |
29
30
  | A project held at a review checkpoint, or with an automatic review that flagged an item and waits for **Overrule** or **Redo** | **Waiting for your review** | **Open to review** |
30
31
  | A finished video not marked uploaded | **Ready to upload** | **Prepare upload** |
31
32
 
@@ -140,6 +140,7 @@ Settings → **Providers** shows a short welcome on a fresh install that names t
140
140
  - Try a sample before you add any keys: every screen works on it, and nothing costs anything.
141
141
  - You can come back to the first-run screen at `/welcome` until you skip it or make a real project.
142
142
  - After an update to a new major version, a **What's new** tour opens instead. See [Updating and Patch Notes](Updating-and-Patch-Notes).
143
+ - Already use Claude Code or Codex? Settings → Connections → **Agents (MCP)** has one line that lets it run Slopify for you: start and fix runs, answer reviews, everything up to Ready to upload. See [Agents (MCP)](Agents-MCP).
143
144
 
144
145
  ## Related pages
145
146
 
@@ -53,19 +53,22 @@ One work list: the things that don't move on until you act, then the finished vi
53
53
 
54
54
  | Item | Status | Button |
55
55
  | --- | --- | --- |
56
- | A run held at a review before a step | **Waiting for you · review before the narration** (or the images, or the video) | **Approve the article and record**, **Approve and draw the images** or **Approve and render**. Approving here lets the run continue. Open the project to look first. |
57
- | A run whose next step is held another way | **Waiting for you** | **Open to continue** |
58
- | A run you paused | **Paused** | **Open to continue** |
56
+ | A run held at a review before a step | **Waiting for your review · before the narration** (or the images, or the video) | **Approve the article and record**, **Approve and draw the images** or **Approve and render**. Approving here lets the run continue. Open the project to look first. |
57
+ | A run whose next step is held another way | **Waiting for your review** | **Open to continue** |
58
+ | A run a restart stopped before it finished | **Stopped** | **Continue the run**, or **Keep as is** to leave the rest unmade |
59
+ | A run you (or an agent) paused | **Paused** | **Open to continue** |
59
60
  | Topics a schedule suggested | **N new topics** | **Review topics**, on the calendar: queue the ones you want and reject the rest. |
60
61
  | A failed run | **Failed · <step>**, with a short reason | The fix to try: a button to Settings → Providers or Backup & storage when that is the fix, otherwise **Open to retry**. |
61
62
  | A run that failed because a CLI is signed out | **Failed · <step>** | **Copy sign-in command** copies the command (`claude auth login`, `codex login` or `gemini`). Run it in a terminal on the computer running Slopify, then **Open to retry** and press **Check again** on the project. |
62
63
  | A finished video you have not marked uploaded | **Ready to upload** | **Prepare upload** lists everything YouTube Studio asks for, with Copy buttons (Slopify never uploads for you; see [Publishing to YouTube](Publishing-to-YouTube)). **Mark uploaded** takes it off the list, with **Undo** in the notice; Projects still has it. |
63
64
 
65
+ A held run also offers **Keep as is**, which takes it off Needs you and leaves the rest unmade (with **Undo**); editing the project brings it back. A run waiting for an [agent's review](Agents-MCP#the-external-agent-reviewer) is not here: it goes on by itself, so it shows under Running now. A step that failed while the run waits on something else shows here as a failed item.
66
+
64
67
  Up to 4 failed runs and 4 videos ready to upload show here; **See all N ready to upload** opens Projects filtered to them. The bundled samples never show as ready to upload. Only the first item's button is lime; the rest are plain buttons. The heading says how many decisions are waiting and how many videos are ready to upload. With nothing waiting and nothing running, Home says **Nothing needs you and nothing is running**. See [Reviews and Checkpoints](Reviews-and-Checkpoints), [Schedules](Schedules) and [Recovery and Retries](Recovery-and-Retries).
65
68
 
66
69
  ### Running now
67
70
 
68
- Videos being made or paused, up to 3. Each shows the step it is on, how long each step has taken, the running step's time left (for example `2 of 8 · about 4 min left`), the last few images as they land (with a tile for the one being drawn) and **Images N of M** while drawing. A run waiting for a CLI plan says so instead of the step, for example **Waiting for Codex limits (resets at 14:00)**. Open one to follow it live, pause it or cancel it. With nothing running it says **Start the next video**.
71
+ Videos being made, and runs **Waiting for the agent** (an External agent reviews what they made; they carry on once it answers or after 2 hours), up to 3. Paused runs are under Needs you. Each shows the step it is on, how long each step has taken, the running step's time left (for example `2 of 8 · about 4 min left`), the last few images as they land (with a tile for the one being drawn) and **Images N of M** while drawing. A run waiting for a CLI plan says so instead of the step, for example **Waiting for Codex limits (resets at 14:00)**. Open one to follow it live, pause it or cancel it. With nothing running it says **Start the next video**.
69
72
 
70
73
  - With more than three running, **See all N running** opens Projects filtered to running.
71
74
  - Queued runs show as one line under them, for example "Queued, waiting to start (2): Hypatia, Cleopatra", with **See queued** (Projects filtered to queued).
@@ -102,11 +105,11 @@ Every run ever started, newest first unless you pick another order, for the chan
102
105
  | Filter | Shows |
103
106
  | --- | --- |
104
107
  | **All** | Everything. |
105
- | **Running** | Running and paused projects. |
108
+ | **Running** | Projects running, and those **Waiting for the agent**: the same runs Home's **See all N running** counts. |
106
109
  | **Queued** | Projects waiting for their turn in the video queue. |
107
- | **Needs you** | Projects waiting at a review or held step. |
110
+ | **Needs you** | Projects waiting for you: at a review or held step, paused, or **Stopped**. |
108
111
  | **Ready to upload** | Finished videos not marked uploaded. |
109
- | **Failed** | Failed projects and those **Done with problems**. |
112
+ | **Failed** | Failed projects, those **Done with problems**, and runs with a failed step that still wait on something else. |
110
113
 
111
114
  3. Pick an order beside the filter: **Newest first**, **Recently changed**, **Name (A–Z)** or **Status** (waiting for you first, then running, queued, failed and finished).
112
115
 
@@ -128,9 +131,13 @@ If nothing matches, the list says **No project matches. Clear the search or pick
128
131
  | State | Meaning |
129
132
  | --- | --- |
130
133
  | **Running** | A step is being made. A run waiting for a CLI plan says **Waiting for Codex limits (resets at 14:00)** instead. |
131
- | **Paused** | Paused by you; nothing runs until you resume. |
134
+ | **Paused** | Paused by you or an agent; nothing runs until it is continued. |
132
135
  | **Queued** | Waiting for its turn in the video queue. |
133
- | **Waiting for you** | Held at a review or checkpoint. |
136
+ | **Waiting for your review** | Held at a review or checkpoint. |
137
+ | **Waiting for the agent** | An External agent is reviewing what it made; it goes on by itself. |
138
+ | **Prepared** | Made ahead by its schedule; only the video is left, for its day. |
139
+ | **Stopped** | Stopped before it finished, for example by a restart. Open it and press **Continue the run**. |
140
+ | **Kept as is** | What is left was set aside with **Keep as is**. |
134
141
  | **Done** | Finished. |
135
142
  | **Done with problems** | Finished, but part of it failed. |
136
143
  | **Failed** | Stopped with an error. |
@@ -87,6 +87,7 @@ These pages cover Slopify 3.0: every screen, every setting and every workflow, s
87
87
  | [Schedules](Schedules) | Videos on a cadence, topic lists and self-filling topics |
88
88
  | [Calendar](Calendar) | What needs you, what is coming up, the video queue |
89
89
  | [Notifications](Notifications) | Browser and phone (ntfy) notifications |
90
+ | [Agents (MCP)](Agents-MCP) | Letting Claude Code, Codex or another agent run Slopify, the External agent reviewer and the attend routine |
90
91
  | [Backups](Backups) | Automatic backups, export and import |
91
92
 
92
93
  ### Channels
@@ -8,13 +8,30 @@ Runs can take a while, so Slopify can tell you when one needs you: in the browse
8
8
 
9
9
  | Event | Message |
10
10
  |---|---|
11
- | A run **finishes** | "Video ready", or "Run finished" for a run that makes audio only |
12
- | A run **fails** | The project title and the first line of the reason |
13
- | A run **stops to wait for you** | A review checkpoint is holding the next step, or the work left is waiting for Resume |
11
+ | A run **finishes** | "Video ready: *title*", or "Run finished: *title*" for a run that makes audio only |
12
+ | A run **finishes with problems** | "Video ready with problems: *title* — *reason*": the video was made but another step failed |
13
+ | A run **fails** | "Run failed: *title* — *reason*", with the first line of the reason |
14
+ | A step **fails while the run waits on something else** | "Step failed: *title* — *reason*". Only when another step is waiting: an agent's review, your checkpoint, or a prepared run's day. See [Step failed](#step-failed). |
15
+ | A run **stops to wait for you** | "Waiting for you: *title*": a review checkpoint is holding the next step, or the work left is waiting for **Continue the run** |
16
+ | An agent's review **passed without an answer** | "Passed without review: no agent answered in 2 h", naming the project and the item. See [Agents (MCP)](Agents-MCP#if-no-agent-answers). |
14
17
  | An automatic review **needs a decision** | "Review needs a decision: <title>", when an automatic review flags an item and keeps it (its redos ran out, or the stage only flags). It says what was flagged and to press **Overrule** or **Redo** on the project. Sent once per verdict. |
15
18
  | A schedule has **new topics waiting** for approval | For example "5 new topics are waiting for you" |
16
19
 
17
- Pausing or cancelling a run yourself sends nothing, and neither does a project that was already finished when the page loaded. A message holds the project title and what happened, never your keys, prompts or files.
20
+ Pausing or cancelling a run yourself sends nothing, and neither does a project that was already finished when the page loaded. A run waiting for an [agent's review](Agents-MCP#the-external-agent-reviewer), or a prepared run waiting for its day, sends no "Waiting for you": nobody needs to act. A message holds the project title and what happened, never your keys, prompts or files.
21
+
22
+ A run an [agent](Agents-MCP) started ends its messages with **· started by agent**, and a flag from an agent's review ends with **· by agent**.
23
+
24
+ ### Step failed
25
+
26
+ An ordinary run tells you once, at its end: "Run failed" or "Video ready with problems", with the end chime. A step that fails on the way is named there, not in a message of its own.
27
+
28
+ "Step failed" is for the other case: a step fails while another step of the run is waiting (for an agent's review, your checkpoint, or a prepared run's day). The run is not over and may wait for hours, so Slopify tells you right away instead of at the end. The project still reads by what it waits for, and the failed step shows on its page with its fix.
29
+
30
+ Each failure is told once. A restart neither repeats a message already sent nor loses one: what was told is saved. A step that fails again after **Try again** is a new failure and is told again. If the run later ends **Failed** on failures already told, no second "Run failed" goes out.
31
+
32
+ ### While you were away
33
+
34
+ When you come back to a Slopify tab after more than two minutes away (or open one after closing it), one notice sums up what happened meanwhile, for example "While you were away: 2 runs finished, 1 step failed beside a wait, 1 run waits for you.", with **Open Home**. It counts runs that finished, runs that failed, steps that failed beside a wait, and runs that started waiting for you. Runs waiting for an agent or for their day are not counted as waiting for you. It works from this browser's own memory of what it last saw, with no setting.
18
35
 
19
36
  ## Turn on browser notifications
20
37
 
@@ -44,7 +61,7 @@ Some browsers only allow notifications from installed apps. If the test says so,
44
61
 
45
62
  ## Run sounds
46
63
 
47
- **Settings → Notifications → Run sounds** (on by default) plays a chime when a run starts and a different, longer one when it finishes, fails or stops to wait for you, like a message arriving on a phone. **Play start** and **Play end** let you hear them.
64
+ **Settings → Notifications → Run sounds** (on by default) plays a chime when a run starts and a different, longer one when it finishes, fails or stops to wait for you, like a message arriving on a phone. A "Step failed" plays the end chime too. **Play start** and **Play end** let you hear them.
48
65
 
49
66
  - Works while any Slopify tab is open; only one tab plays each chime.
50
67
  - Needs no permission, but browsers keep a page silent until it has been clicked once, so click anywhere in Slopify after opening it.
@@ -53,7 +70,7 @@ Some browsers only allow notifications from installed apps. If the test says so,
53
70
 
54
71
  ## Get notifications on your phone (Notification URL)
55
72
 
56
- A Notification URL works with no Slopify tab open. When a run finishes, fails or waits, or a review needs a decision, Slopify sends that address one `POST` with a short plain-text body. Its last line is the project's link, so you can open it straight from the message, for example:
73
+ A Notification URL works with no Slopify tab open. When a run finishes, fails or waits, a step fails beside a wait, a review needs a decision or passes without an agent's answer, Slopify sends that address one `POST` with a short plain-text body. Its last line is the project's link, so you can open it straight from the message, for example:
57
74
 
58
75
  ```
59
76
  Video ready: Black holes explained
@@ -79,6 +96,7 @@ To turn it off, clear the field and press **Save**.
79
96
  - Any address that accepts a `POST` works, not just ntfy.
80
97
  - Each message is sent once, with a 5-second timeout, and is never retried. A failure is written to the log and does not affect the run.
81
98
  - The address stays on this machine: backups leave it out.
99
+ - [Agents](Agents-MCP) never see the address, only whether one is configured. They may set a new one.
82
100
  - In [Docker](Docker) the request goes out from the container, so the address must be reachable from there. `localhost` means the container itself.
83
101
 
84
102
  ## Tips
@@ -92,4 +110,5 @@ To turn it off, clear the field and press **Save**.
92
110
  - [Schedules](Schedules)
93
111
  - [Calendar](Calendar)
94
112
  - [Reviews and checkpoints](Reviews-and-Checkpoints)
113
+ - [Agents (MCP)](Agents-MCP)
95
114
  - [Troubleshooting](Troubleshooting)
@@ -39,6 +39,11 @@ The status beside the title reads one of:
39
39
  | **Done with problems** | The main output was made (the video, or the narration when there is no video, or the article when there is neither), but another step failed. Each failed step shows its error and its fix. |
40
40
  | **Failed** | A step failed and the main output was not made. |
41
41
  | **Canceled** | You canceled the run. Finished outputs are kept. |
42
+ | **Waiting for your review** | A review checkpoint is holding the run for you to approve. |
43
+ | **Waiting for the agent** | An [External agent](Agents-MCP#the-external-agent-reviewer) is reviewing what was made. It goes on by itself once the agent answers, or after 2 hours. |
44
+ | **Prepared** | Made ahead by its schedule; only the video is left, for its day. See [Schedules](Schedules#prepare-a-video-ahead). |
45
+ | **Stopped** | The run stopped before it finished (for example after a restart). Press **Continue the run**. |
46
+ | **Kept as is** | What is left was set aside with **Keep as is** and won't run. Editing the project brings it back. |
42
47
 
43
48
  ## The next action button
44
49
 
@@ -49,7 +54,8 @@ The right rail always shows at most one button, named for what it will do. It is
49
54
  | The bundled sample project | Sample project | **Make my own copy** (the sample is read-only; your copy can be edited and made again) |
50
55
  | Paused | Paused | **Continue the run** |
51
56
  | A step failed and will not retry by itself | Failed | The step's fix-it button (for example **Copy sign-in command** with **Check again**, **Soften and retry**, **Edit the prompt**, **Switch model**), or **Try the article again**, **Try images again** and so on. See [Recovery and Retries](Recovery-and-Retries#fix-it-buttons). |
52
- | A checkpoint is holding the run | Waiting for you | **Approve and record the narration**, **Approve and make the images**, **Approve and render the video**, or **Approve the ...** when nothing waits on it |
57
+ | A checkpoint is holding the run | Waiting for your review | **Approve and record the narration**, **Approve and make the images**, **Approve and render the video**, or **Approve the ...** when nothing waits on it |
58
+ | An External agent is reviewing what was made | Waiting for the agent | No button. "An agent is reviewing what was made." The run carries on once the agent answers, and a review nobody answers passes by itself after 2 hours. |
53
59
  | A CLI plan limit is used up | Waiting for limits | No button. The line says, for example, "Waiting for Codex limits (resets at 14:00)." and that the run carries on by itself. |
54
60
  | A step is waiting to retry | Waiting to try again | No button. The line says the time it tries again. |
55
61
  | Running | Running | **Pause** |
@@ -84,7 +90,7 @@ A step that is waiting to retry or waiting for a CLI limit also stays held while
84
90
  2. Choose **Cancel the run…**.
85
91
  3. Confirm with **Cancel run**, or press **Keep running** to leave it alone.
86
92
 
87
- Canceling stops every running stage; finished outputs are kept. You can continue a canceled run later with **Continue the run**. A project has to be canceled (not running) before you can delete it from Projects.
93
+ Canceling stops every running stage; finished outputs are kept. You can continue a canceled run later with **Continue the run**. If you took a step up again after canceling (**Try ... again**), Continue carries on only that work; see [Recovery and Retries](Recovery-and-Retries#cancel-then-continue). A project has to be canceled (not running) before you can delete it from Projects.
88
94
 
89
95
  ## The sections
90
96
 
@@ -191,7 +197,7 @@ Only generated steps can have a checkpoint. Pausing the project still applies on
191
197
 
192
198
  ## Free space
193
199
 
194
- A finished project can drop the working files it was made from (images, narration parts, subtitle timing, render settings) and keep what gets published: the video, shorts, thumbnail, article, description, document and anything you uploaded. In the right rail, **Free space** shows the size of both, for example "Outputs 1.4 GB · working files 1.2 GB", with the button **Free 1.2 GB: keep the outputs, drop the working files**.
200
+ A finished project can drop the working files it was made from (narration parts, subtitle timing, render settings) and keep what gets published: the video, shorts, the images they show, thumbnail, article, description, document and anything you uploaded. In the right rail, **Free space** shows the size of both, for example "Outputs 1.4 GB · working files 1.2 GB", with the button **Free 1.2 GB: keep the outputs, drop the working files**.
195
201
 
196
202
  1. Press the button.
197
203
  2. Read what goes, then confirm with **Free 1.2 GB**, or press **Keep the working files**.
@@ -122,6 +122,7 @@ Slopify does not check YouTube, so it can't know when you've published. After yo
122
122
  - Set the playlists once in Settings (per channel if your channels upload to different playlists), and tick the few a single video joins in its Prepare upload.
123
123
  - Upload the long video first, then paste its link as the shorts' **Full video link** so each short's description points to it.
124
124
  - If the AI use answer surprises you, read its reason: it names the voice, footage or prompt that made it Yes.
125
+ - A connected [agent](Agents-MCP) can take a video as far as **Ready to upload** and mark it uploaded, but never uploads it or sends it to the extension: that stays yours.
125
126
 
126
127
  ## Related pages
127
128
 
@@ -109,15 +109,28 @@ A failed step stops only the steps that need its output. The video never reads t
109
109
  ## After a crash or restart
110
110
 
111
111
  - A stage that was **running** when Slopify stopped is marked failed with the reason "interrupted". Nothing re-runs by itself: press **Try ... again**. If the project was paused at the time, the stage simply goes back to waiting.
112
- - A project that has unfinished work nothing will start on its own shows **Stopped** and **Continue the run**. Continuing makes only what is missing.
112
+ - A project that has unfinished work nothing will start on its own reads **Stopped** on its header, in Projects and on Home, where it is listed under **Needs you** with **Continue the run** (and **Keep as is** to leave the rest unmade). The project page says "The run stopped before it finished." with the same button. Continuing makes only what is missing; everything made so far is kept. An [agent](Agents-MCP) running the attend routine may continue it for you.
113
113
  - Steps waiting to retry, or waiting for CLI limits, carry on by themselves after the restart.
114
114
  - A queued batch project waits its turn as before.
115
115
 
116
+ ## Cancel, then continue
117
+
118
+ **Cancel** stops every step that has not finished; what was made is kept. Later:
119
+
120
+ - **Continue the run** on the canceled project makes everything that is missing.
121
+ - If you took one step up again after the cancel (with **Try ... again**), **Continue the run** carries on only that work. The steps you canceled stay canceled until you take them up too.
122
+
123
+ A canceled run's reviews waiting for an agent stop, and never pass on their own. See [Reviews and Checkpoints](Reviews-and-Checkpoints#the-external-agent-reviewer).
124
+
116
125
  ## Checkpoints and paused runs
117
126
 
118
- A checkpoint holds the run before a step so you can check what came before it. While held, the project shows **Waiting for you** and an **Approve ...** button; nothing after it runs until you approve. Checkpoints are stored with the project, so a restart does not lose them; when you save a new revision, a checkpoint whose reviewed inputs changed asks for your review again (the Checkpoints view says "Inputs changed. Review the current revision before approving."). See [Reviews and Checkpoints](Reviews-and-Checkpoints).
127
+ A checkpoint holds the run before a step so you can check what came before it. While held, the project shows **Waiting for your review** and an **Approve ...** button; nothing after it runs until you approve. Checkpoints are stored with the project, so a restart does not lose them; when you save a new revision, a checkpoint whose reviewed inputs changed asks for your review again (the Checkpoints view says "Inputs changed. Review the current revision before approving."). See [Reviews and Checkpoints](Reviews-and-Checkpoints).
128
+
129
+ A paused project keeps everything. **Continue the run** picks up where it stopped. See [Project Page](Project-Page#pause-continue-and-cancel-a-run). A connected [agent](Agents-MCP) may continue any paused run once nothing else on it needs fixing; cancel instead of pausing if you want a run to stay put.
130
+
131
+ ## A failed step beside a wait
119
132
 
120
- A paused project keeps everything. **Continue the run** picks up where it stopped. See [Project Page](Project-Page#pause-continue-and-cancel-a-run).
133
+ When a step fails while another step of the run is waiting (for an agent's review, your checkpoint, or a prepared run's day), the run is not over: the project still reads by what it waits for (**Waiting for the agent** or **Waiting for your review**), and the failed step shows on the page with its fix. Home lists it as a failed item too, and a "Step failed" notification goes out right away (see [Notifications](Notifications#step-failed)). The project reads **Failed** only once nothing else can go on.
121
134
 
122
135
  ## Updating while work runs
123
136
 
@@ -139,3 +152,4 @@ When an update or install cannot finish, Slopify puts the previous version back.
139
152
  - [Providers and Keys](Providers-and-Keys)
140
153
  - [AI CLIs](AI-CLIs)
141
154
  - [Reviews and Checkpoints](Reviews-and-Checkpoints)
155
+ - [Agents (MCP)](Agents-MCP)
@@ -52,13 +52,15 @@ The checkpoint then says "Checkpoint approved. Work will run when its dependenci
52
52
 
53
53
  | Message | Meaning |
54
54
  | --- | --- |
55
- | "Images is held for your review. Its dependent work waits for this approval; independent work can continue." | Waiting for you. |
55
+ | "Images is held for your review. Its dependent work waits for this approval; independent work can continue." | Waiting for you. The project reads **Waiting for your review**. |
56
56
  | "Inputs changed. Review the current revision before approving." | You edited something the held step uses. Check the new version before approving. |
57
57
  | "Authorized for this revision. Work can run when dependencies are ready and the project is resumed." | Approved; it runs when it can. |
58
58
  | "Checkpoint satisfied. Its reviewed work is complete." | Done. |
59
59
 
60
60
  If the project is paused, the panel says "The project is paused. Continue the run before approving held work." Pausing always applies on top of checkpoints.
61
61
 
62
+ A checkpoint is approved once. If it was already approved (by you in another tab, or by an [agent](Agents-MCP)), approving again changes nothing and says so.
63
+
62
64
  ### Change checkpoints after the run started
63
65
 
64
66
  On the project page → **Checkpoints** → **Checkpoint choices**:
@@ -70,11 +72,12 @@ Only generated steps can have one. If the project was edited elsewhere in the me
70
72
 
71
73
  ## Automatic reviews
72
74
 
73
- A reviewer model checks each finished item and saves its verdict and reasons on the project page. Each review is a text-model call, counted in usage and in the estimate.
75
+ A reviewer checks each finished item and saves its verdict and reasons on the project page. The reviewer is a model Slopify asks (each review is a text-model call, counted in usage and in the estimate), or an agent you connected (free; see [The External agent reviewer](#the-external-agent-reviewer)).
74
76
 
75
77
  | Option | What it does | Default / range |
76
78
  | --- | --- | --- |
77
- | **Reviewer** | Who runs the review model. Picture reviews (images, the thumbnail and shorts) need Claude Code or Codex, which can look at images; other providers review text only. | None |
79
+ | **Who reviews** | **Model**: Slopify asks the reviewer model below, one paid call per item. **External agent (MCP)**: an agent connected in Settings → Connections → Agents (MCP) answers each review instead, at no API cost. | Model |
80
+ | **Reviewer** | Who runs the review model (greyed for **External agent (MCP)**). Picture reviews (images, the thumbnail and shorts) need Claude Code or Codex, which can look at images; other providers review text only. | None |
78
81
  | **Reviewer model** | The model that judges each item. A stronger model catches more but costs more per review. It can differ from the model that wrote the text. | None |
79
82
  | **Redos per item** | How many times **Flag and redo** makes a failed item again before it keeps the last one and flags it. Each redo costs the item again plus one more review. | 2; 0 to 5 |
80
83
 
@@ -106,16 +109,28 @@ The prompt next to each mode is **Built-in** or a **Review** prompt from the Lib
106
109
  4. For each stage you want checked, pick **Flag only** or **Flag and redo**, and optionally a Review prompt.
107
110
  5. Check the estimate: each review adds one text-model call. Redos are not in the estimate; each costs what the item cost, at most the redos allowed.
108
111
 
112
+ ### The External agent reviewer
113
+
114
+ With **Who reviews** set to **External agent (MCP)**, no model is called: each review waits for an agent connected to Slopify to answer it (see [Agents (MCP)](Agents-MCP)). Every stage can use it, picture stages included, since the agent is shown the pictures. It adds nothing to the estimate.
115
+
116
+ - While a review waits, what depends on the item waits, as with any review. If nothing else holds the run, the project reads **Waiting for the agent** (header, Projects, Home's Running now, the calendar). It is not in **Needs you**, sends no "Waiting for you" notice and has no **Continue the run**: it goes on by itself.
117
+ - The agent answers **pass** or **fail**. A fail needs at least one reason, at most 10, each up to 500 characters. The answer then follows the stage's mode like a model's verdict: **Flag only** flags it, **Flag and redo** makes it again up to **Redos per item**.
118
+ - The first answer saved wins. A second answer to the same review is refused ("This review was already answered").
119
+ - **No answer in 2 hours:** the review passes by itself. Its badge reads **Passed without review**, the work goes on and a notification says "Passed without review: no agent answered in 2 h". The deadline is saved, so it survives a restart. A paused project's review still passes at its deadline, but nothing runs until you continue the run.
120
+ - **Canceled runs:** canceling stops the run's waiting reviews, and they never pass. Taking the step up again asks again, with a fresh two hours.
121
+
109
122
  ### Reviews on the project page
110
123
 
111
- Beside the article, the narration, the thumbnail and each short, and on each image tile, the verdict shows as **Review passed**, **Flagged by review**, **Waiting to be made again**, **Being made again**, **Redone after review** or **Accepted by you**, with the reasons. For a failed item nobody has acted on:
124
+ Beside the article, the narration, the thumbnail and each short, and on each image tile, the verdict shows as **Review passed**, **Flagged by review**, **Waiting to be made again**, **Being made again**, **Redone after review** or **Accepted by you**, with the reasons. With the External agent reviewer, or when an agent acted on it, it reads **Passed by agent**, **Flagged by agent**, **Redone after agent review**, **Accepted by agent**, **Made again by agent**, or **Passed without review** when no agent answered in time. For a failed item nobody has acted on:
112
125
 
113
126
  - **Overrule** accepts it as it is.
114
127
  - **Redo** makes it again (a new version of the project, then the item and what depends on it are rebuilt), and it is reviewed again.
115
128
 
129
+ A flagged item takes one decision. If it was already decided (by an agent, for example), pressing **Overrule** or **Redo** changes nothing and says how it was decided.
130
+
116
131
  Both buttons wait while other work on the project is running, with one exception: while a **Flag and redo** review's automatic redo is still waiting to start (**Waiting to be made again**), **Overrule** stays available and calls the redo off. The item is accepted as it is, the badge turns to **Accepted by you**, and the work waiting on it goes ahead. Once the redo has started, Overrule is greyed: "Slopify is already making this item again; wait for the new version".
117
132
 
118
- When an automatic review flags an item and keeps it (its redos ran out, or the stage is on **Flag only**), Slopify sends a **Review needs a decision** notification (see [Notifications](Notifications)), and the project shows in the Calendar's **Needs you** with **Open to review** (see [Calendar](Calendar#needs-you)). Everything that uses a reviewed item waits for its review, in the same way a checkpoint holds work. Reviewing the same output with the same reviewer and prompt again reuses the earlier verdict.
133
+ When an automatic review flags an item and keeps it (its redos ran out, or the stage is on **Flag only**), Slopify sends a **Review needs a decision** notification (see [Notifications](Notifications)), and the project shows in the Calendar's **Needs you** with **Open to review** (see [Calendar](Calendar#needs-you)). When an agent's review flagged it, the notification ends in **· by agent**. Everything that uses a reviewed item waits for its review, in the same way a checkpoint holds work. Reviewing the same output with the same reviewer and prompt again reuses the earlier verdict.
119
134
 
120
135
  ## Checkpoints or reviews?
121
136
 
@@ -125,6 +140,7 @@ When an automatic review flags an item and keeps it (its redos ran out, or the s
125
140
  | Look at the images before the render | **Before Images** is too early; use **Before Video / export** |
126
141
  | Catch broken hands or stray text without watching every run | **Images** review, **Flag and redo** |
127
142
  | Run unattended on a schedule and fix things later | Reviews on **Flag only**, no checkpoints |
143
+ | Have reviews done without paying a reviewer model | **External agent (MCP)** with an hourly agent routine; see [Agents (MCP)](Agents-MCP) |
128
144
 
129
145
  ## Tips
130
146
 
@@ -140,4 +156,5 @@ When an automatic review flags an item and keeps it (its redos ran out, or the s
140
156
  - [Recovery and Retries](Recovery-and-Retries)
141
157
  - [Prompts](Prompts)
142
158
  - [AI CLIs](AI-CLIs)
159
+ - [Agents (MCP)](Agents-MCP)
143
160
  - [Costs and Run Cost](Costs-and-Run-Cost)
@@ -95,7 +95,7 @@ Slopify makes the project now, exactly as the schedule would on the day (the tem
95
95
  On the scheduled day the schedule finds that project by its title and continues it instead of making another: the hold is lifted and the video, its captions, shorts and YouTube description are made. The same goes for an unfinished project you made yourself under the same title. A finished one counts as a video already made, and the day makes a new one.
96
96
 
97
97
  - You can open the prepared project and change anything before its day, for example with Edit project.
98
- - A **Before Video** checkpoint the template already has stays: the day waits for you to approve it.
98
+ - A **Before Video** checkpoint the template already has stays: the day waits for you to approve it, and the project reads **Waiting for your review** and is listed under **Needs you** (and for a connected [agent](Agents-MCP)). A project held only by Prepare's own hold reads **Prepared** and is not listed as waiting anywhere: it waits for its day, not for you.
99
99
  - A setup that makes no video has nothing to hold back, so Prepare runs it to the end.
100
100
  - A schedule without topics gives every run the same title, so only a prepared project continues there.
101
101
  - The spend limit applies to Prepare as it does to a scheduled run.
@@ -11,6 +11,7 @@ Every section of Settings, what each control does and its default. Sections with
11
11
  | Connections | [Providers](#providers) | API keys, command-line tools, the system voice, health check | [Providers-and-Keys](Providers-and-Keys), [AI-CLIs](AI-CLIs) |
12
12
  | Connections | [Voices](#voices) | Voice IDs for narration | [Providers-and-Keys](Providers-and-Keys#add-a-voice) |
13
13
  | Connections | [Models](#models) | Model catalogue, retired models | [Models](Models) |
14
+ | Connections | [Agents (MCP)](#agents-mcp) | The MCP address and setup lines for Claude Code and Codex, the last connection, what agents did | [Agents-MCP](Agents-MCP) |
14
15
  | Production defaults | [Production defaults](#production-defaults) | Silence gap, volume levelling for new runs | This page |
15
16
  | Notifications | [Notifications](#notifications) | Browser and phone notifications | [Notifications](Notifications) |
16
17
  | Publishing | [Channel links](#channel-links) | A pointer to each channel's own links | [Channels](Channels#channel-links) |
@@ -99,6 +100,20 @@ See [Providers-and-Keys](Providers-and-Keys#add-a-voice).
99
100
 
100
101
  Templates and schedules that pick a retired model are also flagged on their own rows, with the same **Switch to <model>**. See [Models](Models).
101
102
 
103
+ ## Agents (MCP)
104
+
105
+ "Let an AI agent on this computer, such as Claude Code or Codex, run Slopify."
106
+
107
+ | Control | What it does |
108
+ |---|---|
109
+ | **MCP address** | This install's address with `/mcp`, for example `http://127.0.0.1:6969/mcp`. No token: only requests from a web page at another address are refused. |
110
+ | **Claude Code** → **Copy** | Copies `claude mcp add --transport http slopify <address>`. Run it once in a terminal. |
111
+ | **Codex** → **Copy** | Copies the `[mcp_servers.slopify]` lines. Add them to `~/.codex/config.toml`. |
112
+ | Last connected | When an agent last connected, or "No agent has connected yet." |
113
+ | **What agents did** | The latest 20 changes agents made, with the project or schedule and the time. |
114
+
115
+ There is nothing to turn on: the address works whenever Slopify runs. See [Agents (MCP)](Agents-MCP).
116
+
102
117
  ## Production defaults
103
118
 
104
119
  "How new runs pace the narration and level the volume."
@@ -183,7 +198,7 @@ After importing, enter your keys again in Settings → Providers. You can also r
183
198
  |---|---|
184
199
  | **Disk space** | What Slopify stores: the total, project files, staged uploads, and deleted projects still in the trash (freed when the trash removes them after 30 days, or with **Delete now**). |
185
200
  | Storage by project | Each project's size, split into outputs and working files, largest first. A finished project's page offers the same on its own (**Free space**, see [Project Page](Project-Page#free-space)). |
186
- | **Keep outputs only** | On a finished project, deletes the working files (images, narration parts, subtitle timing, render settings) and keeps the video, shorts, thumbnail, article, description, document and your uploads. You confirm first. Changing the project later makes those files again, which takes time and provider credits. |
201
+ | **Keep outputs only** | On a finished project, deletes the working files (narration parts, subtitle timing, render settings) and keeps the video, shorts, the images they show, thumbnail, article, description, document and your uploads. You confirm first. Changing the project later makes those files again, which takes time and provider credits. |
187
202
 
188
203
  ### Sample projects
189
204
 
@@ -127,7 +127,9 @@ If an install or update fails, the message names what failed and, in Docker, the
127
127
  | **Queued** | Other videos in the batch queue go first. The Calendar's **Batch queue** shows the order. |
128
128
  | **Waiting for limits** / "Waiting for Codex limits (resets at 14:00)" | A CLI plan is used up; the run waits and carries on after the reset time shown. |
129
129
  | **Waiting to try again** | A rate limit or timeout; it retries at the time shown. |
130
- | **Waiting for you** | A checkpoint is holding the run. Press **Approve ...**. |
130
+ | **Waiting for your review** | A checkpoint is holding the run. Press **Approve ...**. |
131
+ | **Waiting for the agent** | A review set to **External agent (MCP)** waits for your agent. Check the agent's routine is running; with no answer, the review passes by itself after 2 hours. See [Agents (MCP)](Agents-MCP). |
132
+ | **Prepared** | Its schedule made it ahead; the video is made on its day. |
131
133
  | A step says **taking longer than usual** | It has run longer than the same step usually takes in your finished runs. It is still going; open **Live** to see whether text or images are still arriving. |
132
134
  | **Paused** | Press **Continue the run**. |
133
135
  | **Stopped** | The run was interrupted (for example by a restart). Press **Continue the run**. |
@@ -31,8 +31,8 @@ Each project has one folder in `Projects/`, named after its title (`Lolth | D&D
31
31
 
32
32
  | Folder | What is in it | Safe to delete? |
33
33
  | --- | --- | --- |
34
- | `Upload/` | The current version, ready to publish: `video.mp4`, `thumbnail.png` (and `thumbnail 2.png`…), `subtitles.srt` and `.vtt`, `description.txt`, `tags.txt`, `titles.txt`, `pinned comment.txt`, `document.pdf`, `article.md`, and `Shorts/1 - <title>.mp4`… | No: it is what you upload. |
35
- | `Working/` | What the current version was made from: `Images/`, `Narration/` (each chunk, the joined and levelled narration), `Research/`, `Article/`, `Subtitles/`, `Render/`, `Shorts/` (each short's images). | Only to free space on a finished video: changing that project later makes these again, which takes time and provider credits. **Keep outputs only** does it for you. |
34
+ | `Upload/` | The current version, ready to publish: `video.mp4`, `thumbnail.png` (and `thumbnail 2.png`…), `subtitles.srt` and `.vtt`, `description.txt`, `tags.txt`, `titles.txt`, `pinned comment.txt`, `document.pdf`, `article.md`, `Images/` (every image the video shows, in order; an older version's images in `Images/Earlier/<date>/`), and `Shorts/1 - <title>.mp4`… with each short's images beside it in `Shorts/1 - <title>/`. No cleanup ever deletes these images. | No: it is what you upload. |
35
+ | `Working/` | What the current version was made from: `Narration/` (each chunk, the joined and levelled narration), `Research/`, `Article/`, `Subtitles/`, `Render/`. | Only to free space on a finished video: changing that project later makes these again, which takes time and provider credits. **Keep outputs only** does it for you. |
36
36
  | `History/<date>/` | Files of older versions, by the day they were made (an earlier render, the narration before a voice change). | Yes. Delete a day's folder, or all of `History/`, to free its space. Going back to that version in History makes its files again. |
37
37
 
38
38
  A hidden `.slopify-project` file tells Slopify which project the folder holds and where its files went. Leave it there.
@@ -132,7 +132,7 @@ Deleted projects free their space when the trash removes them after 30 days, or
132
132
 
133
133
  ### Keep outputs only
134
134
 
135
- On a finished project, **Keep outputs only** deletes the working files it was made from (images, narration parts, subtitle timing, render settings) and keeps the video, shorts, thumbnail, article, description, document and your uploads.
135
+ On a finished project, **Keep outputs only** deletes the working files it was made from (narration parts, subtitle timing, render settings) and keeps the video, shorts, the images they show, thumbnail, article, description, document and your uploads.
136
136
 
137
137
  1. Find the project in the **Disk space** list. The button says how much it frees.
138
138
  2. Press **Keep outputs only**.