Our MCP server supports tools for:
The tool list is the same for every account. Access to the underlying features is plan-dependent and enforced when a tool is called — see Plans and feature access.
Before authoring form changes or running analytics queries, read Core concepts — several tools must be called in a specific order.
Tools marked ⚠️ are destructive and cannot be undone.
Tools are grouped by the domain prefix in their name, which is the fastest way to find the one you need.
Resolve where you are before anything else. Almost every other tool needs the account_id these return.
| Tool name | Required OAuth scopes | Description |
|---|---|---|
accounts-list_accounts | accounts:read | Lists all accounts the authenticated user is a member of. Call this first — most tools need the account_id. |
workspaces-list_workspaces | workspaces:read | Lists the workspaces the caller can see, including ID, name, form count, and type. |
Creating, reading, editing, and publishing forms. Editing is patch-based and ordered — see Core concepts.
| Tool name | Required OAuth scopes | Description |
|---|---|---|
forms-public_get_capabilities | forms:read | Returns the field types, block operations, and logic operators supported by the form editing tools. Call this before building or editing a form to understand available options. |
forms-public_get_form | forms:read | Retrieves a form's current state. Supports a view parameter for targeted output: full (default), fields, or skeleton (structure only). |
forms-public_list_forms | forms:read | Lists forms owned by your user, with optional search and pagination. |
forms-public_create_form | forms:write | Creates a new, empty Typeform in a given workspace. Returns the form ID needed for subsequent editing tools. |
forms-public_validate_patch | forms:write | Validates a batch of patch operations against a form draft without saving anything. Returns a validation_token that must be passed to forms-public_patch_form to commit the changes. |
forms-public_patch_form | forms:write | Applies validated patch operations to a form draft. Requires a validation_token from forms-public_validate_patch. Changes are saved but not published — call forms-public_publish_form to make them live. |
forms-public_publish_form | forms:write | Publishes the current draft of a form, making it live. Only call this when the user explicitly wants the form to go live. |
forms-public_duplicate_form | forms:write | Copies an existing form into a workspace you choose, including its fields, logic, theme, and screens. The copy is always created unpublished. 3rd party connections are cleared (e.g., Stripe, Google Calendar), and a new title can be set. |
forms-public_update_form_metadata | forms:write | Updates a form's title. |
forms-public_delete_form | forms:write | ⚠️ Deletes a form by its ID. |
Reading and analyzing responses. insights-public_discover resolves the schema and must be called first.
| Tool name | Required OAuth scopes | Description |
|---|---|---|
insights-public_discover | insights:read | Returns the schema of analytics data available for a given form or audience, including queryable fields and measures. Call this before any other insights tool. |
insights-public_aggregate | insights:read | Returns counts, averages, sums, and NPS for a field or a whole dataset. |
insights-public_timeseries | insights:read | Returns measures bucketed by time, from hour to year, with up to two breakdown dimensions. |
insights-public_toplist | insights:read | Returns top-N and ranked results, grouped by one or two dimensions. |
insights-public_list | insights:read | Returns paginated row-level response data for a single field in a dataset. |
Building, editing, and publishing automations, including their steps and triggers. Reacting to a form submission is an automation, not a form.
| Tool name | Required OAuth scopes | Description |
|---|---|---|
automations-public_add_delay_step | automations:write | Add a delay step to an existing automation. |
automations-public_add_email_step | automations:write | Add an email step to an existing automation. |
automations-public_add_integration_step | automations:write | Add a send-to-integration step to an existing automation. |
automations-public_add_webhook_step | automations:write, webhooks:write | Add a webhook step to an existing automation. |
automations-public_create_automation | automations:write | Create a new Automation. |
automations-public_get_authorized_email_domains | automations:read, accounts:read | Get the authorized email domains for the current account. |
automations-public_get_automation | automations:read | Get an existing automation by its ID. Returns the working state. |
automations-public_get_email_notification | automations:read | Get the working state of an email notification template. |
automations-public_get_trigger | automations:read | Get a trigger by its ID. Returns the working state. |
automations-public_list_automations | automations:read | List all automations for the authenticated account. |
automations-public_list_referenceable_fields | automations:read | List the fields available to reference (on emails, triggers) for a given automation. |
automations-public_patch_trigger | automations:write | Patch a trigger by applying JSON Patch operations. |
automations-public_pause_automation | automations:write | Pause an automation by disabling its trigger. Optionally stop existing runs. |
automations-public_publish_automation | automations:write | Publish an automation. |
automations-public_remove_steps | automations:write | Remove one or more steps from an existing automation. |
automations-public_reorder_step | automations:write | Move an existing step to a new position in an automation. |
automations-public_update_delay_step | automations:write | Update an existing delay step's duration. |
automations-public_update_email_step | automations:write | Update an existing email step and content. |
automations-public_update_webhook_step | automations:write, webhooks:write | Update an existing webhook step's configuration. |
The contacts database, lists (segments), custom properties, and form-to-contact property mappings.
| Tool name | Required OAuth scopes | Description |
|---|---|---|
contacts-public_get_contact | contacts:read | Gets a single contact by ID with all properties and their metadata. |
contacts-public_get_contacts_database_properties | contacts:read | Gets specific contact properties by their IDs. |
contacts-public_get_contacts_list | contacts:read | Gets the details of a specific contacts list (segment) by ID. |
contacts-public_get_form_property_compatibility | contacts:read | Gets compatible contact property mappings for a given form's fields and variables. |
contacts-public_get_form_property_mappings | contacts:read | Gets the property mappings (sync config) for a specific form. |
contacts-public_get_form_property_mappings_by_id | contacts:read | Gets the details of a form property mapping (sync config) by its ID. |
contacts-public_list_contacts | contacts:read | Lists contacts from the Contacts database, with optional filtering and pagination. |
contacts-public_list_contacts_database_properties | contacts:read | Lists all contact properties defined in the Contacts database schema. |
contacts-public_list_contacts_lists | contacts:read | Lists all saved contact lists in the Contacts database. |
contacts-public_list_form_property_mappings | contacts:read | Lists all form-to-contact property mappings (sync configs). |
contacts-public_bulk_create_contacts_lists | contacts:write | Creates one or more contacts lists (segments) in a single call. |
contacts-public_bulk_create_custom_contacts_database_properties | contacts:write | Creates multiple custom contact properties on the Contacts database schema in a single operation. Custom properties can only be created in bulk — there is no single-property equivalent. |
contacts-public_bulk_upsert_contacts | contacts:write | Creates or updates multiple contacts in a single operation, matching on identifier. |
contacts-public_create_contact | contacts:write | Creates a new contact in the Contacts database. |
contacts-public_create_contacts_list | contacts:write | Creates a new contacts list (segment) in the Contacts database. |
contacts-public_create_form_property_mappings | contacts:write | Creates a form property mapping to connect a form's fields to contact properties. |
contacts-public_delete_contact | contacts:write | ⚠️ Deletes a contact from the Contacts database. |
contacts-public_delete_contacts_database_properties | contacts:write | ⚠️ Deletes multiple custom properties from the Contacts database schema in a single operation. Irreversible, and breaks any form property mappings and enrichment configs that reference them. |
contacts-public_delete_contacts_database_property | contacts:write | ⚠️ Deletes a single custom property from the Contacts database schema. Irreversible, and breaks any form property mappings and enrichment configs that reference it. |
contacts-public_delete_contacts_list | contacts:write | ⚠️ Deletes a contacts list (segment) from the Contacts database. |
contacts-public_delete_form_property_mappings | contacts:write | ⚠️ Deletes a form property mapping (sync config) by its ID. |
contacts-public_enable_standard_contacts_database_properties | contacts:write | Activates one or more disabled standard (built-in) contact properties. |
contacts-public_import_form_responses_by_mapping | contacts:write | Schedules an import of form responses into contacts using an existing form property mapping. |
contacts-public_update_contact | contacts:write | Updates an existing contact's properties in the Contacts database. |
contacts-public_update_contacts_list | contacts:write | Updates an existing contacts list's name or filter/sort settings. |
contacts-public_update_form_property_mappings | contacts:write | Updates an existing form property mapping, replacing all field mappings. |
Report a blocker or send feedback from inside a session — see Feedback.
| Tool name | Required OAuth scopes | Description |
|---|---|---|
submit_feedback | — | Reports a blocker or sends feedback about the MCP server from inside a session. See Feedback. |
These Typeform capabilities have no MCP equivalent today. Use the REST API for them rather than trying to work around the gap:
| Not available over MCP yet | Use instead |
|---|---|
Full response rows, response deletion, response export. insights-public_list is per-field only | Responses API |
| Legacy form-level webhook create, list, update, delete. Use webhooks from automations instead | Webhooks API |
| Themes, images, and brand kits. Forms can be built structurally but not styled | Create API |
| Creating, updating, or deleting workspaces, and moving a form between workspaces | Create API |
| Retrieving embed codes | Create API |
| Deleting an automation | Manual |
Manage account members. accounts-list_accounts is the only account-level tool | Manual |
| Renaming or modifying an existing custom contact property. Properties can be created in bulk and deleted, but not updated | Manual |