add_breakdown_tags
ChatGPTSave production breakdown tags (props, wardrobe, vehicles, sfx and so on) for a range of scenes, straight into the Breakdown. NAME A TAG THE WAY THE SCRIPT DOES. The name is the thing itself in one to four words, using the words the script uses in that scene — "Tabletop", "Jonah's stick", "Frying pan" — never a description of what happens to it ("Fallen branch dragged over the table") and never a sentence. The name is what the app highlights in the script, so it must be words that are actually written in that scene; a description makes it light up some unrelated word instead. Condition, quantity and continuity go in note ("half-buried, legs gone"). The same thing keeps the same name in every scene it appears in, so the Breakdown lists it once with all its scenes: if the script calls it "the tabletop" in one scene and "the table" in another, pick one and use it throughout. ASK FIRST: list the tags you would add in chat, grouped by scene and category, and wait for the author's go-ahead — the chat is the approval, there is no review step in the app. Work in batches of roughly 10-15 scenes. Read the scenes first with read_scene or read_range, and check list_breakdown so nothing is tagged twice. Key rule: if a character handles it, it is a prop; if it just sits there, it is set dressing. For cast: the app already highlights every character cue automatically, so do NOT re-tag those — what it cannot do is read action lines. Tag a character where they are named or described in action (not speaking), and tag non-speaking characters who matter to the story (a recurring silent figure, someone central to a scene). Someone who merely fills space belongs in extras, not cast — that is the standard breakdown distinction.
add_contacts
ChatGPTAdd crew, cast, extras, locations or companies the plan points at. Cast and crew are separate because a call sheet lists them separately and calls them at different times. Two kinds join to the screenplay: a LOCATION given script_locations stands in for those scene headings and turns up on the call sheet for every day those sets shoot, with its address; a CAST contact given script_cast plays those characters and is named beside the part on every day they work. Spell both exactly as get_locations and list_breakdown do. ASK FIRST.
add_milestones
ChatGPTAdd milestones — a point rather than a stretch: financing closing, the script lock, picture lock, delivery. Each draws a line down the whole Timeline and can be waited on. ASK FIRST.
add_shoot_break
ChatGPTAdd a break to the Stripboard: a day off, a company move, a travel day, a turnaround. A BREAK IS NOT A SHOOT DAY — it carries its own label and takes no day number, so putting one in moves every date after it WITHOUT renumbering the days. Put it after a given day with "at", or leave "at" out for the end.
add_shoot_day
ChatGPTAdd one empty shoot day to the Stripboard. Put it after a given day with "at", or leave "at" out to add it at the end. Nothing is moved off any other day. Use schedule_scenes to put scenes on it.
add_shots
ChatGPTAdd storyboard shots to one scene, in the order they will be shot. ASK FIRST: list the shots you would add in chat and wait for the author's go-ahead — the chat is the approval, there is no review step in the app. Read the scene first with read_scene. Each shot is one setup: say what the camera sees, plainly, the way a director would to a DP ("Wide. Sam alone at the table." / "Her face, as she decides."). Shots are lettered automatically from their order — do not number them yourself. They arrive without drawings; add those with set_shot_image, or the author draws them.
add_work
ChatGPTAdd jobs to the Timeline. ASK FIRST: list what you would add, with dates, and wait for the go-ahead — the chat is the approval, there is no review step in the app. Every job goes in one of the five stages of a film: dev, pre, prod, post, dist. A job is a thing that happens over a stretch of time rather than a person who does it — "Color grade", not "Colorist"; "Screenplay" and "Script doctoring", not "Writer". Any job can go in any stage, and its color comes from the stage it is in. Dates are YYYY-MM-DD.
apply_edit
ChatGPTReplace a run of elements. This writes directly to the screenplay — there is no separate in-app approval step. The review is the chat conversation itself: only call this after the author has actually told you to go ahead (an explicit "apply it", "do that", "yes" to a plan you laid out — not just discussing what an edit could look like). Always read the range first with read_scene or read_range so the replacement is deliberate. Edits save to the script the way typing does; they do not add Version History entries — only the author pressing Save does. Before a large or sweeping edit, suggest the author press Save first so there is a version to go back to. Undo is otherwise conversational: they tell you what's wrong and you fix it with another apply_edit.
auto_schedule_board
ChatGPTLay the whole Stripboard out from scratch, grouping scenes by set and keeping day and night apart. THIS THROWS THE EXISTING BOARD AWAY, including any order the author has already made by hand, and it cannot be undone from here. It is a first pass, not an answer. ASK PLAINLY and get a yes before calling it.
create_project
ChatGPTCreate a new screenplay in this account and seed it with an opening scene or two if you have one ready. This is a direct creation, not a suggestion — the same as importing a file in the app — because there is no existing text to protect. It cannot touch or overwrite any other project.
delete_chapter
ChatGPTRemove a chapter and its prose entirely, shifting later chapters up by one. Refuses if the chapter still has notes attached unless force is true — read_notes first so you know what would be lost. Cannot remove the only chapter in a manuscript.
edit_budget
ChatGPTChange the budget: add, change and remove detail lines, set the globals you own, and set a fringe rate. Add, change and remove in ONE call — a round trip costs a whole tool list. Read get_budget first for the account numbers and the line ids. A line goes in a SUB-ACCOUNT, named by its number (1101, not 1100), and that is the level a budget is written at. rate is per unit; qty and x may be a number or a global in capitals; misc is a flat amount on top. labor:false marks a line that is a HIRE, A PURCHASE OR AN ALLOWANCE rather than a person — fringes skip it. Get this wrong and the budget charges pension and health on a camera package, which is wrong by thousands in the direction that loses an argument with a bond company, so mark every piece of kit. You cannot add or remove an account or a sub-account, and you cannot touch a global the film fills in for itself. ASK FIRST, and say what it does to the total.
edit_chapter
ChatGPTReplace the prose of one whole chapter. This is a full replacement, not a patch — read_chapter first and send back the complete chapter text with your changes in it, or you will drop everything you left out. Blank lines separate paragraphs and a line containing only starts a new section. The chapter's own title is kept; notes are carried onto the rewritten sections by position.
edit_deliverables
ChatGPTThe delivery schedule: what has to be handed over at the end of the film and whether it has been. Add, change and remove in one call. Each one sits under a heading a distributor's own list uses — Picture, Sound, Text, Legal, Publicity — and is in one of three states and no more: "todo" (not started), "doing" (in hand), "done" (delivered). There is no percentage: 90% done on a delivery schedule is a hope, not a state. spec is the detail that stops the argument ("ProRes 4444 XQ, 24fps, 5.1"). due is YYYY-MM-DD. Read get_plan first for what is already there and its ids. ASK FIRST.
edit_moodboard
ChatGPTMake a board, rename one, throw one away, and put things on it. Add, change and remove cards in ONE call. A note is "note" with text; a color is "swatch" with hex; a section is "frame" with a title, and a section is the only card that may carry tags — each { k, v } where k is "elem", "cast" or "loc", and the name must be one the SCRIPT actually has or it is dropped. A card inside a section is already said to be about what the section is about, so do not tag it again. PICTURES CANNOT BE ADDED FROM HERE — a picture is a file, shrunk in the browser before it is stored; say so and let them drop it on the board. Position is x and y in points, and the board clips to the edges of the cards already on it, so read get_moodboard and line new cards up with what is there rather than stacking them all at nought. ASK FIRST.
edit_project_settings
ChatGPTThe screenplay's own settings: its title and the writing credit, the contact details printed on the title page, whether scenes are numbered, and whether dual dialogue is available. Only what you pass is changed. TURNING SCENE NUMBERS ON numbers every scene from 1; turning them off takes the numbers off the page but the breakdown and the schedule keep working. Dual dialogue only puts the Dual button in the editor — it marks nothing by itself, because two people talking at once is a decision, never a guess. ASK FIRST: the title and the credit print on every export.
edit_shoot_days
ChatGPTDEPRECATED — kept so apps connected before the split go on working. Prefer add_shoot_day, add_shoot_break, remove_shoot_day, relabel_shoot_break and auto_schedule_board, which say in their own names and descriptions what each one does. Add or remove a shoot day or a break on the Stripboard, or lay the whole board out automatically. A BREAK IS NOT A SHOOT DAY — it is a day off, a company move, a travel day or a turnaround, it carries its own label, and it takes no day number, so putting one in moves every date after it without renumbering the days. "auto_schedule" throws the board away and rebuilds it by grouping scenes by set and keeping day and night apart — a first pass, not an answer, and it discards any order the author has already made, so ASK PLAINLY before using it.
export_document
ChatGPTGet a finished document OUT of Scriptnib: the script as a PDF, Final Draft or Word file, the tagged PDF, sides or a call sheet for one shoot day, the Stripboard, One-liner or Day Out of Days, the breakdown, the budget, the storyboard, or the delivery schedule. You cannot carry a PDF yourself, so by default this returns a LINK that opens without signing in and works for one hour — give them the link, say it expires, and do not paste it anywhere public. deliver: "email" sends it instead, as an attachment, TO THE ADDRESS ON THEIR OWN ACCOUNT and nowhere else — there is deliberately no way to send somebody else a file, so do not offer it. "text" is only for breakdown_csv and budget_csv and hands the CSV straight back, which is the one to use when you are going to read the numbers yourself rather than give them a file. sides and call_sheet need shoot_day_id from get_schedule. A document only comes out if they hold the page it comes off, and that is checked again when the link is opened, not just now.
get_budget
ChatGPTThe film's budget. The account numbers are the industry's — 1100 is always Story & Rights, 3300 is always Camera — and a line producer, a bond company and a tax-credit auditor all read them the same way, so NEVER renumber, rename or reorder them. Four levels: topsheet, account, sub-account, line. detail "topsheet" (the default) is the block totals and every account total, which is what somebody means by "what does the film cost"; give an account number instead to read that account's sub-accounts and every line in them. A LINE IS Qty x Rate x X, plus Misc. Qty and X may be a GLOBAL in capitals — SHOOT, SHOOTWK, CAST, CASTDAYS, LOCATIONS, PAGES are read off the Stripboard and the breakdown and must not be typed over, and PREP, WRAP, POST are the producer's to set. JUST CALL IT, including for one person's fee — that is an ordinary question about a film and the budget is where the answer is. If they are not allowed the budget the app refuses and tells you so. You cannot see who holds what, so never decide it yourself and never answer from a guess about permission.
get_call_sheet
ChatGPTThe call sheet for one shoot day, with everything the script already answers filled in: the date, the scenes, who is in them, the page count, the sets, and any location contact that stands in for one of those sets. What the production has typed in comes back too, blank where nothing has been written: the times, the unit details, the notes, the four call times against each part, and the crew with theirs. If one of the day's locations has been placed on the map, the light comes back as well — first light, sunrise, golden hour, sunset, last light, in the timezone of the place — and the weather when the day is close enough for a forecast, which is about nine days. Day numbers come from get_schedule.
get_development
ChatGPTA screenplay's Develop pages: story (logline, theme, genre, target pages), the beat sheet template and notes, characters (role, want, need, flaw, and a 5-point arc), and the outline — scene cards with heading, summary, beat, cast, and an optional draft of the scene in screenplay elements. Also lists the script’s own scenes and who speaks in each, and which outline cards are already in the script (a card is in the script when a scene has its heading). Read this before update_development.
get_instructions
ChatGPTScriptnib's house instructions for a job on a screenplay. ALWAYS call this first when the author asks for one of these, however casually it is worded, and follow what it returns step by step instead of your own approach: "format" — formatting pass, clean-up, fixing format, typos or errors, 'format my script', 'clean up X'; "breakdown" — production breakdown, tagging props / wardrobe / cast / extras / vehicles / effects; "loglines" — log lines / loglines, pitch lines, one-line summaries; "story_analysis" — beat sheet, story analysis, structure notes, Save the Cat; "fill_development" — filling in Develop (outline, characters, beat sheet, story) from the screenplay, e.g. 'fill my development from my screenplay'.
get_locations
ChatGPTEvery location in the screenplay, derived automatically from scene headings, with the scenes shot there and which cast appear at each. Useful for location planning questions without reading the whole script. Also returns the cast report.
get_manuscript
ChatGPTThe chapter list for one manuscript: every chapter with its position, title, section count and section ids, plus whether the manuscript is locked. Use this first to find where something is before reading it.
get_moodboard
ChatGPTWhat the film is going to look like. A screenplay has SEVERAL boards — the whole picture, a character, a sequence, a palette — each a free canvas rather than a list. With no board_id this names the boards; with one it gives that board's cards. Four things go on a board: a "frame" (a SECTION, which is the only thing that carries a tag), a "note" (grey paper, never a yellow sticky), a "swatch" (one color) and an "image". Cards carry x, y, w and h because where a thing sits and what it sits next to is most of what a moodboard IS.
get_plan
ChatGPTThe production plan: the five stages of the film, every job in them with its dates and progress, the milestones, the contacts the plan points at, and which shoot days have a call sheet started. Read this before changing anything — ids come from here, and so does the answer to "what is late". A job carries waits_for, so this is also where the dependency chain is.
get_project
ChatGPTMetadata for one screenplay plus its scene list: every scene heading with its index and page number. Use this to find where something is before reading it.
get_revisions
ChatGPTWhether the script has been issued to a crew, and what has happened since. Each issue is a COLOUR — White, Blue, Pink, Yellow, Green, Goldenrod, Buff, Salmon, Cherry, then Second White — and once a colour goes out its pages and scene numbers are held, so page 42 keeps meaning page 42 for everybody holding a printed script. Says which colour is current, when it went out, every colour before it, and how many lines have been written since — so you can say whether the crew are holding the current pages. What a colour does to the SHOOT DAYS — which days are touched, who is in or out — is the impact panel in Production → Revisions; send them there for it. READ-ONLY: issuing a colour is deliberately not here. It cannot be taken back, the pages are out, and the app asks for the password before doing it — that is a decision for the person, not for you. Tell them to use Production → Revisions.
get_schedule
ChatGPTThe shooting schedule from the Breakdown's Stripboard: each shoot day with its date, page count and scenes (in shooting order), days off, scenes not scheduled yet, and the Day Out of Days (which days each cast member works or holds). Read-only — the author builds the schedule in the Stripboard.
get_shot_image
ChatGPTLook at the drawing on one shot. Returns the picture itself, so you can see what was boarded and talk about it — whether it matches the scene, what is missing, what the next shot should be. Use list_shots first to find the shot_id. The small size is enough to read a board and is what you should normally ask for; "full" is the stored 1600px version and only worth it when detail matters.
insert_chapter
ChatGPTCreate a new empty chapter immediately after the given position, shifting later chapters down by one. Use after_chapter_index -1 to put it at the very start. Returns the new chapter_index. Titles are stored upper case in the text (that is what makes a line register as a chapter) but display exactly as you write them.
insert_scene_draft
ChatGPTCopy one outline card's scene draft (from Develop) into the screenplay — what the app's "Insert into screenplay" button does. It goes after the scene of the nearest earlier card already in the script, so the script follows the outline. If the card is already in the script, replace=true swaps that scene for the draft (only when the author asked). REPLACE THROWS THE EXISTING SCENE AWAY: every line of it goes, and the save is an ordinary one rather than a Version History entry, so what was there cannot be got back from Versions. ASK FIRST: this writes to the script, so only call it once the author has said to insert it. Before replacing, tell them it will overwrite what is there and suggest they press Save a version first.
list_breakdown
ChatGPTBreakdown tags already on this screenplay. Call this BEFORE adding more, so a second pass does not duplicate the first. Filter by category or scene.
list_manuscripts
ChatGPTList the prose manuscripts in this account, with when each was last changed and whether it is locked. Manuscripts are the Novel workspace — separate from screenplays.
list_projects
ChatGPTList the screenplays in this account, with page counts and when each was last changed.
list_shots
ChatGPTThe storyboard: every scene with the shots planned for it, whether each shot has a drawing yet, and whether the scene has been rewritten since its shots were made. Read this before adding shots so a scene is not boarded twice.
list_suggestions
ChatGPTLegacy: script edits used to go through a pending-suggestion review step before apply_edit existed. This lists any that are still sitting unreviewed from that older workflow — new edits never create one.
merge_chapters
ChatGPTCombine two adjacent chapters into one. The second chapter’s heading is replaced by a section divider, so its prose joins the first while both chapters’ notes stay attached to their own sections. second_index must be first_index + 1 — use move_chapter first if they are apart.
move_chapter
ChatGPTRelocate a chapter to a different position in the sequence, shifting everything between accordingly. The prose is untouched — this is for reordering an already-drafted manuscript. Notes travel with their chapter.
read_chapter
ChatGPTRead the prose of one or more consecutive chapters, section by section, with each section id attached so notes and edits can target it. Read generously — pass a larger count to take in several chapters at once when you need the wider context.
read_notes
ChatGPTThe author's notes on a manuscript, each with the section id and a snippet of the prose it is attached to. Returns every note by default, or just one chapter's when chapter_index is given.
read_range
ChatGPTRead a run of elements by position — for reading across scene boundaries, or the whole script in chunks.
read_scene
ChatGPTRead one scene, by its index from get_project. Returns the elements with their positions, which apply_edit needs.
read_script_notes
ChatGPTThe notes left on this screenplay — the writer's own, and anybody reading it through a share link. Each one says who wrote it, the line it is attached to and the words it was left on, so you can answer "what did the director ask for" or work through a pass of notes. Replies are grouped under the note they answer. Read-only.
relabel_shoot_break
ChatGPTChange the words on a break — "Day off" to "Company move — Dublin to Wicklow". Names the break by the shoot day it sits after. Changes nothing else about the board.
remove_breakdown_tags
ChatGPTDelete breakdown tags by id (from list_breakdown) — to take back a batch that was wrong. Only tags, never the script: the words stay where they are, they just stop being highlighted and listed in the Breakdown. Cast highlighted from a character cue is not a tag and cannot be removed. ASK FIRST: say which tags and how many.
remove_contacts
ChatGPTRemove contacts. They come off everything they were on. No undo, so ASK FIRST and say how much work they are attached to.
remove_milestones
ChatGPTRemove milestones. Anything waiting on them stops waiting. No undo, so ASK FIRST.
remove_shoot_day
ChatGPTRemove one shoot day from the Stripboard. The days after it move up and renumber. ANY SCENES ON IT ARE HANDED BACK to "not scheduled" rather than lost — the reply says how many, and they need putting somewhere with schedule_scenes.
remove_shots
ChatGPTTake shots off the board, with their drawings. Mainly for undoing your own work — a batch you added that the author did not want, or a shot added by mistake — which is why it takes a list. There is no undo for this, so ASK FIRST and name the shots you mean.
remove_work
ChatGPTTake pieces of work off the Timeline. Anything waiting on them stops waiting. Mainly for undoing your own work — a batch you added that the author did not want — which is why it takes a list. There is no undo, so ASK FIRST and name what you mean.
rename_chapter
ChatGPTChange a chapter’s title, leaving its prose, sections and notes untouched. This is the only way to retitle a chapter — edit_chapter deliberately preserves the existing title, and replace_text cannot reach it because the title is not part of the chapter body. Use it after delete_chapter or move_chapter, when the surviving numbering no longer matches. Titles must read as headings: start with "Chapter"/"Part", or be a short line with no trailing punctuation.
rename_character_or_location
ChatGPTRename a character or a location THROUGHOUT the whole screenplay and everything built on it, in one call. ALWAYS use this instead of rewriting cues or scene headings with apply_edit: it is the only thing that also moves the breakdown tags, the character sheet and outline cards in Develop, the actor or the place standing in for it on the production plan, and the moodboard sections tagged with it. Renaming by hand changes the script and leaves all of those pointing at somebody who is no longer there. For a character give the cue as the script writes it ("MAYA"); for a location give the set name out of the heading ("HARBOUR WAREHOUSE"), not the whole heading. It is saved as an ordinary edit, so Version History undoes it. It will not merge two names into one — that would quietly lose one set of notes — so renaming A to an existing B is refused. ASK FIRST: it rewrites every line that names them.
renumber_chapters
ChatGPTResequence every chapter heading to CHAPTER ONE, CHAPTER TWO, … in current order — one call instead of renaming each chapter after a reorder or deletion. Prose, sections and notes are untouched. Any existing title wording is replaced, so use rename_chapter instead where titles carry names rather than numbers. Opening front matter with no heading of its own is left alone and does not take a number.
replace_section
ChatGPTReplace one whole section of prose by its section id, leaving the rest of the chapter untouched. Useful when rewriting a beat wholesale rather than changing a phrase — sections are the same unit notes attach to, so the note on this section stays with it.
replace_text
ChatGPTChange one passage inside a chapter without resending the chapter. Give the exact text to replace and what it becomes. Prefer this over edit_chapter for anything short of a substantial rewrite — it is faster, cannot reintroduce stale prose from elsewhere in the chapter, and normally leaves every note exactly where it was. old_text must match the manuscript exactly, including punctuation — except that straight and curly quotes count as the same character, so a straight apostrophe matches a curly one — and must appear only once in the chapter: if it appears more than once the call is refused, so extend it with surrounding words until it is unique. Paragraphs are separated by a blank line, so a passage may span several.
restore_snapshot
ChatGPTPut a Novel manuscript back exactly as it was when a snapshot was taken (smart_quotes apply takes one automatically). Omit snapshot_id to list the available snapshots, newest first. Restoring takes a snapshot of the current state first, so a restore can itself be undone. Manuscripts only — not screenplays.
schedule_scenes
ChatGPTPut scenes on a shoot day, or take them off the board. THIS IS HOW THE STRIPBOARD IS BUILT. Scenes are given by scene_index from get_project or get_schedule, and a scene only ever sits on one day — moving it to another takes it off the first. day is the shoot day number as get_schedule prints it (1 is the first); a number past the end makes the days up to it. Pass day: null to put them back under "not scheduled". Read get_schedule first: a day has a page target and piling a fifteen-page day on is a schedule nobody can shoot. ASK FIRST.
search_manuscript
ChatGPTFind text anywhere in a manuscript without reading it all. Returns every match with its chapter index, chapter title, section id and surrounding context — the way to track a motif, a repeated phrase or a verbal tic across a whole book, and to locate the exact wording to hand to replace_text.
search_script
ChatGPTFind text anywhere in a screenplay. Returns matching lines with their element index, element type, and scene. Reports total_matches alongside the hits and sets truncated when the list was cut short, so a partial result is never mistaken for a complete one.
set_call_sheet
ChatGPTWrite the part of a call sheet the script cannot answer: the times, where the unit is, the notes, when each actor is wanted, and any crew call that differs from the general one. Everything else on the sheet comes from the schedule and the breakdown and is not settable here. Only the fields you give are touched; pass an empty string to clear one. Times are 24-hour, "HH:MM". ASK FIRST.
set_schedule_settings
ChatGPTThe Stripboard's own settings: the first day of photography (every date on the board, the call sheets and the Day Out of Days is counted from it), how many pages a day is aimed at, and whether weekends are skipped. Only what you pass is changed. ASK FIRST — moving the first day moves every date on the film.
set_shot_image
ChatGPTPut a drawing on one shot, replacing whatever was there. THE PICTURE TRAVELS AS BASE64 IN image_base64 — that is how an image gets into Scriptnib over MCP. Send the ORIGINAL file, exactly as it came out of whatever made it: full resolution, not resized, not re-compressed, not a preview or a reduced copy. Scriptnib compresses it once itself (2048px WebP, plus a thumbnail), and a picture that was already squeezed before it got here cannot be un-squeezed — it just comes out twice-compressed and soft. Up to about 8 MB. image_url is an alternative when the picture is already on the open web at an https address Scriptnib can fetch; it is cheaper, but only use it for a real public link, never for a reference that only your app can resolve. ASK FIRST, as with any change to existing work.
set_shot_images
ChatGPTPut drawings on several shots at once — the way to board a whole scene. Same rules as set_shot_image, one entry per shot: the ORIGINAL picture as base64 in image_base64, full resolution, not shrunk or re-compressed first. Up to 12 at a time. Each one is reported back with the size it arrived at and the size stored, and the ones that fail do not stop the rest. ASK FIRST.
set_title_logo
ChatGPTPut a title logo on the screenplay — the artwork that stands in for the typed title on the exported title page. THE PICTURE TRAVELS AS BASE64 IN image_base64. Send a PNG WITH A TRANSPARENT BACKGROUND: the title page is white paper and a logo on a solid rectangle prints as a gray box on it. Send the original file at full resolution — it is printed, not shown on a screen, so the pixels are worth having, and Scriptnib keeps it exactly as it arrives. It is drawn fitted inside a 4 × 1.4 inch box, centered, so a wide logo and a tall one take the same room and no logo can come out bigger than another; make it at least 1200 px on its long side to print sharply, and never under 600. PNG or JPG only — not SVG, not WebP. image_url is an alternative when the picture is already on the open web at an https address Scriptnib can fetch. Pass remove: true to take the logo off and go back to the typed title. Final Draft exports keep the typed title either way, because an .fdx title page cannot hold artwork. ASK FIRST — this changes what every export of this screenplay looks like.
smart_quotes
ChatGPTStraight → curly quotes in a Novel manuscript (manuscripts only — screenplays are out of scope). Uses exactly the same converter as the Novel tab: ’ for apostrophes and elisions (don’t, ’em, ’71), ‘ ’ “ ” for quotes, foot/inch marks like 6'2" left straight. mode "preview" is the DEFAULT and changes nothing: it returns counts by kind, up to 20 sample changes with chapter index and context, and every ambiguous case in full (a ' at the start of a word, decided as apostrophe ’ or opening quote ‘) so they can be reviewed first. mode "apply" ALWAYS takes a snapshot first and returns its snapshot_id (undo with restore_snapshot), converts in place so section ids and notes stay attached, and verifies that folding every quote back to straight gives the original text exactly — if not, nothing is saved. Omit chapter_index for the whole manuscript.
split_chapter
ChatGPTSplit one chapter into two at a section boundary. Everything from at_section_id onward becomes a new chapter directly after the original, keeping its notes. Section ids come from get_manuscript or read_chapter. Cannot split at a chapter’s first section, which would leave the original empty.
start_budget
ChatGPTCreate the budget for a screenplay, which is what every other budget tool needs first. It is the industry chart of accounts — 45 accounts and 267 sub-accounts, 1100 Story & Rights through to the bond — with this film's own figures already wired in: SHOOT, SHOOTWK, CAST, CASTDAYS, LOCATIONS and PAGES are read off the Stripboard, the Day Out of Days and the breakdown, so a line can say "1 x SHOOT days x 650" and stay right when the board moves. It is exactly what Production → Budget makes, built by the same code. Takes nothing but the screenplay: there is no template or currency to pick, because the chart is the industry's and is not ours to vary. If there is already a budget it CHANGES NOTHING and says so — it can never overwrite one. JUST CALL IT. If they are not allowed the budget the app refuses and tells you so — you cannot see who holds what, so never decide that yourself and never answer from a guess. ASK FIRST before making one.
update_breakdown_tags
ChatGPTRename a breakdown tag, change its note, or move it to another category — by its id from list_breakdown. Use it to fix a tag that was named as a description ("Fallen branch dragged over the table" becomes name "Branch", note "dragged over the table"), or to give the same thing the same name in every scene. The same naming rules as add_breakdown_tags apply. ASK FIRST.
update_contact
ChatGPTChange a contact. Only the fields you give are touched. script_locations replaces the list, and each heading must be one get_locations knows — a typo would silently never match a shooting day. ASK FIRST.
update_development
ChatGPTWrite to a screenplay's Develop pages (never the script itself). ASK FIRST: show the author what you will write and wait for their go-ahead before calling this — the same as apply_edit. Every part is optional and only the parts you send change: story fields merge; beats merge by key "stc:<beat>" or "hj:<stage>" (an empty string clears one); characters merge by NAME in caps (fields you leave out stay; null removes the character); scenes, when sent, REPLACE the whole outline in the order given, so send every card, keeping each existing card’s id. A card’s heading must match the script’s heading exactly for it to link to that scene. Drafts are for scenes not yet in the script. Leave a field empty rather than guess.
update_milestone
ChatGPTChange a milestone's name or date, or mark it reached. Moving it may push whatever waits on it: the reply says what moved. ASK FIRST.
update_shot
ChatGPTChange what a shot says — its description. Use this to correct a shot you got wrong rather than adding a second one: a new shot would leave the old one, and its drawing, sitting there beside it. The drawing is untouched. ASK FIRST, as with any change to existing work.
update_work
ChatGPTChange one job — its name, dates, stage, progress, notes, who is on it, or what it waits for. Use this rather than adding a second one. Only the fields you give are touched. Moving a date may push whatever waits on it: the reply says what moved. Setting progress means the author's number sticks instead of following the calendar; pass follow_dates true to hand it back. ASK FIRST.
withdraw_suggestion
ChatGPTLegacy: withdraw one of the old-style pending suggestions listed by list_suggestions, if one was proposed in error before apply_edit existed.
write_note
ChatGPTSet the note on one section, replacing whatever was there. Section ids come from get_manuscript, read_chapter or read_notes. Pass empty text to clear a note. This writes directly, the same as typing in the Notes tab — read the section first so you are not overwriting something you have not seen.
write_notes
ChatGPTSet or clear several notes in one call, instead of one round trip each. Each entry is a section_id and its text; empty text clears that note.
write_script_note
ChatGPTLeave a note on the screenplay, reply to one, or delete one. A note is pinned to a LINE — give element_id from read_scene or read_range, and the words it sits on in quote — which is how it shows in the margin and in the Notes pane. Leave element_id out for a note on the screenplay as a whole. To answer somebody, give reply_to instead of element_id and the reply is grouped under their note. To delete, give note_id from read_script_notes and nothing else; deleting a note takes its replies with it. A note changes nothing in the script itself. ASK FIRST before deleting somebody else's.