const draft = await compose_page({ brief: "Landing page: your health data finally has a home",}); // diff the draft against what is live before anything changesconst live = await read_page({ slug: "the-directory" }); // gate the irreversible call however you like:// an approval policy, a review in the app, a human's yesawait publish_page({ page: draft.id });The seam between the calls is the checkpoint.
compose_page does not touch production. It returns a draft: a structure your agent can read, compare against the page that is live and park until someone says go. publish_page is the only irreversible verb on this surface, and keeping it a separate call is the design, not an inconvenience.
Gate the publish behind an approval policy, behind a review in the app, or behind nothing at all for pages that carry no risk. The API will not collapse the two steps into one, so the choice stays deliberate every single time.
