Your AI client drafts. You publish.

Describe a form in Claude Code, Claude Desktop, Codex, or Cursor and it appears in your workspace as a valid draft, ready to preview. The client signs in through your browser, holds no more permission than you do, and has no publish tool, so a live campaign is never one prompt away from changing.

Connecting takes one approval in your browser

No token to copy, nothing to paste into a config file. The client asks, you approve, it works.

AI clientYou, in your browserWorkspace draftsAllow hostmyforms?AllowFeedbackRegistrationField surveytoken capped by your roleno tool reaches campaigns
IllustrationConnecting an AI client, start to finish
  1. 01

    The client registers

    It calls the OAuth registration endpoint and asks for the permissions it wants, at most forms read and write by default.

  2. 02

    Your browser opens

    You sign in to HostMyForms if needed, see exactly what the client is asking for, and untick anything you do not want to grant.

  3. 03

    You approve

    Approval mints an ordinary workspace API token, capped by your role. Nothing is copied or pasted.

  4. 04

    It works on drafts

    Every call names its form and carries the revision it read, so two conversations never overwrite each other.

What the agent can do

Twelve tools, all against drafts and lookups. Each needs a permission you granted.

Read

whoami
Which account and workspace it acts for, and what it may do.
list_forms
Find forms by name, active or archived.
get_form
One form: draft configuration, revision, and outstanding issues.
preview_form
A text outline, a self-contained HTML page, and an inline view for MCP Apps hosts.

Write

validate_form_config
Check a configuration with the backend's validator without saving.
create_form
Create a form. A configuration with issues is refused and nothing is stored.
update_form
Change a draft, guarded by the revision it read.
duplicate_form
Copy a draft into a new form to build a variant.

Manage and look up

archive_form
Hide a form from the active list. Needs a separate permission.
restore_form
Bring an archived form back.
list_master_data_types
The option lists the workspace can reference, such as states or education levels.
search_master_data_options
Entries of a list, with the source to put in a field.

What it cannot do, by construction

These are properties of where the code runs, not promises in a policy.

Drafts only

There is no publish tool. A campaign publishes a frozen version, and no MCP tool reaches campaigns.

Strict saves

create_form and update_form refuse a configuration with issues, one entry per problem, so a saved form always opens in the playground.

Never more than you

The token's permissions are intersected with your live role on every request. Demote or remove the member and the agent stops.

One workspace

The workspace comes from the token. No tool input carries a workspace or owner id, so there is nothing to escalate through.

No silent overwrites

A stale revision is refused with 412. The agent re-reads and reapplies instead of clobbering an edit it did not see.

Same rules as the app

The schema resource the server publishes is the same document the backend enforces, copied at build time and guarded by a test.

Connect your client

Add the endpoint, then approve the request when your browser opens.

Claude Code

terminal
claude mcp add --transport http hostmyforms https://api.hostmyforms.com/mcp

Then run /mcp in a session, pick hostmyforms, and choose Authenticate.

Codex

terminal
codex mcp add hostmyforms --url https://api.hostmyforms.com/mcp
codex mcp login hostmyforms

login opens your browser. Approve the request there.

Claude Desktop, Cursor, and others

.mcp.json
{
  "mcpServers": {
    "hostmyforms": {
      "type": "http",
      "url": "https://api.hostmyforms.com/mcp"
    }
  }
}

Clients that only take commands can bridge with npx mcp-remote and the same URL.

Then ask for what the form should collect, not for JSON

  • Use hostmyforms to draft a customer feedback form: a 1 to 5 star rating, what went well, what to improve, and an optional email.
  • Work on my Customer Feedback draft. Add a section about support experience with a satisfaction choice and a comments box.
  • Read the hostmyforms form schema and tell me whether my draft can be published yet.

Where hosted access stands

The MCP endpoint, the OAuth flow, and the consent screen are built and tested. Serving them at api.hostmyforms.com over HTTPS, with a public issuer and a client registration policy, is the remaining work. Until then the endpoint runs against a workspace on your own machine, and the snippets above show the address it will have.

Questions people ask

Can the agent publish a form or change a live campaign?

No. Publishing belongs to campaigns, and there is no MCP tool for campaigns. Editing a draft never changes the frozen version a live campaign serves.

What permissions does the agent get?

Whatever you tick on the consent screen, capped by your own role. By default that is forms.read and forms.write. Archiving is offered only if the client asks for it.

How do I disconnect a client?

A connection is a workspace API token. Revoke it through the API, or leave the workspace, and the client stops on its next request.

Can I use it without a browser?

Yes. Mint a workspace API token by hand and send it as a bearer token, or run the stdio binary for clients that cannot speak HTTP.

Which clients work?

Anything that speaks MCP over HTTP with OAuth: Claude Code, Claude Desktop, Codex, Cursor, and others. Hosts that support MCP Apps also get the inline form preview.

Draft with your assistant, publish yourself

Create a workspace, connect your client, and keep publishing a human decision.