Formbricks MCP by usefulapi

Read survey responses and manage contacts, webhooks, teams and organisation users.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
86%
Naming quality
74%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (5)

  • LOWTool 'formbricks_list_contact_attribute_keys' name length outside 3-30 rangein formbricks_list_contact_attribute_keys
  • LOWTool 'formbricks_get_contact_attribute_key' name length outside 3-30 rangein formbricks_get_contact_attribute_key
  • LOWTool 'formbricks_get_survey_contact_link' name length outside 3-30 rangein formbricks_get_survey_contact_link
  • LOWTool 'formbricks_get_survey_segment_links' name length outside 3-30 rangein formbricks_get_survey_segment_links
  • LOWTool 'formbricks_list_organization_users' name length outside 3-30 rangein formbricks_list_organization_users

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,609Tokens (tool definitions)
~1.1 KBTypical response size
Significant attention impact (2.04% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "formbricks": {
      "url": "https://formbricks.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://formbricks.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (17)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢formbricks_health

Check that the Formbricks API is reachable. Formbricks v2: GET /health.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_whoami

Return the project and environment the configured x-api-key belongs to — the fastest way to find the workspace and environment ids the other tools need. Formbricks v2: GET /me.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_list_responses(surveyId, contactId, startDate, endDate, filterDateField, ...)

List survey responses, optionally narrowed to one survey, one contact or a date window. This is the main read: the answers people gave. Formbricks v2: GET /management/responses.

Input Schema

{
  "type": "object",
  "properties": {
    "surveyId": {
      "description": "Only responses to this survey.",
      "type": "string"
    },
    "contactId": {
      "description": "Only responses from this contact.",
      "type": "string"
    },
    "startDate": {
      "description": "ISO-8601 lower bound on the date field.",
      "type": "string"
    },
    "endDate": {
      "description": "ISO-8601 upper bound on the date field.",
      "type": "string"
    },
    "filterDateField": {
      "description": "Which date field the window applies to.",
      "type": "string",
      "enum": [
        "createdAt",
        "updatedAt"
      ]
    },
    "limit": {
      "description": "Page size, 1-100.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "How many records to skip (offset paging).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "sortBy": {
      "description": "Field to sort on, e.g. createdAt or updatedAt.",
      "type": "string"
    },
    "order": {
      "description": "Sort direction.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_get_response(response_id)

Fetch a single survey response with its answers, metadata and completion state. Formbricks v2: GET /management/responses/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "response_id": {
      "type": "string",
      "description": "The response's id."
    }
  },
  "required": [
    "response_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_list_webhooks(surveyIds, limit, skip, sortBy, order)

List the webhooks configured to fire on survey events, optionally filtered to specific surveys. Formbricks v2: GET /management/webhooks.

Input Schema

{
  "type": "object",
  "properties": {
    "surveyIds": {
      "description": "Only webhooks bound to these survey ids.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "limit": {
      "description": "Page size, 1-100.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "How many records to skip (offset paging).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "sortBy": {
      "description": "Field to sort on, e.g. createdAt or updatedAt.",
      "type": "string"
    },
    "order": {
      "description": "Sort direction.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_get_webhook(webhook_id)

Fetch a single webhook with its URL, triggers and bound surveys. Formbricks v2: GET /management/webhooks/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "webhook_id": {
      "type": "string",
      "description": "The webhook's id."
    }
  },
  "required": [
    "webhook_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_list_contact_attribute_keys(workspaceId, environmentId, limit, skip, sortBy, ...)

List the contact attribute keys defined in an environment — the schema of what you know about a contact. Formbricks v2: GET /management/contact-attribute-keys.

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "description": "Restrict to this workspace.",
      "type": "string"
    },
    "environmentId": {
      "description": "Restrict to this environment.",
      "type": "string"
    },
    "limit": {
      "description": "Page size, 1-100.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "How many records to skip (offset paging).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "sortBy": {
      "description": "Field to sort on, e.g. createdAt or updatedAt.",
      "type": "string"
    },
    "order": {
      "description": "Sort direction.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_get_contact_attribute_key(key_id)

Fetch a single contact attribute key. Formbricks v2: GET /management/contact-attribute-keys/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "key_id": {
      "type": "string",
      "description": "The attribute key's id."
    }
  },
  "required": [
    "key_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_get_survey_contact_link(survey_id, contact_id)

Get the personalised survey URL for one contact — the link you send so their response is attributed to them. Formbricks v2: GET /management/surveys/{surveyId}/contact-links/contacts/{contactId}/.

Input Schema

{
  "type": "object",
  "properties": {
    "survey_id": {
      "type": "string",
      "description": "The survey to link to."
    },
    "contact_id": {
      "type": "string",
      "description": "The contact the link is for."
    }
  },
  "required": [
    "survey_id",
    "contact_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_get_survey_segment_links(survey_id, segment_id, limit, skip)

Get personalised survey URLs for every contact in a segment — how you run a targeted send. Formbricks v2: GET /management/surveys/{surveyId}/contact-links/segments/{segmentId}.

Input Schema

{
  "type": "object",
  "properties": {
    "survey_id": {
      "type": "string",
      "description": "The survey to link to."
    },
    "segment_id": {
      "type": "string",
      "description": "The segment of contacts."
    },
    "limit": {
      "description": "Page size, 1-100.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "How many records to skip (offset paging).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "survey_id",
    "segment_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_list_teams(organization_id, limit, skip, sortBy, order)

List the teams in an organisation. Formbricks v2: GET /organizations/{organizationId}/teams.

Input Schema

{
  "type": "object",
  "properties": {
    "organization_id": {
      "type": "string",
      "description": "The organisation's id."
    },
    "limit": {
      "description": "Page size, 1-100.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "How many records to skip (offset paging).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "sortBy": {
      "description": "Field to sort on, e.g. createdAt or updatedAt.",
      "type": "string"
    },
    "order": {
      "description": "Sort direction.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "required": [
    "organization_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_list_organization_users(organization_id, email, id, limit, skip)

List the users in an organisation, optionally looked up by id or email. Formbricks v2: GET /organizations/{organizationId}/users.

Input Schema

{
  "type": "object",
  "properties": {
    "organization_id": {
      "type": "string",
      "description": "The organisation's id."
    },
    "email": {
      "description": "Only the user with this email.",
      "type": "string"
    },
    "id": {
      "description": "Only the user with this id.",
      "type": "string"
    },
    "limit": {
      "description": "Page size, 1-100.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "How many records to skip (offset paging).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "organization_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢formbricks_list_roles

List the roles that can be assigned to organisation users. Formbricks v2: GET /roles.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴formbricks_create_webhook(name, url, workspaceId, triggers, surveyIds, ...)

Register a webhook that fires on survey events. Formbricks v2: POST /management/webhooks.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "A label for the webhook."
    },
    "url": {
      "type": "string",
      "description": "The HTTPS URL Formbricks should POST to."
    },
    "workspaceId": {
      "type": "string",
      "description": "The workspace the webhook belongs to."
    },
    "triggers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Events to fire on, e.g. [\"responseCreated\", \"responseFinished\"]."
    },
    "surveyIds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Surveys the webhook covers. Pass an empty array for all surveys."
    },
    "environmentId": {
      "description": "Restrict to one environment.",
      "type": "string"
    }
  },
  "required": [
    "name",
    "url",
    "workspaceId",
    "triggers",
    "surveyIds"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴formbricks_delete_webhook(webhook_id)

Remove a webhook. Formbricks v2: DELETE /management/webhooks/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "webhook_id": {
      "type": "string",
      "description": "The webhook to delete."
    }
  },
  "required": [
    "webhook_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴formbricks_create_contact(workspaceId, attributes, environmentId)

Create a contact in a workspace from a set of attributes, e.g. email and userId. Formbricks v2: POST /management/contacts.

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "description": "The workspace to create the contact in."
    },
    "attributes": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      },
      "description": "Attribute key/value pairs, e.g. {\"email\":\"[email protected]\",\"userId\":\"u_1\"}."
    },
    "environmentId": {
      "description": "Restrict to one environment.",
      "type": "string"
    }
  },
  "required": [
    "workspaceId",
    "attributes"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴formbricks_delete_response(response_id)

Delete one survey response. Irreversible — use it to honour a data-deletion request. Formbricks v2: DELETE /management/responses/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "response_id": {
      "type": "string",
      "description": "The response to delete."
    }
  },
  "required": [
    "response_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded17 tools
verifiedversion not recorded17 tools