# How to integrate Formbricks MCP with CrewAI

```json
{
  "title": "How to integrate Formbricks MCP with CrewAI",
  "toolkit": "Formbricks",
  "toolkit_slug": "formbricks",
  "framework": "CrewAI",
  "framework_slug": "crew-ai",
  "url": "https://composio.dev/toolkits/formbricks/framework/crew-ai",
  "markdown_url": "https://composio.dev/toolkits/formbricks/framework/crew-ai.md",
  "updated_at": "2026-05-12T10:12:06.663Z"
}
```

## Introduction

This guide walks you through connecting Formbricks to CrewAI using the Composio tool router. By the end, you'll have a working Formbricks agent that can create a new customer feedback survey, add a contact to our user list, record survey responses from yesterday's event through natural language commands.
This guide will help you understand how to give your CrewAI agent real control over a Formbricks account through Composio's Formbricks MCP server.
Before we dive in, let's take a quick look at the key ideas and tools involved.

## Also integrate Formbricks with

- [OpenAI Agents SDK](https://composio.dev/toolkits/formbricks/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/formbricks/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/formbricks/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/formbricks/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/formbricks/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/formbricks/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/formbricks/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/formbricks/framework/cli)
- [Google ADK](https://composio.dev/toolkits/formbricks/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/formbricks/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/formbricks/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/formbricks/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/formbricks/framework/llama-index)

## TL;DR

Here's what you'll learn:
- Get a Composio API key and configure your Formbricks connection
- Set up CrewAI with an MCP enabled agent
- Create a Tool Router session or standalone MCP server for Formbricks
- Build a conversational loop where your agent can execute Formbricks operations

## What is CrewAI?

CrewAI is a powerful framework for building multi-agent AI systems. It provides primitives for defining agents with specific roles, creating tasks, and orchestrating workflows through crews.
Key features include:
- Agent Roles: Define specialized agents with specific goals and backstories
- Task Management: Create tasks with clear descriptions and expected outputs
- Crew Orchestration: Combine agents and tasks into collaborative workflows
- MCP Integration: Connect to external tools through Model Context Protocol

## What is the Formbricks MCP server, and what's possible with it?

The Formbricks MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Formbricks account. It provides structured and secure access to your survey management tools, so your agent can perform actions like creating surveys, collecting responses, managing contacts, and handling webhooks automatically on your behalf.
- Survey creation and management: Easily instruct your agent to create new surveys, define questions, and set up feedback forms tailored to your needs.
- Automated response collection: Have your agent log responses to surveys, link displays to responses, and streamline data gathering effortlessly.
- Contact and attribute management: Direct your agent to add or remove contacts, create or delete attribute classes, and segment audiences for more targeted feedback analysis.
- Webhook configuration for real-time events: Let your agent register new webhooks to automatically send survey response data to external systems or endpoints.
- Cleanup and maintenance tools: Authorize your agent to delete surveys, survey responses, persons, or unused attributes, keeping your Formbricks workspace organized and up to date.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `FORMBRICKS_CHECK_HEALTH` | Check Health | Tool to check the health status of the Formbricks API. Use when you need to verify that the API is operational and responding to requests. |
| `FORMBRICKS_CREATE_ACTION_CLASS` | Create Action Class | Tool to create a new action class. Use when defining custom action logic in your environment. |
| `FORMBRICKS_CREATE_ATTRIBUTE_CLASS` | Create Attribute Class | Creates a new attribute class (custom contact attribute) in Formbricks. Attribute classes define the schema for contact attributes used for segmentation and personalization. Each attribute must have a unique key within the environment. Common examples include 'plan', 'tier', 'company', or custom business-specific attributes. Use this when you need to define new contact attribute types before tracking user data. |
| `FORMBRICKS_CREATE_CLIENT_USER` | Create Client User | Tool to create or identify a user within a specified environment. If the user already exists, this will identify them and potentially update user attributes. If they don't exist, it will create a new user. Use when you need to register or update users in the client API for survey targeting. |
| `FORMBRICKS_CREATE_CONTACT` | Create Contact | Creates a new contact in a Formbricks environment. A contact represents a person or entity tracked in Formbricks for survey responses and interactions. The email serves as the unique identifier within an environment - if a contact with the same email already exists, this will update the existing contact. Use this action when you need to: - Register a new contact for survey distribution - Add contact information before sending surveys - Create or update contact records with custom attributes Prerequisites: - An environment ID (use GET_ME to retrieve available environments) - All attribute keys must exist in the environment (email is always available) - Write permissions on the API key |
| `FORMBRICKS_CREATE_DISPLAY` | Create Display | Create a display record to track when a survey is shown to users. Displays are used to measure survey view counts and can optionally be linked to a specific user. Use this after obtaining valid survey and environment IDs to register that a survey was displayed. |
| `FORMBRICKS_CREATE_RESPONSE` | Create Survey Response | Tool to create a response for a survey. Use after collecting all survey answers. |
| `FORMBRICKS_CREATE_SURVEY` | Create Survey | Tool to create a new survey. Use after defining survey details and questions. |
| `FORMBRICKS_CREATE_WEBHOOK` | Create Webhook | Tool to create a new webhook. Use when you need to register an external endpoint to receive form response events. |
| `FORMBRICKS_DELETE_ATTRIBUTE_CLASS` | Delete Attribute Class | Tool to delete an attribute class. Use when you need to remove an attribute class by its ID after confirming it's no longer needed. |
| `FORMBRICKS_DELETE_PERSON` | Delete Person | Tool to delete a person. Use when you need to remove a person's record from Formbricks after confirming the ID. |
| `FORMBRICKS_DELETE_RESPONSE` | Delete Survey Response | Tool to delete a survey response by its ID. Use when you need to remove an existing response after confirming its ID. |
| `FORMBRICKS_DELETE_SURVEY` | Delete Survey | Deletes a survey from Formbricks by its unique identifier. Use this action when you need to permanently remove a survey. The deletion cannot be undone. Before deletion, ensure you have the correct survey ID - you can list surveys first to verify. Returns the deleted survey's data including its ID, name, type, status, and timestamps. |
| `FORMBRICKS_DELETE_TEAM` | Delete Team | Tool to delete an organization team by its ID. Use when you need to permanently remove a team from an organization. Requires write permissions on the organization. Returns the deleted team's details including ID, name, timestamps, and organization ID. |
| `FORMBRICKS_DELETE_WEBHOOK` | Delete Webhook | Tool to delete a webhook by ID. Use when you need to remove an existing webhook from Formbricks. Use after confirming the webhook ID. |
| `FORMBRICKS_GET_ACCOUNT_INFO` | Get Account Info | Retrieves environment information for the authenticated API key. Returns details about the environment (development or production) including the associated project and setup completion status. This is useful for understanding which environment and project you're working with. |
| `FORMBRICKS_GET_ALL_CONTACTS` | Get All Contacts | Tool to retrieve all contacts within the organization. Use when you need a complete list of contacts. |
| `FORMBRICKS_GET_ATTRIBUTE_CLASS` | Get Attribute Class | Tool to get a specific attribute class by ID. Use when you need to retrieve details of a specific attribute class for inspection or validation. |
| `FORMBRICKS_GET_CLIENT_CONTACTS_STATE` | Get Client Contacts State | Tool to get the current state of a contact including surveys and segment information. Use when you need to retrieve tracking data for a specific user, including their segment memberships, survey displays, and response history. This endpoint uses the v2 client API. |
| `FORMBRICKS_GET_CONTACT_ATTRIBUTE_KEY` | Get Contact Attribute Key | Tool to retrieve detailed information about a specific contact attribute key by ID (v2 API). Use when you need to inspect the properties of a contact attribute key such as its type, uniqueness requirement, or associated environment. |
| `FORMBRICKS_GET_CONTACT_BY_ID` | Get Contact by ID | Tool to retrieve a specific contact by its ID. Use when you need to fetch detailed information about a single contact. |
| `FORMBRICKS_GET_ME` | Get Me | Tool to retrieve current authenticated organization's and environment details. Use when you need to fetch organization and environment information for the current API key. |
| `FORMBRICKS_GET_PERSON_BY_ID` | Get Person by ID | Tool to retrieve a person by their internal ID in Formbricks. Use when you need detailed information about a specific person, including all their custom attributes. The person ID can be obtained from the Get All Persons endpoint. |
| `FORMBRICKS_GET_RESPONSES` | Get Responses | Retrieve survey responses with flexible filtering, sorting, and pagination. Use this tool to: - List all responses across surveys or filter by specific surveyId - Filter responses by contactId to see submissions from a specific contact - Apply date range filters (startDate/endDate) with filterDateField - Sort by creation or update time (sortBy: createdAt/updatedAt) - Paginate through large result sets (limit: 1-250, skip for offset) Returns detailed response data including answers, completion status, timestamps, contact attributes, time-to-complete metrics, and pagination metadata. |
| `FORMBRICKS_GET_ROLES` | Get Roles | Tool to retrieve all available roles in the system. Use when you need system roles for access control. |
| `FORMBRICKS_GET_WEBHOOK` | Get Webhook | Tool to retrieve details of a specific webhook. Use when you need to inspect a webhook's configuration by ID. |
| `FORMBRICKS_LIST_ACTION_CLASSES` | List Action Classes | List all action classes in your Formbricks environment. Action classes define trackable user interactions (like clicks, page views, form submissions) that can trigger surveys or be used in targeting logic. Use this to discover what actions are available for survey triggers and audience segmentation. |
| `FORMBRICKS_LIST_ATTRIBUTE_CLASSES` | List Attribute Classes | Tool to list all attribute classes. Use when you need to retrieve existing attribute classes for segmentation or management. |
| `FORMBRICKS_LIST_CLIENT_ENVIRONMENT` | List Client Environment | Tool to retrieve environment state for Formbricks SDKs. Use when you need to fetch the complete environment configuration including surveys, action classes, and project settings. Note: This endpoint uses server-side caching with a 5-minute TTL, so changes may take up to 5 minutes to reflect. |
| `FORMBRICKS_LIST_CONTACT_ATTRIBUTE_KEYS` | List Contact Attribute Keys | Tool to retrieve contact attribute keys from Formbricks. Use when you need to list all available contact attributes for segmentation, filtering, or contact management. Supports pagination, sorting, and date filtering. |
| `FORMBRICKS_LIST_HEALTH` | List Health | Tool to check the health status of critical application dependencies including database and cache. Use when you need to verify that Formbricks services are operational. |
| `FORMBRICKS_LIST_MANAGEMENT_CONTACT_ATTRIBUTES` | List Management Contact Attributes | Tool to retrieve all contact attributes in the environment. Use when you need to view custom data stored for contacts across the organization. |
| `FORMBRICKS_LIST_MANAGEMENT_ME` | List Management Me | Tool to retrieve authenticated user's environment and project information. Use when you need to get details about the environment associated with the current API key, including project details and setup status. |
| `FORMBRICKS_LIST_MANAGEMENT_PEOPLE` | List Management People | Tool to retrieve all people (legacy term for contacts) in the environment. Use when you need a complete list of people with their attributes. |
| `FORMBRICKS_LIST_ORGANIZATIONS_PROJECT_TEAMS` | List Organizations Project Teams | Tool to list all project-team assignments for an organization (v2 API only). Use when you need to retrieve which teams are assigned to which projects, along with their permission levels. Supports filtering by team, project, date range, and pagination. |
| `FORMBRICKS_LIST_ORGANIZATION_TEAMS` | List Organization Teams | Tool to retrieve all teams in an organization (v2 API). Use when you need to list teams within a specific organization, with support for pagination, sorting, and date-based filtering. Returns team details including ID, name, timestamps, and organization ID. |
| `FORMBRICKS_LIST_SURVEYS` | List Surveys | List all surveys in the environment. Use this tool to: - Retrieve all surveys with complete configuration details - Access survey questions, endings, triggers, and styling - View survey status and metadata (created/updated timestamps, creator) - Get display settings, targeting, and language configurations Returns complete survey objects including questions, endings, welcome cards, triggers, display options, styling, and all other configuration settings. |
| `FORMBRICKS_LIST_WEBHOOKS` | List Webhooks | List all webhooks configured for the current environment. Returns webhooks with pagination support and optional filtering by survey IDs, date ranges, and sorting. Use this action to retrieve webhook configurations, check which surveys have webhooks enabled, or audit webhook settings. |
| `FORMBRICKS_UPDATE_CONTACT_ATTRIBUTES` | Update Contact Attributes | Tool to update a contact's attributes in Formbricks. Use when you need to keep contact information in sync with your app or set custom attributes. |
| `FORMBRICKS_UPDATE_RESPONSE` | Update Survey Response | Tool to update an existing survey response. Use after identifying the response to modify. |
| `FORMBRICKS_UPDATE_SURVEY` | Update Survey | Updates an existing Formbricks survey with new properties. Only include fields you want to modify - all fields except 'id' are optional. Common use cases: - Change survey status (e.g., from 'draft' to 'inProgress' to make it live) - Update survey name or closed message - Modify display settings (delay, frequency, percentage) - Add/update questions, welcome cards, or ending screens - Configure triggers and targeting Requires: Valid survey ID (get from List Surveys or Create Survey actions) |
| `FORMBRICKS_UPDATE_WEBHOOK` | Update Webhook | Tool to update an existing webhook. Use when you need to apply modifications to a webhook's configuration. |
| `FORMBRICKS_UPLOAD_BULK_CONTACTS` | Upload Bulk Contacts | Upload multiple contacts to a Formbricks environment in bulk (up to 250 per request). Each contact must include an 'email' attribute with a valid email address. Additional attributes like firstName, lastName, or custom fields can be included. The API returns status 200 for full success or 207 for partial success with details about skipped contacts. Use this tool when you need to efficiently import multiple contacts at once instead of creating them individually. |
| `FORMBRICKS_UPLOAD_PRIVATE_FILE` | Upload Private File | Tool to obtain S3 presigned upload data for a private survey file. Use after confirming environmentId and surveyId. |
| `FORMBRICKS_UPLOAD_PUBLIC_FILE` | Upload Public File | Retrieves S3 presigned upload URLs and form fields for uploading a public file to Formbricks storage. Returns signed URL and presigned fields needed to upload files directly to S3. Maximum file size: 5MB. Uploaded files are publicly accessible. Requires write permissions on the specified environment. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

The Formbricks MCP server is an implementation of the Model Context Protocol that connects your AI agent to Formbricks. It provides structured and secure access so your agent can perform Formbricks operations on your behalf through a secure, permission-based interface.
With Composio's managed implementation, you don't have to create your own developer app. For production, if you're building an end product, we recommend using your own credentials. The managed server helps you prototype fast and go from 0-1 faster.

## Step-by-step Guide

### 1. Prerequisites

Before starting, make sure you have:
- Python 3.9 or higher
- A Composio account and API key
- A Formbricks connection authorized in Composio
- An OpenAI API key for the CrewAI LLM
- Basic familiarity with Python

### 1. Getting API Keys for OpenAI and Composio

OpenAI API Key
- Go to the [OpenAI dashboard](https://platform.openai.com/settings/organization/api-keys) and create an API key. You'll need credits to use the models, or you can connect to another model provider.
- Keep the API key safe.
Composio API Key
- Log in to the [Composio dashboard](https://dashboard.composio.dev?utm_source=toolkits&utm_medium=framework_docs).
- Navigate to your API settings and generate a new API key.
- Store this key securely as you'll need it for authentication.

### 2. Install dependencies

**What's happening:**
- composio connects your agent to Formbricks via MCP
- crewai provides Agent, Task, Crew, and LLM primitives
- crewai-tools[mcp] includes MCP helpers
- python-dotenv loads environment variables from .env
```bash
pip install composio crewai crewai-tools[mcp] python-dotenv
```

### 3. Set up environment variables

Create a .env file in your project root.
What's happening:
- COMPOSIO_API_KEY authenticates with Composio
- USER_ID scopes the session to your account
- OPENAI_API_KEY lets CrewAI use your chosen OpenAI model
```bash
COMPOSIO_API_KEY=your_composio_api_key_here
USER_ID=your_user_id_here
OPENAI_API_KEY=your_openai_api_key_here
```

### 4. Import dependencies

**What's happening:**
- CrewAI classes define agents and tasks, and run the workflow
- MCPServerHTTP connects the agent to an MCP endpoint
- Composio will give you a short lived Formbricks MCP URL
```python
import os
from composio import Composio
from crewai import Agent, Task, Crew
from crewai_tools import MCPServerAdapter
import dotenv

dotenv.load_dotenv()

COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
COMPOSIO_USER_ID = os.getenv("COMPOSIO_USER_ID")

if not COMPOSIO_API_KEY:
    raise ValueError("COMPOSIO_API_KEY is not set")
if not COMPOSIO_USER_ID:
    raise ValueError("COMPOSIO_USER_ID is not set")
```

### 5. Create a Composio Tool Router session for Formbricks

**What's happening:**
- You create a Formbricks only session through Composio
- Composio returns an MCP HTTP URL that exposes Formbricks tools
```python
composio_client = Composio(api_key=COMPOSIO_API_KEY)
session = composio_client.create(user_id=COMPOSIO_USER_ID, toolkits=["formbricks"])

url = session.mcp.url
```

### 6. Initialize the MCP Server

**What's Happening:**
- Server Configuration: The code sets up connection parameters including the MCP server URL, streamable HTTP transport, and Composio API key authentication.
- MCP Adapter Bridge: MCPServerAdapter acts as a context manager that converts Composio MCP tools into a CrewAI-compatible format.
- Agent Setup: Creates a CrewAI Agent with a defined role (Search Assistant), goal (help with internet searches), and access to the MCP tools.
- Configuration Options: The agent includes settings like verbose=False for clean output and max_iter=10 to prevent infinite loops.
- Dynamic Tool Usage: Once created, the agent automatically accesses all Composio Search tools and decides when to use them based on user queries.
```python
server_params = {
    "url": url,
    "transport": "streamable-http",
    "headers": {"x-api-key": COMPOSIO_API_KEY},
}

with MCPServerAdapter(server_params) as tools:
    agent = Agent(
        role="Search Assistant",
        goal="Help users search the internet effectively",
        backstory="You are a helpful assistant with access to search tools.",
        tools=tools,
        verbose=False,
        max_iter=10,
    )
```

### 7. Create a CLI Chatloop and define the Crew

**What's Happening:**
- Interactive CLI Setup: The code creates an infinite loop that continuously prompts for user input and maintains the entire conversation history in a string variable.
- Input Validation: Empty inputs are ignored to prevent processing blank messages and keep the conversation clean.
- Context Building: Each user message is appended to the conversation context, which preserves the full dialogue history for better agent responses.
- Dynamic Task Creation: For every user input, a new Task is created that includes both the full conversation history and the current request as context.
- Crew Execution: A Crew is instantiated with the agent and task, then kicked off to process the request and generate a response.
- Response Management: The agent's response is converted to a string, added to the conversation context, and displayed to the user, maintaining conversational continuity.
```python
print("Chat started! Type 'exit' or 'quit' to end.\n")

conversation_context = ""

while True:
    user_input = input("You: ").strip()

    if user_input.lower() in ["exit", "quit", "bye"]:
        print("\nGoodbye!")
        break

    if not user_input:
        continue

    conversation_context += f"\nUser: {user_input}\n"
    print("\nAgent is thinking...\n")

    task = Task(
        description=(
            f"Conversation history:\n{conversation_context}\n\n"
            f"Current request: {user_input}"
        ),
        expected_output="A helpful response addressing the user's request",
        agent=agent,
    )

    crew = Crew(agents=[agent], tasks=[task], verbose=False)
    result = crew.kickoff()
    response = str(result)

    conversation_context += f"Agent: {response}\n"
    print(f"Agent: {response}\n")
```

## Complete Code

```python
from crewai import Agent, Task, Crew, LLM
from crewai_tools import MCPServerAdapter
from composio import Composio
from dotenv import load_dotenv
import os

load_dotenv()

GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
COMPOSIO_USER_ID = os.getenv("COMPOSIO_USER_ID")

if not GOOGLE_API_KEY:
    raise ValueError("GOOGLE_API_KEY is not set in the environment.")
if not COMPOSIO_API_KEY:
    raise ValueError("COMPOSIO_API_KEY is not set in the environment.")
if not COMPOSIO_USER_ID:
    raise ValueError("COMPOSIO_USER_ID is not set in the environment.")

# Initialize Composio and create a session
composio = Composio(api_key=COMPOSIO_API_KEY)
session = composio.create(
    user_id=COMPOSIO_USER_ID,
    toolkits=["formbricks"],
)
url = session.mcp.url

# Configure LLM
llm = LLM(
    model="gpt-5",
    api_key=os.getenv("OPENAI_API_KEY"),
)

server_params = {
    "url": url,
    "transport": "streamable-http",
    "headers": {"x-api-key": COMPOSIO_API_KEY},
}

with MCPServerAdapter(server_params) as tools:
    agent = Agent(
        role="Search Assistant",
        goal="Help users with internet searches",
        backstory="You are an expert assistant with access to Composio Search tools.",
        tools=tools,
        llm=llm,
        verbose=False,
        max_iter=10,
    )

    print("Chat started! Type 'exit' or 'quit' to end.\n")

    conversation_context = ""

    while True:
        user_input = input("You: ").strip()

        if user_input.lower() in ["exit", "quit", "bye"]:
            print("\nGoodbye!")
            break

        if not user_input:
            continue

        conversation_context += f"\nUser: {user_input}\n"
        print("\nAgent is thinking...\n")

        task = Task(
            description=(
                f"Conversation history:\n{conversation_context}\n\n"
                f"Current request: {user_input}"
            ),
            expected_output="A helpful response addressing the user's request",
            agent=agent,
        )

        crew = Crew(agents=[agent], tasks=[task], verbose=False)
        result = crew.kickoff()
        response = str(result)

        conversation_context += f"Agent: {response}\n"
        print(f"Agent: {response}\n")
```

## Conclusion

You now have a CrewAI agent connected to Formbricks through Composio's Tool Router. The agent can perform Formbricks operations through natural language commands.
Next steps:
- Add role-specific instructions to customize agent behavior
- Plug in more toolkits for multi-app workflows
- Chain tasks for complex multi-step operations

## How to build Formbricks MCP Agent with another framework

- [OpenAI Agents SDK](https://composio.dev/toolkits/formbricks/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/formbricks/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/formbricks/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/formbricks/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/formbricks/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/formbricks/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/formbricks/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/formbricks/framework/cli)
- [Google ADK](https://composio.dev/toolkits/formbricks/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/formbricks/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/formbricks/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/formbricks/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/formbricks/framework/llama-index)

## Related Toolkits

- [Excel](https://composio.dev/toolkits/excel) - Microsoft Excel is a robust spreadsheet application for organizing, analyzing, and visualizing data. It's the go-to tool for calculations, reporting, and flexible data management.
- [21risk](https://composio.dev/toolkits/_21risk) - 21RISK is a web app built for easy checklist, audit, and compliance management. It streamlines risk processes so teams can focus on what matters.
- [Abstract](https://composio.dev/toolkits/abstract) - Abstract provides a suite of APIs for automating data validation and enrichment tasks. It helps developers streamline workflows and ensure data quality with minimal effort.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Agenty](https://composio.dev/toolkits/agenty) - Agenty is a web scraping and automation platform for extracting data and automating browser tasks—no coding needed. It streamlines data collection, monitoring, and repetitive online actions.
- [Ambee](https://composio.dev/toolkits/ambee) - Ambee is an environmental data platform providing real-time, hyperlocal APIs for air quality, weather, and pollen. Get precise environmental insights to power smarter decisions in your apps and workflows.
- [Ambient weather](https://composio.dev/toolkits/ambient_weather) - Ambient Weather is a platform for personal weather stations with a robust API for accessing local, real-time, and historical weather data. Get detailed environmental insights directly from your own sensors for smarter apps and automations.
- [Anonyflow](https://composio.dev/toolkits/anonyflow) - Anonyflow is a service for encryption-based data anonymization and secure data sharing. It helps organizations meet GDPR, CCPA, and HIPAA data privacy compliance requirements.
- [Api ninjas](https://composio.dev/toolkits/api_ninjas) - Api ninjas offers 120+ public APIs spanning categories like weather, finance, sports, and more. Developers use it to supercharge apps with real-time data and actionable endpoints.
- [Api sports](https://composio.dev/toolkits/api_sports) - Api sports is a comprehensive sports data platform covering 2,000+ competitions with live scores and 15+ years of stats. Instantly access up-to-date sports information for analysis, apps, or chatbots.
- [Apify](https://composio.dev/toolkits/apify) - Apify is a cloud platform for building, deploying, and managing web scraping and automation tools called Actors. It lets you automate data extraction and workflow tasks at scale—no infrastructure headaches.
- [Autom](https://composio.dev/toolkits/autom) - Autom is a lightning-fast search engine results data platform for Google, Bing, and Brave. Developers use it to access fresh, low-latency SERP data on demand.
- [Beaconchain](https://composio.dev/toolkits/beaconchain) - Beaconchain is a real-time analytics platform for Ethereum 2.0's Beacon Chain. It provides detailed insights into validators, blocks, and overall network performance.
- [Big data cloud](https://composio.dev/toolkits/big_data_cloud) - BigDataCloud provides APIs for geolocation, reverse geocoding, and address validation. Instantly access reliable location intelligence to enhance your applications and workflows.
- [Bigpicture io](https://composio.dev/toolkits/bigpicture_io) - BigPicture.io offers APIs for accessing detailed company and profile data. Instantly enrich your applications with up-to-date insights on 20M+ businesses.
- [Bitquery](https://composio.dev/toolkits/bitquery) - Bitquery is a blockchain data platform offering indexed, real-time, and historical data from 40+ blockchains via GraphQL APIs. Get unified, reliable access to complex on-chain data for analytics, trading, and research.
- [Brightdata](https://composio.dev/toolkits/brightdata) - Brightdata is a leading web data platform offering advanced scraping, SERP APIs, and anti-bot tools. It lets you collect public web data at scale, bypassing blocks and friction.
- [Builtwith](https://composio.dev/toolkits/builtwith) - BuiltWith is a web technology profiler that uncovers the technologies powering any website. Gain actionable insights into analytics, hosting, and content management stacks for smarter research and lead generation.
- [Byteforms](https://composio.dev/toolkits/byteforms) - Byteforms is an all-in-one platform for creating forms, managing submissions, and integrating data. It streamlines workflows by centralizing form data collection and automation.
- [Cabinpanda](https://composio.dev/toolkits/cabinpanda) - Cabinpanda is a data collection platform for building and managing online forms. It helps streamline how you gather, organize, and analyze responses.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Formbricks MCP?

With a standalone Formbricks MCP server, the agents and LLMs can only access a fixed set of Formbricks tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Formbricks and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with CrewAI?

Yes, you can. CrewAI fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Formbricks tools.

### Can I manage the permissions and scopes for Formbricks while using Tool Router?

Yes, absolutely. You can configure which Formbricks scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Formbricks data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
