{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_22mvgc42r8ft","handle":"shoot-plan","url":"https://wellknown.network/agents/shoot-plan","links":{"self":"https://wellknown.network/agents/shoot-plan/record.json","html":"https://wellknown.network/agents/shoot-plan","markdown":"https://wellknown.network/agents/shoot-plan/record.md","api":"https://wellknown.network/api/v1/agents/shoot-plan","status":"https://wellknown.network/api/v1/agents/shoot-plan/status","claim":"https://wellknown.network/agents/shoot-plan/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/shoot-plan/claim.json","badge":"https://wellknown.network/agents/shoot-plan/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/shoot-plan/history","tools":"https://wellknown.network/api/v1/agents/shoot-plan/tools"},"ard":{"identifier":"urn:air:theamateur.co.uk:server:shoot-plan","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Shoot Plan","summary":"Practical filming plans for AI assistants, with tools to draft, check and export shot plans.","description":"Practical filming plans for AI assistants, with tools to draft, check and export shot plans.","publisher":{"name":"uk.co.theamateur","url":null},"homepage":"https://theamateur.co.uk/developers/shoot-plan/","repository":null,"version":"0.1.1","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://theamateur.co.uk/mcp/shoot-plan","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-26T22:45:56.969442Z","publishedAt":"2026-10-26T22:45:56.969442Z","registryName":"uk.co.theamateur/shoot-plan"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"productivity.tasks","name":"Tasks & To-do","confidence":0.948,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"documents.conversion","name":"Document Conversion","confidence":0.51,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content","dev","documents","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 7h ago.","lastOkAt":"2026-11-02T19:22:29.818Z","lastProbedAt":"2026-11-02T19:22:29.818Z","statusComputedAt":"2026-11-02T19:28:26.175Z","reliability30d":{"probes":42,"successRate":1,"p50Ms":39,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":42,"ok":42,"authBoundaryOk":0,"serviceOk":42,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-11-02T19:22:29.818Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":64,"error":null,"detail":{"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"toolCount":34,"toolsHash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","serverName":"the-amateur-shoot-plan","capabilities":["tools"],"serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18"}},{"at":"2026-11-02T10:22:20.769Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":27,"error":null,"detail":{"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"toolCount":34,"toolsHash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","serverName":"the-amateur-shoot-plan","capabilities":["tools"],"serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18"}},{"at":"2026-11-02T02:23:27.113Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":43,"error":null,"detail":{"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"toolCount":34,"toolsHash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","serverName":"the-amateur-shoot-plan","capabilities":["tools"],"serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18"}},{"at":"2026-11-01T18:24:11.315Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":59,"error":null,"detail":{"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"toolCount":34,"toolsHash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","serverName":"the-amateur-shoot-plan","capabilities":["tools"],"serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18"}},{"at":"2026-11-01T10:28:57.157Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":40,"error":null,"detail":{"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"toolCount":34,"toolsHash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","serverName":"the-amateur-shoot-plan","capabilities":["tools"],"serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18"}},{"at":"2026-11-01T02:26:46.886Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":82,"error":null,"detail":{"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"toolCount":34,"toolsHash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","serverName":"the-amateur-shoot-plan","capabilities":["tools"],"serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18"}},{"at":"2026-10-31T18:25:05.768Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":32,"error":null,"detail":{"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"toolCount":34,"toolsHash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","serverName":"the-amateur-shoot-plan","capabilities":["tools"],"serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18"}},{"at":"2026-10-31T10:23:37.432Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":24,"error":null,"detail":{"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"toolCount":34,"toolsHash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","serverName":"the-amateur-shoot-plan","capabilities":["tools"],"serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18"}},{"at":"2026-10-31T02:24:46.948Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":43,"error":null,"detail":{"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"toolCount":34,"toolsHash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","serverName":"the-amateur-shoot-plan","capabilities":["tools"],"serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T18:29:26.334Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":39,"error":null,"detail":{"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"toolCount":34,"toolsHash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","serverName":"the-amateur-shoot-plan","capabilities":["tools"],"serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18"}}],"tools":[{"name":"shoot_plan_capabilities","description":"Return truthful Shoot Plan scope, availability, privacy and commercial state."},{"name":"shoot_plan_example","description":"Return a synthetic example plan generated by the real planner, with its provenance."},{"name":"shoot_plan_quote","description":"Calculate a deterministic public quote from non-private project metadata. Do not send a script or brief."},{"name":"shoot_plan_create","description":"Create a plan for an authenticated organisation after authoritative payment confirmation."},{"name":"shoot_plan_list","description":"List the authenticated organisation's Shoot Plans, most recently changed first, without returning private intake or full plan content. Archived plans are left o"},{"name":"shoot_plan_status","description":"Return a plan's status, version, whether its included revision is used, its customer-facing order reference, and progress (essential shots ticked, next shot, wh"},{"name":"shoot_plan_get","description":"Return a full plan: shots in filming order (priority must = essential), setup groups per location or visit, checklist, coverage risks, progress (item keys alrea"},{"name":"shoot_plan_timing","description":"Structured plans only (not older free-text plans). Compare planned and actual filming time between consecutive ticks in field mode. plannedSeconds is the planne"},{"name":"shoot_plan_revise","description":"Use the plan's one included revision. This cannot be undone and uses up that revision, so call shoot_plan_revision_preview first and confirm with the person. Fo"},{"name":"shoot_plan_revision_preview","description":"Structured plans only; older free-text plans cannot be previewed. Preview a revision without using it: what would change, which checked shots would be cleared, "},{"name":"shoot_plan_progress_sync","description":"Tick or untick shots and checklist items. Each op: itemKey \"shot:<shotId>\" or \"check:<itemId>\" from shoot_plan_get, basePlanVersion = the plan's version, a new "},{"name":"shoot_plan_check","description":"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, speak"},{"name":"shoot_plan_missing_details","description":"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 "},{"name":"shoot_plan_apply_fix","description":"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_"},{"name":"shoot_plan_format","description":"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 s"},{"name":"shoot_plan_fit_to_budget","description":"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"},{"name":"shoot_plan_shot_list","description":"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 vocab"},{"name":"shoot_plan_export_for_generation","description":"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 pe"},{"name":"shoot_plan_draft_start","description":"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-"},{"name":"shoot_plan_draft_next","description":"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"},{"name":"shoot_plan_draft_gate","description":"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 "},{"name":"shoot_plan_validate_takes","description":"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"},{"name":"shoot_plan_merge_takes","description":"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,"},{"name":"shoot_plan_coverage_status","description":"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 c"},{"name":"shoot_plan_edit_guide","description":"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"},{"name":"shoot_plan_export_edit","description":"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 d"},{"name":"shoot_plan_call_sheet","description":"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."},{"name":"shoot_plan_shoot_pack","description":"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 on"},{"name":"shoot_plan_summary","description":"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 again"},{"name":"shoot_plan_slice","description":"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 re"},{"name":"shoot_plan_diff","description":"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 reor"},{"name":"shoot_plan_record_decision","description":"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 agai"},{"name":"shoot_plan_to_dpl","description":"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 t"},{"name":"shoot_plan_allowance","description":"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."}],"package":null,"toolSurface":{"id":"ts_jjm32bjys7f5","endpointId":"ep_7rzvfzv5r89g","hash":"7b30e062d515baac99553e7bdc368dfa4934c432940df1c49d2926f68695876b","toolCount":34,"serverName":"the-amateur-shoot-plan","serverVersion":"2026-10-01.v1","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-27T00:25:42.273Z","lastSeenAt":"2026-11-02T19:22:29.826Z","observations":22,"toolNames":["shoot_plan_capabilities","shoot_plan_example","shoot_plan_quote","shoot_plan_create","shoot_plan_list","shoot_plan_status","shoot_plan_get","shoot_plan_timing","shoot_plan_revise","shoot_plan_revision_preview","shoot_plan_progress_sync","shoot_plan_check","shoot_plan_missing_details","shoot_plan_apply_fix","shoot_plan_format","shoot_plan_fit_to_budget","shoot_plan_shot_list","shoot_plan_export_for_generation","shoot_plan_draft_start","shoot_plan_draft_next","shoot_plan_draft_gate","shoot_plan_validate_takes","shoot_plan_merge_takes","shoot_plan_coverage_status","shoot_plan_edit_guide","shoot_plan_export_edit","shoot_plan_call_sheet","shoot_plan_shoot_pack","shoot_plan_summary","shoot_plan_slice","shoot_plan_diff","shoot_plan_record_decision","shoot_plan_to_dpl","shoot_plan_allowance"],"distinctSurfaces":3},"endpointFacts":[{"id":"ep_7rzvfzv5r89g","url":"https://theamateur.co.uk/mcp/shoot-plan","type":"mcp_streamable_http","factsCheckedAt":"2026-11-02T19:22:29.836Z","auth":{"observedAt":"2026-11-02T19:22:29.893Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-11-02T19:22:29.964Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"theamateur.co.uk","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-09-21T08:38:05.000Z","validTo":"2026-12-20T08:38:04.000Z","daysToExpiry":47,"sanCount":1,"fingerprint256":"A2:B8:33:EF:86:DC:7F:67:1E:52:1E:75:16:A6:50:63:69:60:61:18:06:F6:AC:8D:56:BD:DC:83:16:C8:75:5D"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"uk.co.theamateur/shoot-plan","url":"https://registry.modelcontextprotocol.io/v0/servers/uk.co.theamateur%2Fshoot-plan","firstSeenAt":"2026-10-21T01:21:32.596Z","fetchedAt":"2026-10-31T13:18:37.238Z","normalizedAt":"2026-10-31T13:18:37.238Z"}]},"firstSeenAt":"2026-10-21T01:21:32.596Z","updatedAt":"2026-11-02T19:30:27.879Z"}