MARKETING · TASKS
Surveys, responses, and contacts in the workspace that person connected.
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
formbricks_delete_api_v1_management_action_classes_by_actionclassidWRITEDeletes an existing action class. Formbricks DELETE /api/v1/management/action-classes/{actionClassId} (v1).
formbricks_delete_api_v1_management_responses_by_responseidWRITEDelete a response with its ID. Formbricks DELETE /api/v1/management/responses/{responseId} (v1).
formbricks_delete_api_v1_management_surveys_by_surveyidWRITEDelete a Survey by its ID. Please use this only when extrememly necessary. Formbricks DELETE /api/v1/management/surveys/{surveyId} (v1).
formbricks_delete_api_v1_webhooks_by_webhookidWRITEDelete an existing webhook by provifding it's ID. It will immediately apply and not trigger again. Formbricks DELETE /api/v1/webhooks/{webhookId} (v1).
formbricks_delete_management_contact_attribute_keys_by_idWRITEDeletes a contact attribute key from the database. Formbricks DELETE /api/v2/management/contact-attribute-keys/{id} (v2).
formbricks_delete_management_responses_by_idWRITEDeletes a response from the database. Formbricks DELETE /api/v2/management/responses/{id} (v2).
formbricks_delete_management_webhooks_by_idWRITEDeletes a webhook from the database. Note - Environments are deprecated. Use Workspace/workspaceId terminology. Formbricks DELETE /api/v2/management/webhooks/{id} (v2).
formbricks_delete_organizations_by_organizationid_teams_by_idWRITEDeletes a team from the database. Formbricks DELETE /api/v2/organizations/{organizationId}/teams/{id} (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_delete_organizations_by_organizationid_workspace_teamsWRITEDeletes a Workspace team from the database. Formbricks DELETE /api/v2/organizations/{organizationId}/workspace-teams (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_get_api_v1_management_action_classesREADFetches all the action classes available in the workspace. Formbricks GET /api/v1/management/action-classes (v1).
formbricks_get_api_v1_management_action_classes_by_actionclassidREADFetch an Action Class by it's ID. Formbricks GET /api/v1/management/action-classes/{actionClassId} (v1).
formbricks_get_api_v1_management_contact_attribute_keysREADRetrieve a list of all contact attribute keys defined in the current workspace. Formbricks GET /api/v1/management/contact-attribute-keys (v1).
formbricks_get_api_v1_management_contact_attribute_keys_by_contactattributekeyidREADRetrieve a specific contact attribute key by its ID. This returns detailed information about how a particular attribute is defined in your workspace. Formbricks GET /api/v1/management/contact-attribute-keys/{contactAttributeKeyId} (v1).
formbricks_get_api_v1_management_contact_attributesREADRetrieve a list of all contact attributes in the current workspace. Formbricks GET /api/v1/management/contact-attributes (v1).
formbricks_get_api_v1_management_contactsREADRetrieve a list of all contacts for the current workspace. Formbricks GET /api/v1/management/contacts (v1).
formbricks_get_api_v1_management_contacts_by_contactidREADRetrieve a specific contact by its ID. Formbricks GET /api/v1/management/contacts/{contactId} (v1).
formbricks_get_api_v1_management_meREADFetches the product associated with the passed API key. Formbricks GET /api/v1/management/me (v1).
formbricks_get_api_v1_management_responsesREADPass the surveyId as a Query Parameter & only fetch responses for a specific survey that you have access to. Formbricks GET /api/v1/management/responses (v1).
formbricks_get_api_v1_management_responses_by_responseidREADFetch the entire response object based on its ID. Formbricks GET /api/v1/management/responses/{responseId} (v1).
formbricks_get_api_v1_management_surveysREADFetches all existing surveys. Each survey includes both `questions` (the legacy structure) and `blocks` (the newer structure). `questions` is always derived from `blocks` for backwards compatibility, so integrations may read either field. Formbricks GET /api/v1/management/surveys (v1).
formbricks_get_api_v1_management_surveys_by_surveyidREADFetch a survey object based on its ID. The response includes both `questions` (the legacy structure) and `blocks` (the newer structure). `questions` is always derived from `blocks` for backwards compatibility, so integrations may read either field. Formbricks GET /api/v1/management/surveys/{surveyId} (v1).
formbricks_get_api_v1_management_surveys_by_surveyid_singleuseidsREADGenerates multiple single use survey links for a survey based on its id. Formbricks GET /api/v1/management/surveys/{surveyId}/singleUseIds (v1).
formbricks_get_api_v1_webhooksREADRetrieve a list of all webhooks for the current workspace. Formbricks GET /api/v1/webhooks (v1).
formbricks_get_api_v1_webhooks_by_webhookidREADGet a specific webhook object based on its ID. Formbricks GET /api/v1/webhooks/{webhookId} (v1).
formbricks_get_healthREADFormbricks' Health Check endpoint to make sure the App & the Database are connected with each other & up!. Formbricks GET /health (v1).
formbricks_get_management_contact_attribute_keysREADGets contact attribute keys from the database. Note - Environments are deprecated. Use Workspace/workspaceId terminology. Formbricks GET /api/v2/management/contact-attribute-keys (v2).
formbricks_get_management_contact_attribute_keys_by_idREADGets a contact attribute key from the database. Formbricks GET /api/v2/management/contact-attribute-keys/{id} (v2).
formbricks_get_management_responsesREADGets responses from the database. Formbricks GET /api/v2/management/responses (v2).
formbricks_get_management_responses_by_idREADGets a response from the database. Formbricks GET /api/v2/management/responses/{id} (v2).
formbricks_get_management_surveys_by_surveyid_contact_links_contacts_by_contactidREADRetrieves a personalized link for a specific survey. Formbricks GET /api/v2/management/surveys/{surveyId}/contact-links/contacts/{contactId} (v2).
formbricks_get_management_surveys_by_surveyid_contact_links_segments_by_segmentidREADGenerates personalized survey links for contacts in a segment. Formbricks GET /api/v2/management/surveys/{surveyId}/contact-links/segments/{segmentId} (v2).
formbricks_get_management_webhooksREADGets webhooks from the database. Note - Environments are deprecated. Use Workspace/workspaceId terminology. Formbricks GET /api/v2/management/webhooks (v2).
formbricks_get_management_webhooks_by_idREADGets a webhook from the database. Note - Environments are deprecated. Use Workspace/workspaceId terminology. Formbricks GET /api/v2/management/webhooks/{id} (v2).
formbricks_get_meREADFetches the Workspaces and organizations associated with the API key. Formbricks GET /api/v2/me (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_get_organizations_by_organizationid_teamsREADGets teams from the database. Formbricks GET /api/v2/organizations/{organizationId}/teams (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_get_organizations_by_organizationid_teams_by_idREADGets a team from the database. Formbricks GET /api/v2/organizations/{organizationId}/teams/{id} (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_get_organizations_by_organizationid_usersREADGets users from the database.<br />Only available for self-hosted Formbricks. Formbricks GET /api/v2/organizations/{organizationId}/users (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_get_organizations_by_organizationid_workspace_teamsREADGets workspace teams from the database. Formbricks GET /api/v2/organizations/{organizationId}/workspace-teams (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_get_rolesREADGets roles from the database. Formbricks GET /api/v2/roles (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_mcp_archive_workflowWRITEArchive a Formbricks workflow. Archiving soft-deletes it and excludes it from default reads; unarchive_workflow restores it to draft.
formbricks_mcp_count_feedback_recordsREADCount the feedback records matching a set of filters, without fetching them — use this for 'how many' questions instead of paging through records. Takes exactly the same filters as list_feedback_records, with the same OR-within-a-filter and AND-across-filters rules. Ordering and pagination do not apply and are REJECTED. Returns only the total and the dataset it came from, never record content.
formbricks_mcp_create_feedback_recordWRITECreate a feedback record in a workspace's feedback dataset. The dataset is resolved from workspaceId, or from datasetId when the workspace has more than one; it can never be set through the record body. submission_id is optional — a UUID is generated when it is omitted. Send the value_* field the record's field_type accepts; Formbricks validates the combination and the required set.
formbricks_mcp_create_feedback_recordsWRITECreate between 1 and 50 feedback records in one call — the batch form, for imports. Every record is validated before any is written, so an invalid record fails the whole call rather than storing part of the batch; if the feedback service rejects some, the created ones are returned and meta.failures lists the rest by index.
formbricks_mcp_create_surveyWRITECreate a Formbricks LINK survey using the v3 Surveys API contract. In-app surveys and distribution settings are not part of the v3 create operation. blocks, metadata, welcomeCard, endings, hiddenFields and variables follow the v3 survey document contract, which validates them server-side.
formbricks_mcp_create_workflowWRITECreate a Formbricks workflow, ALWAYS as a draft — only enable_workflow makes one live. Takes the full v3 create payload: a complete definition with a schemaVersion, a trigger and an entry node. Everything below definition is open at the provider (ENG-2437), so a misspelled key inside a trigger, node or edge is DROPPED rather than rejected: treat the result as confirming only what it echoes back.
formbricks_mcp_delete_feedback_recordWRITEPermanently delete ONE feedback record from a workspace's feedback dataset. This cannot be undone: the record and its search embedding are removed and no copy is kept — the audit log entry is the only remaining trace. There is no bulk delete.
formbricks_mcp_delete_surveyWRITEDelete a Formbricks survey using the v3 Surveys API contract. The v3 delete answers 204 No Content; the tool result carries the requestId so the audit trail can be correlated.
formbricks_mcp_delete_workflowWRITEDelete a Formbricks workflow using the v3 Workflows API contract. The v3 delete answers 204 No Content; the tool result carries the requestId.
formbricks_mcp_disable_workflowWRITEDisable a live Formbricks workflow, stopping future runs, using the v3 Workflows API contract.
formbricks_mcp_duplicate_workflowWRITEDuplicate a Formbricks workflow as a new DRAFT with empty run and version history, using the v3 Workflows API contract.
formbricks_mcp_enable_workflowWRITEEnable a Formbricks workflow: validate executability, snapshot an immutable version and make it LIVE. Once live it runs on matching survey responses and CAN SEND EMAIL. A non-executable definition is refused with 422 workflow_not_executable.
formbricks_mcp_find_similar_feedback_recordsREADFind the feedback records most similar to a given one, by embedding distance — how widely a piece of feedback is echoed. Scored matches, best first, excluding the anchor. A record with no embedding answers 409 rather than an empty result and says which case it is: worth retrying while it is still being embedded, not worth retrying for a record with no text.
formbricks_mcp_get_feedback_recordREADGet one feedback record by its Hub UUID from a workspace's feedback dataset. A record in another tenant answers a generic authorization error rather than revealing whether the id exists.
formbricks_mcp_get_surveyREADGet one Formbricks survey using the v3 Surveys API contract.
formbricks_mcp_get_workflowREADGet one Formbricks workflow using the v3 Workflows API contract. An unknown or cross-workspace id answers 403, never 404, so existence is not leaked.
formbricks_mcp_get_workflow_runREADGet one Formbricks workflow run with its ordered step logs using the v3 Workflows API contract.
formbricks_mcp_list_feedback_datasetsREADList the active feedback datasets assigned to a Formbricks workspace. Use the returned id as datasetId for the other feedback-record tools. Needs the feedbackDirectories Enterprise entitlement; without it the provider answers 403 or 422.
formbricks_mcp_list_feedback_recordsREADList feedback records for a workspace's feedback dataset, with cursor pagination and optional filters. Repeating one filter ORs its values; different filters are AND-ed, and there is no way to OR across filters. Range filters are inclusive and EXCLUDE records whose column is empty, so value_number_min: 0 drops every text answer — use has_sentiment: false to find records enrichment has not reached.
formbricks_mcp_list_surveysREADList surveys in a Formbricks workspace using the v3 Surveys API contract. Cursor-paginated; filter by name substring, status (for example draft or inProgress) and type (for example link).
formbricks_mcp_list_workflow_runsREADList workflow runs for a Formbricks workspace, newest first, using the v3 Workflows API contract. Only workspaceId is required; omit filter.isDryRun to return both real and dry runs.
formbricks_mcp_list_workflowsREADList workflows in a Formbricks workspace using the v3 Workflows API contract. Omitting filter.status.in returns every status except archived.
formbricks_mcp_list_workspacesREADList the Formbricks workspaces this connection can access. The workspaceId-discovery prerequisite for the survey, workflow and feedback-record tools. Takes NO arguments — Formbricks rejects a call that pads them. Formbricks admits this tool on ANY resource read scope, so it requires none here; it still runs only on the sign-in connection, because it is an MCP tool and the API key never reaches the MCP server.
formbricks_mcp_patch_surveyWRITEUpdate a Formbricks survey using the v3 Surveys API patch contract. Omitted top-level fields are preserved; PROVIDED top-level arrays and objects REPLACE that whole subtree, so omitted nested entries inside a provided subtree are removed. No deep merge and no JSON Patch. Fetch the survey and run validate_survey with operation: patch first.
formbricks_mcp_patch_workflowWRITEUpdate a Formbricks workflow using the v3 Workflows API patch contract: top-level partial merge, no deep merge. Provided top-level fields replace that whole subtree, and definition edits are only accepted while the workflow is draft or disabled.
formbricks_mcp_search_feedback_recordsREADSearch a workspace's feedback dataset by MEANING rather than keywords: the query is embedded and compared to record embeddings, so 'checkout is confusing' also matches 'I couldn't figure out how to pay'. Returns scored matches, best first — record ids with the matched text, not full records. Only records with text are searchable and embedding is asynchronous, so a record created moments ago may not appear.
formbricks_mcp_test_workflowREADDry-run a Formbricks workflow: validate its live definition would execute, resolve the trigger's survey and ending cards, and confirm every literal send_email recipient is an organization member. No run is persisted and no side effects occur; the response reports { ok, problems }. Drafts ARE testable; only archived workflows are rejected, with 422.
formbricks_mcp_unarchive_workflowWRITEUnarchive a Formbricks workflow, restoring it to draft, using the v3 Workflows API contract.
formbricks_mcp_update_feedback_recordWRITECorrect the value of an existing feedback record. Send ONLY the mutable fields below — this tool REJECTS any other key rather than ignoring it, so do not echo a record back from get_feedback_record; strip its provenance (source_*, field_*, submission_id, collected_at) and its derived sentiment/emotions/translation first. At least one field is required. metadata is REPLACED wholesale.
formbricks_mcp_validate_surveyREADValidate a v3 survey create or patch payload without writing survey changes. A validation failure answers 200 with valid: false and structured invalid_params rather than an error.
formbricks_post_api_v1_management_action_classesWRITECreate Action Class from the UI or from the API! You can read more about them [here](https://formbricks.com/docs/in-app-surveys/actions). Formbricks POST /api/v1/management/action-classes (v1).
formbricks_post_api_v1_management_responsesWRITECreate a user response using the management API. This will trigger the response pipeline, including webhooks, integrations, follow-up emails, and other configured actions. Formbricks POST /api/v1/management/responses (v1).
formbricks_post_api_v1_management_storageWRITEAPI endpoint for uploading public files. Uploaded files are public and accessible by anyone. This endpoint requires authentication and enforces a hard limit of 5 MB for all uploads. It accepts a JSON body with fileName, fileType, workspaceId, and optionally allowedFileExtensions to restrict file types. On success, it returns a signed URL for uploading the file to S3. Formbricks POST /api/v1/management/storage (v1).
formbricks_post_api_v1_management_surveysWRITECreate a survey with granular settings, questions, their types, welcomeCard, thankYouCard, languages, etc right from this API. We'd however recommend you to do this via our Formbricks App with the UI for a better visual experience. Formbricks POST /api/v1/management/surveys (v1).
formbricks_post_api_v1_webhooksWRITECreate a new webhook right from the API and see it active right away!. Formbricks POST /api/v1/webhooks (v1).
formbricks_post_management_contact_attribute_keysWRITECreates a contact attribute key in the database. Note - Environments are deprecated. Use Workspace/workspaceId terminology. Formbricks POST /api/v2/management/contact-attribute-keys (v2).
formbricks_post_management_contactsWRITECreates a single contact in the database. This endpoint expects a top-level `attributes` object. For bulk uploads, use `PUT /management/contacts/bulk`, which expects `contacts[].attributes[]` instead. Each contact must have a valid email address in the attributes. All attribute keys must already exist in the Workspace. The email is used as the unique identifier along with the Workspace. Formbricks POST /api/v2/management/contacts (v2).
formbricks_post_management_responsesWRITECreates a response in the database. This will trigger the response pipeline, including webhooks, integrations, follow-up emails, and other configured actions. Formbricks POST /api/v2/management/responses (v2).
formbricks_post_management_webhooksWRITECreates a webhook in the database. Note - Environments are deprecated. Use Workspace/workspaceId terminology. Formbricks POST /api/v2/management/webhooks (v2).
formbricks_post_organizations_by_organizationid_teamsWRITECreates a team in the database. Formbricks POST /api/v2/organizations/{organizationId}/teams (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_post_organizations_by_organizationid_workspace_teamsWRITECreates a Workspace team in the database. Formbricks POST /api/v2/organizations/{organizationId}/workspace-teams (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_put_api_v1_management_responses_by_responseidWRITEUpdate an existing user response with new data. This will trigger the response pipeline, including webhooks, integrations, follow-up emails (if the response is marked as finished), and other configured actions. Formbricks PUT /api/v1/management/responses/{responseId} (v1).
formbricks_put_api_v1_management_surveys_by_surveyidWRITEUpdate an existing survey with new properties. This is also what we'd recommend you to do from the UI for a better visual feedback. Formbricks PUT /api/v1/management/surveys/{surveyId} (v1).
formbricks_put_management_contact_attribute_keys_by_idWRITEUpdates a contact attribute key in the database. Formbricks PUT /api/v2/management/contact-attribute-keys/{id} (v2).
formbricks_put_management_contacts_bulkWRITEUploads contacts in bulk. This endpoint expects the bulk request shape: `contacts` must be an array, and each contact item must contain an `attributes` array of `{ attributeKey, value }` objects. Unlike `POST /management/contacts`, this endpoint does not accept a top-level `attributes` object. Each contact must include an `email` attribute in its `attributes` array, and that email must be valid. Formbricks PUT /api/v2/management/contacts/bulk (v2).
formbricks_put_management_responses_by_idWRITEUpdates a response in the database. This will trigger the response pipeline, including webhooks, integrations, follow-up emails (if the response is marked as finished), and other configured actions. Formbricks PUT /api/v2/management/responses/{id} (v2). A FULL REPLACE, not a partial update: send every field of the response as Get a response (v2) returns it -- only `id` and `surveyId` may be left out -- and Formbricks answers 422 naming each field that is missing.
formbricks_put_management_webhooks_by_idWRITEUpdates a webhook in the database. Note - Environments are deprecated. Use Workspace/workspaceId terminology. Formbricks PUT /api/v2/management/webhooks/{id} (v2).
formbricks_put_organizations_by_organizationid_teams_by_idWRITEUpdates a team in the database. Formbricks PUT /api/v2/organizations/{organizationId}/teams/{id} (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
formbricks_put_organizations_by_organizationid_workspace_teamsWRITEUpdates a Workspace team in the database. Formbricks PUT /api/v2/organizations/{organizationId}/workspace-teams (v2). Organization-scoped: the API key needs Organization Access, ticked when the key was created.
Put Formbricks behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.