Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "shoot_plan_allowance", "shoot_plan_apply_fix", "shoot_plan_call_sheet" and 20 more (11 tools before, 34 now)
How many projects this account has left this month — Says what this account has used and has left of its monthly project allowance, the date it starts again, and, when the limit is reached, how to carry on sooner. A project is identified by the plan's work id and title: the same id and title is one project, and changing either starts a new one. It counts when a tool that makes a finished document (shot list, generation briefs, call sheet, shoot-day pack, edit guide, edit file) first makes one for it that month. Drafting, checking and fixing never count, and a project that already had a finished document made this month stays open all month, up …
Apply one tested fix to a shot plan — Applies one fix, taken from a shoot_plan_check result, to a plan and checks the revised plan again. Some fixes trade one thing for another (each says its trade_off): tell your human before applying one that does. Input: plan; finding_id and fix_id (a finding's id, and the id of one of its suggestions, both from shoot_plan_check); and optionally findings, the check result you already have, which saves recomputing it. Output: {plan, findings}, the revised plan and its new findings. Nothing is stored, here or by us: keep the revised plan yourself. A wrong finding_id or fix_id is refused with the…
Make a call sheet from a plan — Makes the call sheet for a shoot from a plan's schedule: for the whole schedule, or for one shoot day, who is called, where and when, with the set-ups in order. A plan with no schedule has no times, and the call sheet says so rather than inventing any. Input: plan, a dpl.plan/1 object that validates; optionally day, the id of one day in the plan's schedule (a day the plan does not have is refused, and the refusal lists the days it has). Output: dpl.call-sheet/1. No AI model runs; we don't keep the plan. Needs an agent key from a Shoot Plan account, and is free up to 3 projects a month. A proj…
Check a shot plan will cut together — Checks whether a shot plan will cut together before you film or generate it. It looks for crossed lines of action, mismatched eyelines, missing reactions, speakers who are never on screen, missing geography, jump cuts, travel direction, and props that change with no cause. It returns evidence from the plan and fixes it has already tested. The check is instant, and no AI model runs. It checks editing craft, not whether the film is good. Scenes without staging, dialogue or coverage detail come back "not assessed": call shoot_plan_missing_details for the questions to ask your human. Input: plan,…
Did we get it? What is covered and what is left — Answers "did we get it?" before the crew leaves a location: from the plan and the take log it says which must-have shots have no good take, which reactions or cutaways the edit will need are still missing, what must match on the next set-up, and whether room tone was recorded. A "hold" verdict is not yet a decision, so it does not count as covered and is asked about. The tools take text only, never video or audio, and no AI model runs. Input: plan and takes (a dpl.takes/1 log); optionally location, scene and day to look at one part of the shoot (each a string, comma-separated names allowed, o…
What changed between two versions of a plan — Says what changed between two versions of a plan, so that you can catch up from a few lines instead of reading both. It compares by id, not by position, so reordering changes nothing: it lists what was added, what was removed, what changed (with the old and new values), and an id that has gone while another has appeared with the same content, which may be a rename: only a person can say. With the check results for both versions it also says which findings are new, which are resolved and which are unchanged. Input: old and new, two dpl.plan/1 objects; optionally old_findings and new_findings, …
Is the draft ready to shoot? — The final check on a drafted plan: is it finished and ready to shoot? It returns ready or not ready, with a record of what was checked and what was not. A plan that does not pass gets a normal answer, not an error: the reasons are the next actions, each with its plan path and a fix. A pass is the result to show your human. It holds the plan to the format and to editing readiness, not to taste. No AI model runs. Input: plan, a dpl.plan/1 object. Output: dpl.draft-gate/1 with passed (true or false), result (ready_to_shoot or not_ready), the reasons and counts, and next_tool, the tool to call ne…
What to write next in a shot plan draft — Says where a draft stands and the one next thing to do, so you can write a plan layer by layer and have each layer checked as you go. It reads the plan you send and never changes it. It returns the layer you have reached, what that layer still lacks as exact plan paths, the questions to put to your human (answer "none" in the plan when none is the honest answer; never invent a detail), the open findings of finished layers with tested fixes, and which recipe fits each scene that has no shots yet. It is quick: call it after every layer or scene. No AI model runs. Input: plan, the draft so far (…
Start drafting a shot plan from a brief — Starts a shot plan for you to write: from a short brief it returns a valid skeleton plan (the places to write start with TODO), the layers to write it in, shot-pattern recipes for common kinds of scene, and the first thing to do. The loop is: you write the plan, we check it. We write none of the film and no AI model runs. The brief is sent to us only to build the skeleton, and we don't keep it. Input: brief, a dpl.brief/1 object: title, target_runtime_ms and profile ("film", or "short" for a phone or small-crew shoot), and optionally logline, thesis, characters, places and, for a short, deliv…
A guide for the editor, from the plan and the takes — Writes the editing guide for a film, scene by scene: what each shot is for, where to cut and why, which cutaway or insert covers which jump or crossed line, the sound to lay, and each open finding as a note about what to do in the edit. With a take log it also says which take stands for each shot and marks shots that have no usable take; without one it works from the plan alone. The tools take text only, never video or audio, and no AI model runs. Input: plan; optionally takes (a dpl.takes/1 log). Output: dpl.edit-guide/1, as JSON. We don't keep the plan or the take log. Needs an agent key fr…
Export the chosen takes as an edit for your editing software — Makes a first assembly edit from the plan and the take log, as a file your own editing software opens: OpenTimelineIO (otio), FCPXML (fcpxml), a CMX 3600 edit decision list (edl) or an ALE log (ale). It puts the chosen takes in story order, each as long as the plan's slot (a shot with no usable take is left as a gap and listed in the report), linked by your human's own file names so they relink to footage on their own drives. No media is uploaded to us and none comes back; no AI model runs. Input: plan; takes (a dpl.takes/1 log); format (otio, fcpxml, edl or ale); optionally fps (24, 25, 23.9…
Prepare a plan for image or video generation — Prepares a plan for generating its pictures with a generator of your own: it returns the editorial intent of the film (eil.intent/1) and one generation brief per shot (eil.generation-briefs/1). We run no generator and receive no media: you give the briefs to your own. Input: plan; optional sequence and sequence_revision (names for the sequence the intent describes), visual_family (a term for the kind of picture the sequence is made of; the default is a_roll) and house_style (an object, for the briefs). Output: {intent, briefs}. A plan with validation errors is refused with its diagnostics. No…
Cut a shot plan down to what the shoot can afford — Cuts a plan down to what the shoot can afford, without dropping a shot marked `must`: it takes out the least necessary shots one at a time, re-checking the plan after each, and tells you what each cut costs. Input: plan, and constraints: max_shots (the most shots the cut may need) and/or max_setups (the most camera set-ups; shots sharing a set-up count once). The engine refuses any other limit and says which it takes. Output: dpl.replan/1 with met (true or false; false says which limit failed, by how much and what to relax), the sacrifices, and the revised plan with its findings. Not meeting …
How to write a plan the checks can read — Returns what you need to write or repair a plan that the checks can read: links to the JSON Schemas, the shortest valid plan, a worked example of a two-person scene that the checks find nothing wrong with, and a summary of the details that switch each check on (which is why a thin plan comes back "not assessed"). Call it first if you are about to write a plan. Input: none. Output: {schemas, smallest_plan, example_plan, details_that_make_checks_work, rules_of_thumb, rules_version}. No AI model runs; it needs no plan and stores nothing. Needs an agent key from a Shoot Plan account. Free, and it…
Join two take logs into one — Joins two take logs for the same film into one, for when two phones, an AI assistant and a script supervisor each kept a log while offline. Joining is by op_id, so a take that is in both logs counts once and merging again changes nothing. Where two logs hold different takes under one op_id, only one is kept and the clash is counted, with a fix: give one of them an op_id of its own. The tools take text only, never video or audio, and no AI model runs. Input: a and b, two dpl.takes/1 objects. Output: {takes, merge}: takes is the joined dpl.takes/1 log; merge has added, already_present and confl…
List what a shot plan is missing — Lists the questions to put to the person who knows the film, so that more of the plan can be checked. Each question uses the plan's own names, says which paths in the plan the answer fills in and which checks it unlocks, and says whether it blocks the assessment of a scene. Do not invent an answer to silence a question: when the honest answer is none, say so in the plan with a `none` declaration (shoot_plan_format explains). Input: plan, a dpl.plan/1 object sent inline. Output: dpl.missing/1. No AI model runs; nothing is stored. Needs an agent key from a Shoot Plan account. Free, and it does …
Record a decision about a finding — Records a decision about one finding from shoot_plan_check (accepted, overridden or wont_fix), with the reason and who decided, so that you do not raise it again next session. We keep nothing: the answer is the updated decision log, and you must keep it and send it back to shoot_plan_check as dispositions. A finding with a remembered decision then comes back closed, with the reason, for as long as the evidence behind it is unchanged; if the evidence changes, it comes back open again. Input: plan; finding_id (a finding's id from shoot_plan_check); decision (accepted, overridden or wont_fix); r…
Make the shoot-day pack from a plan — Makes the pack to take on the shoot day: the call sheet with, for each scene, its shots, the action, the look and the sound notes. Use it when the crew needs one document to work from; use shoot_plan_call_sheet when only the times and people are wanted. Input: plan, a dpl.plan/1 object that validates; optionally day, the id of one day in the plan's schedule (a day the plan does not have is refused, and the refusal lists the days it has). Output: dpl.shoot-pack/1. No AI model runs; we don't keep the plan. Needs an agent key from a Shoot Plan account, and is free up to 3 projects a month. A pro…
Make a shot list from a plan — Turns a plan into a shot list a crew can work from. Input: plan; format, "json" (default, dpl.shot-list/1) or "markdown"; vocabulary, an optional industry vocabulary for camera terms (for example "movielabs@1.0"). Output: the shot list, or {format:"markdown", markdown}. No AI model runs. We don't keep the plan. Needs an agent key from a Shoot Plan account, and is free up to 3 projects a month. A project is identified by the plan's work id and title; it counts when this tool first makes a finished document for it that month. shoot_plan_allowance says what is left. Over the limit it answers ALL…
Cut a smaller plan out of a big one — Cuts out part of a plan, so that you can send a smaller plan when your context is short: the scenes, the shots or the sequence you name, with everything they refer to (characters, places, props, sound and the rest) and their times unchanged. The slice is a valid plan of its own, so you can send it to shoot_plan_check, and it says which whole plan it was cut from (slice_of). It is for reading and editing one part: to change the film, change the whole plan and check that. Input: plan, and exactly one of scenes (scene ids), shots (shot ids) or sequence (one sequence id). Ids may be a name, a com…
A short account of a plan, for when context is short — Gives a short account of a plan, about 300 words, so that you can pick the work up again without being sent the whole plan: the title, the planned runtime against the target, the counts of scenes, shots, characters and places, the thesis and journey, one line for each sequence and scene, the missing-details counts, and, if you pass the check result, the open findings by severity. Fetch it first when you come back to a film. The scene ids it lists are the ones to ask shoot_plan_slice for. Input: plan, a dpl.plan/1 object; optionally findings, the dpl.findings/1 document shoot_plan_check return…
Convert a Shoot Plan you have bought into a DPL plan — Converts one of your organisation's purchased Shoot Plan plans into a dpl.plan/1 plan in the short-form profile, so you can pass it to shoot_plan_check. It is the same conversion dpl-eil's reference importer makes, and it is one way only. Input: planId (the plan's planId, spp_..., as shown inside shoot_plan_get) or taskId (the full taskId from shoot_plan_list); optionally dayStart (HH:MM, default 09:00: the clock time of minute 0 of the shoot) and date (YYYY-MM-DD). Output: {plan, report}. The report lists every field of the Shoot Plan plan that has no place in DPL or was approximated, with c…
Check a take log against its plan — Checks a log of takes against the plan it was shot from, before you rely on it. It finds shots that are not in the plan, take numbers used twice, one op_id used for two different takes, file names written as paths, and a log made for another film or another revision of the plan. Each problem has a path into the log and a fix. A log with errors is a normal answer, not an error. The log is text about recordings (shot ids, verdicts, file names, timecodes). The tools take text only, never video or audio, and no AI model runs. Input: plan (a dpl.plan/1 object) and takes (a dpl.takes/1 object). Out…
Changed the definition of "shoot_plan_revise"
Use the plan's one included revision. This cannot be undone and usestheupallowancethat revision, so call shoot_plan_revision_preview first and confirm with ⟨43 unchanged words⟩
Certificate recorded, valid to 2026-12-20
Authorization not required
Unknown → Live
First tool surface recorded: 11 tools (server version 2026-10-01.v1)
https://theamateur.co.uk/mcp/shoot-plan (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 7 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed