Skip to main content
The prompt goes into that chat or Codex task, and standing rules go into Custom Instructions or a Project in ChatGPT and into AGENTS.md for Codex.

Connect over MCP

Connect over MCP

Formcarry’s MCP does everything you would do in the dashboard for your forms and submissions: create a form, set its recipients, spam blocker and webhooks, list and search submissions, mark spam, and read where each submission was delivered. Codex connects to it in the desktop app, the CLI and the IDE extension, so it manages the form it built instead of only writing the front end.

Prerequisites

Before you start, you need:
  • A formcarry account. Sign up is free.
  • A form in the dashboard. Its endpoint is on the form’s Setup page. The examples use https://formcarry.com/s/AbC123xyz; put yours in its place.
  • The form’s name and id from its page in the dashboard, for the prompt.

1. Provide the instructions

To connect the form, paste this prompt with your form’s name and id in the placeholders:
In ChatGPT, paste it into a chat and edit the code in Canvas. To have every chat read llms.txt, put its link under Settings, Personalization, Custom Instructions, or into a Project’s instructions or files. Inside a Project, the Project’s instructions override your Custom Instructions. In Codex, open the project and paste the prompt as the task. The project opens with codex in its directory, in the IDE extension, or as a local project in the ChatGPT desktop app. Rules for every task go into AGENTS.md at the repository root, and /init creates one. Codex reads it before doing any work.

2. Check what it changed

In ChatGPT, the code is in Canvas. In Codex, it is in the diff: the CLI shows the diff as it appears, the IDE extension shows it beside a summary, and the desktop app shows it in its diff pane. Check the endpoint in the form’s action, method="POST", a name on every field and email on the address field. To check a plain HTML form, compare it with this one:
Without method="POST" the browser sends a GET and formcarry answers with a page that says GET is not allowed. A field without a name is not sent at all. email becomes the reply to address of the notification email and the recipient of the auto response. When it posts from JavaScript, the endpoint is the fetch URL and the request also carries Accept: application/json:
The keys of the JSON body are the field names formcarry stores. Without the Accept header the answer is the thank you page’s HTML, so there is no data.code to read. If it wrote a server route instead, reply “post to formcarry from the browser”, otherwise no spam blocker token exists.

3. Send a test submission

Copy the code out of Canvas into your project and submit it from the browser there. OpenAI’s docs do not say whether a Canvas preview can reach an outside URL. With Codex, start the site yourself and submit from the browser. The submission is on the form’s page in the dashboard, and the notification email is in your inbox. With Accept: application/json, a stored submission answers with:
A second test inside 15 seconds gets a 429 that says “Wait 15 seconds before making another request”: 1 submission per 15 seconds per form per IP address.

What Codex cannot do

  • Codex asks before using the internet, so approve its test submission or send one yourself. On your machine its test and yours come from one IP address, so wait 15 seconds between them, otherwise the second gets a 429.
  • Codex cloud blocks internet access during the agent phase by default, so a cloud task cannot send the test. Review the diff, open the pull request, and test after you pull.

What’s next

Stuck? Write to help@formcarry.com. Include the form id.