# How to integrate Eventbrite MCP with LangChain

```json
{
  "title": "How to integrate Eventbrite MCP with LangChain",
  "toolkit": "Eventbrite",
  "toolkit_slug": "eventbrite",
  "framework": "LangChain",
  "framework_slug": "langchain",
  "url": "https://composio.dev/toolkits/eventbrite/framework/langchain",
  "markdown_url": "https://composio.dev/toolkits/eventbrite/framework/langchain.md",
  "updated_at": "2026-05-12T10:10:45.467Z"
}
```

## Introduction

This guide walks you through connecting Eventbrite to LangChain using the Composio tool router. By the end, you'll have a working Eventbrite agent that can list all available eventbrite event categories, show event formats for online conferences, find subcategories under the 'music' category through natural language commands.
This guide will help you understand how to give your LangChain agent real control over a Eventbrite account through Composio's Eventbrite MCP server.
Before we dive in, let's take a quick look at the key ideas and tools involved.

## Also integrate Eventbrite with

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

## TL;DR

Here's what you'll learn:
- Get and set up your OpenAI and Composio API keys
- Connect your Eventbrite project to Composio
- Create a Tool Router MCP session for Eventbrite
- Initialize an MCP client and retrieve Eventbrite tools
- Build a LangChain agent that can interact with Eventbrite
- Set up an interactive chat interface for testing

## What is LangChain?

LangChain is a framework for developing applications powered by language models. It provides tools and abstractions for building agents that can reason, use tools, and maintain conversation context.
Key features include:
- Agent Framework: Build agents that can use tools and make decisions
- MCP Integration: Connect to external services through Model Context Protocol adapters
- Memory Management: Maintain conversation history across interactions
- Multi-Provider Support: Works with OpenAI, Anthropic, and other LLM providers

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

The Eventbrite MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Eventbrite account. It provides structured and secure access to your event management tools, so your agent can retrieve event categories, formats, and subcategories—making it simple to plan, organize, and customize events programmatically.
- Discover event categories: Instantly access and list all available Eventbrite categories, helping you select the most relevant topics for your events.
- Explore event formats: Let your agent fetch the variety of formats supported by Eventbrite, such as in-person, virtual, or hybrid, to tailor event structure on the fly.
- Retrieve event subcategories: Quickly pull detailed subcategory options based on your selected category, ensuring precise event classification and audience targeting.
- Localized event metadata retrieval: Enable your agent to localize categories, formats, and subcategories based on specific regions or languages, making global event planning seamless.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `EVENTBRITE_ADD_TICKET_TO_GROUP` | Add Ticket Class to Groups | Tool to add a ticket class to one or more explicitly specified ticket groups for an Eventbrite event. Use when you need to organize tickets by grouping them together. The caller must supply a non-empty list of ticket_group_ids; to discover available groups, call a list ticket groups action first. |
| `EVENTBRITE_ADD_TICKET_TO_GROUP_BY_ORGANIZATION` | Add Ticket to Group by Organization | Tool to add a ticket class to ticket groups using organization and event IDs. Use when managing ticket groups at the organization level. |
| `EVENTBRITE_CALCULATE_PRICE_FOR_ITEM` | Calculate Price For Item | Tool to calculate Eventbrite fees for a given ticket price. Use when you need to determine the exact fees, taxes, and organizer share for a specific price point before creating tickets. |
| `EVENTBRITE_CANCEL_EVENT` | Cancel Event | Tool to cancel an Eventbrite event. Use when you need to cancel an event. Note: Event must not have any pending or completed orders or the cancellation will fail. |
| `EVENTBRITE_COPY_EVENT` | Copy Event | Tool to copy an Eventbrite event and create a duplicate with a new Event ID. Use when you need to duplicate an existing event to create a similar event with the same settings. |
| `EVENTBRITE_CREATE_ACCESS_CODE` | Create Access Code | Tool to create a new access code for an Eventbrite event. Use when you need to create promotional codes, early bird access, or VIP ticket codes that unlock hidden ticket classes. |
| `EVENTBRITE_CREATE_CHECKOUT_SETTINGS` | Create Checkout Settings | Tool to create checkout settings for an Eventbrite organization. Use when you need to configure payment methods, country, and currency for an organization's checkout process. |
| `EVENTBRITE_CREATE_CUSTOM_QUESTION` | Create Custom Question | Tool to create a custom question for an Eventbrite event. Use when you need to collect additional information from attendees during registration (e.g., dietary preferences, T-shirt sizes, special requirements). |
| `EVENTBRITE_CREATE_DISCOUNT` | Create Discount | Tool to create a new discount for an Eventbrite organization. Use when you need to create promotional discounts, coupon codes, or special pricing for events. |
| `EVENTBRITE_CREATE_EVENT` | Create Event | Tool to create a new Eventbrite event. Use when you need to create single events or series parent events for repeating events. By default creates a single occurrence event unless is_series is set to true. |
| `EVENTBRITE_CREATE_EVENT_SCHEDULE` | Create Event Schedule | Tool to create an event schedule for a series parent event. Use when you need to add recurring occurrences to an event based on a recurrence pattern (daily, weekly, monthly, etc.). The schedule follows iCalendar RFC 5545 format. |
| `EVENTBRITE_CREATE_INVENTORY_TIER` | Create Inventory Tier | Tool to create a new inventory tier for an Eventbrite event. Use when you need to set up tiered seating, pricing levels, or capacity allocation for an event. |
| `EVENTBRITE_CREATE_ORGANIZER` | Create Organizer | Tool to create a new organizer for an Eventbrite organization. Use when you need to add an organizer profile that can be associated with events. |
| `EVENTBRITE_CREATE_TICKET_CLASS` | Create Ticket Class | Tool to create a new ticket class for an Eventbrite event. Use when you need to add ticket types such as General Admission, VIP, Early Bird, or other pricing tiers to an event. |
| `EVENTBRITE_CREATE_TICKET_GROUP` | Create Ticket Group | Tool to create a new ticket group for an Eventbrite organization. Use when you need to organize multiple ticket classes across events. Maximum 300 live ticket groups per organization. |
| `EVENTBRITE_CREATE_TRACKING_BEACON` | Create Tracking Beacon | Tool to create a tracking beacon for an Eventbrite event or user. Use when you need to add analytics pixels (Google Analytics, Facebook Pixel, etc.) to track attendee behavior on event pages or order confirmation pages. Either event_id or user_id must be provided. |
| `EVENTBRITE_CREATE_VENUE` | Create Venue | Tool to create a new venue under an organization in Eventbrite. Use when you need to add a physical location that can be reused across multiple events within the same organization. |
| `EVENTBRITE_CREATE_WEBHOOK` | Create Webhook | Tool to create a new webhook for an Eventbrite organization. Use when you need to set up webhook notifications for events like order placement, event creation, or attendee check-ins. |
| `EVENTBRITE_DELETE_DEFAULT_QUESTION` | Delete Default Question | Tool to deactivate a canned question for an event. Use when you need to remove default questions like cell_phone, job_title, company, or work_phone from event registration forms. |
| `EVENTBRITE_DELETE_DISCOUNT` | Delete Discount | Tool to delete a discount from Eventbrite. Only unused discounts can be deleted. Use when you need to remove a discount that has not been applied to any orders. |
| `EVENTBRITE_DELETE_EVENT` | Delete Event | Tool to delete an Eventbrite event. Use when you need to remove an event from the system. Note: Event must not have any pending or completed orders or the deletion will fail. |
| `EVENTBRITE_DELETE_INVENTORY_TIER` | Delete Inventory Tier | Tool to mark an existing inventory tier as deleted for an Eventbrite event. Use when you need to remove an inventory tier that is no longer needed. |
| `EVENTBRITE_DELETE_TICKET_CLASS` | Delete Ticket Class | Tool to delete a ticket class from an Eventbrite event by its ID. Use when you need to remove a ticket type/class that is no longer needed or was created in error. |
| `EVENTBRITE_DELETE_TICKET_GROUP` | Delete Ticket Group | Tool to delete a ticket group by changing its status to deleted. Use when you need to remove a ticket group from an event. |
| `EVENTBRITE_GET_ACCESS_CODE` | Get Access Code | Tool to retrieve a specific access code by ID for an Eventbrite event. Use when you need to check access code details, availability, or redemption status. |
| `EVENTBRITE_GET_ASSORTMENT` | Get Organization Assortment | Tool to retrieve assortment information for a specific organization. Use when you need to check the plan type or version details associated with an organization. |
| `EVENTBRITE_GET_ATTENDEE_REPORT` | Get Attendee Report | Tool to retrieve an attendee report for events in an Eventbrite organization. Use when you need aggregated attendee data, sales statistics, or demographic information across events. Supports filtering by event status, date ranges, and grouping by various dimensions. |
| `EVENTBRITE_GET_CAPACITY_TIER` | Get Capacity Tier | Tool to retrieve the capacity tier for an Eventbrite event. Use when you need to check ticket availability, sales status, or capacity information for an event. |
| `EVENTBRITE_GET_CATEGORY` | Get Category by ID | Tool to retrieve a specific category by ID. Use when fetching details about a particular event category. Returns category information including name, localized names, and subcategories. |
| `EVENTBRITE_GET_CHECKOUT_SETTINGS` | Get Checkout Settings | Tool to retrieve checkout settings for a specific Eventbrite organization. Use when you need to view or verify payment configuration and checkout methods for an organization. |
| `EVENTBRITE_GET_DEFAULT_QUESTION` | Get Default Question | Tool to retrieve a specific default (canned) question for an Eventbrite event by Event ID and Question ID. Use when you need to get details about a specific attendee information field. |
| `EVENTBRITE_GET_DISCOUNT` | Get Discount | Tool to retrieve a discount by its ID from Eventbrite. Use when you need to check discount details, verify discount codes, or inspect discount configurations. |
| `EVENTBRITE_GET_DISPLAY_SETTINGS` | Get Display Settings | Tool to retrieve display settings for a specific Eventbrite event. Use when you need to view what information is shown on an event page. |
| `EVENTBRITE_GET_EVENT` | Get Event | Tool to retrieve detailed information for a specific Eventbrite event by ID. Use when you need event details like name, description, dates, venue, organizer, or ticket information. Supports expanding related objects via the expand parameter. |
| `EVENTBRITE_GET_EVENT_CATEGORIES` | Get Event Categories | Tool to retrieve event categories. Use when selecting a category for an event. Localizes results via optional locale parameter. |
| `EVENTBRITE_GET_EVENT_DESCRIPTION` | Get Event Description | Tool to retrieve the full HTML description for an Eventbrite event. Use when you need the complete event description content (formatted as HTML). |
| `EVENTBRITE_GET_EVENT_FORMATS` | Get Event Formats | Tool to list event formats. Use when you need the available formats before creating or updating an event. |
| `EVENTBRITE_GET_EVENT_SUBCATEGORIES` | Get Event Subcategories | Tool to list all event subcategories. Use when fetching available subcategory options, optionally filtered by locale after selecting a category. |
| `EVENTBRITE_GET_FORMAT` | Get Format | Tool to retrieve a format by format ID. Use when you need detailed information about a specific event format. |
| `EVENTBRITE_GET_INVENTORY_TIER` | Get Inventory Tier | Tool to retrieve an Inventory Tier by ID for an Event. Use when you need to check inventory tier details, capacity, or ticket class associations for a specific event. |
| `EVENTBRITE_GET_ME` | Get Current User | Tool to retrieve the authenticated user's account information. Use when you need to get details about the current user. |
| `EVENTBRITE_GET_MEDIA_UPLOAD` | Get Media Upload | Tool to retrieve information on a Media image upload. Use when you need to check the status or details of an uploaded media image for events, organizers, or user profiles. |
| `EVENTBRITE_GET_ORGANIZER` | Get Organizer by ID | Tool to retrieve an organizer by organizer ID from Eventbrite. Use when you need detailed information about a specific event organizer. |
| `EVENTBRITE_GET_SALES_REPORT` | Get Sales Report | Tool to retrieve a sales report by Event ID or Event status for an organization. Use when you need detailed sales data including gross revenue, net revenue, quantity sold, fees, and royalties. Supports filtering by event status and grouping by various dimensions. |
| `EVENTBRITE_GET_SERIES` | Get Event Series | Tool to retrieve a parent Event Series by Event Series ID. Use when fetching details about a specific event series, including series-specific fields like is_series and is_series_parent. |
| `EVENTBRITE_GET_STRUCTURED_CONTENT` | Get Structured Content | Tool to retrieve structured content for an Eventbrite event. Returns the latest published version of the event's structured content including modules, widgets, and page metadata. |
| `EVENTBRITE_GET_STRUCTURED_CONTENT_EDIT` | Get Structured Content Edit Version | Tool to retrieve the latest working version of structured content for an event. Use when accessing the editable version of an event's structured content layout. |
| `EVENTBRITE_GET_SUBCATEGORY` | Get Subcategory by ID | Tool to retrieve a specific subcategory by ID. Use when fetching details about a particular event subcategory. Returns subcategory information including name, localized names, and parent category details. |
| `EVENTBRITE_GET_TICKET_CLASS` | Get Ticket Class | Tool to retrieve a specific ticket class by ID for an Eventbrite event. Use when you need to check ticket pricing, availability, sales status, or configuration details. |
| `EVENTBRITE_GET_TICKET_GROUP` | Get Ticket Group | Tool to retrieve a ticket group by its ID from Eventbrite. Use when you need to check ticket group details, configuration, or associated event ticket mappings. |
| `EVENTBRITE_GET_TRACKING_BEACON` | Get Tracking Beacon | Tool to retrieve a tracking beacon by ID from Eventbrite. Use when you need to inspect tracking pixel configuration, verify beacon setup, or check which events or organizations are associated with a tracking beacon. |
| `EVENTBRITE_GET_USER` | Get User by ID | Tool to retrieve information about a user by user ID. Use 'me' as the user_id to get the currently authenticated user's details. |
| `EVENTBRITE_GET_VENUE` | Get Venue by ID | Tool to retrieve detailed information for a specific venue by venue ID. Use when you need venue details like name, location coordinates, capacity, address, or age restrictions. |
| `EVENTBRITE_LIST_ACCESS_CODES` | List Access Codes | Tool to retrieve all access codes for an Eventbrite event. Use when you need to view all available access codes, check their availability, or manage event access restrictions. |
| `EVENTBRITE_LIST_CUSTOM_QUESTIONS` | List Custom Questions | Tool to retrieve custom questions configured for an Eventbrite event. Use when you need to see what additional information is collected from attendees during registration. |
| `EVENTBRITE_LIST_DEFAULT_QUESTIONS` | List Default Questions | Tool to retrieve default (canned) questions for an Eventbrite event by Event ID. Use when you need to understand what attendee information is collected, customize registration forms, or sync form data with external systems. |
| `EVENTBRITE_LIST_EVENT_ATTENDEES` | List Event Attendees | Tool to retrieve the list of attendees for an Eventbrite event. Use when you need to check attendee details, perform check-in operations, sync with CRM, or generate reports. Returns paginated results; use the continuation token for subsequent pages. |
| `EVENTBRITE_LIST_EVENT_ORDERS` | List Event Orders | Tool to list orders for a specific Eventbrite event. Use when you need to retrieve order information, check order status, or access buyer details. Returns paginated results; use the continuation token for subsequent pages. |
| `EVENTBRITE_LIST_INVENTORY_TIERS` | List Inventory Tiers | Tool to retrieve inventory tiers for an Eventbrite event. Use when you need to understand tiered seating, pricing levels, or capacity allocation for an event. |
| `EVENTBRITE_LIST_ORGANIZATION_EVENTS` | List Organization Events | Tool to list events owned by a specific Eventbrite organization. Use for event discovery (finding target events by name/title/date) prior to attendee/order retrieval. Supports filtering by status, time period, pagination, and field expansion. |
| `EVENTBRITE_LIST_ORGANIZATION_MEMBERS` | List Organization Members | Tool to list members of an Eventbrite organization by organization ID. Returns a paginated response with member information including user IDs and role summaries. |
| `EVENTBRITE_LIST_ORGANIZATION_ORDERS` | List Organization Orders | Tool to list orders placed for events owned by a specific Eventbrite organization. Use when you need to retrieve order information, track sales, or analyze attendee data across all organization events. Supports filtering by email, status, and change date. |
| `EVENTBRITE_LIST_ORGANIZATION_ROLES` | List Organization Roles | Tool to list roles within a specific Eventbrite organization by organization ID. Use when you need to discover available roles, permissions, or role management capabilities for an organization. Returns a paginated list of roles with their permissions and metadata. |
| `EVENTBRITE_LIST_ORGANIZATION_WEBHOOKS` | List Organization Webhooks | Tool to list all webhooks configured for a specific Eventbrite organization. Use when you need to view existing webhook configurations or verify webhook endpoints. |
| `EVENTBRITE_LIST_ORG_ATTENDEES` | List Organization Attendees | Tool to list attendees across all events owned by an Eventbrite organization. Use when you need to retrieve attendees for an entire organization rather than a specific event. Returns paginated results; use the continuation token for subsequent pages. |
| `EVENTBRITE_LIST_ORG_ORGANIZERS` | List Organization Organizers | Tool to list organizers belonging to a specific Eventbrite organization. Use when you need to discover organizers for an organization before creating or managing events. |
| `EVENTBRITE_LIST_ORG_VENUES` | List Organization Venues | Tool to list venues owned by a specific Eventbrite organization. Use when you need to discover available venues for event planning or venue management within an organization. |
| `EVENTBRITE_LIST_PRICING` | List Pricing | Tool to list available pricing fee rates for a specific currency and country. Use when you need to retrieve Eventbrite's pricing structure and fee information. |
| `EVENTBRITE_LIST_SERIES_EVENTS` | List Series Events | Tool to list all events in an Eventbrite event series by series ID. Use when you need to retrieve all occurrences of a recurring event. Returns paginated results with event details. |
| `EVENTBRITE_LIST_TICKET_CLASSES` | List Ticket Classes | Tool to list ticket classes for a specific Eventbrite event by event ID. Use when you need to retrieve available ticket types, pricing information, and sales status for an event. Returns a paginated response with all ticket classes associated with the event. |
| `EVENTBRITE_LIST_TICKET_CLASSES_FOR_SALE` | List Ticket Classes For Sale | Tool to list ticket classes available for sale for a specific Eventbrite event. Use this in the purchase flow to display available ticket options to users. |
| `EVENTBRITE_LIST_TICKET_GROUPS` | List Organization Ticket Groups | Tool to list ticket groups for a specific Eventbrite organization. Use when you need to retrieve groupings of ticket types for an organization. Returns a paginated response. |
| `EVENTBRITE_LIST_TRACKING_BEACONS` | List Tracking Beacons | Tool to list tracking beacons for an Eventbrite organization by organization ID. Use when you need to view tracking pixels and analytics beacons configured for the organization. |
| `EVENTBRITE_LIST_USER_ORDERS` | List User Orders | Tool to list orders for a specific Eventbrite user. Use when you need to retrieve user order information or check order history. Returns all orders for the user with pagination metadata. |
| `EVENTBRITE_LIST_USER_ORGANIZATIONS` | List User Organizations | Tool to list organizations the authenticated user belongs to. Use this early in workflows that need organization-scoped endpoints (e.g., list events by organization, list venues, orders, or attendees by organization). |
| `EVENTBRITE_LIST_USER_ORGS` | List Organizations by User ID | Tool to list organizations by user ID. Use when you need to fetch organizations for a specific user. Returns a paginated response with organization details. |
| `EVENTBRITE_LIST_VENUE_EVENTS` | List Venue Events | Tool to list all events at a specific Eventbrite venue by venue ID. Use when you need to discover events at a particular location or venue. |
| `EVENTBRITE_PUBLISH_EVENT` | Publish Event | Tool to publish an Eventbrite event. Use when you need to make an event live and publicly accessible. Event must have all required information including name, description, organizer, and at least one ticket before publishing. |
| `EVENTBRITE_RETRIEVE_MEDIA` | Retrieve Media | Tool to retrieve media information by ID. Use when you need to fetch details about a specific media asset including URLs, dimensions, and metadata. |
| `EVENTBRITE_SEARCH_DISCOUNTS_BY_ORGANIZATION` | Search Discounts by Organization | Tool to search and list discounts by organization ID. Use when you need to retrieve discount codes for a specific event within an organization. Returns paginated results with discount details. |
| `EVENTBRITE_SET_STRUCTURED_CONTENT` | Set Structured Content | Tool to set structured content for an Eventbrite event by version. Encapsulates both create and update operations. Use when you need to define the content layout for an event listing page with modules and widgets. |
| `EVENTBRITE_UNPUBLISH_EVENT` | Unpublish Event | Tool to unpublish an Eventbrite event. Use when you need to remove an event from public view while keeping it in the system. The event can be republished later if needed. |
| `EVENTBRITE_UPDATE_ACCESS_CODE` | Update Access Code | Tool to update an existing access code for an Eventbrite event. Use when you need to modify access code details like the code string, ticket IDs, quantity, or validity dates. |
| `EVENTBRITE_UPDATE_ASSORTMENT` | Update Organization Assortment | Tool to update the assortment plan for a specific organization. Use when you need to change the plan type associated with an organization. |
| `EVENTBRITE_UPDATE_CAPACITY_TIER` | Update Capacity Tier | Tool to update the capacity tier for an Eventbrite event. Use when you need to modify the total capacity or other capacity tier settings for an event. Supports partial updates and GA capacity hold inventory tiers. |
| `EVENTBRITE_UPDATE_DEFAULT_QUESTION` | Update Default Question | Tool to update a default (canned) question for an Eventbrite event. Use when you need to modify properties of default attendee information fields like making them required or optional. |
| `EVENTBRITE_UPDATE_DISCOUNT` | Update Discount | Tool to update a discount by its ID in Eventbrite. Use when you need to modify discount details such as code, amount, percentage, validity period, or ticket class associations. |
| `EVENTBRITE_UPDATE_DISPLAY_SETTINGS` | Update Display Settings | Tool to update display settings for a specific Eventbrite event. Use when you need to configure what information is visible on an event page. |
| `EVENTBRITE_UPDATE_EVENT` | Update Event | Tool to update an Eventbrite event by ID. Use when you need to modify event details like name, description, dates, capacity, or other settings. For series parent events, updates to certain fields will propagate to all occurrences in the series. |
| `EVENTBRITE_UPDATE_INVENTORY_TIER` | Update Inventory Tier | Tool to update an existing Inventory Tier by ID for an Event. Use when you need to modify inventory tier settings such as name, quantity, tier level, color, or capacity settings. Supports partial updates. |
| `EVENTBRITE_UPDATE_ORGANIZER` | Update Organizer | Tool to update an Eventbrite organizer by ID. Use when you need to modify organizer details like name, description, logo, or marketing preferences. |
| `EVENTBRITE_UPDATE_TICKET_BUYER_SETTINGS` | Update Ticket Buyer Settings | Tool to update ticket buyer settings for an Eventbrite event. Use when you need to configure post-purchase redirect URL, survey/registration form name, survey time limit, or specify who should fill out the survey (each attendee or just the ticket buyer). |
| `EVENTBRITE_UPDATE_TICKET_CLASS` | Update Ticket Class | Tool to update a ticket class for an Eventbrite event. Use when you need to modify ticket class details like name, description, cost, quantity, or free status. |
| `EVENTBRITE_UPDATE_TICKET_GROUP` | Update Ticket Group | Tool to update a ticket group by its ID in Eventbrite. Use when you need to modify ticket group details like name, status, or event ticket mappings. |
| `EVENTBRITE_UPDATE_VENUE` | Update Venue | Tool to update a venue's details by venue ID. Use when you need to modify venue information such as name, capacity, address, age restrictions, or location coordinates. |

## Supported Triggers

None listed.

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

The Eventbrite MCP server is an implementation of the Model Context Protocol that connects your AI agent to Eventbrite. It provides structured and secure access so your agent can perform Eventbrite 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

No description provided.

### 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

No description provided.
```python
pip install composio-langchain langchain-mcp-adapters langchain python-dotenv
```

```typescript
npm install @composio/langchain @langchain/core @langchain/openai @langchain/mcp-adapters dotenv
```

### 3. Set up environment variables

Create a .env file in your project root.
What's happening:
- COMPOSIO_API_KEY authenticates your requests to Composio's API
- COMPOSIO_USER_ID identifies the user for session management
- OPENAI_API_KEY enables access to OpenAI's language models
```bash
COMPOSIO_API_KEY=your_composio_api_key_here
COMPOSIO_USER_ID=your_composio_user_id_here
OPENAI_API_KEY=your_openai_api_key_here
```

### 4. Import dependencies

No description provided.
```python
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.agents import create_agent
from dotenv import load_dotenv
from composio import Composio
import asyncio
import os

load_dotenv()
```

```typescript
import { Composio } from '@composio/core';
import { LangchainProvider } from '@composio/langchain';
import { MultiServerMCPClient } from "@langchain/mcp-adapters";
import { createAgent } from "langchain";
import * as readline from 'readline';
import 'dotenv/config';

dotenv.config();
```

### 5. Initialize Composio client

What's happening:
- We're loading the COMPOSIO_API_KEY from environment variables and validating it exists
- Creating a Composio instance that will manage our connection to Eventbrite tools
- Validating that COMPOSIO_USER_ID is also set before proceeding
```python
async def main():
    composio = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))

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

```typescript
const composioApiKey = process.env.COMPOSIO_API_KEY;
const userId = process.env.COMPOSIO_USER_ID;

if (!composioApiKey) throw new Error('COMPOSIO_API_KEY is not set');
if (!userId) throw new Error('COMPOSIO_USER_ID is not set');

async function main() {
    const composio = new Composio({
        apiKey: composioApiKey as string,
        provider: new LangchainProvider()
    });
```

### 6. Create a Tool Router session

What's happening:
- We're creating a Tool Router session that gives your agent access to Eventbrite tools
- The create method takes the user ID and specifies which toolkits should be available
- The returned session.mcp.url is the MCP server URL that your agent will use
- This approach allows the agent to dynamically load and use Eventbrite tools as needed
```python
# Create Tool Router session for Eventbrite
session = composio.create(
    user_id=os.getenv("COMPOSIO_USER_ID"),
    toolkits=['eventbrite']
)

url = session.mcp.url
```

```typescript
const session = await composio.create(
    userId as string,
    {
        toolkits: ['eventbrite']
    }
);

const url = session.mcp.url;
```

### 7. Configure the agent with the MCP URL

No description provided.
```python
client = MultiServerMCPClient({
    "eventbrite-agent": {
        "transport": "streamable_http",
        "url": session.mcp.url,
        "headers": {
            "x-api-key": os.getenv("COMPOSIO_API_KEY")
        }
    }
})

tools = await client.get_tools()

agent = create_agent("gpt-5", tools)
```

```typescript
const client = new MultiServerMCPClient({
    "eventbrite-agent": {
        transport: "http",
        url: url,
        headers: {
            "x-api-key": process.env.COMPOSIO_API_KEY
        }
    }
});

const tools = await client.getTools();

const agent = createAgent({ model: "gpt-5", tools });
```

### 8. Set up interactive chat interface

No description provided.
```python
conversation_history = []

print("Chat started! Type 'exit' or 'quit' to end the conversation.\n")
print("Ask any Eventbrite related question or task to the agent.\n")

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

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

    if not user_input:
        continue

    conversation_history.append({"role": "user", "content": user_input})
    print("\nAgent is thinking...\n")

    response = await agent.ainvoke({"messages": conversation_history})
    conversation_history = response['messages']
    final_response = response['messages'][-1].content
    print(f"Agent: {final_response}\n")
```

```typescript
let conversationHistory: any[] = [];

console.log("Chat started! Type 'exit' or 'quit' to end the conversation.\n");
console.log("Ask any Eventbrite related question or task to the agent.\n");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    prompt: 'You: '
});

rl.prompt();

rl.on('line', async (userInput: string) => {
    const trimmedInput = userInput.trim();

    if (['exit', 'quit', 'bye'].includes(trimmedInput.toLowerCase())) {
        console.log("\nGoodbye!");
        rl.close();
        process.exit(0);
    }

    if (!trimmedInput) {
        rl.prompt();
        return;
    }

    conversationHistory.push({ role: "user", content: trimmedInput });
    console.log("\nAgent is thinking...\n");

    const response = await agent.invoke({ messages: conversationHistory });
    conversationHistory = response.messages;

    const finalResponse = response.messages[response.messages.length - 1]?.content;
    console.log(`Agent: ${finalResponse}\n`);
        
        rl.prompt();
    });

    rl.on('close', () => {
        console.log('\n👋 Session ended.');
        process.exit(0);
    });
```

### 9. Run the application

No description provided.
```python
if __name__ == "__main__":
    asyncio.run(main())
```

```typescript
main().catch((err) => {
    console.error('Fatal error:', err);
    process.exit(1);
});
```

## Complete Code

```python
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.agents import create_agent
from dotenv import load_dotenv
from composio import Composio
import asyncio
import os

load_dotenv()

async def main():
    composio = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))
    
    if not os.getenv("COMPOSIO_API_KEY"):
        raise ValueError("COMPOSIO_API_KEY is not set")
    if not os.getenv("COMPOSIO_USER_ID"):
        raise ValueError("COMPOSIO_USER_ID is not set")
    
    session = composio.create(
        user_id=os.getenv("COMPOSIO_USER_ID"),
        toolkits=['eventbrite']
    )

    url = session.mcp.url
    
    client = MultiServerMCPClient({
        "eventbrite-agent": {
            "transport": "streamable_http",
            "url": url,
            "headers": {
                "x-api-key": os.getenv("COMPOSIO_API_KEY")
            }
        }
    })
    
    tools = await client.get_tools()
  
    agent = create_agent("gpt-5", tools)
    
    conversation_history = []
    
    print("Chat started! Type 'exit' or 'quit' to end the conversation.\n")
    print("Ask any Eventbrite related question or task to the agent.\n")
    
    while True:
        user_input = input("You: ").strip()
        
        if user_input.lower() in ['exit', 'quit', 'bye']:
            print("\nGoodbye!")
            break
        
        if not user_input:
            continue
        
        conversation_history.append({"role": "user", "content": user_input})
        print("\nAgent is thinking...\n")
        
        response = await agent.ainvoke({"messages": conversation_history})
        conversation_history = response['messages']
        final_response = response['messages'][-1].content
        print(f"Agent: {final_response}\n")

if __name__ == "__main__":
    asyncio.run(main())
```

```typescript
import { Composio } from '@composio/core';
import { LangchainProvider } from '@composio/langchain';
import { MultiServerMCPClient } from "@langchain/mcp-adapters";  
import { createAgent } from "langchain";
import * as readline from 'readline';
import 'dotenv/config';

const composioApiKey = process.env.COMPOSIO_API_KEY;
const userId = process.env.COMPOSIO_USER_ID;

if (!composioApiKey) throw new Error('COMPOSIO_API_KEY is not set');
if (!userId) throw new Error('COMPOSIO_USER_ID is not set');

async function main() {
    const composio = new Composio({
        apiKey: composioApiKey as string,
        provider: new LangchainProvider()
    });

    const session = await composio.create(
        userId as string,
        {
            toolkits: ['eventbrite']
        }
    );

    const url = session.mcp.url;
    
    const client = new MultiServerMCPClient({
        "eventbrite-agent": {
            transport: "http",
            url: url,
            headers: {
                "x-api-key": process.env.COMPOSIO_API_KEY
            }
        }
    });
    
    const tools = await client.getTools();
  
    const agent = createAgent({ model: "gpt-5", tools });
    
    let conversationHistory: any[] = [];
    
    console.log("Chat started! Type 'exit' or 'quit' to end the conversation.\n");
    console.log("Ask any Eventbrite related question or task to the agent.\n");
    
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout,
        prompt: 'You: '
    });

    rl.prompt();

    rl.on('line', async (userInput: string) => {
        const trimmedInput = userInput.trim();
        
        if (['exit', 'quit', 'bye'].includes(trimmedInput.toLowerCase())) {
            console.log("\nGoodbye!");
            rl.close();
            process.exit(0);
        }
        
        if (!trimmedInput) {
            rl.prompt();
            return;
        }
        
        conversationHistory.push({ role: "user", content: trimmedInput });
        console.log("\nAgent is thinking...\n");
        
        const response = await agent.invoke({ messages: conversationHistory });
        conversationHistory = response.messages;
        
        const finalResponse = response.messages[response.messages.length - 1]?.content;
        console.log(`Agent: ${finalResponse}\n`);
        
        rl.prompt();
    });

    rl.on('close', () => {
        console.log('\nSession ended.');
        process.exit(0);
    });
}

main().catch((err) => {
    console.error('Fatal error:', err);
    process.exit(1);
});
```

## Conclusion

You've successfully built a LangChain agent that can interact with Eventbrite through Composio's Tool Router.
Key features of this implementation:
- Dynamic tool loading through Composio's Tool Router
- Conversation history maintenance for context-aware responses
- Async Python provides clean, efficient execution of agent workflows
You can extend this further by adding error handling, implementing specific business logic, or integrating additional Composio toolkits to create multi-app workflows.

## How to build Eventbrite MCP Agent with another framework

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

## Related Toolkits

- [Reddit](https://composio.dev/toolkits/reddit) - Reddit is a social news platform with thriving user-driven communities (subreddits). It's the go-to place for discussion, content sharing, and viral marketing.
- [Facebook](https://composio.dev/toolkits/facebook) - Facebook is a social media and advertising platform for businesses and creators. It helps you connect, share, and manage content across your public Facebook Pages.
- [Linkedin](https://composio.dev/toolkits/linkedin) - LinkedIn is a professional networking platform for connecting, sharing content, and engaging with business opportunities. It's the go-to place for building your professional brand and unlocking new career connections.
- [Active campaign](https://composio.dev/toolkits/active_campaign) - ActiveCampaign is a marketing automation and CRM platform for managing email campaigns, sales pipelines, and customer segmentation. It helps businesses engage customers and drive growth through smart automation and targeted outreach.
- [ActiveTrail](https://composio.dev/toolkits/active_trail) - ActiveTrail is a user-friendly email marketing and automation platform. It helps you reach subscribers and automate campaigns with ease.
- [Ahrefs](https://composio.dev/toolkits/ahrefs) - Ahrefs is an SEO and marketing platform for site audits, keyword research, and competitor insights. It helps you improve search rankings and drive organic traffic.
- [Amcards](https://composio.dev/toolkits/amcards) - AMCards lets you create and mail personalized greeting cards online. Build stronger customer relationships with easy, automated card campaigns.
- [Beamer](https://composio.dev/toolkits/beamer) - Beamer is a news and changelog platform for in-app announcements and feature updates. It helps companies boost user engagement by sharing news where users are most active.
- [Benchmark email](https://composio.dev/toolkits/benchmark_email) - Benchmark Email is a platform for creating, sending, and tracking email campaigns. It's built to help you engage audiences and analyze results—all in one place.
- [Bigmailer](https://composio.dev/toolkits/bigmailer) - BigMailer is an email marketing platform for managing multiple brands with white-labeling and automation. It helps teams streamline campaigns and simplify integration with Amazon SES.
- [Brandfetch](https://composio.dev/toolkits/brandfetch) - Brandfetch is an API that delivers company logos, colors, and visual branding assets. It helps marketers and developers keep brand visuals consistent everywhere.
- [Brevo](https://composio.dev/toolkits/brevo) - Brevo is an all-in-one email and SMS marketing platform for transactional messaging, automation, and CRM. It helps businesses engage customers and streamline communications through powerful campaign tools.
- [Campayn](https://composio.dev/toolkits/campayn) - Campayn is an email marketing platform for creating, sending, and managing campaigns. It helps businesses engage contacts and grow audiences with easy-to-use tools.
- [Cardly](https://composio.dev/toolkits/cardly) - Cardly is a platform for creating and sending personalized direct mail to customers. It helps businesses break through the digital clutter by getting real engagement via physical mailboxes.
- [ClickSend](https://composio.dev/toolkits/clicksend) - ClickSend is a cloud-based SMS and email marketing platform for businesses. It streamlines communication by enabling quick message delivery and contact management.
- [Crustdata](https://composio.dev/toolkits/crustdata) - CrustData is an AI-powered data intelligence platform for real-time company and people data. It helps B2B sales teams, AI SDRs, and investors react to live business signals.
- [Curated](https://composio.dev/toolkits/curated) - Curated is a platform for collecting, curating, and publishing newsletters. It streamlines content aggregation and distribution for creators and teams.
- [Customerio](https://composio.dev/toolkits/customerio) - Customer.io is a customer engagement platform for targeted messaging across email, SMS, and push. Easily automate, segment, and track communications with your audience.
- [Cutt ly](https://composio.dev/toolkits/cutt_ly) - Cutt.ly is a URL shortening service for managing and analyzing links. Streamline your workflows with quick, trackable, and branded short URLs.
- [Demio](https://composio.dev/toolkits/demio) - Demio is webinar software built for marketers, offering both live and automated sessions with interactive features. It helps teams engage audiences and optimize lead generation through detailed analytics.

## Frequently Asked Questions

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

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

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

Yes, you can. LangChain 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 Eventbrite tools.

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

Yes, absolutely. You can configure which Eventbrite 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 Eventbrite data and credentials are handled as safely as possible.

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