Draft and publish workflow

Use this workflow when you create a form, review a draft change, or publish a form through the Makeform MCP server. Draft changes and publishing are separate actions.

Safety rules

  • create_form and create_form_from_prompt create drafts. They never publish.
  • propose_form_draft and propose_form_edit save nothing. They return a proposed config and a token for applying it.
  • apply_form_draft and apply_form_edit save changes to the draft only. They never publish.
  • publish_form requires two calls: preview first, then confirm with the preview’s publish_token.
  • update_form requires expected_updated_at and writes immediately. Replacing preview_config requires it to match the updated_at returned by get_form. It never publishes.
  • update_form_settings and update_email_notification apply changes to a published form immediately. They do not require publishing.
  • Action tokens are single-purpose, expire, and are bound to the action, form, user, calling credential, and proposed config or state. Draft, edit, and publish tokens last 10 minutes. Use the exact proposed config returned by the proposal call when applying it.

Create a draft

Get the form config schema, create the form with a complete config, then retrieve the form to review it:

get_form_config_schema → create_form → get_form

You can also create a draft from a prompt with create_form_from_prompt, then call get_form to review it. Neither creation method publishes the form.

Propose and apply a draft replacement

Use this sequence when you want to replace a draft config and review the proposed changes before saving:

get_form → propose_form_draft → apply_form_draft → get_form

Pass the complete config to propose_form_draft. Review the returned summary, delta, risk, and publish readiness. If you decide to proceed, call apply_form_draft with the returned draft_token and the exact proposed_config. The proposal saves nothing; applying it changes the draft only. Retrieve the form afterward to confirm the saved draft.

Propose and apply an AI edit

Use this sequence to ask for an AI edit to the current draft:

get_form → propose_form_edit → apply_form_edit → get_form

Pass your instruction to propose_form_edit. Review the returned proposed config and change summary. To save the edit, call apply_form_edit with the returned edit_token and the exact proposed_config. Applying the edit changes the draft only. Retrieve the form afterward to confirm the result.

Publish a draft

First retrieve the form, then preview the publish, confirm it with the returned token, and retrieve the form again:

get_form → publish_form → publish_form with confirm_publish: true and the preview’s publish_token → get_form

The first publish_form call previews what would be published and returns a publish_token. Review the preview before confirming. The confirmation publishes the draft, including its draft translations.

If the token expires, run the preview again. If the draft or publish context changes, the publish can be rejected with a conflict; retrieve the form and preview again before confirming.

Handle tool errors

MCP tool errors return HTTP 200 with result.isError: true. The text in content[0].text contains a JSON error object:

{ "jsonrpc_error": { "code": -32600, "message": "Error message", "data": { "name": "ERROR_NAME" } } }

Input schema failures instead start with MCP error -32602: Input validation error.