---
title: "Formstack MCP server for AI agents - actionlake"
description: "Give Claude 100 Formstack actions through one MCP server: forms, partner subaccounts. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/formstack
updated: 2026-10-23
---

Connectors · Marketing & media

# Formstack MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Formstack and the rest of your systems. It gives your agent 100 Formstack actions (40 reads, 40 writes and 20 that wait for a confirmation) and holds the Formstack credential itself, so the agent never does. It paces Formstack's limits and records every call.

[Connect Formstack free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "formstack.folders.list",
  intent: "check which Formstack account is connected"
}
# List folders · read · 1 upstream call
```

- 100 actions in one signed file
- 40 read look, never change
- 40 write create and update
- 20 wait for a yes destructive, confirmed first

Set up

## Connect Formstack in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect Formstack.
   Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `access_token` Formstack personal access token (starts fs_pat_): sign in at https://admin.formstack.com, open Personal Access…
   ```
   account { op: "connections.requirements", service: "formstack" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "formstack.folders.list" }
   # list folders · read · 1 upstream call
   check { action: "formstack.folders.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Formstack at a glance

**Sign-in**

Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.

**You provide**

`access_token`

**Limits we pace to**

14,400 calls a day, per connection

**API covered**

Formstack API v2025.0 (OpenAPI 3.0.0) + Partner API v1`www.formstack.com/api/v2025`

**Built from**

Formstack's documentation, read 23 October 2026[developers.formstack.com](https://developers.formstack.com/openapi/api2025-openapi.yaml) [developers.formstack.com](https://developers.formstack.com/openapi/storageapi-docsapi-partner-docs.json) [developers.formstack.com](https://developers.formstack.com/reference/api-overview)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

37 of 40 reads, for up to 5 minutes; a write clears what it affects

**Shared entities**

3, so ask can line Formstack up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in Formstack.

100 actions in 20 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **40** read look, never change
- **40** write create and update
- **20** destructive wait for a confirmation

1. ### Forms
   10
   3 read · 6 write · 1 destructive
   List forms · Create a form · Get a form · Update a form
2. ### Partner subaccounts
   8
   6 read · 2 write · 0 destructive
   List partner subaccounts · Create a partner subaccount · Preview charges partner subaccount · Get a partner subaccount
3. ### Smart list options
   8
   2 read · 3 write · 3 destructive
   Create a smart list option · Create bulk smart list option · List smart list options · Get a smart list option
4. ### Submissions
   8
   4 read · 3 write · 1 destructive
   List submissions · Create a submission · Get a submission · Delete a submission
5. ### Portals
   6
   2 read · 2 write · 2 destructive
   Create the portal copy · List portals · Get a portal · Update a portal
6. ### Webhooks
   6
   3 read · 2 write · 1 destructive
   Create a webhook · List webhooks · Update a webhook · Get a webhook
7. ### Confirmations
   5
   2 read · 2 write · 1 destructive
   Create a confirmation email · List confirmation emails · Get a confirmation email · Update a confirmation email
8. ### Fields
   5
   2 read · 2 write · 1 destructive
   Create a form field · List form fields · Get a form field · Update a form field

**12 more areas · 44 actions**

- Folders **5**
- Notifications **5**
- Smart lists **5**
- Submit actions **5**
- Subaccount themes **4**
- Partial submissions **3**
- Partner personal access tokens **3**
- Portal forms **3**
- Portal users **3**
- Subaccounts **3**
- Themes **3**
- Partner memberships **2**

Top actions

## The Formstack API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 25 of Formstack's 25 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `formstack.folders.list` List folders | Get all folders on your account and their subfolders. | read | `content.folder.list` 62 connectors |
| `formstack.partner_memberships.list` List subaccount memberships | List memberships for a subaccount. | read | `identity.user.list` 474 connectors |
| `formstack.folders.create` Create a folder | Create a new folder. | write | `content.folder.create` 62 connectors |
| `formstack.folders.delete` Delete a folder | Delete the specified folder. | destructive | `content.folder.delete` 46 connectors |
| `formstack.partner_memberships.update` Update a subaccount membership | Update membership for a subaccount. | write | `identity.user.update` 280 connectors |
| `formstack.forms.list` List forms | Retrieve a paginated list of forms with optional filtering and sorting. | read | `content.form.list` 36 connectors |
| `formstack.forms.create` Create a form | Create a new form with optional fields. | write | `content.form.create` 26 connectors |
| `formstack.submissions.list` List submissions | Retrieve a paginated list of submissions for a specific form. | read | `content.form_response.list` 20 connectors |
| `formstack.submissions.create` Create a submission | Create a new submission for the specified form. | write | `content.form_response.create` 9 connectors |
| `formstack.webhooks.create` Create a webhook | Create a new webhook for a form. | write | `automation.webhook.create` 209 connectors |
| `formstack.webhooks.list` List webhooks | List webhooks for a form. | read | `automation.webhook.list` 202 connectors |
| `formstack.partner_subaccounts.list` List partner subaccounts | Get a list of subaccounts. | read | this connector |

Try it

## Prompts to paste into Claude.

Each one names the Formstack actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Who has access in Formstack? List every user and their role.
   calls `formstack.partner_memberships.list`
2. Write write
   Create a folder in Formstack. Show me exactly what you will send before you save it.
   calls `formstack.folders.create`

Governance for Formstack

## Destructive actions wait for a yes.

20 Formstack actions are destructive. These are all of them:

- Delete a folder `formstack.folders.delete`
- Delete a form `formstack.forms.delete`
- Delete a submission `formstack.submissions.delete`
- Delete a webhook `formstack.webhooks.delete`
- Delete a form field `formstack.fields.delete`
- Delete a theme `formstack.themes.delete`
- Delete a portal `formstack.portals.delete`
- Delete a smart list `formstack.smart_lists.delete`
- Delete a portal form `formstack.portal_forms.delete`
- Delete a portal user `formstack.portal_users.delete`
- Delete a confirmation email `formstack.confirmations.delete`
- Delete a notification email `formstack.notifications.delete`
- Delete the portal avatar `formstack.portals.delete_avatar`
- Delete a submit action `formstack.submit_actions.delete`
- Delete a subaccount theme `formstack.subaccount_themes.delete`
- Delete a smart list option `formstack.smart_list_options.delete`
- Delete a partial submission `formstack.partial_submissions.delete`
- Delete all smart list option `formstack.smart_list_options.delete_all`
- Delete image smart list option `formstack.smart_list_options.delete_image`
- Revoke a Personal Access Token belonging to a subaccount user `formstack.partner_personal_access_tokens.revoke`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do formstack.folders.delete confirm_policy: **human**

Delete a folder?

**intent:** the user asked me to delete a folder

run suspended · waiting for a named person · key _formstack-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "formstack-agent",
  allowed_actions: ["formstack.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "formstack.folders.delete", approver: "lead@example.com" },
    { match: "formstack.forms.delete", approver: "lead@example.com" },
    { match: "formstack.submissions.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to Formstack only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What Formstack costs on actionlake.

Every Formstack action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Formstack refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 100 Formstack actions
- 100 actions page each page of a long list is one call
- 37 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Formstack action.

100 actions by area: the id your agent calls, what it does, and its effect.

**Forms 10**

- `formstack.forms.assign_theme` Assign a theme to a specific form in the current account write
- `formstack.forms.copy` Create a copy of an existing form with optional configurations write
- `formstack.forms.create` Create a form write
- `formstack.forms.create_documents_integration` Create a form WebMerge integration write
- `formstack.forms.create_prefill_url` Generate a prefilled form URL with specified field values write
- `formstack.forms.delete` Delete a form destructive
- `formstack.forms.get` Get a form read
- `formstack.forms.get_html` Retrieve HTML markup for a specific form read
- `formstack.forms.list` List forms read
- `formstack.forms.update` Update a form write

**Partner subaccounts 8**

- `formstack.partner_subaccounts.create` Create a partner subaccount write
- `formstack.partner_subaccounts.get` Get a partner subaccount read
- `formstack.partner_subaccounts.get_app_api_keys` Get app API keys for a subaccount read
- `formstack.partner_subaccounts.get_sso_config` Returns current Organization's SSO config read
- `formstack.partner_subaccounts.list` List partner subaccounts read
- `formstack.partner_subaccounts.list_products` Get a list of products available for provisioning read
- `formstack.partner_subaccounts.preview_charges` Preview charges partner subaccount read
- `formstack.partner_subaccounts.update` Update a partner subaccount write

**Smart list options 8**

- `formstack.smart_list_options.create` Create a smart list option write
- `formstack.smart_list_options.create_bulk` Create bulk smart list option write
- `formstack.smart_list_options.delete` Delete a smart list option destructive
- `formstack.smart_list_options.delete_all` Delete all smart list option destructive
- `formstack.smart_list_options.delete_image` Delete image smart list option destructive
- `formstack.smart_list_options.get` Get a smart list option read
- `formstack.smart_list_options.list` List smart list options read
- `formstack.smart_list_options.update` Update a smart list option write

**Submissions 8**

- `formstack.submissions.count` Counting form submissions read
- `formstack.submissions.create` Create a submission write
- `formstack.submissions.create_file_upload_urls` Generate presigned S3 upload URLs for a file field write
- `formstack.submissions.delete` Delete a submission destructive
- `formstack.submissions.get` Get a submission read
- `formstack.submissions.list` List submissions read
- `formstack.submissions.search` Retrieve a paginated list of submissions across all forms read
- `formstack.submissions.update` Update a submission write

**Portals 6**

- `formstack.portals.copy` Create the portal copy write
- `formstack.portals.delete` Delete a portal destructive
- `formstack.portals.delete_avatar` Delete the portal avatar destructive
- `formstack.portals.get` Get a portal read
- `formstack.portals.list` List portals read
- `formstack.portals.update` Update a portal write

**Webhooks 6**

- `formstack.webhooks.create` Create a webhook write
- `formstack.webhooks.delete` Delete a webhook destructive
- `formstack.webhooks.get` Get a webhook read
- `formstack.webhooks.get_payload_schema` Get OpenAPI definition for a form's webhook read
- `formstack.webhooks.list` List webhooks read
- `formstack.webhooks.update` Update a webhook write

**Confirmations 5**

- `formstack.confirmations.create` Create a confirmation email write
- `formstack.confirmations.delete` Delete a confirmation email destructive
- `formstack.confirmations.get` Get a confirmation email read
- `formstack.confirmations.list` List confirmation emails read
- `formstack.confirmations.update` Update a confirmation email write

**Fields 5**

- `formstack.fields.create` Create a form field write
- `formstack.fields.delete` Delete a form field destructive
- `formstack.fields.get` Get a form field read
- `formstack.fields.list` List form fields read
- `formstack.fields.update` Update a form field write

**Folders 5**

- `formstack.folders.create` Create a folder write
- `formstack.folders.delete` Delete a folder destructive
- `formstack.folders.get` Get a folder read
- `formstack.folders.list` List folders read
- `formstack.folders.update` Update a folder write

**Notifications 5**

- `formstack.notifications.create` Create a notification email write
- `formstack.notifications.delete` Delete a notification email destructive
- `formstack.notifications.get` Get a notification email read
- `formstack.notifications.list` List notification emails read
- `formstack.notifications.update` Update a notification email write

**Smart lists 5**

- `formstack.smart_lists.create` Create a smart list write
- `formstack.smart_lists.delete` Delete a smart list destructive
- `formstack.smart_lists.get` Get a smart list read
- `formstack.smart_lists.list` List smart lists read
- `formstack.smart_lists.update` Update a smart list write

**Submit actions 5**

- `formstack.submit_actions.create` Create a submit action write
- `formstack.submit_actions.delete` Delete a submit action destructive
- `formstack.submit_actions.get` Get a submit action read
- `formstack.submit_actions.list` List submit actions read
- `formstack.submit_actions.update` Update a submit action write

**Subaccount themes 4**

- `formstack.subaccount_themes.copy` Copies a theme from the current account to a specified subaccount write
- `formstack.subaccount_themes.delete` Delete a subaccount theme destructive
- `formstack.subaccount_themes.list` List subaccount themes read
- `formstack.subaccount_themes.list_forms` Get a paginated list of forms using the specified theme in the subaccount read

**Partial submissions 3**

- `formstack.partial_submissions.delete` Delete a partial submission destructive
- `formstack.partial_submissions.get` Get a partial submission read
- `formstack.partial_submissions.list` List partial submissions read

**Partner personal access tokens 3**

- `formstack.partner_personal_access_tokens.create` Create a membership personal access token write
- `formstack.partner_personal_access_tokens.list` List membership personal access tokens read
- `formstack.partner_personal_access_tokens.revoke` Revoke a Personal Access Token belonging to a subaccount user destructive

**Portal forms 3**

- `formstack.portal_forms.create` Create a portal form write
- `formstack.portal_forms.delete` Delete a portal form destructive
- `formstack.portal_forms.update` Update a portal form write

**Portal users 3**

- `formstack.portal_users.create` Create a portal user write
- `formstack.portal_users.delete` Delete a portal user destructive
- `formstack.portal_users.update` Update a portal user write

**Subaccounts 3**

- `formstack.subaccounts.assign_form_theme` Assign a theme to a specific form in the subaccount write
- `formstack.subaccounts.copy_form` Copies a form from the current account to a specified subaccount write
- `formstack.subaccounts.list` List subaccounts read

**Themes 3**

- `formstack.themes.copy` Copies a theme within the current account (creates a duplicate) write
- `formstack.themes.delete` Delete a theme destructive
- `formstack.themes.list` List themes read

**Partner memberships 2**

- `formstack.partner_memberships.list` List subaccount memberships read
- `formstack.partner_memberships.update` Update a subaccount membership write

Questions

## The Formstack MCP server, answered.

**Is there a Formstack MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 100 Formstack actions across forms, partner subaccounts, smart list options and submissions, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Formstack.

**What do I need to connect Formstack?**

Formstack personal access token (starts fs_pat_): sign in at https://admin.formstack.com, open Personal Access…. The free call account { op: "connections.requirements", service: "formstack" } lists exactly what to paste.

**Can an AI agent delete or change things in Formstack?**

Only if its key allows it, and only with an explicit confirmation. 20 Formstack actions are destructive, including delete a folder, delete a form and delete a submission. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my Formstack API limit?**

actionlake paces every call to the limits in the Formstack service file: 14,400 calls a day per connection. Repeated reads are answered from cache (37 Formstack actions can be), which never reaches Formstack.

**What does a Formstack action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (100 Formstack actions page). Cache hits, searches, dry runs and calls Formstack refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which Formstack API does it cover?**

The Formstack API v2025.0 (OpenAPI 3.0.0) + Partner API v1 at www.formstack.com/api/v2025. It is built from Formstack's documentation as read on 23 October 2026. 100 actions in 20 areas, each one in the signed service file (version 1.0.0).

**Does actionlake keep my Formstack data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Formstack credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like Formstack

Shares the most action names with

- [Tally 16](https://actionlake.com/connectors/tally)
- [Jotform 15](https://actionlake.com/connectors/jotform)
- [SurveySparrow 15](https://actionlake.com/connectors/surveysparrow)
- [Typeform 11](https://actionlake.com/connectors/typeform)
- [Vimeo 10](https://actionlake.com/connectors/vimeo)
- [Fillout 8](https://actionlake.com/connectors/fillout)

Joins with, on shared entities

- [Grafana 3](https://actionlake.com/connectors/grafana)
- [Slack 2](https://actionlake.com/connectors/slack)
- [Gusto 2](https://actionlake.com/connectors/gusto)
- [Microsoft 365 Users 2](https://actionlake.com/connectors/microsoft-365-users)
- [Cloudflare 2](https://actionlake.com/connectors/cloudflare)
- [NetBox 2](https://actionlake.com/connectors/netbox)

Browse

- [All Marketing & media connectors](https://actionlake.com/connectors/category/marketing-and-media)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Formstack; the name is the vendor's own. Counts are from the Formstack service file, version 1.0.0.

## Give your agent Formstack today.

[Connect Formstack free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/formstack
More: https://actionlake.com/llms.txt
