Skip to main content
Glama

@prmichaelsen/eventbrite-mcp

An MCP (Model Context Protocol) server that provides comprehensive event management and ticketing capabilities through the Eventbrite API v3.

Note: Not every tool in this repository has been tested. Ticket creation workflow is supported. If other tools fail, please create an issue for that tool.

Features

  • Event Management: Create, update, publish, delete, cancel, and copy events

  • Ticket Management: Create, update, and manage ticket classes

  • Order Management: Retrieve and list orders

  • Attendee Management: Get and list attendee information

  • Organization Support: Manage organizations, venues, and members

  • Discount Management: Create and manage discount codes

  • Media & Content: Upload media and manage structured content

  • Webhooks: Create and manage webhooks

  • Categories & Formats: Access event categories and formats

  • Inventory Management: Manage inventory tiers

  • And more: 42 tools total - see ./src/tools for complete list

Related MCP server: Eventbrite MCP Server

Installation

npx @prmichaelsen/eventbrite-mcp

Configuration

Environment Variables

Create a .env file in your project root or set the following environment variables:

# Required
EVENTBRITE_API_TOKEN=your_eventbrite_api_token

# Optional
EVENTBRITE_API_URL=https://www.eventbriteapi.com/v3  # Default API URL
EVENTBRITE_TIMEOUT=30000                              # Request timeout in ms
EVENTBRITE_RETRIES=3                                  # Number of retry attempts

Getting an Eventbrite API Token

  1. Go to Eventbrite API Keys Page

  2. Sign in to your Eventbrite account

  3. Copy your Private Token

  4. Add it to your MCP client configuration (see below)

Note: You must create your own Eventbrite OAuth application if you need to access other users' data. For personal use, a private token is sufficient.

MCP Client Configuration

Add to your MCP client configuration (e.g., Claude Desktop, Kilo Code):

{
  "mcpServers": {
    "eventbrite": {
      "command": "npx",
      "args": ["-y", "@prmichaelsen/eventbrite-mcp"],
      "env": {
        "EVENTBRITE_API_TOKEN": "your_eventbrite_api_token"
      }
    }
  }
}

Tool Examples

create_event

Create a new event on Eventbrite.

Parameters:

  • name (required): Event name

  • startTime (required): Start time in ISO 8601 format

  • endTime (required): End time in ISO 8601 format

  • timezone (required): Timezone (e.g., "America/New_York")

  • currency (required): Currency code (e.g., "USD")

  • description (optional): Event description (supports HTML)

  • online (optional): Whether this is an online event

  • listed (optional): Whether to list publicly

  • capacity (optional): Maximum capacity

  • organizationId (optional): Organization ID

Example:

{
  "name": "Tech Conference 2024",
  "description": "Annual technology conference",
  "startTime": "2024-12-31T09:00:00",
  "endTime": "2024-12-31T17:00:00",
  "timezone": "America/New_York",
  "currency": "USD",
  "online": false,
  "listed": true,
  "capacity": 500
}

update_event

Update an existing event by event ID. Supports partial updates.

Parameters:

  • event_id (required): Event ID

  • name (optional): Event name object with html property

  • summary (optional): Event summary

  • start (optional): Start datetime with timezone and utc

  • end (optional): End datetime with timezone and utc

  • currency (optional): Currency code

  • online_event (optional): Is online only

  • listed (optional): Publicly searchable

  • Plus 20+ additional optional fields

Example:

{
  "event_id": "123456789",
  "name": { "html": "Updated Conference Name" },
  "summary": "New event description",
  "listed": true
}

create_ticket_class

Create a ticket class for an event.

Parameters:

  • eventId (required): The event ID

  • name (required): Ticket class name

  • quantityTotal (required): Total tickets available

  • free (optional): Whether the ticket is free

  • cost (optional): Ticket cost in minor units (e.g., cents)

  • currency (optional): Currency code

  • description (optional): Ticket description

  • salesStart (optional): Sales start time (ISO 8601)

  • salesEnd (optional): Sales end time (ISO 8601)

Example:

{
  "eventId": "123456789",
  "name": "General Admission",
  "quantityTotal": 100,
  "free": false,
  "cost": 5000,
  "currency": "USD",
  "description": "Standard entry ticket"
}

publish_event

Publish an event to make it live and available for ticket sales.

Parameters:

  • event_id (required): Event ID

Example:

{
  "event_id": "123456789"
}

All Available Tools

For a complete list of all 42 supported tools, please see ./src/tools directory.

Tool Categories:

  • Events (9 tools)

  • Tickets (4 tools)

  • Orders (2 tools)

  • Attendees (2 tools)

  • Organizations (3 tools)

  • Venues (4 tools)

  • Discounts (5 tools)

  • Categories & Formats (6 tools)

  • Webhooks (3 tools)

  • Media & Content (4 tools)

  • Inventory Tiers (5 tools)

  • Display Settings (2 tools)

  • Questions (3 tools)

  • User (1 tool)

  • API Documentation (1 tool)

Using as a Library

Option 1: MCP-Auth Integration (Multi-Tenant)

For multi-tenant applications using @prmichaelsen/mcp-auth:

import { createEventbriteServer } from '@prmichaelsen/eventbrite-mcp/factory';
import { wrapServer } from '@prmichaelsen/mcp-auth';

const wrappedServer = wrapServer({
  serverFactory: (accessToken: string, userId: string) => {
    return createEventbriteServer(accessToken, userId);
  },
  authProvider: new FirebaseAuthProvider({ projectId: 'your-project' }),
  tokenResolver: new PlatformTokenResolver({
    platformUrl: 'https://your-platform.com',
    serviceToken: process.env.PLATFORM_SERVICE_TOKEN
  }),
  resourceType: 'eventbrite',
  transport: { type: 'sse', port: 8080, basePath: '/mcp' }
});

await wrappedServer.start();

Option 2: Individual Tool Usage (OpenAI Agents)

Import and use individual tools in your applications:

import { CreateEventTool, EventbriteClient, EventbriteConfig } from '@prmichaelsen/eventbrite-mcp';

// Configure the Eventbrite client
const config: EventbriteConfig = {
  apiToken: process.env.EVENTBRITE_API_TOKEN!, // Required
  apiUrl: 'https://www.eventbriteapi.com/v3',
  timeout: 30000,
  retries: 3
};

const client = new EventbriteClient(config);
const createEventTool = new CreateEventTool(client);

// Use the tool
const result = await createEventTool.execute({
  name: "My Event",
  startTime: "2024-12-31T09:00:00",
  endTime: "2024-12-31T17:00:00",
  timezone: "America/New_York",
  currency: "USD"
});

Environment Variables Required:

  • EVENTBRITE_API_TOKEN: Your Eventbrite API token (required)

All 57 tool classes and the createServer factory function are exported. See src/index.ts for the complete list of exports.

Development

Setup

# Clone the repository
git clone https://github.com/prmichaelsen/eventbrite-mcp.git
cd eventbrite-mcp

# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode with watch
npm run watch

Project Structure

eventbrite-mcp/
├── src/
│   ├── server.ts              # Main MCP server
│   ├── eventbrite/
│   │   └── client.ts          # Eventbrite API client
│   ├── tools/                 # MCP tool implementations (42 tools)
│   ├── types/                 # TypeScript type definitions
│   └── utils/                 # Utility functions
├── agent/                     # Development documentation
├── package.json
├── tsconfig.json
└── README.md

Testing

npm test

Building

npm run build

License

MIT

Author

Patrick Michaelsen

Available Tools

81 tools
calculate_item_pricingA

Calculate hypothetical fees for ticket pricing.

ENDPOINT: POST /pricing/calculate_price_for_item/

Calculates Eventbrite fees for given price based on scope (organization, event, ticket_class, assortment_plan).

PARAMETERS:

  • base_price (string, required): Format "CURRENCY,amount_in_cents"

  • country (string, required): ISO 3166 2-letter code

  • scope (object, required): type (organization/event/ticket_class/assortment_plan) and identifier

  • absorb_fees (boolean): Include fees in base price

  • absorb_taxes (boolean): Include taxes in base price

  • payment_type: eventbrite, authnet, paypal

  • channel: web, atd

ERRORS (400):

  • PRICING_MODEL_NOT_SUPPORTED, INVALID_CURRENCY_COUNTRY_COMBINATION, BASE_PRICE_TOO_LOW_TO_ABSORB, ARGUMENTS_ERROR

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesScope object with type and identifier (required)
channelNoSales channel
countryYesCountry code (required)
base_priceYesBase price (required, e.g., "USD,1000")
absorb_feesNoAbsorb fees
absorb_taxesNoAbsorb taxes
payment_typeNoPayment type

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does so fairly well: it discloses the endpoint, the auth requirement (Bearer PERSONAL_OAUTH_TOKEN), and four specific 400 error codes. It does not explicitly state that nothing is persisted, though 'hypothetical' strongly implies it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and then uses labeled sections (ENDPOINT, PARAMETERS, ERRORS, AUTHENTICATION) that are easy to scan. Slightly verbose in restating parameters, but every block carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description stops at 'calculate hypothetical fees' without describing the returned fee breakdown; the errors and auth sections partially compensate. Given the tool's modest complexity and fully documented inputs, this is nearly complete but leaves the response shape implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% but the schema descriptions are terse ('Sales channel', 'Payment type'), so the description adds real semantic value by enumerating allowed values (payment_type: eventbrite/authnet/paypal; channel: web/atd; scope types) and the base_price 'CURRENCY,amount_in_cents' format. It stops short of documenting the scope identifier format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Calculate hypothetical fees for ticket pricing') and further narrows it to Eventbrite fees based on scope, which cleanly separates it from data-retrieval siblings like list_fee_rates. The word 'hypothetical' also signals this is a non-mutating estimate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'hypothetical fees' and the enumerated scope types (organization/event/ticket_class/assortment_plan), so an agent can infer this is a pre-pricing estimate. However, it never explicitly says when to use this versus list_fee_rates or other pricing-adjacent tools, nor any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_eventA

Cancel an Event.

ENDPOINT: POST /events/{event_id}/cancel/

Returns boolean indicating success or failure.

CANCEL REQUIREMENTS:

  • Event must not have pending or completed orders

SERIES PARENT EVENTS:

  • All occurrences must be in valid state to cancel

  • Canceling parent cancels all occurrences

RESPONSE:

  • canceled (boolean): true if successfully canceled

POSSIBLE ERRORS (400):

  • ALREADY_CANCELED: Event already canceled

  • CANNOT_CANCEL: Event has pending/completed ticket sales that must be refunded first, or series parent has occurrences that cannot be canceled

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the series-parent side effect (canceling a parent cancels all occurrences), the order-state precondition, the 400 error codes, the boolean return, and the required Bearer OAuth token. The one notable gap is whether a cancellation is reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (REQUIREMENTS, SERIES PARENT EVENTS, RESPONSE, ERRORS, AUTHENTICATION) make it skimmable and the critical 'Cancel an Event' purpose is front-loaded. Minor redundancy: 'Returns boolean indicating success or failure' is restated by the RESPONSE block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter mutation with no output schema and no annotations, the description covers preconditions, cascading series behavior, error modes, and auth. Only the reversibility/idempotency question remains unanswered, which is a modest gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single event_id parameter, so the schema already documents it fully; the description only conveys it indirectly via the endpoint path. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Cancel an Event') and pins the API endpoint, which is unambiguous on its own. However, it does not distinguish itself from the sibling delete_event, leaving an agent to infer whether cancel and delete differ.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'CANCEL REQUIREMENTS' and 'POSSIBLE ERRORS' sections imply the preconditions for use (no pending/completed orders), which is useful context. But there is no explicit statement of when to choose cancel_event over delete_event or unpublish_event, so routing guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_eventA

Copy an Event, creating duplicate with new Event ID.

ENDPOINT: POST /events/{event_id}/copy/

Creates new Event based on existing Event. Returns Event object for newly created Event.

COPIED ELEMENTS:

  • Event payment options

  • Payout method

  • Refund policy

  • Tax settings

POSSIBLE ERRORS (400):

  • INSUFFICIENT_PACKAGE: Need to upgrade package. Go to /users/{user_id}/assortment/

  • INVALID_END_DATE: End date must be 1 minute to 365 days after start time

  • INVALID_START_DATE: Start date must be between now and 10 years from now

  • UNABLE_TO_COPY_EVENT: Currently unable to copy. Recovery not possible

  • UNSUPPORTED_TIMEZONE: Timezone not supported

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd datetime (optional)
nameNoName for copied event (optional)
startNoStart datetime (optional)
event_idYesEvent ID to copy (required)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it enumerates the copied elements (payment options, payout method, refund policy, tax settings), lists concrete 400 error codes with meanings, notes auth via Bearer token, and states the return is the new Event object. It omits what is NOT copied (attendees, orders, ticket sales) and the initial state of the copy, which for a duplication tool is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded first sentence, then clearly labeled sections (ENDPOINT, COPIED ELEMENTS, ERRORS, AUTHENTICATION). Slightly verbose with the raw endpoint path, but every block is scannable and useful; nothing is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating tool with no annotations and no output schema, the description covers origin, effect, error modes, auth, and return shape. It is only short of describing what is left behind by the copy, which would help an agent predict side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. However the error section adds real constraint semantics for the optional start/end parameters (end must be 1 minute to 365 days after start; start between now and 10 years out) that the schema does not express, so it earns above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Copy an Event, creating duplicate with new Event ID') and distinguishes itself from the many event-mutating siblings (create_event, update_event, delete_event). The first sentence alone tells an agent exactly what the tool produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the semantics of 'copy' versus 'create', but the description never states when to prefer this over create_event or update_event, nor what preconditions apply to the source event (e.g. must be unpublished). Adequate but inferential.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_custom_questionB

Create a custom question for an Event.

ENDPOINT: POST /events/{event_id}/questions/

Returns result as question array.

ERRORS (400):

  • INSUFFICIENT_PACKAGE: Need to upgrade package

ERRORS (403):

  • NOT_AUTHORIZED: No permission

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
questionYesQuestion object with label, type, required fields

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the HTTP endpoint, required bearer auth, a return shape (question array), and 400/403 error meanings, but it does not describe mutation side effects, reversibility, or permission/package requirements beyond the listed errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and then structured into endpoint, errors, and auth blocks. The extra sections are relevant, though the auth/error listing makes it longer than a minimal purpose statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create tool with a nested question object, no output schema, and no annotations, the description covers endpoint, auth, errors, and return type. However, it omits the expected shape of the nested question object and any package/permission details beyond the raw error codes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents event_id and the question object. The description repeats event_id in the endpoint path and adds no syntax or structural detail about the question object beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Create a custom question for an Event." This distinguishes it from default-question siblings at a high level, but it does not explicitly name or contrast with create_default_question or explain the custom-vs-default selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives endpoint, errors, and authentication, but no when-to-use guidance, prerequisites, or alternatives. An agent must infer that this is for event-specific custom questions rather than default questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_default_questionB

Create a default Question for an Event.

ENDPOINT: POST /events/{event_id}/canned_questions/

ERRORS (400):

  • INSUFFICIENT_PACKAGE: Need to upgrade package

  • NOT_ALLOWED

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
questionYesQuestion object (required)

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full burden. It does disclose authentication requirements (Bearer token) and two specific error codes (INSUFFICIENT_PACKAGE, NOT_ALLOWED), which adds useful operational context. However, it doesn't disclose mutation side effects, reversibility, or idempotency behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence is good, but the ENDPOINT and ERRORS blocks are somewhat verbose and mix API reference details with tool description. The purpose statement is minimal and doesn't elaborate further.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with a nested object parameter and no annotations or output schema, the description is adequate but incomplete: auth and errors are covered, but side effects and the nested question schema are not. The ENDPOINT line helps locate it in the API surface.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both params (event_id, question) are documented in the schema. The description adds the endpoint path 'POST /events/{event_id}/canned_questions/' which clarifies the event_id usage, but provides no details on the nested question object structure. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: 'Create a default Question for an Event.' Distinguishes from siblings like create_custom_question and update_default_question by naming the 'default' question type. However, it does not explain the distinction between a 'default' vs 'custom' question to help the agent choose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this vs create_custom_question or list_default_questions. The 'ERRORS' section lists failure modes but doesn't tell the agent when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_discountA

Create a new Discount.

ENDPOINT: POST /organizations/{organization_id}/discounts/

DISCOUNT TYPES:

  • Public: Displays publicly (single event, no apostrophes/special chars except -_()/)

  • Coded: Secret code required (no spaces/apostrophes/special chars except -_()/)

  • Access Code: Secret code for hidden tickets (no spaces/apostrophes/special chars except -_()/)

  • Hold: Unlock seats on hold

DISCOUNT SCOPE:

  • event_id + ticket_class_ids: Specific tickets in single event

  • event_id only: All tickets in single event

  • ticket_group_id: Ticket Group discount

  • Neither: All tickets for all organization events (including future)

FIELDS:

  • code (string, required): Name (public) or code (coded/access)

  • type (string, required): access, coded, public, hold

  • amount_off (decimal): Fixed amount 0.01-99999.99 (event currency, 2 decimals)

  • percent_off (decimal): Percentage 1.00-100.00 (2 decimals)

  • quantity_available (integer): Usage limit (0 = unlimited)

  • start_date (local datetime): Usable from (empty = immediately)

  • start_date_relative (integer): Seconds before event start

  • end_date (datetime): Usable until (empty = event end_date)

  • end_date_relative (integer): Seconds before event start

  • ticket_class_ids (list): Ticket Class IDs (empty = all)

  • event_id (string): Single Event ID

  • ticket_group_id (string): Ticket Group ID

  • hold_ids (list): Hold IDs to unlock

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesDiscount code/name (required)
typeYesType: access, coded, public, hold (required)
end_dateNoEnd date (ISO 8601)
event_idNoEvent ID
hold_idsNoHold IDs
amount_offNoFixed amount off (decimal)
start_dateNoStart date (ISO 8601)
percent_offNoPercentage off (decimal)
organization_idYesOrganization ID (required)
ticket_group_idNoTicket Group ID
ticket_class_idsNoTicket Class IDs
quantity_availableNoUsage limit (0=unlimited)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description carries the full burden and largely succeeds: it discloses the Bearer PERSONAL_OAUTH_TOKEN requirement, character restrictions per code type, numeric ranges, and default semantics (empty date = immediately, empty end_date = event end_date, 0 = unlimited). It does not describe the creation side effects or response payload, which is a modest gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then cleanly partitioned under ENDPOINT, DISCOUNT TYPES, DISCOUNT SCOPE, FIELDS and AUTHENTICATION headings. It is long, but the length is justified by a 12-parameter mutation; some field text restates schema descriptions with little added value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-param mutation with no annotations and no output schema, the description supplies the endpoint, auth, type/scope combinatorics and field defaults that an agent needs to call it correctly. The main omission is any statement of what the call returns (e.g., created discount ID) and confirmation of non-reversible creation, which would complete the picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100% (baseline 3), the description adds substantial meaning the schema lacks: numeric ranges for amount_off (0.01-99999.99) and percent_off (1.00-100.00), the 2-decimal/event-currency constraint, the '0 = unlimited' and 'empty = all/immediately' defaults, and the interaction rules that decide scope from which of event_id/ticket_class_ids/ticket_group_id are supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a new Discount') and immediately disambiguates from siblings get_discount/update_discount/list_discounts/delete_discount by detailing the discount taxonomy (public/coded/access/hold) and scope rules. An agent can tell exactly what this tool produces without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The DISCOUNT TYPES and DISCOUNT SCOPE sections effectively tell the agent how to combine event_id, ticket_class_ids and ticket_group_id for each intent, and the AUTHENTICATION block names the required token. It stops short of explicit 'use this instead of X' routing, but the deployment guidance is rich.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_eventA

Create a new Event.

ENDPOINT: POST /organizations/{organization_id}/events/

By default, this API creates an event that occurs once. In order to create a series of events with multiple occurrences (also known as a "repeating event" or "recurring event"), you must first create one event to serve as the "series parent", then add occurrences to the series parent. Creating the series parent is done by calling the Create Event API with the is_series attribute set to True. Occurrences can then be added to the newly created series parent, using the Event Schedule API.

REQUIRED PARAMETERS:

  • organization_id (string): ID of the Organization that owns the Event

  • name (htmltext, required): Event name. Value cannot be empty nor whitespace

  • start (datetime-tz-utc, required): Start date/time of the event with timezone and UTC

  • end (datetime-tz-utc, required): End date/time of the event with timezone and UTC

  • currency (string, required): The ISO 4217 currency code for this event (e.g., USD, EUR, GBP)

OPTIONAL PARAMETERS:

  • summary (string, optional): Event summary. This is a plaintext field and will have any supplied HTML removed from it. Maximum of 140 characters, mutually exclusive with description

  • description (htmltext, optional, DEPRECATED): Event description (contents of the event page). May be long and have significant formatting. Please refer to the event description tutorial to learn about the new way to create an event description

  • hide_start_date (boolean, optional): Whether the start date should be hidden

  • hide_end_date (boolean, optional): Whether the end date should be hidden

  • online_event (boolean, optional): If this event doesn't have a venue and is only held online (default: false)

  • organizer_id (string): ID of the event organizer

  • logo_id (string, optional): Image ID of the event logo

  • venue_id (string, optional): Event venue ID

  • format_id (string, optional): Event format

  • category_id (string, optional): Event category

  • subcategory_id (string, optional): Event subcategory (US only)

  • listed (boolean, optional): Is this event publicly searchable on Eventbrite? (default: true)

  • shareable (boolean, optional): Can this event show social sharing buttons? (default: false)

  • invite_only (boolean): Can only people with invites see the event page?

  • show_remaining (boolean, optional): If the remaining number of tickets is publicly visible on the event page

  • password (string): Password needed to see the event in unlisted mode

  • capacity (number, optional): Set specific capacity (if omitted, sums ticket capacities)

  • is_reserved_seating (boolean, optional): If the event is reserved seating

  • is_series (boolean, optional): If the event is part of a series. Specifying this attribute as True during event creation will always designate the event as a series parent, never as a series occurrence. Series occurrences must be created through the schedules API and cannot be created using the events API

  • show_pick_a_seat (boolean, optional): For reserved seating event, if attendees can pick their seats

  • show_seatmap_thumbnail (boolean, optional): For reserved seating event, if venue map thumbnail visible on the event page

  • show_colors_in_seatmap_thumbnail (boolean, optional): For reserved seating event, if venue map thumbnail should have colors on the event page

  • source (string, optional): Source of the event (defaults to API)

  • locale (Locale, optional): Indicates event language on Event's listing page (default: en_US)

SUPPORTED LOCALES: de_AT, de_CH, de_DE, en_AU, en_CA, en_DK, en_FI, en_GB, en_HK, en_IE, en_IN, en_NZ, en_SE, en_US, es_AR, es_CL, es_CO, es_ES, fr_BE, fr_CA, fr_CH, fr_FR, hi_IN, it_IT, nl_BE, nl_NL, pt_BR, pt_PT

ERROR RESPONSES:

  • 400 DATE_CONFLICT: Start date cannot be after end date

  • 400 DIFFERENT_TIMEZONES: You have passed different timezones for the start and end times; they must be the same

  • 400 INVALID_DATE: Start and end dates cannot be in the past

  • 400 INVENTORY_TYPE_CONFLICT: Only a single inventory type may be set at once

  • 400 INVITE_CONFLICT: You have set both listed and invite_only; these two options are mutually exclusive, and you are only allowed to set one

  • 400 NO_DEFAULT_ORGANIZER: The event does not have an organizer ID, and no default organizer could be found for the user

  • 400 NO_PACKAGE_SELECTED: You need to select a package to create an event. Go to /organizations/{organization_id}/assortment/ to select a package

  • 400 NO_VENUE: You have attempted to create an event without a venue

  • 400 PASSWORD_CONFLICT: You have set both listed and password; these two options are mutually exclusive, and you are only allowed to set one

  • 400 SHARE_INVITE_CONFLICT: You have set both shareable and invite_only; these two options are mutually exclusive, and you are only allowed to set one

  • 400 UNSUPPORTED_TIMEZONE: The time zone for the start and end times does not exist

  • 400 VENUE_AND_ONLINE: You have set both online_event and venue_id; an event can either have a venue or be online, but not both at the same time

  • 400 SUMMARY_DESCRIPTION_CONFLICT: You have set values for both summary and description; these two options are mutually exclusive, and you may only set one

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEvent name (required). Value cannot be empty nor whitespace
listedNoIs this event publicly searchable on Eventbrite? (optional, default: true). Mutually exclusive with invite_only and password
localeNoIndicates event language on Event's listing page (optional, default: en_US). Supported: de_AT, de_CH, de_DE, en_AU, en_CA, en_DK, en_FI, en_GB, en_HK, en_IE, en_IN, en_NZ, en_SE, en_US, es_AR, es_CL, es_CO, es_ES, fr_BE, fr_CA, fr_CH, fr_FR, hi_IN, it_IT, nl_BE, nl_NL, pt_BR, pt_PT
logoIdNoImage ID of the event logo (optional)
onlineNoIf this event doesn't have a venue and is only held online (optional, default: false). Cannot be used with venue_id
sourceNoSource of the event (optional, defaults to API)
endTimeYesEvent end time in ISO 8601 UTC format (required). Example: 2024-12-31T23:00:00Z
summaryNoEvent summary (optional). Plaintext field, HTML will be removed. Maximum of 140 characters. Mutually exclusive with description
venueIdNoEvent venue ID (optional). Cannot be used with online_event
capacityNoSet specific capacity (optional). If omitted, sums ticket capacities
currencyYesISO 4217 currency code (required). Examples: USD, EUR, GBP, CAD, AUD
formatIdNoEvent format ID (optional)
isSeriesNoIf the event is part of a series (optional). Specifying this as True during event creation will always designate the event as a series parent, never as a series occurrence. Series occurrences must be created through the schedules API
passwordNoPassword needed to see the event in unlisted mode (optional). Mutually exclusive with listed
timezoneYesTimezone for the event (required). Olson format. Example: America/New_York, America/Los_Angeles, UTC
shareableNoCan this event show social sharing buttons? (optional, default: false). Mutually exclusive with invite_only
startTimeYesEvent start time in ISO 8601 UTC format (required). Example: 2024-12-31T20:00:00Z
categoryIdNoEvent category ID (optional)
inviteOnlyNoCan only people with invites see the event page? (optional). Mutually exclusive with listed and shareable
descriptionNo(DEPRECATED) Event description (supports HTML). Use summary instead. Mutually exclusive with summary. Please refer to the event description tutorial to learn about the new way to create an event description
hideEndDateNoWhether the end date should be hidden (optional)
organizerIdNoID of the event organizer (optional)
hideStartDateNoWhether the start date should be hidden (optional)
showPickASeatNoFor reserved seating event, if attendees can pick their seats (optional)
showRemainingNoIf the remaining number of tickets is publicly visible on the event page (optional)
subcategoryIdNoEvent subcategory ID (optional, US only)
organizationIdYesOrganization ID to create the event under (required)
isReservedSeatingNoIf the event is reserved seating (optional)
showSeatmapThumbnailNoFor reserved seating event, if venue map thumbnail visible on the event page (optional)
showColorsInSeatmapThumbnailNoFor reserved seating event, if venue map thumbnail should have colors on the event page (optional)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden and does so well: it lists 13 specific 400 error codes documenting mutual-exclusion rules (listed/invite_only, listed/password, summary/description, online_event/venue_id), timezone consistency, no-venue and no-organizer failures, and states the required Bearer auth header.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then endpoint, then series mechanics, then parameters grouped by required/optional, then errors. The parameter enumeration partially duplicates the 100%-covered schema, but the error catalog and series explanation earn their space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 30-parameter mutation tool with no annotations and no output schema, the definition covers auth, defaults, deprecations, mutually exclusive combinations, supported locales, and failure modes. An agent has everything needed to construct a valid call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds real value by grouping required vs. optional, flagging description as DEPRECATED, noting summary's 140-character limit and HTML stripping, and surfacing interoperability constraints between parameters rather than restating types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new Event') with the endpoint, and goes further to explain the series-parent vs. occurrence distinction. That distinction reliably separates it from siblings like create_event_schedule and update_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes recurring-event work: create the event with is_series=True as the series parent, then add occurrences via the Event Schedule API. It does not address when to prefer copy_event or how this differs from other creation paths, but the guidance for the complex case is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_event_scheduleA

Create an event schedule for series parent.

ENDPOINT: POST /events/{event_id}/schedules/

Adds occurrences to series parent according to pattern. Requires series parent event.

PARAMETERS:

  • occurrence_duration: Duration in seconds

  • recurrence_rule: iCalendar RFC format with DTSTART

ERRORS (400):

  • MISSING, INVALID, DTSTART_MISSING, RECURRENCE_RULE_DATES_NOT_IN_UTC, DTSTART_OUTSIDE_PERMITTED_RANGE, LAST_OCCURRENCE_START_EXCEEDS_LIMIT, EXCEEDS_MAX_OCCURRENCES

ERRORS (403):

  • NOT_AUTHORIZED

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesSeries parent Event ID (required)
recurrence_ruleYesiCalendar recurrence rule (required)
occurrence_durationYesDuration in seconds (required)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantial work: it discloses the auth requirement (Bearer PERSONAL_OAUTH_TOKEN) and enumerates specific 400/403 failure modes (DTSTART_MISSING, RECURRENCE_RULE_DATES_NOT_IN_UTC, EXCEEDS_MAX_OCCURRENCES, NOT_AUTHORIZED). It omits idempotency, side effects on the parent, and rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the one-line purpose and organizes the rest into labeled sections (endpoint, parameters, errors, auth), which is easy to scan. The PARAMETERS section largely duplicates the 100%-covered schema, so it earns its place only partially.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers endpoint, auth, prerequisites, and error conditions, which is close to what an agent needs. It does not describe the return value or the effect on the parent event's existing schedule.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters, making 3 the baseline. The description restates occurrence_duration and recurrence_rule and adds only 'with DTSTART' as marginal extra meaning over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create an event schedule for series parent') and clarifies it adds occurrences according to a recurrence pattern. Clearly distinguishable from sibling event tools, though it doesn't explicitly name the closest alternative (e.g. update_event).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a key prerequisite ('Requires series parent event') and scopes the operation to series parents, which implies when it applies. However, it gives no explicit when-to-use vs when-not guidance or comparison to sibling tools like update_event or create_event.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_inventory_tierA

Create a new Inventory Tier for an Event.

ENDPOINT: POST /events/{event_id}/inventory_tiers/

Max 100 tiers per event.

ERRORS (400):

  • EXCEED_MAXIMUM_INVENTORY_TIERS: Cannot create more than 100 tiers

  • EXCEED_MAXIMUM_TICKET_RULE_TICKETS: Ticket rule tickets cannot exceed 1000

  • ARGUMENTS_ERROR

ERRORS (403):

  • NOT_AUTHORIZED

ERRORS (404):

  • NOT_FOUND: Event doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoTier name
event_idYesEvent ID (required)
capacity_totalNoTotal capacity
quantity_totalNoTotal quantity

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does it well: it discloses the max-of-100 constraint, the 1000 ticket-rule limit, the exact 400/403/404 error codes, and the required Bearer auth scheme. It falls short of describing the response shape or how capacity_total and quantity_total relate, but the operational constraints are unusually thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded, followed by cleanly labeled ENDPOINT, ERRORS, and AUTHENTICATION blocks. The verbatim error dump is slightly heavy, but each block maps to information an agent actually needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no annotations and no output schema, the description supplies auth, endpoint, quota limits, and failure modes. The main gap is the absence of any indication of what a successful response contains, which the agent has to discover empirically.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters, and the description adds essentially no additional parameter-level meaning. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new Inventory Tier for an Event') and pins the endpoint, so an agent knows exactly what operation this performs. It does not explicitly contrast itself with the sibling create_multiple_inventory_tiers, but the singular phrasing makes the distinction inferable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to prefer this tool over its obvious alternative, create_multiple_inventory_tiers, or over update_inventory_tier. The 100-tier cap gives a hint about batching, but the agent must infer the single-vs-bulk routing decision on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_multiple_inventory_tiersA

Create Multiple Inventory Tiers (Bulk)

Endpoint: POST /events/{event_id}/inventory_tiers/

Creates multiple inventory tiers in a single request for efficient bulk operations.

Authentication: Requires a valid Eventbrite API token with event management permissions.

Use Cases:

  • Set up multiple inventory tiers at once during event creation

  • Bulk import inventory tier configurations

  • Efficiently configure complex inventory structures

  • Reduce API calls when setting up many tiers

Inventory Tier Fields:

  • name: Tier name (required)

  • quantity: Number of tickets in this tier

  • price: Price for this tier (if applicable)

  • sales_start: When sales begin for this tier

  • sales_end: When sales end for this tier

  • minimum_quantity: Minimum tickets per order

  • maximum_quantity: Maximum tickets per order

Limits:

  • Maximum 100 inventory tiers per event

  • All tiers must belong to the same event

Error Codes:

  • 400: Invalid tier data or exceeds maximum tiers

  • 401: Authentication required

  • 403: Insufficient permissions

  • 404: Event not found

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesThe event ID to create inventory tiers for
inventory_tiersYesArray of inventory tier objects to create

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it declares the required auth scope (event management permissions), the 100-tier per-event limit, the same-event constraint, and the 400/401/403/404 error semantics. It stops short of covering idempotency or rate limiting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and endpoint, but the markdown scaffolding (four headers, a field list duplicating the schema, four error codes) makes it longer than necessary. Meaningful content is diluted by restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema and no annotations, the description supplies the essentials an agent needs: auth, hard limits, and failure modes. Only the response shape and pagination/batching behavior remain unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The field list (name, quantity, price, sales_start/end, min/max quantity) largely restates what the schema already exposes, adding only the note that name is required, so it does not materially extend parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (create) and resource (multiple inventory tiers) plus the endpoint and the bulk scope, which distinguishes it from the singular create_inventory_tier and update_multiple_inventory_tiers siblings. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Four explicit use cases (bulk setup, import, complex configs, reducing API calls) give clear context for when to reach for this tool. It does not, however, name the alternative (create_inventory_tier for a single tier) or state when not to use the bulk endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_seat_mapA

Create Seat Map for reserved seating event by copying existing.

ENDPOINT: POST /events/{event_id}/seatmaps/

Event must be new reserved seating. Once created, cannot create again.

ERRORS (403):

  • NOT_AUTHORIZED: Unauthorized to view source or create on event

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
source_seatmap_idYesSource Seat Map ID to copy (required)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses authentication requirements, the 403 error condition, and an important behavioral constraint that repeated creation is not allowed, but it does not describe the return behavior in detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, then concisely adds endpoint, constraints, errors, and authentication in clearly separated lines. Every sentence earns its place with no wasted language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given two required parameters and no output schema, the description covers endpoint, authentication, a critical usage constraint, and the main error case. It could optionally state what the tool returns, but it is otherwise complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented in the input schema. The description implies source copying but adds no syntax or format detail beyond what the schema provides, making the baseline of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Create Seat Map') and specifies the creation method ('by copying existing') and target scope ('for reserved seating event'). It clearly distinguishes the operation from sibling tools like list_seat_maps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a key precondition: the event must be new reserved seating, and it warns that once created, it cannot be created again. This covers when and when-not to use the tool, though it does not name a specific alternative sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_text_overridesB

Create Text Overrides for Organization, Venue, or Event.

ENDPOINT: POST /organizations/{organization_id}/text_overrides/

PARAMETERS:

  • locale: Locale (optional, uses event locale or default)

  • venue_id: Venue ID (optional)

  • event_id: Event ID (optional)

  • strings: Array of text override objects (required)

ERRORS (400):

  • MISSING, INVALID

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoLocale
stringsYesText override objects (required)
event_idNoEvent ID
venue_idNoVenue ID
organization_idYesOrganization ID (required)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it partially discharges this by disclosing the endpoint, the 400 error codes (MISSING, INVALID), and the required Bearer token auth. It does not say what a successful response returns, whether creates are idempotent, or whether existing overrides are overwritten. With no annotations, this is a meaningful but incomplete disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into labeled sections (ENDPOINT, PARAMETERS, ERRORS, AUTHENTICATION) with the purpose front-loaded. It is efficiently sized for a five-parameter mutation tool, though the schema restatement in PARAMETERS is somewhat redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers auth and error codes well, but it does not describe the return value or the shape of the required 'strings' array elements. An agent still lacks enough to construct the payload confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description restates each parameter and adds one genuinely useful note ('locale... uses event locale or default'), which exceeds the schema for that field, but it does not explain the structure of the required 'strings' objects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create Text Overrides') and clarifies the scoping dimension ('Organization, Venue, or Event'), which is enough to distinguish it from the read counterpart get_text_overrides. However, it does not explicitly name or contrast with that sibling the way a fully differentiated definition would.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, nor any mention of the alternative get_text_overrides for retrieving overrides. The only usage signal is implicit: the tool creates overrides scoped to an organization, venue, or event.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_ticket_classA

Create a new Ticket Class.

ENDPOINT: POST /events/{event_id}/ticket_classes/

TICKET CLASS OBJECT: The Ticket Class object represents a possible ticket class (i.e. ticket type) for an Event. Typically, multiple different types of tickets for an Event can be purchased in one transaction. These ticket types do not necessarily map directly to the one Attendee per one ticket model.

TICKET CLASS TYPES:

  • Free: Ticket Classes that have no cost or currency. An Event with only free Ticket Classes is a free Event and doesn't require payout information

  • Paid: Ticket Classes with an associated cost in the Event's currency. Currency is specified in the Event object and is duplicated in the Ticket Class object

  • Donation: Order owner is prompted to enter at their own discretion an amount to donate during checkout. There is no fixed cost of donation

IMPORTANT NOTES:

  • After May 7, 2020, you must provide an inventory_tier_id as part of your request for any ticket_classes you are creating or updating for a tiered event

  • Add-On creation: First create an Add-On Inventory Tier with count_against_event_capacity set to false, then provide the inventory_tier_id when creating a new Ticket Class

REQUIRED PARAMETERS:

  • event_id (string, required): Event ID

  • name (string, optional): Name of this ticket type

  • quantity_total (number, optional): Total available number of this ticket, required for non-donation and non-tiered ticket classes. For normal ticket, null or 0 is not allowed. For donation ticket, null or 0 means unlimited. For tiered inventory ticket, null or 0 means capacity is only limited by tier capacity and/or event capacity

OPTIONAL PARAMETERS:

  • cost (string, optional): Cost of the ticket (currently currency must match event currency). Format: "USD,4500" for $45.00. The value is in minor currency units (cents for USD)

  • description (string, optional): Description of the ticket

  • sorting (number, optional): Unsigned integer in the order ticket classes are sorted by

  • capacity (number, optional, nullable): Total available number of this ticket. For normal ticket, null or 0 is not allowed. For donation ticket, null or 0 means unlimited. For tiered inventory ticket, null or 0 means capacity is only limited by tier capacity and/or event capacity

  • donation (boolean, optional): Is this a donation? (user-supplied cost)

  • free (boolean, optional): Is this a free ticket?

  • include_fee (boolean, optional): Absorb the fee into the displayed cost

  • split_fee (boolean, optional): Absorb the payment fee, but show the eventbrite fee

  • hide_description (boolean, optional): Hide the ticket description on the event page

  • sales_channels (array, optional): A list of all supported sales channels (["online"], ["online", "atd"], ["atd"])

  • sales_start (datetime, optional): When the ticket is available for sale (leave empty for 'when event published')

  • sales_end (datetime, optional): When the ticket stops being on sale (leave empty for 'one hour before event start'). Cannot be set on series parent tickets

  • sales_end_relative (object, optional): Relative values used to calculate ticket sales_end. Can only be used for series parent tickets • relative_to_event (enum, required): start_time or end_time • offset (number, required): The amount of time in seconds that the ticket sales are offset before the event start or end. Nonnegative number

  • sales_start_after (string, optional): The ID of another ticket class - when it sells out, this class will go on sale

  • minimum_quantity (number, optional): Minimum number per order

  • maximum_quantity (number): Maximum number per order

  • auto_hide (boolean, optional): Hide this ticket when it is not on sale

  • auto_hide_before (datetime, optional): Override reveal date for auto-hide

  • auto_hide_after (datetime, optional): Override re-hide date for auto-hide

  • has_pdf_ticket (boolean, optional): Whether to include pdf ticket or not

  • hidden (boolean, optional): Hide this ticket

  • order_confirmation_message (string, optional): Order message per ticket type

  • delivery_methods (string, optional): A list of the available delivery methods for this ticket class

  • inventory_tier_id (string, optional): Optional ID of Inventory Tier with which to associate the ticket class

ERROR RESPONSES:

  • 400 AUTO_HIDE_NOT_SET: You must select an auto hide setting

  • 400 BAD_QUANTITIES: The sum of tickets across ticket classes is not equal to the sum of total tickets available

  • 400 COST_GREATER_THAN_FEE: The cost of the ticket class must be greater than the fee

  • 400 CURRENCY_MISMATCH: Event currency ticket currency must match

  • 400 DONATION_AND_COST: A ticket cannot be a donation and a charged ticket

  • 400 DONATION_AND_FREE: A ticket cannot be a donation and a free ticket

  • 400 DONATION_AND_MIN_QUANTITY: Please set a minimum quantity for donation ticket

  • 400 FREE_AND_COST: A ticket cannot be a free ticket and a charged ticket

  • 400 INSUFFICIENT_PACKAGE: You need to upgrade your package to create more than one ticket

  • 400 INVALID_DELIVERY_METHOD: A ticket under this event organization cannot have this delivery method

  • 400 INVALID_EVENT: This event is not qualified to have tickets

  • 400 INVALID_EVENT_ID: Event id must match the event id associated with the ticket

  • 400 INVALID_INVENTORY_TIER_ID: You cannot change the inventory tier of a ticket

  • 400 INVALID_TICKET: You cannot update a child ticket directly

  • 400 NO_COST: A price must be set for a charged ticket

  • 400 NO_QUANTITY_TOTAL: A quantity total must be set for this ticket

  • 400 SPLIT_AND_INCLUDE: You cannot split fees and include them in the price of the ticket

  • 400 SPLIT_FEES_DEPRECATED: This functionality is being deprecated

  • 400 SALES_END_RELATIVE_TOO_FAR_IN_PAST: The ticket sales_end relative can't result in a date < 2000

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
costNoCost of the ticket in minor currency units (e.g., cents for USD). Example: 1000 = $10.00. Must match event currency
freeNoIs this a free ticket? (optional)
nameYesName of this ticket type (optional)
hiddenNoHide this ticket (optional)
eventIdYesEvent ID (required)
autoHideNoHide this ticket when it is not on sale (optional)
currencyNoCurrency code (e.g., USD, EUR, GBP). Must match event currency
donationNoIs this a donation? User-supplied cost (optional)
salesEndNoWhen the ticket stops being on sale (optional, ISO 8601 datetime format). Leave empty for "one hour before event start". Cannot be set on series parent tickets
splitFeeNoAbsorb the payment fee, but show the eventbrite fee (optional)
includeFeeNoAbsorb the fee into the displayed cost (optional)
salesStartNoWhen the ticket is available for sale (optional, ISO 8601 datetime format). Leave empty for "when event published"
descriptionNoDescription of the ticket (optional)
hasPdfTicketNoWhether to include pdf ticket or not (optional)
quantityTotalYesTotal available number of this ticket (required for non-donation and non-tiered ticket classes). For normal ticket, null or 0 is not allowed. For donation ticket, null or 0 means unlimited. For tiered inventory ticket, null or 0 means capacity is only limited by tier capacity and/or event capacity
hideDescriptionNoHide the ticket description on the event page (optional)
inventoryTierIdNoOptional ID of Inventory Tier with which to associate the ticket class
maximumQuantityNoMaximum number per order (optional)
minimumQuantityNoMinimum number per order (optional)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers auth requirements (Bearer token) plus a detailed error catalog (FREE_AND_COST, DONATION_AND_FREE, COST_GREATER_THAN_FEE, etc.) that reveals real behavioral constraints. It does not disclose idempotency, rate limits, or side effects, so it is thorough but not complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and organized into labeled sections, which helps scanning. However it repeats the full parameter list already in the schema, adds a very long error catalog, and contradicts the schema by marking name and quantity_total as optional when the schema marks them required.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter mutation with no annotations and no output schema, the description supplies the type taxonomy, required-field behavior, tier/add-on flow, and failure modes an agent needs. It falls short only on response shape and edge behaviors like idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema baseline is 3, but the description adds beyond it: type-specific semantics for quantity_total (null/0 behavior per free/paid/donation/tiered), the meaning of each ticket type, and even fields absent from the schema (sales_end_relative, sales_start_after, sorting, sales_channels). Minor inconsistency: it lists cost as string 'USD,4500' while the schema types it as a number in minor units.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a new Ticket Class') and backs it with the endpoint (POST /events/{event_id}/ticket_classes/) and a definition of what a ticket class represents. The create verb plus the surrounding create/update/get/list sibling names make the operation unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear conditional guidance: inventory_tier_id is required for tiered events after May 7 2020, and it spells out the add-on creation sequence (create tier with count_against_event_capacity=false, then supply inventory_tier_id). It never names alternatives like update_ticket_class explicitly, but the preconditions are strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_venueC

Create new Venue under an Organization.

ENDPOINT: POST /organizations/{organization_id}/venues/

VENUE FIELDS:

  • name (string, required): Venue name

  • address (object): Venue address with address_1, city, region, postal_code, country

  • age_restriction (string): Age restriction

  • capacity (number): Maximum tickets

  • latitude (string): Latitude

  • longitude (string): Longitude

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesVenue name (required)
addressNoAddress object
capacityNoMax capacity
age_restrictionNoAge restriction
organization_idYesOrganization ID (required)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It notes the POST endpoint and bearer token auth requirement, which is useful. However, it does not disclose whether creation is idempotent, what happens on duplicate names, what the response contains (venue ID?), or side effects on the organization.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized with clear sections (purpose, endpoint, venue fields, authentication) and is front-loaded with the main action. It is somewhat verbose in listing all fields but remains scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no annotations and no output schema, the description covers the endpoint, required auth, and fields. However, it lacks a critical detail: what the response returns (e.g., the new venue's ID with which to later call get_venue or update_venue). Without an output schema, that gap matters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description lists venue fields including address sub-fields (address_1, city, region, postal_code, country), which adds some meaning beyond the schema's generic "Address object". Baseline 3 is appropriate since the schema does the heavy lifting, with slight extra value from the address detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ("Create new Venue") and scopes it under an Organization, distinguishing it from siblings like list_venues, get_venue, and update_venue. It is clear what the tool does, though it could better differentiate from create_event/create_organization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. It does not mention prerequisites beyond authentication, nor when a caller should prefer create_venue over other creation tools or how it relates to update_venue for modifying existing venues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_webhookB

Create a Webhook by Organization ID.

ENDPOINT: POST /organizations/{organization_id}/webhooks/

Webhook represents webhook associated with Organization.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYesActions to trigger webhook (required)
event_idNoEvent ID to scope webhook
endpoint_urlYesWebhook endpoint URL (required)
organization_idYesOrganization ID (required)

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the required Bearer token auth and the exact HTTP endpoint, which an agent cannot derive from the schema alone. However, it omits mutation-relevant behavior: what happens on duplicate endpoint_url, what the created object returns, or any rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and endpoint, and the auth block is scannable. However, the sentence 'Webhook represents webhook associated with Organization' is tautological filler that adds nothing an agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description supplies auth and endpoint context, which is valuable for a tool with no annotations and no output schema. It is still thin for a mutation tool: no note on the return payload, duplicate handling, or validation constraints on the actions array.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters including which are required. The description only references organization_id and adds no semantics for actions, event_id, or endpoint_url, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a Webhook') and scopes it to an Organization ID, distinguishing it from the sibling read/create variants like list_webhooks and delete_webhook. It stops short of explicitly naming those siblings as alternatives, but the operation is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says nothing about when to create a webhook versus other options, nor any prerequisites (e.g., whether the organization must already have webhook capacity, or how this relates to delete_webhook/update variants). The only guidance is the auth requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_custom_questionA

Delete a custom Question.

ENDPOINT: DELETE /events/{event_id}/questions/{question_id}/

ERRORS (403):

  • NOT_AUTHORIZED: No permission

ERRORS (404):

  • NOT_FOUND: Question doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
question_idYesQuestion ID (required)

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and does real work: it discloses the auth requirement (Bearer PERSONAL_OAUTH_TOKEN) and concrete 403 NOT_AUTHORIZED and 404 NOT_FOUND failure modes, which an agent cannot get from the schema. It stops short of stating irreversibility or what the success response contains, which for a destructive verb is the one notable omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled sections (ENDPOINT, ERRORS, AUTHENTICATION) are front-loaded after the purpose sentence and make the critical facts scannable. The ALL-CAPS labels add slight visual overhead but every block carries distinct information, so nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-param destructive tool with no output schema and no annotations, the description supplies auth, error semantics, and the exact endpoint, which is enough for correct invocation. It would be fully complete with a note on reversibility/confirmation and the success return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both required params (event_id, question_id), and both are already documented in the schema. The endpoint line corroborates the path-parameter semantics but adds no format, constraint, or lookup detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Delete) and resource (custom Question), and the ENDPOINT line pins the exact scope to /events/{event_id}/questions/{question_id}/, which distinguishes it from the sibling delete_default_question by resource path. It never names that sibling or contrasts the two explicitly, so sibling differentiation is inferential rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites beyond auth, and no mention of alternatives such as delete_default_question or how to first identify the question_id. The agent must infer usage entirely from the verb and endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_default_questionA

Delete Default Question by ID.

ENDPOINT: DELETE /events/{event_id}/canned_questions/{question_id}/

Deactivates canned question for event.

ERRORS (404):

  • NOT_FOUND: Event doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
question_idYesQuestion ID (required)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and discloses important behavior: the operation is a soft delete (deactivates rather than permanently removes), it requires a Bearer token, and it returns 404 if the event doesn't exist. It does not state what happens if the question itself is missing or whether the question remains retrievable, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then structured into endpoint, behavior note, errors, and authentication. Every line adds useful operational detail with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter delete tool with no output schema or annotations, the description covers the endpoint, soft-delete behavior, error case, and authentication requirement. It is nearly complete, though the omission of handling for a missing question (vs. missing event) and any response details leaves a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are fully documented in the schema. The description adds no syntax, format, or meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Delete) and resource (Default Question) and clarifies the operation is a deactivation of a canned question. This distinguishes it from sibling tools like delete_custom_question and update_default_question.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and the note that it deactivates a canned question, but there is no explicit when-to-use guidance, prerequisites, or named alternatives (e.g., update_default_question). An agent must infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_discountA

Delete a Discount.

ENDPOINT: DELETE /discounts/{discount_id}/

Only unused discounts can be deleted. Cannot be restored after deletion.

ERRORS (400):

  • DISCOUNT_CANNOT_BE_DELETED: Discount has been used, cannot delete

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
discount_idYesDiscount ID (required)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses irreversibility ('Cannot be restored after deletion'), the usage precondition, the specific 400 error code an agent may receive, and the required bearer-token auth. It stops short of describing downstream effects (e.g., whether ticket classes referencing the discount are affected).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then cleanly sectioned into endpoint, constraint, errors, and auth. Each block carries information the agent needs; the formatting costs a few extra lines but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive one-parameter tool with no annotations and no output schema, the description covers precondition, irreversibility, failure mode, and auth requirements. Only the post-deletion side effects on related resources are left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single documented parameter, so the baseline is 3. The description only references discount_id implicitly via the endpoint path, adding no format or sourcing detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a Discount') and pins it to the exact endpoint DELETE /discounts/{discount_id}/, leaving no ambiguity about what gets acted on. It is trivially distinguishable from the get/create/update/list discount siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit precondition and implicit when-not rule: 'Only unused discounts can be deleted,' reinforced by the DISCOUNT_CANNOT_BE_DELETED error. It does not name an alternative path for discounts that are in use (e.g., update_discount to deactivate), so the routing guidance is clear but not complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_eventA

Delete an Event if the delete is permitted.

ENDPOINT: DELETE /events/{event_id}/

Returns a boolean indicating the success or failure of the delete action.

To delete an Event, the Event must not have any pending or completed orders.

If the event is a series parent, all series occurrences must be in a valid state to be deleted. Deleting the series parent will delete all series occurrences.

WARNING: This action cannot be undone. Deleted events cannot be recovered.

DELETION REQUIREMENTS:

  • Event must not have any pending orders

  • Event must not have any completed orders

  • For series parents: all occurrences must meet deletion requirements

SERIES PARENT EVENTS:

  • All occurrences must be in valid state for deletion

  • Deleting parent deletes all occurrences

  • Cannot delete if any occurrence has pending/completed orders

RESPONSE: Returns object with:

  • deleted (boolean): true if successfully deleted

POSSIBLE ERRORS (400):

  • ALREADY_DELETED: Event has already been deleted

  • CANNOT_DELETE: Cannot delete event that has pending or completed orders, or series parent where any occurrence has pending or completed orders

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does so thoroughly. It discloses destructive irreversibility, authentication requirements, return value, possible errors, and series-wide deletion behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a warning and uses headings for structure, which helps scanning. However, the same deletion requirements and series constraints are repeated across multiple sections, making it longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive deletion tool with no output schema and only one input parameter, the description covers return shape, possible errors, authentication, preconditions, and series-parent consequences. An agent has enough information to invoke it safely and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single required event_id parameter is already documented in the schema. The description adds no extra syntax, format, or semantic detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete an Event') with clear scope, but does not name or distinguish sibling alternatives such as cancel_event or unpublish_event. An agent can identify the action, though not why it would choose this over related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit preconditions for when deletion is permitted, including no pending/completed orders and valid series occurrence states. It does not compare alternatives or explicitly say when not to use this tool versus cancel_event, but the conditional context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_inventory_tierA

Delete an Inventory Tier.

ENDPOINT: DELETE /events/{event_id}/inventory_tiers/{inventory_tier_id}/

ERRORS (400):

  • HAS_ATTENDEES: Cannot delete if purchased by attendees

  • IS_STARTED_AFTER: Another ticket starts when this ends

  • LAST_TICKET: Cannot delete last ticket while event live

  • HAS_SEAT_ASSIGNMENTS: Cannot delete if seats still assigned

ERRORS (403):

  • NOT_AUTHORIZED

ERRORS (404):

  • NOT_FOUND: Event or tier doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
inventory_tier_idYesInventory Tier ID (required)

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so excellently: it lists the exact endpoint, authentication requirement, and detailed error conditions (HAS_ATTENDEES, IS_STARTED_AFTER, LAST_TICKET, HAS_SEAT_ASSIGNMENTS, NOT_AUTHORIZED, NOT_FOUND) that reveal critical prerequisites and restrictions. This is far beyond what a simple delete description usually provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and structured with clear headers for endpoint, errors, and authentication. The endpoint line is slightly redundant, but the bulleted error list is efficient and information-dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a delete tool with no output schema, the description covers authentication and specific failure conditions well. It does not explicitly state irreversibility or success behavior, but these are largely implied by the operation itself and the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both required parameters, so the schema already documents them. The description adds no additional meaning about parameter format or constraints, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ("Delete") and resource ("Inventory Tier"), making the operation unambiguous. It does not explicitly differentiate itself from sibling tools like update_inventory_tier or get_inventory_tier, but the verb alone is sufficient for an agent to distinguish it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as when to delete versus archive or update a tier. The error conditions hint at constraints, but they describe failure modes rather than usage guidelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_webhookB

Delete a Webhook by ID.

ENDPOINT: DELETE /webhooks/{id}/

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
webhook_idYesWebhook ID (required)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the authentication requirement, which is useful, but says nothing about whether deletion is permanent/destructive, whether it requires ownership, or what error occurs if the ID is invalid. For a destructive operation with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the action, then endpoint and auth in clearly labeled sections. It is brief and free of filler, though the ALL-CAPS section headers are slightly heavy for a one-line tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter destructive tool with no output schema, the definition covers what the call does and how to authenticate, but omits critical context about irreversibility and permission requirements. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and only one parameter exists, so the schema already documents webhook_id. The endpoint path syntax reinforces that a single ID identifies the resource, adding minor value. A baseline 4 is appropriate given complete schema coverage and a single required param.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource ('Delete a Webhook by ID') and it specifies the endpoint. It distinguishes itself from create_webhook, list_webhooks, and update_webhook-style siblings by naming the delete action, though it doesn't explicitly point to alternatives or prerequisites.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no conditions or warnings (e.g., irreversibility), and no reference to related tools like create_webhook or list_webhooks. The agent must infer usage entirely from the name and endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_api_docsA

Returns the complete Eventbrite API Blueprint documentation. Contains all endpoints, parameters, validation rules, error codes, and data structures for the Eventbrite API v3 (6933 lines).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the burden. It discloses what content is returned (endpoints, parameters, validation rules, error codes, data structures) and the size (6933 lines), which is meaningful context. However, it doesn't state the return format (single string blob? markdown?), whether it's paginated/truncated, or that it is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, and the parenthetical size note earns its place by hinting at payload volume.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param, no-output-schema tool, the description covers what is returned, but omits format and potential token/size handling implications of a 6933-line return, which an agent consuming this content would need to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so baseline is 4. The description correctly implies no parameters are needed since the full blueprint is always returned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns') and resource ('Eventbrite API Blueprint documentation'), and quantifies the scope (6933 lines). It's clearly distinguishable from all sibling tools, which are concrete CRUD operations on Eventbrite entities, not documentation retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance or mention of alternatives. For a documentation-retrieval tool against a large API surface, an agent would benefit from knowing this is the reference source to consult before calling other tools, but the description offers no routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_attendeeA

Retrieve an Attendee by Attendee ID.

ENDPOINT: GET /events/{event_id}/attendees/{attendee_id}/

The Attendee object represents ticket holder details for an Event. One Attendee per sold ticket. If Event only collects Order owner info (default), all Attendees have same info except barcodes and Ticket Class ID.

Attendee objects are private - only available to User and Order owner.

ATTENDEE FIELDS:

  • created (datetime): When order placed/attendee created

  • changed (datetime): Last change to attendee

  • ticket_class_id (string): Ticket Class used when registering

  • variant_id (string): Variant of Ticket Class

  • ticket_class_name (string): Name of Ticket Class

  • quantity (integer): Always 1

  • costs (object): Ticket cost breakdown

  • profile (object): Attendee basic profile

  • addresses (object): Attendee addresses

  • questions (array, optional): Custom questions

  • answers (array, optional): Answers to custom questions

  • barcodes (array): Entry bar codes

  • team (object, optional): Team information

  • affiliate (string, optional): Affiliate code

  • checked_in (boolean): true = Checked in

  • cancelled (boolean): true = Cancelled

  • refunded (boolean): true = Receives refund

  • status (string): Attendee status

  • event_id (string): Event ID

  • order_id (string): Order ID

  • guestlist_id (string): Guest list ID (null = not a guest)

  • invited_by (string): Who invited guest (null = not a guest)

  • delivery_method (string): will_call, electronic, standard_shipping, third_party_shipping

ATTENDEE COSTS:

  • base_price (currency): Price excluding fees/tax (don't expose if include_fee used)

  • eventbrite_fee (currency): Fee (don't expose if include_fee used)

  • tax (currency): Tax amount

  • payment_fee (currency): Payment processing fee

  • gross (currency): Total cost (base_price + eventbrite_fee + payment_fee + tax)

ATTENDEE PROFILE:

  • name (string): Full name (use instead of first_name/last_name)

  • email (string): Email address

  • first_name, last_name (string): Use name instead

  • prefix, suffix (string, optional): Title/honorific

  • age (integer, optional): Age

  • job_title, company, website, blog (string, optional)

  • gender (string, optional): male or female

  • birth_date (date, optional): Birth date

  • cell_phone (string, optional): Mobile number

ATTENDEE ADDRESSES:

  • home, ship, work (address, optional): Home, shipping, work addresses

ATTENDEE BARCODES:

  • barcode (string): Barcode contents (null if: printable tickets off, delivery method mismatch, not electronic delivery)

  • status (string): unused, used, or refunded

  • created, changed (datetime): Creation and last change times

  • is_printed (boolean): true = Ticket printed

AVAILABLE EXPANSIONS:

  • event: Attendee's Event

  • order: Attendee's Order

  • promotional_code: Promo code applied to Order

  • assigned_number: Bib number for race/endurance events

  • answers: Answers to custom questions

  • survey: Custom questions presented

  • survey_responses: Responses to survey questions

  • assigned_unit: Seating assignment details (reserved seating events)

  • contact_list_preferences: Email opt-in preferences

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
attendee_idYesAttendee ID (required)

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the private-visibility constraint, the OAuth bearer requirement, the one-attendee-per-ticket semantics, and non-obvious value conditions (barcodes null when printable tickets are off or delivery method mismatches). It stops short of documenting error behavior or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are well front-loaded and state the core operation. The remainder is a very long field/expansion reference dump; it substitutes for a missing output schema, but it is not tightly scoped for selection-time reading and buries the key constraints (privacy, auth) in the middle of the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because no output schema exists, the extensive field, cost, profile, address, and barcode documentation meaningfully fills that gap, and auth is specified. One gap: 'AVAILABLE EXPANSIONS' are listed but the input schema exposes no expand parameter, leaving the agent unsure how to request them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully documented in the schema (100% coverage), so the baseline is 3. The description adds the endpoint path structure showing how event_id and attendee_id nest, but no extra syntax or format guidance for the parameters themselves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Retrieve an Attendee by Attendee ID') and even pins the exact endpoint, so the operation is unambiguous. The 'by Attendee ID' phrasing implicitly separates it from the bulk list_attendees sibling, though no sibling is named explicitly, which keeps it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the agent must already know an attendee_id to call this, and the privacy note ('only available to User and Order owner') gives a precondition. There is no explicit when-to-use vs. list_attendees guidance and no exclusions, so this is minimum-viable rather than clear routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_attendee_reportA

Retrieve an Attendee Report by Event ID or status.

ENDPOINT: GET /reports/attendees/

Same parameters as sales report.

ERRORS (400):

  • ARGUMENTS_ERROR, CURRENCY_MISMATCH, INVALID, INVALID_PARAMETER

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd date
timezoneNoTimezone
event_idsYesEvent IDs (required)
start_dateNoStart date
event_statusNoEvent status

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden: it discloses the HTTP method and endpoint (GET /reports/attendees/), a specific list of 400 errors, and the required authentication header, which are rich behavioral details not available elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with labeled sections (endpoint, errors, auth) and front-loads the core purpose. It is efficient, though the 'Same parameters as sales report' line could be replaced with direct parameter guidance to reduce cross-referencing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description should ideally explain return values, which it does not. However, it provides endpoint, error codes, and auth requirements that are essential for correct invocation, making it reasonably complete for a report-retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters (event_ids required, plus end_date, timezone, start_date, event_status). The description adds no parameter-specific meaning beyond pointing to another tool for shared parameters, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Retrieve) and resource (Attendee Report) plus the primary lookup key (Event ID or status). It distinguishes itself from sibling get_sales_report by name and by explicitly referencing it, though the audience/subject is not clarified beyond the title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage via 'by Event ID or status' and points to get_sales_report for shared parameters, but does not state when to use this tool over get_sales_report or list_attendees, nor any prerequisites beyond the auth token requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_capacity_tierA

Retrieve capacity tier for an event.

ENDPOINT: GET /events/{event_id}/capacity_tier/

Capacity tier for GA holds against event capacity (not tiered inventory).

ERRORS (403):

  • NOT_AUTHORIZED

ERRORS (404):

  • NOT_FOUND: Event doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does a solid job: it discloses the HTTP method (GET, i.e. read-only), the exact endpoint, the required bearer token, and the 403/404 failure modes. It stops short of describing the response shape or any rate/permission nuance beyond NOT_AUTHORIZED.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then cleanly sectioned into ENDPOINT, ERRORS, and AUTHENTICATION blocks that are easy to scan. Slightly boilerplate-heavy for a one-parameter read, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter GET with no output schema or annotations, the description supplies the endpoint, auth scheme, and error behavior, which is enough for an agent to call it correctly. The only gap is a description of the returned tier value, which is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single event_id parameter is already documented as required in the schema. The description adds no format or syntax detail beyond what the structured field provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Retrieve) and resource (capacity tier for an event), and explicitly distinguishes itself from the tiered-inventory sibling: 'Capacity tier for GA holds against event capacity (not tiered inventory).' An agent can separate this from get_inventory_tier without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical scoping note tells the agent this applies to GA capacity rather than tiered inventory, which implicitly routes it away from get_inventory_tier. However, it never explicitly states when to prefer one over the other or any prerequisite conditions beyond the auth requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_categoryA

Get a category by ID.

ENDPOINT: GET /categories/{id}/

Category is an overarching category that an event falls into (vertical). Examples: Music, Endurance.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYesCategory ID (required)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does usefully disclose the HTTP endpoint and the required Bearer token authentication, which the schema does not. However, it says nothing about error behavior (missing ID), the shape of the returned category, or pagination/side effects, leaving real gaps for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation, then scoped with endpoint, domain definition, and auth in labeled blocks. Every block earns its place; the category definition is arguably extra but aids disambiguation from get_subcategory.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read with no output schema, the description supplies the endpoint, auth requirement, and entity meaning, which is enough to invoke it correctly. The remaining gap is its relationship to get_subcategory and list_categories, which the sibling list makes relevant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter has 100% schema description coverage, so the baseline is 3. The description only restates that lookup is by ID and adds no format, constraint, or sourcing guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a category by ID') and adds a definition of what a category is (vertical: Music, Endurance), which helps distinguish it from the similarly-named get_subcategory and list_categories. It stops short of explicitly contrasting itself with those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'by ID' phrasing implies a direct-lookup use case, but there is no statement of when to use this versus list_categories (discovery) or get_subcategory (child entity). Usage is inferable but not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_userA

Get Current User

Endpoint: GET /users/me/

Returns information about the currently authenticated user (the user whose API token is being used).

Authentication: Requires a valid Eventbrite API token.

Use Cases:

  • Verify authentication and token validity

  • Get current user's ID for other API calls

  • Display user information in applications

  • Check user's name and email

  • Verify user permissions and access

Response Fields:

  • id: User ID

  • name: User's full name

  • first_name: User's first name

  • last_name: User's last name

  • email: User's email address

  • emails: Array of email objects with verification status

  • image_id: User's profile image ID

Error Codes:

  • 401: Authentication required or invalid token

  • 403: Token lacks required permissions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and mostly succeeds: it discloses the required Eventbrite API token, the REST endpoint, and the 401/403 failure modes. It omits any rate-limit or scoping caveats, but for a read-only identity call the auth and error disclosure is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded with purpose before endpoint/auth/use-case/response detail, and every block is scannable. The repeated 'Get Current User' heading plus a Use Cases list with some near-duplicate bullets (check email, check permissions) adds mild padding that keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so listing response fields (id, name, email, emails, image_id) in the description is exactly the right compensation, and error codes round it out. An agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to explain; per the rubric this is the baseline 4. The description correctly implies no inputs are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — returns information about the currently authenticated user, explicitly qualified as 'the user whose API token is being used.' This distinguishes it from the sibling get_user, which takes an identifier rather than resolving the caller.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit Use Cases list (verify token validity, fetch own ID for other calls, check permissions), which tells the agent when this tool is appropriate. It does not, however, name the alternative (get_user) or state when NOT to use this tool, so it stops short of the 5 benchmark.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_custom_questionB

Retrieve a Custom Question by ID.

ENDPOINT: GET /events/{event_id}/questions/{question_id}/

ERRORS (404):

  • NOT_FOUND: Question doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
question_idYesQuestion ID (required)

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses the HTTP endpoint, the 404/NOT_FOUND failure mode, and the bearer-token authentication requirement. It omits pagination, rate limits, and what the returned object contains, but the error and auth disclosure is real value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (description, ENDPOINT, ERRORS, AUTHENTICATION) make it skimmable and the core purpose is front-loaded. Nothing is padded, though the section headers add slight overhead for a two-parameter read tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Auth and the 404 path are covered, which suits a simple read, but with no output schema the description never indicates what a retrieved Custom Question contains. For a fetch tool whose return shape is undefined elsewhere, that is a noticeable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, and the description adds no format, path, or validation detail beyond them. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Retrieve') and resource ('Custom Question') scoped by ID, and the endpoint line confirms the exact operation. It does not differentiate itself from the sibling get_default_question, so an agent must infer the custom/default distinction from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus list_custom_questions or get_default_question. The 'by ID' phrasing implies it fetches a known entity, but no alternatives or preconditions are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_default_questionA

Retrieve a Default Question by ID.

ENDPOINT: GET /events/{event_id}/canned_questions/{question_id}/

ERRORS (404):

  • NOT_FOUND: Event doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
question_idYesQuestion ID (required, e.g., "email")

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so reasonably: it discloses the auth requirement (Bearer PERSONAL_OAUTH_TOKEN), the HTTP endpoint, and the 404/NOT_FOUND failure mode. The one notable gap is that the 404 is scoped only to 'Event doesn't exist' — it says nothing about a missing question_id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose followed by short labeled blocks (ENDPOINT, ERRORS, AUTHENTICATION). Every line is scannable and none is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description is the only place to learn the return shape, yet it says nothing about what the retrieved question object contains. Errors and auth are covered, but the return-value gap is meaningful for a retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented, including the 'email' example for question_id. The description adds no format or constraint detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — 'Retrieve a Default Question by ID' — and the endpoint line confirms the target. It distinguishes itself from the create/update/delete/list default-question siblings, though it never explicitly contrasts with get_custom_question, leaving the 'default vs custom' distinction to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: it retrieves one question given an ID, so an agent can infer it is the single-item lookup counterpart to list_default_questions. There is no explicit when-to-use, no mention of when to prefer get_custom_question, and no prerequisite guidance beyond the auth note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_discountC

Retrieve a Discount by ID.

ENDPOINT: GET /discounts/{discount_id}/

DISCOUNT TYPES:

  • Public: Publicly displays on Event Listing/Checkout (single event only)

  • Coded: Requires secret code

  • Access Code: Secret code for hidden tickets (optional discount amount)

  • Hold: Unlock discount for seats on hold

DISCOUNT FIELDS:

  • code (string): Discount name (public) or code (coded/access)

  • type (string): access, coded, public, hold

  • end_date (datetime): Usable until this date (relative to event timezone)

  • end_date_relative (integer): Seconds before event start

  • amount_off (decimal): Fixed amount 0.01-99999.99 (uses event currency)

  • percent_off (decimal): Percentage 1.00-100.00

  • quantity_available (integer): Usage limit (0 = unlimited)

  • quantity_sold (integer, readonly): Times used

  • start_date (local datetime): Usable from this date

  • start_date_relative (integer): Seconds before event start

  • ticket_class_ids (list): Ticket Class IDs (empty = all tickets)

  • event_id (string): Single Event ID (empty for cross-event)

  • ticket_group_id (string): Ticket Group ID

  • hold_ids (list): Hold IDs this unlocks

EXPANSIONS:

  • event: Single Event for discount

  • ticket_group: Ticket Group for discount

  • reserved_seating: Reserved seating settings

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
discount_idYesDiscount ID (required)

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses authentication requirements (Bearer token) and expands on discount types and fields, which is useful. However, it doesn't state read-only nature, error behavior (e.g., 404 for missing ID), or response format. For a retrieval tool with no annotations, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated with extensive field lists, discount type explanations, and expansions that are tangential to the core retrieval action. The purpose statement is front-loaded, but the bulk is unnecessary for guiding invocation. Every sentence does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with one parameter and no output schema, the description is overkill on field details but under-specifies crucial behavioral aspects like read-only status, error handling, and response structure. With no annotations, it should compensate more effectively for the missing structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single required parameter (discount_id), so the schema documents it fully. The description repeats 'Discount ID (required)' but adds no syntax or format details beyond the schema. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb (Retrieve) and resource (Discount by ID) and provides the exact endpoint. It distinguishes the resource from siblings like list_discounts and update_discount, though it doesn't explicitly name them. The core purpose is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus list_discounts, create_discount, or update_discount. An agent is left to infer that this is for fetching a single known discount. No when-not-to-use or alternative routing is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_display_settingsA

Retrieve Display Settings for an Event.

ENDPOINT: GET /events/{event_id}/display_settings/

Display Settings control how Event appears on Event Listing page.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the HTTP method and endpoint (GET /events/{event_id}/display_settings/) and the required authentication (Authorization: Bearer PERSONAL_OAUTH_TOKEN), which is genuinely useful behavioral context. However, it says nothing about error behavior, rate limiting, or what a missing event_id yields. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose in one sentence, then uses short labeled sections (ENDPOINT, AUTHENTICATION). No filler. Slightly unconventional for a tool description, but every line carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with no output schema and no annotations, the description is roughly complete: it identifies the resource, endpoint, and auth. It omits any hint of what the response contains (e.g., name, color, layout fields) and any usage context relative to siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single required parameter already documented in the schema, so the baseline is 3. The description adds the endpoint path template which reinforces the param meaning, but does not add semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Retrieve) and resource (Display Settings for an Event), and clearly scopes them to how the Event appears on the Event Listing page. This distinguishes it from sibling update_display_settings and from other get_* entity tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a read operation for display settings but does not explicitly state when to use this tool versus update_display_settings or other event-related getters. Usage is inferable from the naming and the resource definition, but no explicit when/when-not guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_eventA

Retrieve an Event by Event ID.

ENDPOINT: GET /events/{event_id}/

NOTE: If the Event being retrieved was created using the new version of Create, then you may notice that the Event's description field is now being used to hold the event summary. To retrieve your event's fully-rendered HTML description, you will need to make an additional API call to retrieve the Event's full HTML description.

EVENT OBJECT - PUBLIC FIELDS:

  • name (multipart-text): Event name

  • summary (string, optional): Event summary. Short summary describing the event and its purpose

  • description (multipart-text, optional, DEPRECATED): Event description. Description can be lengthy and have significant formatting

  • url (string): URL of the Event's Listing page on eventbrite.com

  • start (datetime-tz): Event start date and time

  • end (datetime-tz): Event end date and time

  • created (datetime): Event creation date and time

  • changed (datetime): Date and time of most recent changes to the Event

  • published (datetime): Event publication date and time

  • status (string): Event status. Can be draft, live, started, ended, completed, canceled

  • currency (string): Event ISO 4217 currency code

  • online_event (boolean): true = Specifies that the Event is online only (i.e. the Event does not have a Venue)

  • hide_start_date (boolean): If true, the event's start date should never be displayed to attendees

  • hide_end_date (boolean): If true, the event's end date should never be displayed to attendees

EVENT OBJECT - PRIVATE FIELDS (only available to User):

  • listed (boolean): true = Allows the Event to be publicly searchable on the Eventbrite website

  • shareable (boolean): true = Event is shareable, by including social sharing buttons for the Event to Eventbrite applications

  • invite_only (boolean): true = Only invitees who have received an email inviting them to the Event are able to see Eventbrite applications

  • show_remaining (boolean): true = Provides, to Eventbrite applications, the total number of remaining tickets for the Event

  • password (string): Event password used by visitors to access the details of the Event

  • capacity (integer): Maximum number of tickets for the Event that can be sold to Attendees. The total capacity is calculated by the sum of the quantity_total of the Ticket Class

  • capacity_is_custom (boolean): true = Use custom capacity value to specify the maximum number of Attendees for the Event. False = Calculate the maximum number of Attendees for the Event from the total of all Ticket Class capacities

AVAILABLE EXPANSIONS: Use ?expand=expansion_name to include additional data:

  • logo: Event image logo

  • venue: Event Venue

  • organizer: Event Organizer

  • format: Event Format

  • category: Event Category

  • subcategory: Event Subcategory

  • bookmark_info: Indicates whether a user has saved the Event as a bookmark

  • refund_policy: Event Refund Policy

  • ticket_availability: Overview of availability of all Ticket Classes

  • external_ticketing: External ticketing data for the Event

  • music_properties: Event Music Properties

  • publish_settings: Event publish settings

  • basic_inventory_info: Indicates whether the event has Ticket Classes, Inventory Tiers, Donation Ticket Classes, Ticket Rules, Inventory Add-Ons, and/or Admission Inventory Tiers

  • event_sales_status: Event's sales status details

  • checkout_settings: Event checkout and payment settings

  • listing_properties: Display/listing details about the event

  • has_digital_content: Whether or not an event Has Digital Content

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIdYesEvent ID (required)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden, and it does a lot: it documents the full field set, distinguishes public vs private fields (private only available to the authenticated user), and flags the deprecation/behavioral quirk where the summary occupies the description field. It also specifies the auth requirement. Missing rate limits and an explicit statement on pagination/error behavior keeps it from 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core operation is front-loaded in one good sentence, but the bulk of the description is a very long field dump and expansion list that dwarfs the actual guidance. For a single-parameter retrieval tool this is bloated and the important behavioral note is buried mid-document.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must describe return values, and it enumerates the event object fields, marks public vs private, and lists all expansions with names and meanings. It also covers auth. It is essentially complete for calling the tool correctly, though the deprecation note could be clearer and error/rate behaviors are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single eventId parameter, so the baseline is 3. The description adds no parameter syntax or format detail beyond reiterating 'by Event ID', and the ?expand= list, while useful, is really a return-value modifier rather than a parameter explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Retrieve an Event by Event ID.' The endpoint line GET /events/{event_id}/ pins down the exact operation, and the distinction from siblings such as get_event_description and list_events is implicit in the ID-based retrieval plus the note about fetching the full HTML description separately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains one important routing decision—that get_event returns the summary in the description field and a separate call is needed for the full HTML description (implying get_event_description). But it offers no guidance on when to use this versus get_event_series, get_organization, or list_events, and gives no conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_descriptionA

Retrieve full HTML description for an Event.

ENDPOINT: GET /events/{event_id}/description/

Returns fully rendered description as HTML string. Works with events created using New or Classic Create.

PERMISSIONS: event.details:read

ERRORS (400):

  • NOT_AUTHORIZED: No permission to view details

  • ARGUMENTS_ERROR: Invalid event ID

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so thoroughly: it documents the HTTP endpoint, the exact permission required (event.details:read), specific error codes with meanings, and the authentication scheme (Bearer PERSONAL_OAUTH_TOKEN). This is rich behavioral context well beyond what structured fields supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then organized into labeled sections (ENDPOINT, PERMISSIONS, ERRORS, AUTHENTICATION) that make scanning efficient. Slightly verbose with its multi-section format, but every section is useful for correct invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single simple parameter, no output schema, and no annotations, the description is complete: it covers purpose, endpoint, return format, permissions, errors, and auth. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (event_id is documented as 'Event ID (required)'), so the baseline is 3. The description adds the endpoint path showing event_id is a path parameter, but no additional syntax or constraints beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Retrieve full HTML description for an Event.' Clearly distinguishes from siblings like get_event, get_structured_content, and get_text_overrides by naming the exact sub-resource (description) and return format (HTML).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions it 'Works with events created using New or Classic Create,' implying a compatibility condition, but offers no explicit when-to-use-vs-alternatives guidance. An agent must infer that this is the tool for fetching description content as opposed to metadata (get_event) or structured content (get_structured_content).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_seriesB

Retrieve parent Event Series by ID.

ENDPOINT: GET /series/{event_series_id}/

Event Series is repeating Event with multiple dates.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_series_idYesEvent Series ID (required)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does add real behavior: the HTTP verb/endpoint (GET /series/{id}/) implies a non-mutating read, and it explicitly states the required Authorization: Bearer PERSONAL_OAUTH_TOKEN header. However it says nothing about what happens on a missing/invalid ID, permission scope beyond the header, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the ENDPOINT / AUTHENTICATION blocks are easy to scan. The labeled blocks are slightly formulaic but every line carries information, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read endpoint with a fully described schema, the definition supplies the missing operational context an agent needs: the endpoint path and the exact auth header. It is not exhaustive about errors or the returned payload, but no output schema exists and the tool is simple.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one required parameter, so the schema already documents event_series_id fully. The description adds only the phrase 'by ID' and no format or example beyond that, which is the expected baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Retrieve parent Event Series by ID') and even defines the resource ('repeating Event with multiple dates'). It does not explicitly contrast with the nearest sibling (list_events_by_series), so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives such as list_events_by_series or get_event. The only inference available is that you must already hold an Event Series ID, which is implied by the schema rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_formatA

Retrieve a Format by ID.

ENDPOINT: GET /formats/{format_id}/

Format represents event type (e.g., seminar, workshop, concert).

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
format_idYesFormat ID (required)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the safety burden. It discloses the authentication requirement (Bearer token), which is useful, but does not state read-only nature explicitly or describe failure modes (e.g., 404 on unknown ID).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (description, endpoint, auth) and front-loaded purpose. Slightly verbose with headers but no wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-param read tool with no output schema, the description covers purpose, endpoint, and auth. It omits return value details, but the absence of an output schema means this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single format_id parameter. The description adds no additional syntax or format detail beyond what the schema provides, making baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Retrieve') and resource ('a Format by ID'), and clarifies what a Format is ('event type, e.g., seminar, workshop, concert'), which distinguishes it from sibling tools like get_venue or get_category.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by naming the endpoint and required ID, but the description offers no explicit when-to-use guidance or mention of the sibling 'list_formats' as an alternative for enumeration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_inventory_tierA

Retrieve an Inventory Tier by ID for an Event.

ENDPOINT: GET /events/{event_id}/inventory_tiers/{inventory_tier_id}/

Inventory Tier controls capacity across multiple tickets. Supports GA holds.

ERRORS (403):

  • NOT_AUTHORIZED

ERRORS (404):

  • NOT_FOUND: Event or inventory_tier_id doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
inventory_tier_idYesInventory Tier ID (required)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the endpoint (GET, implying a safe read), the required authentication scheme (Bearer PERSONAL_OAUTH_TOKEN), and concrete error conditions (403 NOT_AUTHORIZED, 404 NOT_FOUND with the specific missing-entity cause). This is well beyond what the schema provides; only the response shape and any rate-limit behavior are unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then organized into labeled ENDPOINT/ERRORS/AUTHENTICATION blocks. Every block carries actionable information for an agent, though the formatting is more verbose than necessary for a two-parameter lookup.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple GET-by-ID tool with full parameter coverage, the description supplies endpoint, auth, and error semantics. Because there is no output schema and no annotation coverage, it could have described the returned tier fields, which leaves a modest gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both required parameters (event_id, inventory_tier_id) are already documented in the schema. The description adds no format, type, or sourcing guidance beyond restating the ID-based lookup, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Retrieve), resource (Inventory Tier), and scoping qualifier (by ID for an Event), and even explains what the resource is ('controls capacity across multiple tickets. Supports GA holds'). An agent can distinguish it from list_inventory_tiers, create_inventory_tier, and update_inventory_tier without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage is clear from 'by ID' (a point lookup for a known inventory tier), but the description never states when to use this versus list_inventory_tiers or how to obtain the required IDs. No explicit alternatives or prerequisites are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_mediaB

Retrieve Media by ID.

ENDPOINT: GET /media/{media_id}/

Media represents image for Event listing.

PARAMETERS:

  • width (optional): Thumbnail width

  • height (optional): Thumbnail height

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoThumbnail width
heightNoThumbnail height
media_idYesMedia ID (required)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden; it does add useful context by disclosing the HTTP endpoint and the required Bearer authentication. However, it says nothing about what is returned (image bytes vs. URL/metadata), error behavior, or cache/rate characteristics, which matters for a retrieval tool with no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then organized under ENDPOINT, PARAMETERS, and AUTHENTICATION headers. Slightly over-structured for a three-parameter get, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Auth requirement and endpoint are covered, which is valuable given no annotations. But for a retrieval tool with no output schema, the description never says what the caller receives back or how media is identified beyond the ID — a meaningful gap for an agent deciding how to use the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents media_id, width, and height. The description's PARAMETERS block merely restates the schema text ("Thumbnail width/height") and adds no new meaning such as units, defaults, or aspect-ratio behavior. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Retrieve Media by ID") and clarifies what Media represents (an image for an Event listing), which helps an agent understand the resource. It does not, however, differentiate itself from the closely-named siblings upload_media and get_media_upload, so the boundary between retrieval and upload flows is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus siblings such as get_media_upload or upload_media. The agent must infer from the name alone that this retrieves already-uploaded media rather than inspecting an upload session.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_media_uploadA

Get Media Upload Information

Endpoint: GET /media/upload/

Returns information about a media upload, including upload status and processing state.

Authentication: Requires a valid Eventbrite API token with appropriate permissions.

Use Cases:

  • Check upload status after initiating a media upload

  • Verify media processing completion

  • Get media ID for use in events or organizers

  • Monitor upload progress

Response Fields:

  • id: Media upload ID

  • upload_token: Token for the upload

  • status: Upload status (pending, processing, complete, failed)

  • media_type: Type of media (image-event-logo, image-organizer-logo, etc)

  • url: URL of the uploaded media (when complete)

  • created: Upload creation timestamp

Error Codes:

  • 400: Invalid upload token

  • 401: Authentication required

  • 404: Media upload not found

ParametersJSON Schema
NameRequiredDescriptionDefault
upload_tokenYesThe upload token returned from a previous upload initiation

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the HTTP method and endpoint, authentication requirements, a detailed response field list with status values, and relevant error codes, giving an agent strong operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then organized into useful sections for endpoint, authentication, use cases, response fields, and errors. It is longer than minimal, but most sections earn their place because there is no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description compensates by documenting authentication, the endpoint, response fields, status values, and error codes. An agent has enough information to invoke the tool and interpret common outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single upload_token parameter is already documented in the schema. The description mentions upload_token only indirectly in the response fields and error codes, adding little meaning beyond the schema's own explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: returns information about a media upload, including upload status and processing state, and gives the exact endpoint GET /media/upload/. It is clear what the tool does, but it does not explicitly differentiate itself from sibling tools such as get_media or upload_media.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The Use Cases section gives clear contexts for calling the tool: checking upload status after initiating a media upload, verifying processing completion, getting a media ID, and monitoring progress. It does not explicitly name alternatives or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_orderA

Retrieve an Order by Order ID.

ENDPOINT: GET /orders/{order_id}/

The Order object represents an order made against Eventbrite for one or more Ticket Classes. A single Order can be made up of multiple tickets. Contains Order's financial and transactional information. Use Attendee object for attendee information.

Order objects are private - only available to User and Order owner.

ORDER FIELDS:

  • created (datetime): When Order was placed and Attendee created

  • changed (datetime): Last change to Attendee

  • name (string): Order owner name (use instead of first_name/last_name)

  • first_name (string): Order owner first name (deprecated, use name)

  • last_name (string): Order owner last name (deprecated, use name)

  • email (string): Order owner email

  • costs (object): Cost breakdown

  • event_id (string): Order's Event ID

  • time_remaining (number): Time to complete Order (seconds)

  • questions (array, optional): Custom questions for Order owner

  • answers (array, optional): Answers to custom questions

  • promo_code (string, optional): Discount code applied

  • status (string): Order status

ORDER COSTS BREAKDOWN:

  • base_price (currency): Amount without fees/tax (use display_price if include_fee used)

  • display_price (currency): Correct amount when include_fee used

  • display_fee (currency): Fees/tax included (absorbed) in displayed price

  • gross (currency): Total Order amount

  • eventbrite_fee (currency): Eventbrite fee (don't expose to Order owner)

  • payment_fee (currency): Payment processor fee

  • tax (currency): Tax amount

  • display_tax (object): Tax with name

  • price_before_discount (currency): Price before discount applied

  • discount_amount (currency): Total discount (if applied)

  • discount_type (string): coded, access, public, hold, or null

  • fee_components (list): Fee cost components

  • tax_components (list): Tax cost components

  • shipping_components (list): Shipping cost components

  • has_gts_tax (boolean): Has GTS tax

  • tax_name (string): Tax name if applicable

AVAILABLE EXPANSIONS:

  • event: Order's Event

  • attendees: Order's Attendees

  • merchandise: Merchandise in Order

  • concierge: Order's concierge

  • refund_requests: Order's refund request

  • survey: Order's custom questions

  • survey_responses: Responses to survey questions

  • answers: Answers to custom questions

  • ticket_buyer_settings: Purchaser information including confirmation messages

  • contact_list_preferences: Email opt-in preferences

POSSIBLE ERRORS (400):

  • ORDER_EXPIRED: The order is expired

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder ID (required)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the access-control constraint ('private - only available to User and Order owner'), the required Bearer authentication, and a concrete error behavior (ORDER_EXPIRED at 400). It omits rate limits and pagination behavior, but the behavioral coverage is notably richer than a bare read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and endpoint are front-loaded, then well-delimited sections follow. The lengthy field and expansion documentation is heavy but earns its place because there is no output schema to convey return shape; still, the volume is higher than strictly needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating return fields, cost breakdown, and available expansions, plus auth and error conditions. An agent has everything needed to call and interpret this endpoint correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single order_id parameter, so the schema already documents it fully. The description adds no format or syntax detail beyond 'by Order ID', so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a specific verb and resource scoped by identifier ('Retrieve an Order by Order ID'), which an agent can immediately distinguish from the list_orders sibling. The scope constraint is front-loaded and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implicitly tells the agent this is the single-order-by-ID path and adds a routing hint ('Use Attendee object for attendee information'), but never explicitly contrasts itself with list_orders or state when-not to use it. Usage is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_organizationA

Get an Organization by ID.

ENDPOINT: GET /organizations/{organization_id}/

Organization represents business structure where Events are created/managed.

ORGANIZATION FIELDS:

  • id (string): Organization ID

  • name (string): Organization name

  • image_id (string, optional): Image ID

  • vertical (string): Business type (default or music)

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYesOrganization ID (required)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses the HTTP endpoint and the required Authorization Bearer token. It doesn't explicitly confirm read-only/no-side-effects, but "Get" plus the endpoint makes that unambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then labeled sections. The field enumeration is a bit long for a trivial get, but it earns its place because no output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, enumerating ORGANIZATION FIELDS (id, name, image_id, vertical) usefully tells the agent what comes back, and the auth requirement is stated. A note on error behavior for an invalid ID is the only real omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter and schema description coverage is 100%, so the schema already documents organization_id. The description adds nothing beyond the name/type that the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb+resource ("Get an Organization by ID") and the endpoint, making the single-object fetch clear. It implicitly distinguishes itself from the sibling list_organizations via "by ID," though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent infers it should call this when it holds an organization_id. There is no explicit when-to-use/when-not guidance and no pointer to list_organizations as the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sales_reportA

Retrieve a sales Report by Event ID or status.

ENDPOINT: GET /reports/sales/

PARAMETERS:

  • event_ids (array[string], required): Event IDs

  • event_status (string): all, live, ended

  • start_date, end_date (string): Date range

  • filter_by (string): Filter by ticket_ids, currencies

  • group_by (string): payment_method, ticket, currency, event, country, etc.

  • period (number): Time period in date_facet units

  • date_facet (string): fifteen, hour, day, event_day, week, month, year, none

  • timezone (string): Timezone (default: first event timezone)

ERRORS (400):

  • ARGUMENTS_ERROR, CURRENCY_MISMATCH, INVALID, INVALID_PARAMETER

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd date
timezoneNoTimezone
event_idsYesEvent IDs (required)
start_dateNoStart date
event_statusNoEvent status filter

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does meaningful work: the GET endpoint implies a non-destructive read, and it discloses the auth requirement (Bearer PERSONAL_OAUTH_TOKEN) plus concrete 400 error codes. It still omits pagination, rate limits, and response shape, so it is not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then cleanly sectioned into ENDPOINT, PARAMETERS, ERRORS, and AUTHENTICATION. The structure is easy to scan; the only cost is mild redundancy between the parameter block and the schema it restates.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with no output schema and no annotations, the description supplies endpoint, full parameter semantics, error codes, and auth - everything needed to make a correct call. It stops short of describing the report payload returned, which is the one remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% but carries no enums (0 enums reported), so the description's enumeration of legal values for event_status (all/live/ended), filter_by, group_by, date_facet, and the timezone default adds real meaning beyond the schema. The extra parameters it documents (filter_by, group_by, period, date_facet) are not even in the input schema, which is useful but leaves their exact interaction unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Retrieve a sales Report') and scopes it by Event ID or status, which is clear. It does not, however, explicitly distinguish itself from the sibling get_attendee_report, so the agent must infer the sales-vs-attendee distinction on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, no prerequisites, and no mention of the alternative report tool. The parameter list implies a filtered lookup, but the description never tells the agent under what circumstances this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_structured_contentA

Retrieve latest published structured content for event.

ENDPOINT: GET /events/{id}/structured_content/

Returns latest published version. Must publish version first (publish=true in set).

PURPOSE:

  • listing (default): Basic event description

  • digital_content: Online Event Page for attendees

RESPONSE:

  • page_version_number: Current version

  • modules: List of modules (text, image, video)

  • widgets: List of widgets (agenda, faqs)

ERRORS (400):

  • NOT_AUTHORIZED: No permission to view

  • ARGUMENTS_ERROR: Invalid event ID

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
purposeNoPurpose: listing or digital_content (default: listing)
event_idYesEvent ID (required)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the prerequisite (must publish first), the authentication requirement (Bearer token), error conditions (NOT_AUTHORIZED, ARGUMENTS_ERROR), and the general response structure. This is rich context beyond what the schema provides. It could be improved by stating whether this is a read-only operation (implied but not explicit) and rate limit info, but overall it is quite thorough for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (ENDPOINT, PURPOSE, RESPONSE, ERRORS, AUTHENTICATION) and front-loaded key information. It is slightly verbose with some repetition (e.g., 'latest published' appears twice), but every sentence adds useful value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with no output schema, the description compensates by listing the response fields (page_version_number, modules, widgets) and error cases. It covers authentication and prerequisites. However, without an output schema, it could provide more detail on the structure of modules/widgets or pagination, but it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (event_id required, purpose with default). The description adds the meaning of the purpose values (listing vs digital_content) and reinforces the event_id requirement. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Retrieve latest published structured content for event.' The 'purpose' parameter values (listing vs digital_content) clarify what kind of content is returned, and the relationship to set_structured_content is implied via 'Must publish version first (publish=true in set).' This distinguishes it from most siblings like get_event_description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the prerequisite (publish version first) and the two purposes for using this tool. However, it does not explicitly state when to use this vs alternatives like get_event_description, which likely returns a different form of event description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subcategoryB

Retrieve a Subcategory by ID.

ENDPOINT: GET /subcategories/{subcategory_id}/

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
subcategory_idYesSubcategory ID (required)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the concrete endpoint (GET /subcategories/{subcategory_id}/) and the required Authorization: Bearer header — genuinely useful context. It stops short of describing failure modes (e.g., unknown ID) or the response payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short labeled blocks, front-loaded with the purpose and then the endpoint and auth. Every line carries information; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, the definition covers purpose, endpoint, and authentication. The remaining gap — return value structure and error behavior — is minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single parameter already documented as 'Subcategory ID (required)'. The description adds no format, source, or lookup information beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Retrieve') and resource ('a Subcategory by ID'), making the operation unambiguous. It does not explicitly differentiate itself from the sibling list_subcategories, but the 'by ID' framing implicitly separates the single-fetch case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives such as list_subcategories, nor any prerequisites beyond the auth note. Usage must be inferred entirely from the parameter name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_text_overridesC

Retrieve Text Overrides for Organization.

ENDPOINT: GET /organizations/{organization_id}/text_overrides/

Customize strings shown during ticket sales per event.

PARAMETERS:

  • locale: Locale (e.g., en_US)

  • venue_id: Venue ID filter

  • event_id: Event ID filter

  • text_codes: List of codes (tickets_not_yet_on_sale, tickets_sold_out, etc.)

ERRORS (400):

  • MISSING, INVALID

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoLocale
event_idNoEvent ID
venue_idNoVenue ID
text_codesNoText codes
organization_idYesOrganization ID (required)

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses authentication requirements and potential error codes (MISSING, INVALID), which is helpful. But it omits whether the operation is read-only (implied by 'Retrieve' but not stated), pagination behavior, or what happens if no overrides exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with clear sections (endpoint, parameters, errors, authentication) and is front-loaded with the primary purpose. It is efficient and avoids unnecessary verbosity, though the parameter list duplicates schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's relative simplicity (5 parameters, 1 required, no output schema), the description covers authentication, error codes, and basic parameters. However, for a retrieval tool with no annotations, it lacks details on return format, pagination, and the exact structure of returned overrides, leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description lists parameters with examples (e.g., locale en_US, text codes like tickets_not_yet_on_sale), adding some illustrative value but no syntax or format details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Retrieve Text Overrides') and adds useful context ('Customize strings shown during ticket sales per event'). However, it doesn't distinguish this tool from the sibling 'create_text_overrides', leaving the read-vs-write boundary implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given on when to use this tool versus alternatives. The description mentions customization during ticket sales but doesn't explain when to retrieve overrides or how to select between this and create_text_overrides.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ticket_buyer_settingsA

Retrieve Ticket Buyer Settings by Event.

ENDPOINT: GET /events/{event_id}/ticket_buyer_settings/

Settings for ticket buyers: confirmation message, instructions, refund requests, attendee updates, survey info.

ERRORS (400):

  • FIELD_INVALID

ERRORS (403):

  • NOT_AUTHORIZED

ERRORS (404):

  • NOT_FOUND

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full burden and does well: it enumerates the settings returned (confirmation message, instructions, refund requests, attendee updates, survey info), lists concrete error codes (400 FIELD_INVALID, 403 NOT_AUTHORIZED, 404 NOT_FOUND), and states the auth requirement (Bearer PERSONAL_OAUTH_TOKEN). It stops short of describing response shape or pagination, but for a single-resource GET this is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then structured blocks (ENDPOINT, settings list, ERRORS, AUTHENTICATION). Some header labels are verbose but each line is informative; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 1-param read tool with no output schema, the description supplies endpoint, returned setting categories, error codes, and auth — enough for an agent to invoke it correctly. Return value structure is the only notable omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists and the schema documents it at 100% coverage ('Event ID (required)'). The description adds no format or constraint detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Retrieve) and resource (Ticket Buyer Settings) scoped by Event, and pins the exact endpoint GET /events/{event_id}/ticket_buyer_settings/. Sibling update_ticket_buyer_settings is clearly distinguished by the read verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the read-only endpoint and the settings enumeration, but no explicit when-to-use or when-not-to-use guidance is given relative to siblings like update_ticket_buyer_settings or get_event.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ticket_classA

Retrieve a Ticket Class by Ticket Class ID.

ENDPOINT: GET /events/{event_id}/ticket_classes/{ticket_class_id}/

The Ticket Class object represents a possible ticket class (i.e. ticket type) for an Event. Multiple different types of tickets for an Event can be purchased in one transaction.

TICKET CLASS TYPES:

  • Free: No cost or currency. Event with only free tickets doesn't require payout info

  • Paid: Associated cost in Event's currency

  • Donation: Order owner enters amount to donate at checkout (no fixed cost)

TICKET CLASS OBJECT - PUBLIC FIELDS:

  • name (string): Ticket Class name

  • description (string, optional): Ticket Class description

  • sorting (integer): Order in purchase flow on event listing page

  • cost (currency): Display cost on Ticket Listing page (paid only)

  • fee (currency): Display fee on Ticket Listing page (paid only)

  • donation (boolean): true = Ticket Class is a Donation

  • free (boolean): true = Ticket Class is Free

  • minimum_quantity (integer): Minimum tickets per Order

  • maximum_quantity (integer): Maximum tickets per Order

  • has_pdf_ticket (boolean): true = Attendee receives PDF confirmation

  • delivery_methods (list): electronic, will_call, standard_shipping, third_party_shipping

  • on_sale_status (string): AVAILABLE or SOLD_OUT

  • image_id (string): Image ID for ticket class (used for add-ons)

TICKET CLASS OBJECT - PRIVATE FIELDS (Organization Members only):

  • capacity (integer): Number available for sale

  • quantity_sold (integer): Number previously sold (excludes real-time purchases)

  • hidden (boolean): true = Hidden from public

  • sales_start (datetime): When sales begin

  • sales_end (datetime): When sales end

  • sales_end_relative (object): Relative values for sales_end (series parent tickets only)

  • sales_start_after (string): Ticket Class ID that triggers sales start when it sells out

  • include_fee (boolean): true = Fee included in displayed price (cannot use with split_fee)

  • split_fee (boolean): true = Fee not included, actual_cost and actual_fee shown separately

  • hide_description (boolean): true = Description hidden on Ticket Listing page

  • hide_sale_dates (boolean): true = Sale dates hidden on event page

  • auto_hide (boolean): true = Hidden when not for sale

  • auto_hide_before (datetime): Override auto-hide disable time (default: sales_start)

  • auto_hide_after (datetime): Override auto-hide enable time (default: sales_end)

  • order_confirmation_message (string): Message shown when Order completed

  • secondary_assignment_enabled (boolean): true = Secondary barcode assignment enabled (e.g., RFID)

AVAILABLE EXPANSIONS: Use ?expand=expansion_name to include additional data:

  • event: Event for the Ticket Class

  • image: Image for the Ticket Class

POSSIBLE ERRORS (400):

  • AUTO_HIDE_NOT_SET: Must select an auto hide setting

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
ticket_class_idYesTicket Class ID (required)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden, and it does substantial work: it states the auth requirement (Bearer PERSONAL_OAUTH_TOKEN), splits fields into public vs organization-member-only visibility, and lists a 400 error. It omits rate limits and confirms nothing about side effects, but the auth and field-visibility disclosures are solid for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is correctly front-loaded and the description is organized under clear headers (endpoint, types, fields, expansions, errors, auth). However the two long field inventories make it very verbose for a simple by-ID lookup; much of that content is reference data rather than essential selection guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, documenting the returned Ticket Class fields is genuinely necessary and the description does so thoroughly, plus auth, expansions, and an error case. The main gap is that the listed AUTO_HIDE_NOT_SET 400 error looks like a mutation error and is likely irrelevant to a GET, slightly muddying completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the two path parameters are self-documenting, so baseline would be 3. The description goes further by documenting an expansion query parameter (?expand=event|image) that is absent from the schema entirely, adding real meaning beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb (Retrieve) and resource (Ticket Class) scoped by ID, so an agent knows this is a single-object lookup rather than the list_ticket_classes variant. It does not explicitly name the sibling alternatives, but the by-ID scoping is enough to distinguish it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use vs alternatives (e.g. list_ticket_classes), but the description does route optional usage through the 'AVAILABLE EXPANSIONS: Use ?expand=...' section, which tells the agent how to enrich the response. That is implicit guidance rather than a stated selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_userB

Get authenticated user information.

ENDPOINT: GET /users/me/

Returns current user details.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does add useful operational context — the exact endpoint and the required Authorization: Bearer PERSONAL_OAUTH_TOKEN header — but says nothing about rate limits, response shape, or what happens if the token is missing or expired.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short and front-loaded, with labeled sections that make the endpoint and auth requirements scannable. The opening line and 'Returns current user details' are largely redundant restatements, a minor waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-param read tool with no output schema and no annotations, the description supplies endpoint and auth, which is the most important missing piece. It still omits what fields the user object contains and how it differs from get_current_user, leaving the agent under-informed for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the schema is trivially complete. Baseline for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb and resource ('Get authenticated user information') and pins the exact endpoint GET /users/me/. However, it does nothing to separate itself from the sibling get_current_user, which appears to cover the same 'who am I' resource — the agent gets no basis for choosing between them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool, when not to, or which sibling to prefer. Given that get_current_user is a near-identical sibling, the absence of routing guidance is a real gap rather than a stylistic one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_venueA

Retrieve a Venue by ID.

ENDPOINT: GET /venues/{venue_id}/

Venue represents location where Event takes place. Venues grouped by Organization.

VENUE FIELDS:

  • id (string): Venue ID

  • name (string): Venue name

  • address (address): Venue address

  • age_restriction (string): Age restriction

  • capacity (number): Maximum tickets that can be sold

  • latitude (string): Latitude coordinates

  • longitude (string): Longitude coordinates

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
venue_idYesVenue ID (required)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden, and it does deliver the key behavioral fact: the call requires an Authorization: Bearer PERSONAL_OAUTH_TOKEN header. It also confirms this is a pure read (Retrieve) and enumerates the returned fields, though it says nothing about 404/precondition behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then clearly labeled ENDPOINT, VENUE FIELDS, and AUTHENTICATION sections. The field list is longer than strictly necessary but earns its place as a stand-in for the absent output schema; no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description usefully supplies the return shape (id, name, address, age_restriction, capacity, latitude, longitude), a domain note that venues are grouped by Organization, and the auth requirement. It is nearly sufficient; only error/not-found behavior and the exact ID format are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100% for the single venue_id parameter, so the schema fully documents the input's format expectation. The description adds no extra semantics about the identifier (e.g., whether it is the numeric ID or a slug) beyond restating the field list of the entity, which is response data, not parameter guidance. Baseline 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Retrieve a Venue by ID') plus the exact endpoint GET /venues/{venue_id}/, so the agent knows precisely what this does and that it is a single-resource fetch rather than a list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the name and the 'by ID' phrasing; there is no explicit statement of when to prefer this over list_venues or what happens when the ID is unknown. A capable agent can infer the singleton-vs-list split, but nothing in the text routes it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_attendeesA

List Attendees by Event ID. Returns a paginated response.

ENDPOINT: GET /events/{event_id}/attendees/

ATTENDEE OBJECT: The Attendee object represents the details of Attendee (ticket holder to an Event). The model is one Attendee per each sold ticket. If the Event is specified to only collect information on the Order owner (the default), all returned Attendees have the same information, apart from the barcodes and Ticket Class ID. Attendee objects are considered private; meaning that all Attendee information is only available to the User and Order owner.

ATTENDEE FIELDS RETURNED:

  • created (datetime): Attendee creation date and time (i.e. when order was placed)

  • changed (datetime): Date and time of last change to Attendee

  • ticket_class_id (string): Ticket Class used by Attendee when registering

  • variant_id (string): Variant of Ticket Class used by Attendee when registering

  • ticket_class_name (string): Name of Ticket Class used by Attendee when registering

  • quantity (integer): Always 1

  • costs (attendee_cost): Attendee ticket cost breakdown

  • profile (attendee-profile): Attendee basic profile information

  • addresses (attendee-addresses): Attendee address

  • questions (attendee-questions, optional): Custom questions for the Attendee

  • answers (attendee-answers, optional): Attendee's answers to custom questions

  • barcodes (attendee-barcodes): Attendee's entry bar code

  • team (attendee-team, optional): Attendee team information

  • affiliate (attendee-affiliate, optional): Attendee's affiliate code

  • checked_in (boolean): true = Attendee checked in

  • cancelled (boolean): true = Attendee cancelled

  • refunded (boolean): true = Attendee receives a refund

  • status (string): Attendee status

  • event_id (string): Event ID of the Attendee's Event

  • order_id (string): Order ID under which this Attendee's ticket was purchased

  • guestlist_id (string): Guest list ID under which the Attendee is listed. A null value means that this Attendee is not a guest

  • invited_by (string): Attendee who invited guest. A null value means that this Attendee is not a guest

  • delivery_method (string): Ticket delivery method used for the Attendee. Can be will_call, electronic, standard_shipping or third_party_shipping

PARAMETERS:

  • event_id (string, required): Event ID

  • status (enum, optional): Filter Attendees by status • attending: Attendee's status is either Attending or Checked In • not_attending: Attendee's status is Not Attending or Deleted • unpaid: Attendee's Order is not paid

  • changed_since (datetime, optional): Filter Attendees changed on or after the specified time

  • last_item_seen (number, optional): When passed in conjunction with changed_since, filter Attendees changed on or after the specified time and with an ID later than the value of the last_item_seen field

  • attendee_ids (array[string], optional): Filter Attendees with the specified IDs

AVAILABLE EXPANSIONS: Use ?expand=expansion_name to include additional data:

  • event: Attendee's Event

  • order: Attendee's Order

  • promotional_code: Promotional Code applied to Attendee's Order

  • assigned_number: Attendee bib number, if one exists for a race or endurance Event

  • answers: Attendee answers to custom questions

  • survey: Custom questions presented to the Attendee

  • survey_responses: Attendee's responses to survey questions

  • assigned_unit: Attendee's seating assignment details if Event has reserved seating

  • contact_list_preferences: Opt-in preferences for the email address associated with the Attendee

PAGINATION: Returns paginated response with continuation token support

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter Attendees by status: attending (Attending or Checked In), not_attending (Not Attending or Deleted), unpaid (Order is not paid)
eventIdYesEvent ID (required)
pageSizeNoNumber of attendees to return per page (default: 50, max: 50)
continuationNoContinuation token for pagination

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does a fair job: it discloses pagination with continuation tokens, the required Bearer auth, the one-attendee-per-sold-ticket model, and that attendee data is private to the User and Order owner. It does not state rate limits or ordering guarantees, but the privacy and pagination context are meaningful additions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded correctly (purpose first) and organized under headers, but the exhaustive enumeration of 25 attendee fields and every expansion is long and reads like pasted API documentation. Much of the field detail is padding relative to the task of invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, the returned-field documentation is genuinely useful, and auth, pagination, endpoint, and filtering are all covered. Completeness is slightly undercut by describing parameters the schema does not expose, but overall an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so baseline is 3, but the description adds real value by documenting parameters absent from the schema (changed_since, last_item_seen, attendee_ids, and the ?expand= mechanism) along with filter semantics. The mismatch between these documented params and the actual schema is a minor weakness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a specific verb (List) and resource (Attendees), scopes it by Event ID, and notes the paginated nature. This clearly distinguishes it from the sibling get_attendee, which retrieves a single attendee.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the endpoint, filter parameters, and the distinction between listing and single-record retrieval, but there is no explicit statement of when to choose this tool over get_attendee or how the status/changed_since filters select it. No exclusions or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_categoriesA

List all categories.

ENDPOINT: GET /categories/

Returns paginated list of categories including subcategories nested.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does disclose useful behavior: the HTTP endpoint, the Bearer token auth requirement, pagination, and that subcategories come back nested. It omits pagination mechanics (page size, cursors), so it falls just short of fully self-sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The ENDPOINT and AUTHENTICATION sections are front-loaded and scannable, with no filler sentences. The label-heavy formatting is slightly verbose for such a simple read but every line carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only list tool with no output schema, the description supplies endpoints, auth, and a sketch of the return shape, which is close to sufficient. Pagination details and any filtering limits are the only notable omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to document and the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('List all categories') with the added detail that subcategories are nested, which meaningfully distinguishes it from the sibling list_subcategories. It stops short of explicitly routing between the two, so it does not reach a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the unfiltered 'list all' framing and the nested-subcategory note, but there is no explicit when-to-use statement or named alternative (e.g. list_subcategories, get_category) for an agent choosing between the many list_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_custom_questionsA

List custom Questions by Event.

ENDPOINT: GET /events/{event_id}/questions/

Returns paginated response with question array.

PARAMETERS:

  • as_owner (boolean): Return private events and fields

ERRORS (404):

  • NOT_FOUND: Event doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ownerNoReturn private events/fields
event_idYesEvent ID (required)

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses the response shape (paginated array of questions), the 404 NOT_FOUND error condition, and the required Bearer auth. It leaves out pagination parameters/limits and what fields each question contains, so it is not exhaustive, but it discloses more than most.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with the purpose and organized into labeled sections (ENDPOINT, PARAMETERS, ERRORS, AUTHENTICATION), which is easy to scan. It is slightly padded by the section headers for such a simple tool, but nothing is genuinely wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description supplies the endpoint, pagination behavior, error case, and auth requirement, which covers what an agent needs to call it. The absence of return-field detail is minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters; the description's note on as_owner ('Return private events and fields') merely restates the schema text. Baseline 3 is appropriate since it adds no syntax or format meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List custom Questions by Event' with the endpoint GET /events/{event_id}/questions/. This clearly distinguishes it from list_default_questions, though it does not explicitly name that sibling as an alternative. The 'custom' qualifier against siblings like list_default_questions is implied rather than spelled out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no named alternatives among the many question-related siblings (list_default_questions, get_custom_question, etc.). The 'by Event' phrasing implies the needed context (an event_id) but nothing about when this is the right tool over the default-question tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_default_questionsB

List default Questions by Event.

ENDPOINT: GET /events/{event_id}/canned_questions/

PARAMETERS:

  • include_all (boolean): Return whole list included or not

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
include_allNoReturn all questions

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It discloses the auth requirement (Bearer PERSONAL_OAUTH_TOKEN), which is useful, but says nothing about pagination, read-only nature, or what 'include_all' does behaviorally (e.g., includes deleted/inactive questions?).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the purpose, then endpoint and auth. It efficiently conveys the essential information without wasted words, though it could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema and full schema coverage, the description is adequate but missing key context: what happens when event_id is invalid, whether results are paginated, and how include_all alters the response. The auth requirement is a good addition, but more behavioral detail would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters (event_id, include_all) already have descriptions. The description adds a vague hint about include_all ('Return whole list included or not'), but the schema's 'Return all questions' is equally ambiguous. No syntax or default values are clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (default Questions by Event), and the endpoint confirms the scope. It is distinguishable from siblings like get_default_question (single) and list_custom_questions (different resource type), though it doesn't explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus list_custom_questions or get_default_question. The agent must infer usage from the name alone; there are no conditions, prerequisites, or alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_discountsA

List Discounts by Organization.

ENDPOINT: GET /organizations/{organization_id}/discounts/

Returns paginated response.

FILTERS:

  • scope (required): event, multi_events, user

  • code_filter: Approximate match code/name

  • code: Exact match code/name

  • type: coded, access, public, hold

  • ticket_group_id: Ticket Group ID

  • event_id: Event ID (required for event scope)

  • order_by: code_asc, code_desc, discount_type_asc, discount_type_desc, start_asc, start_desc

  • hold_ids: Hold IDs (format: H123 or I123)

ERRORS (400):

  • CODE_AND_CODE_FILTER_PROVIDED: Only one of code or code_filter

  • INVALID_USAGE_FOR_EVENT_ID: Event ID cannot be used with multi_events scope

  • ORDER_BY_NOT_SUPPORTED: Must provide code or code_filter for sorting

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoExact match
typeNoType filter
scopeYesScope: event, multi_events, user (required)
event_idNoEvent ID
hold_idsNoHold IDs
order_byNoSort order
code_filterNoApproximate match
organization_idYesOrganization ID (required)
ticket_group_idNoTicket Group ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it declares the auth requirement (Bearer PERSONAL_OAUTH_TOKEN), that the response is paginated, and enumerates three 400 error codes with their triggers. It stops short of describing pagination mechanics (page size/cursor) and the response shape, but the safety and failure profile is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The one-line purpose and endpoint are front-loaded, then labeled sections (FILTERS, ERRORS, AUTHENTICATION) make it scannable. It is on the long side, but every line carries actionable constraint detail rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, two-required read tool with no annotations, no enums in the schema, and no output schema, the description supplies the missing enums, cross-field constraints, auth, and error semantics, and notes the paginated return. Only the pagination controls and response fields are left unspecified, which is a minor remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3, but the description goes beyond it by supplying enum values the schema omits entirely: scope (event, multi_events, user), type (coded, access, public, hold), order_by (code_asc, code_desc, discount_type_asc/desc, start_asc/desc), and hold_ids format (H123 or I123). It also clarifies code vs code_filter semantics and the code/name matching distinction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List Discounts by Organization') plus the concrete endpoint GET /organizations/{organization_id}/discounts/, which lets an agent immediately distinguish it from singleton siblings like get_discount. It does not explicitly contrast with create_discount/update_discount, but the read-list framing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a dedicated FILTERS block with required scope values and, crucially, conditional rules: 'event_id (required for event scope)' and 'order_by... Must provide code or code_filter for sorting'. These are explicit when-to-use / when-not-to-use constraints an agent can act on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_eventsB

List Events by Organization ID. Returns a paginated response.

ENDPOINT: GET /organizations/{organization_id}/events/

PARAMETERS:

  • organization_id (string, required): Organization ID

  • name_filter (string, optional): Filter Organization's Events by specified name

  • currency_filter (string, optional): Filter Organization's Events by specified currency (e.g., USD)

  • order_by (enum, optional): Sort order for the list of Events • start_asc, start_desc, created_asc, created_desc, name_asc, name_desc

  • series_filter (array[enum], optional): Filter based on whether an event is not a series, a series, child series or parent series. This filter has higher precedence than show_series_parent filter. Default will use show_series_parent filter behavior. • allevents: non-series & child series & parent series. Equivalent to [children,parents,nonseries] or [allevents,nonseries] • children: only child series • parents: only parent series • nonseries: non-series events • allseries: only series events. Equivalent to [children,parents]

  • show_series_parent (boolean, optional): false (Default) = In the list, show the series children and not series parent. true = In the list, show the series parent instead of series children.

  • status (enum, optional): Filter Organization's Events by status. Specify multiple status values as a comma delimited string. • draft: A preliminary form of a possible future Event • live: The Event can accept registrations or purchases if ticket classes are available • started: The Event start date has passed • ended: The Event end date has passed • completed: The funds for your Event have been paid out • canceled: The Event has been canceled • all: List Events with any status

  • event_group_id (string, optional): Filter Organization's Events by event_group_id

  • collection_id (string, optional): Filter Organization's Events by collection_id

  • page_size (number, optional): Number of records to display on each page of the list (default: 50)

  • time_filter (string, optional): Limits the list results to either past or current and future Events • all, past, current_future

  • venue_filter (array, optional): Filter Organization's Events by Venue ID

  • organizer_filter (array, optional): Filter Organization's Events by Organizer ID

  • inventory_type_filter (array[enum], optional): Filter Organization's Events by Inventory Type • limited: limited quantity inventory/GA • reserved: Reserved inventory • externally_ticketed: Externally ticketed event (no inventory)

  • event_ids_to_exclude (array[string], optional): IDs of events to exclude from the Organization's Events list

  • event_ids (array[string], optional): IDs of events to include from the Organization's Events list

  • collection_ids_to_exclude (array[string], optional): IDs of collections to exclude from the Organization's Events list. This will have precedence over event_group_id filter and collection_id filter.

ERROR RESPONSES:

  • 400 ARGUMENTS_ERROR: There are errors with your arguments

  • 404 NOT_FOUND: The organization_id you requested does not exist

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter events by status
orderByNoSort order for the list of Events
pageSizeNoNumber of records to display on each page (default: 50)
continuationNoContinuation token for pagination
organizationIdNoOrganization ID (required)

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden. It discloses the GET endpoint, pagination, default series behavior, and 400/404 error responses, but it omits authentication requirements, rate limits, and other operational constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is clear and front-loaded, but the bulk of the description is a long parameter section that largely duplicates the schema and includes many parameters that do not exist in the tool's actual input schema. This makes it overly verbose for an MCP definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides rich API-style context, but it is not aligned with the actual input schema: it omits the continuation token and documents many non-schema filters. For a tool with no annotations and no output schema, this mismatch leaves the definition unreliable for accurate invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds enum meanings for status and order values, but its parameter list names many parameters not present in the actual input schema and uses mismatched names such as organization_id versus organizationId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (List), resource (Events), and scope (by Organization ID), which separates it from siblings like get_event and list_events_by_series. An agent can identify the core operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains filters and precedence but never states when to use list_events versus alternatives such as list_events_by_series or get_event. It provides parameter behavior rather than usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_events_by_seriesB

List Events by Event Series ID.

ENDPOINT: GET /series/{event_series_id}/events/

Returns paginated response.

PARAMETERS:

  • time_filter: all, past, current_future

  • order_by: start_asc, start_desc, created_asc, created_desc

  • start_date.range_start, start_date.range_end: Date range

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
order_byNoSort order
time_filterNoTime filter
event_series_idYesEvent Series ID (required)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It states that the response is paginated and that authentication requires a Bearer token, which is useful. However, it omits pagination parameters and limits, error behavior, and ordering defaults beyond the enum-like values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the purpose, endpoint, parameters, and authentication in a clear labeled structure. It is efficient, though the parameter list could be tightened if the schema already covers it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated list endpoint with no output schema and no annotations, the description covers the core call requirements (endpoint, auth, main parameters) but leaves pagination controls and return structure unspecified, which an agent would need for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter documentation already exists in the schema. The description lists time_filter and order_by values and the date range parameters, adding minor value by enumerating possible values, but it does not cover event_series_id semantics beyond 'required'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List Events by Event Series ID', and the ENDPOINT line names the resource path GET /series/{event_series_id}/events/. This clearly distinguishes it from sibling list tools like list_events, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming the required event_series_id and the endpoint, but it does not say when to prefer this over the sibling list_events tool or what happens if the ID is unknown. Usage is inferrable but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_fee_ratesA

List all available Pricing rates.

ENDPOINT: GET /pricing/fee_rates/

Returns paginated response.

PARAMETERS (all required):

  • country: ISO 3166 alpha-2 code

  • currency: ISO 4217 3-character code

  • plan: any, package1, package2

  • payment_type: any, eventbrite, authnet, moneris, paypal, google, manual, free, offline, cash, check, invoice

  • channel: any, atd, web

  • item_type: any, ticket, product

ERRORS (400):

  • INVALID_CURRENCY_COUNTRY_COMBINATION, ARGUMENTS_ERROR

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
planNoPlan
channelNoChannel
countryYesCountry code (required)
currencyYesCurrency code (required)
item_typeNoItem type
payment_typeNoPayment type

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the HTTP endpoint, that the response is paginated, the required bearer-token authentication, and the 400 error codes. The 'PARAMETERS (all required)' claim conflicts with the schema's two required fields, which slightly undercuts the accuracy of the disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Clearly front-loaded with purpose then endpoint, parameters, errors and auth, with no filler prose. However, labeling all parameters as required is misleading bulk that a reader must reconcile against the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a filtered list endpoint with no output schema, it covers the endpoint, pagination, allowed parameter values, error codes and auth requirements. The only material gap is the absence of when-to-use context, and the incorrect 'all required' statement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents 100% of parameters but only with terse labels like 'Plan' and 'Channel'. The description adds real value by enumerating the accepted values for plan, payment_type, channel and item_type and specifying ISO 3166/ISO 4217 formats for country and currency, information absent from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all available Pricing rates') and names the endpoint, so an agent knows exactly what it retrieves. It does not differentiate itself from the semantically adjacent sibling calculate_item_pricing, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus alternatives such as calculate_item_pricing, nor which filters should be used in which scenario. The agent is left to infer everything about applicability from the parameter list alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_formatsB

List all available formats.

ENDPOINT: GET /formats/

Returns paginated response.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does add some real value: it discloses the HTTP method/path (GET /formats/), warns that the response is paginated, and explicitly states the required bearer token auth. It still omits what a 'format' object contains and how pagination is driven (the schema exposes no page/cursor parameters, which is unexplained).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose in the first sentence, followed by tightly scoped endpoint, pagination, and auth facts. Slightly mechanical in structure but no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple parameterless list tool this is close to adequate, but with no output schema and no annotations the description should describe what a format record looks like and how the claimed pagination is actually controlled, since the input schema exposes no paging arguments.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; there are no parameter semantics the description needs to clarify.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all available formats'), which is clear on its own. However, it never distinguishes itself from the sibling get_format, which presumably retrieves a single format, so sibling differentiation is missing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus get_format or any other listing tool. No prerequisites, conditions, or alternatives are mentioned; the agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_inventory_tiersA

List Inventory Tiers for an Event.

ENDPOINT: GET /events/{event_id}/inventory_tiers/

FILTERS:

  • seatmap_number: Filter by tier group

  • count_against_event_capacity: Filter by whether tier counts toward capacity

ERRORS (403):

  • NOT_AUTHORIZED

ERRORS (404):

  • NOT_FOUND: Event doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
seatmap_numberNoFilter by tier group
count_against_event_capacityNoFilter by capacity counting

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It usefully discloses the HTTP method and path, Bearer-token authentication requirements, and specific 403/404 error semantics. It does not cover pagination or rate limits, but the auth and error details are substantial transparency beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and uses clear sections for endpoint, filters, errors, and authentication. Every line is relevant, and no sentence is wasted or redundant without purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with no annotations and no output schema, the description covers important invocation context: auth, endpoint, filters, and error behavior. It still omits return-shape and pagination details, but it is largely complete for selecting and correctly calling the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The description repeats the filter meanings ('Filter by tier group', 'Filter by whether tier counts toward capacity') but adds no syntax, format, or usage detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'List Inventory Tiers for an Event.' It also states the exact endpoint, making the tool's scope unambiguous. This clearly distinguishes it from sibling tools like get_inventory_tier, create_inventory_tier, and update_inventory_tier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming the required event context and available filters, but it does not explicitly say when to use this tool versus get_inventory_tier or other inventory-tier siblings. There are no exclusions or alternative-tool routing instructions, so the agent must infer proper usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ordersA

List orders for an event or organization.

ENDPOINT: GET /events/{event_id}/orders/ OR GET /organizations/{organization_id}/orders/

Returns paginated list of orders. Orders are private - only available to authorized users.

FILTERING OPTIONS:

  • status: Filter by order status

    • active: Attending orders

    • inactive: Not attending orders

    • both: All orders

    • all_not_deleted: Active and inactive, but not deleted

  • changed_since (datetime): Only orders changed on/after this time (ISO 8601)

  • last_item_seen (string): With changed_since, orders after this time with ID > last_item_seen

  • only_emails (array): Only include orders from these email addresses

  • exclude_emails (array): Exclude orders from these email addresses

  • refund_request_statuses (array, event only): Filter by refund status

    • completed, pending, outside_policy, disputed, denied

ORDER FIELDS RETURNED:

  • created, changed: Timestamps

  • name, first_name, last_name, email: Order owner info

  • costs: Complete breakdown (base_price, display_price, eventbrite_fee, payment_fee, tax, gross, discount_amount, discount_type)

  • event_id: Event ID

  • time_remaining: Seconds to complete

  • status: Order status

  • promo_code (optional): Discount code

RESPONSE:

  • orders (array): List of Order objects

  • pagination: Pagination information

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter: active, inactive, both, all_not_deleted
event_idNoEvent ID (use this OR organization_id)
only_emailsNoInclude these emails
changed_sinceNoISO 8601 datetime
exclude_emailsNoExclude these emails
last_item_seenNoFor pagination with changed_since
organization_idNoOrganization ID (use this OR event_id)
refund_request_statusesNoEvent only: completed, pending, outside_policy, disputed, denied

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden, and it does well: it discloses pagination, that orders are private and limited to authorized users, and the required Bearer token auth. It stops short of detailing rate limits, result caps, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is well-organized with labeled sections (FILTERING OPTIONS, RESPONSE, AUTHENTICATION), but it is quite long and spends a large block on ORDER FIELDS RETURNED, which overlaps with the RESPONSE/return-value territory. Some repetition of schema content reduces efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description appropriately explains returned fields and the orders/pagination response shape, auth requirements, and filtering. It is fairly complete for an 8-parameter list tool, with only minor gaps such as pagination limits or default status behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description enumerates the filtering options and status enum values (active, inactive, both, all_not_deleted) and refund_request_statuses values, adding some enum clarity beyond the schema, but largely mirrors the schema fields. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (orders) with clear scoping to an event or organization. It does not differentiate from the sibling get_order (single order) beyond the plural resource name, so it falls short of the clearest sibling-aware framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The event_id vs organization_id endpoints imply context, and status descriptions hint at use cases, but the description never explicitly says when to use this vs get_order or other listing tools. Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_organization_membersB

List Members of an Organization.

ENDPOINT: GET /organizations/{organization_id}/members/

Returns paginated response.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYesOrganization ID (required)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral load. It does supply useful context: the GET endpoint implies a read-only operation, it states the response is paginated, and it specifies the Bearer token auth requirement. It omits rate limits, failure modes, and the shape of each member record, so it is helpful but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then layers endpoint, pagination, and auth in labeled blocks. Every line carries information, though the header-style formatting is slightly heavier than a single plain sentence would be. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter list tool with no output schema, the description covers what an agent needs to invoke it: endpoint, pagination behavior, and auth. It could say more about the returned member fields, but nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single required organization_id, so the schema already documents the parameter fully. The description only repeats organization_id inside the endpoint template, adding no new meaning. Baseline 3 is appropriate when the schema does the lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('List Members of an Organization'), which an agent can immediately map to a read of organization membership. It does not, however, distinguish itself from related siblings such as list_organization_roles or list_organizations, so the boundary relies on the natural reading of the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus the many sibling list tools (list_organizations, list_organization_roles), and no prerequisites beyond the auth note. The agent is told what it does but not when it is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_organization_rolesA

List Roles by Organization.

ENDPOINT: GET /organizations/{organization_id}/roles/

Organization Role represents set of permissions owned by Organization.

Returns paginated response.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYesOrganization ID (required)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose two behavioral traits beyond the schema: the response is paginated and the call requires Authorization: Bearer PERSONAL_OAUTH_TOKEN. It does not state read-only safety explicitly, but 'List' plus the auth disclosure covers the essentials a caller needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then structured ENDPOINT and AUTHENTICATION blocks that are easy to scan. The definitional line about what a Role represents is useful rather than filler, though the formatting is slightly verbose for a one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description's note that the response is paginated does useful work, and auth is covered. For a simple one-required-param list tool, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is already documented as 'Organization ID (required)'. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List Roles by Organization') and even names the underlying endpoint GET /organizations/{organization_id}/roles/. It defines what an Organization Role is, so an agent understands the entity. Sibling listing tools (list_organization_members, list_organizations) aren't explicitly contrasted, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the verb 'List' and the required organization_id, but there is no explicit when-to-use guidance or routing to alternatives such as list_organization_members. Adequate but leaves the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_organizationsA

List organizations that the authenticated user is a member of.

ENDPOINT: GET /users/me/organizations/

An Organization represents a business structure (like a Marketing department) where Events are created and managed. Organizations are owned by one User and can have multiple Members.

Organizations group Members, Roles, Venues, and Assortments.

IMPORTANT: The organization_id returned by this endpoint must be obtained via API request. It is NOT the same as the organizer_id found in an Organizer Profile URL.

ORGANIZATION OBJECT FIELDS:

  • id (string): Organization ID (required for API calls like creating events, listing organization events)

  • name (string): Organization name

  • image_id (string, optional): ID of organization image

  • vertical (string): Business vertical type

    • default: Default business type

    • music: Music business type

USE CASES:

  • Get organization IDs needed for other API operations

  • Create events under an organization (requires organization_id)

  • List events for an organization

  • Manage organization members and roles

RESPONSE:

  • organizations (array): List of Organization objects

  • pagination: Pagination information

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the auth requirement (Bearer PERSONAL_OAUTH_TOKEN) and a critical gotcha that organization_id differs from organizer_id in an Organizer Profile URL. It does not describe pagination mechanics or rate limits, but the safety and identity context is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is long but deliberately sectioned (ENDPOINT, object fields, USE CASES, RESPONSE, AUTHENTICATION) and front-loads purpose before detail. Some content, such as the vertical enum listing, is arguably more than a list tool needs, but nothing is disorganized or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, no-output-schema list tool, the description supplies everything needed: the endpoint, authentication requirement, a disambiguation caveat, the returned fields, and pagination presence. An agent has no unanswered questions required to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies. The description goes further by documenting the Organization object fields returned (id, name, image_id, vertical), which compensates for the absence of an output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb (List) and resource (organizations) with a precise scope constraint (the authenticated user is a member of), which cleanly separates it from get_organization and list_organization_members. An agent can distinguish this from all siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The USE CASES block gives concrete reasons to call it (obtaining organization_id for event creation, listing org events, managing members), which is strong positive guidance. It does not, however, name alternatives or exclusions (e.g., when to use get_organization or get_current_user instead), so it stops short of a full when/when-not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_seat_mapsA

List Seat Maps by Organization.

ENDPOINT: GET /organizations/{organization_id}/seatmaps/

PARAMETERS:

  • venue_id: Filter by venue

  • venue_name_filter: Filter by venue name substring

WARNING: Response not paginated yet, will be paginated soon.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
venue_idNoVenue ID filter
organization_idYesOrganization ID (required)
venue_name_filterNoVenue name filter

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose two non-obvious traits: the response is currently unpaginated (with a warning it will change) and authentication requires a Bearer personal OAuth token. It does not state the result ordering, size, or read-only guarantees, but the pagination and auth notes are genuinely useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The header-style layout is front-loaded and scannable: purpose, endpoint, parameters, warning, auth. Every line carries information, though the endpoint and parameter list partly duplicate the schema, adding mild redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter list tool with no output schema and no annotations, the description supplies endpoint, auth, and a pagination caveat — enough for an agent to call it correctly. It omits any hint about the response shape or typical result volume, which is the main remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the schema documents all three parameters. The description largely repeats them, adding only one useful nuance — that venue_name_filter matches on a name substring — so it hovers at the baseline for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'List Seat Maps by Organization', and even names the underlying endpoint GET /organizations/{organization_id}/seatmaps/. This clearly distinguishes it from the sibling create_seat_map, but it does not explicitly reference alternatives or describe what a 'seat map' contains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what it lists but never states when to use it versus create_seat_map or how the two venue filters interact (e.g., whether venue_id and venue_name_filter are mutually exclusive or combined). Usage is only implied by the verb 'List'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_subcategoriesB

List all subcategories.

ENDPOINT: GET /subcategories/

Returns paginated response.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully adds that responses are paginated and that an Authorization bearer token is required, which structured fields do not convey. It stops short of describing the pagination contract (page size, cursors, total counts) or failure modes, so real behavioral gaps remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the ENDPOINT/AUTH blocks are terse and scannable. The formatting is slightly template-like, but every line carries information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list endpoint with no output schema, the description covers the essentials: what it returns (paginated) and how to authenticate. The absence of the actual pagination mechanism is the only meaningful omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema-baseline of 4 applies. The description correctly exposes no parameters and adds no spurious ones.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all subcategories'), so the operation is unambiguous. It does not differentiate itself from the near-identical siblings list_categories, list_formats, or get_subcategory, so an agent must infer the distinction from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance: no indication of when to call this versus list_categories or get_subcategory, and no stated prerequisites other than the auth header. The tool is simple enough that this is a minor gap, but nothing routes the agent explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ticket_classesA

List all ticket classes for an event.

ENDPOINT: GET /events/{event_id}/ticket_classes/

Returns paginated list of ticket classes with complete details including name, description, cost, fee, capacity, quantity_sold, sales dates, hidden status, and delivery methods.

TICKET CLASS TYPES:

  • Free: No cost, no payout info required

  • Paid: Has cost in event's currency

  • Donation: Buyer enters amount at checkout

RESPONSE INCLUDES:

  • ticket_classes (array): List of Ticket Class objects

  • pagination: Pagination information

TICKET CLASS FIELDS RETURNED: PUBLIC:

  • name, description, sorting, cost, fee

  • donation, free, minimum_quantity, maximum_quantity

  • has_pdf_ticket, delivery_methods, on_sale_status, image_id

PRIVATE (Organization Members):

  • capacity, quantity_sold, hidden

  • sales_start, sales_end, sales_end_relative, sales_start_after

  • include_fee, split_fee, hide_description, hide_sale_dates

  • auto_hide, auto_hide_before, auto_hide_after

  • order_confirmation_message, secondary_assignment_enabled

FILTERING:

  • pos (optional): Filter by point of sale

    • online: Online sales

    • at_the_door: At-the-door sales

    • lock_box: Lock box sales

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
posNoFilter by point of sale (optional): online, at_the_door, lock_box
event_idYesEvent ID (required)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it states the operation is a paginated GET, discloses the required Bearer token auth, and importantly notes that certain fields (capacity, quantity_sold, hidden, sales dates) are only visible to Organization Members. It omits rate limits and error behavior, but covers the key behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is correctly front-loaded, but the exhaustive enumeration of every returned field across PUBLIC and PRIVATE tiers is bloated and largely redundant detail that outweighs its usefulness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so documenting the response shape and field tiers is genuinely necessary and largely done. Auth, filtering, and response structure are all covered, making the definition adequate to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so 3 is the baseline, but the description adds value by explaining the meaning of each pos value (online/at_the_door/lock_box sales) and confirming event_id is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource with scope: 'List all ticket classes for an event.' This clearly distinguishes it from the sibling retrieval tool get_ticket_class (singular) and the mutation siblings create/update_ticket_class.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to use this tool versus alternatives such as get_ticket_class, nor does it describe prerequisites or contexts of use. The only conditional guidance is on the pos filter values, not on selecting the tool itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_venuesB

List Venues by Organization.

ENDPOINT: GET /organizations/{organization_id}/venues/

Returns paginated response.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYesOrganization ID (required)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does add real behavioral context: it notes the operation is a GET, that a Bearer token is required, and that the response is paginated. However it omits pagination mechanics, rate limits, and any explicit read-only/reversibility statement, leaving meaningful gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded with the purpose and broken into labeled sections (endpoint, response, auth) that are easy to scan. It is slightly over-structured for a one-parameter list tool, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with no output schema, the description covers the endpoint, auth requirement, and pagination, which is nearly everything an agent needs. The main gap is that it never clarifies the distinction from the single-item get_venue sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (organization_id) with 100% schema description coverage, so the schema already documents it adequately. The description adds nothing beyond the schema about the parameter's format or role, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List Venues') scoped by organization, which is unambiguous. It does not differentiate itself from the sibling read tool get_venue or the write siblings create_venue/update_venue, so it falls short of the 5 bar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The tool name and 'by Organization' phrasing imply you use it to enumerate an org's venues, but there is no explicit when-to-use, no mention of alternatives like get_venue for a single venue, and no stated prerequisites for pagination or filtering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_webhooksA

List Webhooks by Organization ID.

ENDPOINT: GET /organizations/{organization_id}/webhooks/

Returns paginated response.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYesOrganization ID (required)

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose useful behavior: GET method, paginated response, and Bearer token authentication. It does not cover potential rate limits, error behavior, or detailed pagination mechanics beyond the fact that the response is paginated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise and well-structured: purpose first, then endpoint, response behavior, and authentication. Every line is brief and relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter list tool, the description supplies enough context to call it correctly: endpoint, required auth, and paginated return note. Without an output schema, it could say more about the returned webhook fields, but the missing detail is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single parameter is already documented as required. The description repeats 'by Organization ID' and adds the endpoint path, but provides no additional semantic detail beyond what the schema supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List Webhooks') plus a scoping constraint ('by Organization ID'). It is clearly distinguishable from create_webhook and delete_webhook, but it does not explicitly name those siblings or highlight the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives no when-to-use guidance, no conditions for choosing this tool over alternatives, and no exclusions. The endpoint and auth requirement are contextual details rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_eventA

Publish an Event.

ENDPOINT: POST /events/{event_id}/publish/

In order for publish to be permitted, the event must have all necessary information, including a name and description, an organizer, at least one ticket, and valid payment options. This API endpoint will return argument errors for event fields that fail to validate the publish requirements. Returns a boolean indicating success or failure of the publish.

If the event is a series parent, all occurrences in the series must be in a valid state to be published. Publishing the series parent will publish all series occurrences.

Deleted Events cannot be published.

REQUIREMENTS FOR PUBLISHING:

  • Event must have a name

  • Event must have a description or summary

  • Event must have an organizer

  • Event must have at least one ticket class

  • If event has paid tickets, must have valid payment options configured:

    • Payment country must be set

    • Payment type must be configured

    • If using PayPal, PayPal email must be specified

    • Split fees are not supported (deprecated)

SERIES PARENT EVENTS:

  • All occurrences must be in valid state

  • Publishing parent publishes all occurrences

  • Must have at least one date scheduled

RESPONSE: Returns object with:

  • published (boolean): true if successfully published

POSSIBLE ERRORS (400):

  • ALREADY_PUBLISHED_OR_DELETED: Event already published or deleted

  • NO_PAYMENT_OPTIONS: Event has paid tickets but no payment options configured

  • PAYMENT_OPTIONS_DEPRECATED_SPLIT_FEES: Split fees configured (no longer supported)

  • PAYMENT_OPTIONS_NO_COUNTRY: Paid tickets but no payment country configured

  • PAYMENT_OPTIONS_NO_PAYMENT_TYPE: Paid tickets but no payment type configured

  • PAYMENT_OPTIONS_PAYPAL_NO_EMAIL: PayPal configured but no email specified

  • PUBLISH_FREE_EVENT_FEATURE_DENIED: Reached limit of free events in Professional plan

  • ERROR_CANNOT_PUBLISH_SERIES_WITH_NO_DATES: Series must have at least one date scheduled

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: it discloses the auth requirement (Bearer token), the mutation semantics, the series-propagation side effect (publishing a parent publishes all occurrences), the boolean success response, and a full enumerated error taxonomy with codes and causes. This is substantially more than a bare 'publishes an event'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with labeled sections (REQUIREMENTS, SERIES PARENT, RESPONSE, ERRORS, AUTH) and front-loaded with the endpoint and intent. However, the publish requirements are partially duplicated between the narrative paragraph and the bulleted REQUIREMENTS list, which is mild redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param mutation tool with no output schema, the description covers prerequisites, side effects on series, error conditions, response shape, and authentication. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (event_id) with 100% schema description coverage, so the baseline is 3. The description mentions event_id only implicitly through the endpoint path and adds no format, type, or sourcing detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Publish an Event') and gives the exact endpoint (POST /events/{event_id}/publish/). It is trivially distinguishable from the sibling unpublish_event, so an agent can route correctly without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a rich when-permitted context: all validation requirements, series-parent semantics, and the fact that deleted events cannot be published. It does not explicitly name unpublish_event as the inverse alternative, so it stops short of full alternative routing, but the usage conditions are otherwise explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_structured_contentA

Set structured content for event (create/update).

ENDPOINT: POST /events/{id}/structured_content/{version}/

Structured content = modules (text, image, video) + widgets (agenda, faqs). Must send publish=true with modules to make visible to public.

MODULE TYPES:

  • text: Text content with HTML

  • image: Image with ID and URL

  • video: Video embed

WIDGET TYPES:

  • agenda: Event schedule with tabs/slots/hosts

  • faqs: FAQ list

PURPOSE:

  • listing (default): Event description

  • digital_content: Online Event Page

ERRORS (400):

  • NOT_AUTHORIZED: No permission

  • PAGE_VERSION_DISCONTINUITY: Version mismatch

  • MODULES_LIMIT_REACHED: Max 100 modules

  • PAGE_VERSION_LIMIT_REACHED: Max 5000 versions

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
modulesYesContent modules (required)
publishNoPublish after saving
purposeNolisting or digital_content
versionYesVersion number (required)
widgetsNoContent widgets
event_idYesEvent ID (required)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the endpoint, auth requirement, the publish-for-visibility behavior, concrete limits (100 modules, 5000 versions), and enumerated 400 error codes. It stops short of describing idempotency, overwrite semantics for existing content, or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Header-delimited sections are front-loaded and scannable, with the core action first and operational details after. It runs a bit long and some lines (e.g. restating auth) could be trimmed, but nothing is wasteful enough to hurt.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema or annotations exist, so the description must cover behavior, and it does cover endpoint, auth, limits, error cases, and content model. It omits return value expectations and any guidance on version handling beyond the discontinuity error, which is the main remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the terse schema descriptions: module types (text/image/video), widget types (agenda/faqs), and the listing vs digital_content purpose values. That materially helps an agent construct the payload.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set structured content for event (create/update)') and clarifies what structured content actually is (modules + widgets). An agent can distinguish it from the sibling get_structured_content without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the create/update framing and the note that publish=true is needed for public visibility, but it never explicitly states when to call this versus get_structured_content or which scenarios warrant update vs create. The module/widget/purpose breakdown gives useful context but no clear when-to-use routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unpublish_eventA

Unpublish an Event.

ENDPOINT: POST /events/{event_id}/unpublish/

Returns boolean indicating success or failure of unpublish action.

UNPUBLISH REQUIREMENTS:

  • Free Event (including past): Must not have pending or completed orders

  • Paid Event (completed/paid out): Can be unpublished

  • Paid Event (not completed): Can only unpublish if no pending or completed orders

SERIES PARENT EVENTS:

  • All occurrences must be in valid state to unpublish

  • Unpublishing parent unpublishes all occurrences

  • Series occurrence cannot be unpublished individually

RESPONSE:

  • unpublished (boolean): true if successfully unpublished

POSSIBLE ERRORS (400):

  • NOT_PUBLISHED: Event not currently published, cannot unpublish

  • CANNOT_UNPUBLISH: Cannot unpublish event with pending/completed sales (unless past/completed/paid out for paid tickets), or if series parent has occurrences in invalid state, or if trying to unpublish individual series occurrence

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it discloses the auth requirement (Bearer PERSONAL_OAUTH_TOKEN), the boolean return shape, the cascade behavior (unpublishing a parent unpublishes all occurrences), and specific 400 error codes with their meanings. This is unusually thorough behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Headers segment the content well and the purpose is front-loaded, but the error section partially re-states the unpublish requirements already listed above, adding some redundancy. Still appropriately sized for the number of edge cases.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description compensates by describing the return value and enumerating failure modes, plus auth and series interactions. An agent has everything needed to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single event_id parameter and the description adds no format or syntax detail beyond its use in the endpoint path. Baseline 3 applies when the schema already documents the parameter fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Unpublish an Event') plus the exact endpoint POST /events/{event_id}/unpublish/, making it trivially distinguishable from the inverse sibling publish_event. Nothing about the core action is left ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The UNPUBLISH REQUIREMENTS block gives explicit per-state conditions (free/paid/completed) and the SERIES PARENT EVENTS block explains when the action is prohibited, which is strong when/when-not guidance. It stops short of naming alternatives such as cancel_event or delete_event, so a 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_capacity_tierA

Update capacity tier for an event.

ENDPOINT: POST /events/{event_id}/capacity_tier/

Supports partial updates. Can create/update/delete GA capacity hold inventory tiers.

ERRORS (400):

  • ARGUMENTS_ERROR, HAS_ATTENDEES, CAPACITY_TOTAL_TOO_SMALL, HOLD_QUANTITIES_EXCEEDS_REMAINING_CAPACITY

ERRORS (403):

  • NOT_AUTHORIZED

ERRORS (404):

  • NOT_FOUND

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
holdsNoHold inventory tiers
event_idYesEvent ID (required)
capacity_totalNoTotal capacity

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and does so well: it discloses the mutation endpoint, partial-update support, create/update/delete effects on GA capacity hold inventory tiers, specific 400/403/404 error classes, and the required Bearer token authentication.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well structured and front-loaded: purpose first, then endpoint, update behavior, error classes, and authentication. Each section earns its place by giving operationally relevant information without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation tool with no annotations and no output schema, the description is largely complete: it covers endpoint, partial updates, mutation scope, errors, and auth. It still lacks guidance on sibling alternatives and does not describe the response shape, which is a minor gap given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema by stating partial updates are supported and by clarifying that 'holds' corresponds to GA capacity hold inventory tiers, which is more specific than the schema's generic 'Hold inventory tiers' description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Update capacity tier for an event.' The description also clarifies that it supports partial updates and can create/update/delete GA capacity hold inventory tiers. However, it does not explicitly differentiate this tool from siblings such as get_capacity_tier or update_inventory_tier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides endpoint and operational mechanics but no explicit when-to-use or when-not-to-use guidance. It does not name alternatives or conditions that would route an agent to get_capacity_tier, update_inventory_tier, or other sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_default_questionB

Update Default Question by ID.

ENDPOINT: POST /events/{event_id}/canned_questions/{question_id}/

ERRORS (400):

  • ARGUMENTS_ERROR

ERRORS (404):

  • NOT_FOUND: Event doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
questionNoQuestion object
question_idYesQuestion ID (required)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden; it does disclose the auth requirement (Bearer PERSONAL_OAUTH_TOKEN) and error behavior (400 ARGUMENTS_ERROR, 404 NOT_FOUND when the event is missing), which is genuinely useful. However, it omits the mutation's side effects, whether the update is partial or full-replace, and what happens to existing question fields not supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is grouped into purpose, endpoint, errors, and auth with clear headers, and the purpose is front-loaded. Some boilerplate (labels like ERRORS (400)) is repeated, but the definition stays compact with no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers endpoint, auth, and error surface but leaves meaningful questions open: which fields of the 'question' object are updatable, whether updates are partial, and what a successful response contains. It is adequate but not complete for a write operation with a nested-object parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The endpoint path ('events/{event_id}/canned_questions/{question_id}/') corroborates the role of event_id and question_id, but the description adds nothing about the 'question' object's expected fields or shape, leaving the nested-object parameter underexplained relative to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb (Update) plus resource (Default Question) scoped by ID, which lets an agent distinguish it from get/list/create/delete_default_question siblings. It stops short of explicitly naming those siblings or the conditions that select this one, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives the endpoint, error codes, and auth but never says when to use update vs create_default_question or get_default_question, nor any precondition beyond the existence of the event. No when/when-not guidance or alternatives are offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_discountB

Update a Discount by ID.

ENDPOINT: POST /discounts/{discount_id}/

Same fields as create_discount.

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoDiscount code/name
typeNoType: access, coded, public, hold
end_dateNoEnd date
event_idNoEvent ID
amount_offNoFixed amount off
start_dateNoStart date
discount_idYesDiscount ID (required)
percent_offNoPercentage off
ticket_class_idsNoTicket Class IDs
quantity_availableNoUsage limit

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the HTTP method/endpoint and the required auth scheme (Bearer PERSONAL_OAUTH_TOKEN), which are genuinely useful behavioral traits. It omits key mutation semantics: whether unspecified fields are cleared (full replace) or preserved (partial update), and any error/reversibility behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The ENDPOINT and AUTHENTICATION section headers make it well organized and front-loaded with the core action. The cross-reference 'Same fields as create_discount' is compact but forces the agent to look up another tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description must stand alone. It covers endpoint and auth, and the 10 parameters are fully described in the schema, but it leaves the important update-semantics question (partial vs full replacement) unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the schema and the baseline is 3. The description only adds 'Same fields as create_discount', which points to a sibling rather than enriching parameter meaning, so it does not exceed the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Update a Discount by ID') so the agent immediately knows what it does. It does not, however, distinguish itself from its closest siblings (create_discount, get_discount, delete_discount) beyond the plain verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no exclusions, and no comparison to alternatives like create_discount or delete_discount. The reference to create_discount addresses field structure, not usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_display_settingsB

Update Display Settings for an Event.

ENDPOINT: POST /events/{event_id}/display_settings/

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
display_settingsNoDisplay settings object

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does disclose the auth requirement and endpoint, which is useful. However, it never says whether display_settings is merged or replaced wholesale, what happens to unspecified fields, or what permissions beyond a bearer token are needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short and front-loaded, with ENDPOINT and AUTHENTICATION broken into labeled blocks. Efficient, though the auth line is boilerplate that repeats what the schema-adjacent context already implies.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a two-parameter update, but the nested display_settings object is completely opaque in both schema and description, and there is no output schema to explain the result. An agent can call it but cannot verify what a valid request looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds nothing about the shape or allowed keys of the nested display_settings object, so it does not compensate for the fact that this opaque object is the only real payload.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update Display Settings for an Event') plus the exact endpoint, so the operation is unambiguous. It does not, however, distinguish itself from the closely named siblings get_display_settings or update_ticket_buyer_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus get_display_settings or update_ticket_buyer_settings, and no prerequisites beyond the auth header. The agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_eventA

Update an Event by Event ID.

ENDPOINT: POST /events/{event_id}/

Note that if the event is a series parent, updating name, description, hide_start_date, hide_end_date, currency, show_remaining, password, capacity, or source on the series parent will update these fields on all occurrences in the series.

EVENT OBJECT - PUBLIC FIELDS (can be updated):

  • name (multipart-text): Event name

  • summary (string, optional): Event summary. Short summary describing the event and its purpose

  • description (multipart-text, optional, DEPRECATED): Event description. Use summary instead

  • start (datetime-tz): Event start date and time

  • end (datetime-tz): Event end date and time

  • currency (string): Event ISO 4217 currency code

  • online_event (boolean): true = Event is online only (no Venue)

  • hide_start_date (boolean): If true, event's start date never displayed to attendees

  • hide_end_date (boolean): If true, event's end date never displayed to attendees

EVENT OBJECT - PRIVATE FIELDS (can be updated):

  • listed (boolean): true = Event publicly searchable on Eventbrite

  • shareable (boolean): true = Event is shareable with social buttons

  • invite_only (boolean): true = Only invitees can see the event

  • show_remaining (boolean): true = Show remaining ticket count

  • password (string): Password to access event details

  • capacity (integer): Maximum attendees (sum of ticket class quantities)

  • capacity_is_custom (boolean): true = Use custom capacity, false = Calculate from ticket classes

  • organizer_id (string): ID of event organizer

  • venue_id (string): ID of event venue

  • format_id (string): ID of event format

  • category_id (string): ID of event category

  • subcategory_id (string): ID of event subcategory

  • logo_id (string): ID of event logo image

  • is_reserved_seating (boolean): Whether event has reserved seating

  • is_series (boolean): Whether this is a series parent event

  • show_pick_a_seat (boolean): For reserved seating, show seat picker

  • show_seatmap_thumbnail (boolean): Show seat map thumbnail

  • show_colors_in_seatmap_thumbnail (boolean): Show colors in seat map thumbnail

POSSIBLE ERRORS (400):

  • CANNOT_UPDATE_CURRENCY: Cannot update event with paid sales or reserved seats

  • CANNOT_UPDATE_SOURCE: Event source can only be set during creation

  • DATE_CONFLICT: End date must be after start date

  • DIFFERENT_TIMEZONES: Start and end times must have same timezone

  • INVALID_DATE: Start and end dates cannot be in the past

  • INVENTORY_TYPE_CONFLICT: Only single inventory type may be set at once

  • INVITE_CONFLICT: Cannot set both listed and invite_only

  • NO_DEFAULT_ORGANIZER: No organizer ID and no default found

  • NO_PAYMENT_OPTIONS: Event has paid tickets but no payment options

  • NO_PACKAGE_SELECTED: Need to select package at /organizations/{id}/assortment/

  • NO_VENUE: Attempted to create event without venue

  • PASSWORD_CONFLICT: Cannot set both listed and password

  • PAYMENT_OPTIONS_DEPRECATED_SPLIT_FEES: Split fees no longer supported

  • PAYMENT_OPTIONS_NO_COUNTRY: Paid tickets but no payment country

  • PAYMENT_OPTIONS_NO_PAYMENT_TYPE: Paid tickets but no payment type

  • PAYMENT_OPTIONS_PAYPAL_NO_EMAIL: PayPal configured but no email

  • SHARE_INVITE_CONFLICT: Cannot set both shareable and invite_only

  • UNSUPPORTED_TIMEZONE: Timezone does not exist

  • VENUE_AND_ONLINE: Cannot set both venue_id and online_event

  • SUMMARY_DESCRIPTION_CONFLICT: Cannot set both summary and description

  • OCCURRENCE_TIMEZONE_UPDATE_NOT_ALLOWED: Cannot change timezone on series occurrence

  • SERIES_PARENT_START_END_DATE_EDIT: Cannot set start/end on series parent

  • OCCURRENCE_DURATION_TOO_LONG: Series occurrences cannot exceed 7 days

  • IS_RESERVED_SEATING_UPDATE_NOT_ALLOWED_ON_SERIES_EVENTS: Reserved seating events cannot be recurring

  • IS_SERIES_UPDATE_NOT_ALLOWED_ON_RESERVED_EVENTS: Reserved seating events cannot be recurring

  • IS_SERIES_UPDATE_NOT_ALLOWED_ON_TICKETED_EVENTS: Delete all tickets to make this change

  • IS_SERIES_UPDATE_NOT_ALLOWED_ON_PUBLISHED_EVENTS: Unpublish event to make this change

  • IS_SERIES_UPDATE_NOT_ALLOWED_HAS_OCCURRENCES: Delete all occurrences to change to one-time event

  • IS_SERIES_UPDATE_NOT_ALLOWED_ON_SERIES_OCCURRENCE: Cannot change occurrence to one-time event

  • ARGUMENTS_ERROR: Errors with your arguments

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEvent end date/time (optional)
nameNoEvent name (optional)
startNoEvent start date/time (optional)
listedNoPublicly searchable (optional)
localeNoEvent locale (optional, e.g., en_US)
logo_idNoLogo image ID (optional)
summaryNoEvent summary (optional)
capacityNoMaximum attendees (optional)
currencyNoISO 4217 currency code (optional, e.g., USD, EUR, GBP)
event_idYesEvent ID (required)
passwordNoEvent password (optional)
venue_idNoVenue ID (optional)
format_idNoFormat ID (optional)
is_seriesNoIs series parent (optional)
shareableNoIs shareable (optional)
category_idNoCategory ID (optional)
descriptionNoEvent description (optional, deprecated - use summary)
invite_onlyNoOnly invited can see (optional)
online_eventNoIs online-only event (optional)
organizer_idNoOrganizer ID (optional)
hide_end_dateNoHide end date from attendees (optional)
show_remainingNoShow remaining tickets (optional)
subcategory_idNoSubcategory ID (optional)
hide_start_dateNoHide start date from attendees (optional)
show_pick_a_seatNoShow seat picker (optional)
capacity_is_customNoUse custom capacity (optional)
is_reserved_seatingNoHas reserved seating (optional)
show_seatmap_thumbnailNoShow seatmap thumbnail (optional)
show_colors_in_seatmap_thumbnailNoShow colors in seatmap (optional)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so well: it discloses that series-parent edits propagate to all occurrences, flags the deprecated description field, enumerates field-level conflict rules (listed/password, invite_only/shareable, venue/online), and states the auth requirement. This is well beyond what a bare mutation description usually offers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loading is good (purpose, endpoint, then special-case behavior), but the ~30-line public/private field enumeration largely duplicates the input schema, which already has 100% parameter description coverage. The error catalog earns its space; the field list mostly does not, dragging the structure below a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 29-parameter mutation tool with no annotations and no output schema, the description covers purpose, propagation semantics, deprecation, auth, and the full failure taxonomy. An agent could call this correctly without opening any other document.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it segregates fields into PUBLIC vs PRIVATE, marks 'description' as DEPRECATED in favor of 'summary', and attaches constraints (e.g., capacity is the sum of ticket class quantities, currency is locked once paid sales exist). It does not fully compensate for anything, but it clearly exceeds the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an Event by Event ID') and pins the operation to a concrete endpoint (POST /events/{event_id}/). Against siblings like create_event, get_event, delete_event, publish_event, the scope of this tool is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The series-parent paragraph and the extensive 400-error catalog effectively tell the agent the conditions under which updates succeed or fail (e.g., cannot change currency with paid sales, cannot set start/end on a series parent). What is missing is any explicit routing to an alternative tool or a stated 'use this instead of X' rule, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_inventory_tierB

Update an Inventory Tier by ID.

ENDPOINT: POST /events/{event_id}/inventory_tiers/{inventory_tier_id}/

Supports partial updates.

ERRORS (400):

  • ARGUMENTS_ERROR

  • HOLD_QUANTITIES_EXCEEDS_CAPACITY_TOTAL: Sum of hold quantities must be less than capacity_total

ERRORS (403):

  • NOT_AUTHORIZED

ERRORS (404):

  • NOT_FOUND: Event or inventory_tier_id doesn't exist

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoTier name
event_idYesEvent ID (required)
capacity_totalNoTotal capacity
quantity_totalNoTotal quantity
inventory_tier_idYesInventory Tier ID (required)

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well by disclosing the endpoint, partial update support, specific error codes (400 ARGUMENTS_ERROR, 400 HOLD_QUANTITIES_EXCEEDS_CAPACITY_TOTAL, 403 NOT_AUTHORIZED, 404 NOT_FOUND) and their meanings, plus auth requirements. It doesn't state whether updates are reversible or what the response looks like, but the error documentation is unusually thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The error/auth block is well-organized and front-loaded with the core purpose first. However, the ENDPOINT line and error enumerations are somewhat verbose for what is a straightforward update operation, and the structured error list is closer to API reference material than agent guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers auth, error handling, and update mode (partial). The main gap is lack of when-to-use guidance against siblings and no statement about return values or idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters with descriptions. The description adds no parameter-specific meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (Inventory Tier by ID), which distinguishes it from read siblings like get_inventory_tier. However, it doesn't differentiate from update_multiple_inventory_tiers or update_capacity_tier, which have overlapping purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus update_multiple_inventory_tiers, create_inventory_tier, or update_capacity_tier. The description notes partial updates are supported but gives no context about when that's appropriate or when to prefer the batch sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_multiple_inventory_tiersA

Update Multiple Inventory Tiers (Bulk)

Endpoint: POST /events/{event_id}/inventory_tiers/

Updates multiple inventory tiers in a single request for efficient bulk operations.

Authentication: Requires a valid Eventbrite API token with event management permissions.

Use Cases:

  • Bulk update tier quantities or prices

  • Synchronize tier configurations across multiple tiers

  • Efficiently modify complex inventory structures

  • Reduce API calls when updating many tiers

Updatable Fields:

  • name: Tier name

  • quantity: Number of tickets in this tier

  • price: Price for this tier

  • sales_start: When sales begin for this tier

  • sales_end: When sales end for this tier

  • minimum_quantity: Minimum tickets per order

  • maximum_quantity: Maximum tickets per order

Important Notes:

  • Each tier object must include its ID

  • Only provided fields will be updated (partial updates supported)

  • All tiers must belong to the specified event

Error Codes:

  • 400: Invalid tier data or tier IDs

  • 401: Authentication required

  • 403: Insufficient permissions

  • 404: Event or tier not found

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesThe event ID containing the inventory tiers
inventory_tiersYesArray of inventory tier objects to update (must include tier IDs)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description carries full burden: discloses POST endpoint, event management permission requirement, partial update semantics, required tier ID, ownership constraint, and 400/401/403/404 error codes. Provides substantial mutation context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structured with headers and front-loaded title/endpoint. Use Cases bullets are somewhat redundant, all expressing bulk efficiency. Still dense and useful, but could trim some repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param nested mutation with no annotations or output schema, description covers auth, error handling, partial updates, and constraints. No return format, but error codes and update semantics suffice for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for top-level params, but nested inventory_tiers properties lack descriptions. Description lists updatable fields and their meanings, and adds important rules (ID required, partial updates, all tiers belong to event), adding meaning beyond schema. Missing date/price format specifics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Explicit verb 'update', resource 'multiple inventory tiers', and bulk scope; 'single request' clarifies operation. Distinguishes from single-tier update sibling by 'Multiple' and 'Bulk'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use Cases section clearly indicates when to use for bulk operations, reducing API calls. No explicit when-not-to-use or named alternative like update_inventory_tier for single-tier updates, but context implies bulk scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ticket_buyer_settingsB

Update Ticket Buyer Settings for an Event.

ENDPOINT: POST /events/{event_id}/ticket_buyer_settings/

ERRORS (400):

  • FIELD_INVALID

ERRORS (403):

  • NOT_AUTHORIZED

ERRORS (404):

  • NOT_FOUND

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (required)
ticket_buyer_settingsNoSettings object

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does disclose auth requirements (Bearer token) and the 400/403/404 error surface, which is genuinely useful. It does not state what happens to unspecified settings, whether the change is reversible, or what a successful response looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the one-line purpose, then lists endpoint, errors, and auth in scannable blocks. The error enumeration is somewhat boilerplate but short, and nothing is redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and an undefined nested settings object, the description covers auth and failure modes well but leaves the actual payload semantics and success behavior unaddressed. Adequate but with a clear gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. However the nested 'ticket_buyer_settings' object has no defined properties or description beyond 'Settings object', and the description adds nothing to clarify its shape, so no credit above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update Ticket Buyer Settings for an Event') and the endpoint, which clearly pairs it against the sibling get_ticket_buyer_settings. It stops short of naming that sibling or scoping what 'settings' means, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus get_ticket_buyer_settings or other update tools, no prerequisites beyond the auth block, and no note on whether the update is partial or full replacement. The agent must infer usage from the verb alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ticket_classA

Update an existing Ticket Class for an event.

ENDPOINT: POST /events/{event_id}/ticket_classes/{ticket_class_id}/

Supports partial updates. After May 7, 2020, inventory_tier_id is required for tiered events.

TICKET CLASS OBJECT - PUBLIC FIELDS (can be updated):

  • name (string): Ticket Class name

  • description (string): Ticket Class description

  • sorting (integer): Order in purchase flow

  • cost (currency): Display cost (format: "CURRENCY,amount_in_cents" e.g., "USD,1000" for $10.00)

  • donation (boolean): Is donation ticket

  • free (boolean): Is free ticket

  • minimum_quantity (integer): Minimum tickets per Order

  • maximum_quantity (integer): Maximum tickets per Order

  • delivery_methods (array): electronic, will_call, standard_shipping, third_party_shipping

  • image_id (string): Image ID for ticket class

TICKET CLASS OBJECT - PRIVATE FIELDS (can be updated):

  • quantity_total (integer): Total number available

  • capacity (integer): Number available for sale

  • hidden (boolean): Hidden from public

  • sales_start (string): When sales begin (ISO 8601 datetime)

  • sales_end (string): When sales end (ISO 8601 datetime)

  • sales_start_after (string): Ticket Class ID that triggers sales start

  • include_fee (boolean): Fee included in price (cannot use with split_fee)

  • split_fee (boolean): Fee shown separately

  • hide_description (boolean): Hide description on listing page

  • hide_sale_dates (boolean): Hide sale dates on event page

  • auto_hide (boolean): Hide when not for sale

  • auto_hide_before (datetime): Override auto-hide disable time

  • auto_hide_after (datetime): Override auto-hide enable time

  • inventory_tier_id (string): Inventory tier ID (required for tiered events)

  • order_confirmation_message (string): Message when Order completed

  • secondary_assignment_enabled (boolean): Secondary barcode assignment (RFID)

POSSIBLE ERRORS (400):

  • AUTO_HIDE_NOT_SET: Must select auto hide setting

  • BAD_QUANTITIES: Sum of tickets doesn't equal total available

  • COST_GREATER_THAN_FEE: Cost must be greater than fee

  • CURRENCY_MISMATCH: Event and ticket currency must match

  • DONATION_AND_COST: Cannot be both donation and charged ticket

  • DONATION_AND_FREE: Cannot be both donation and free ticket

  • DONATION_AND_MIN_QUANTITY: Set minimum quantity for donation ticket

  • FREE_AND_COST: Cannot be both free and charged ticket

  • INSUFFICIENT_PACKAGE: Need to upgrade package

  • INVALID_DELIVERY_METHOD: Delivery method not allowed for this organization

  • INVALID_EVENT: Event not qualified to have tickets

  • INVALID_EVENT_ID: Event ID must match ticket's event

  • INVALID_INVENTORY_TIER_ID: Cannot change inventory tier of ticket

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
costNoCost (CURRENCY,cents)
freeNoIs free
nameNoTicket name
hiddenNoIs hidden
donationNoIs donation
event_idYesEvent ID (required)
auto_hideNoAuto-hide when not on sale
sales_endNoSales end (ISO 8601)
descriptionNoTicket description
include_feeNoInclude fee in price
sales_startNoSales start (ISO 8601)
quantity_totalNoTotal available
auto_hide_afterNoAuto-hide after time
hide_sale_datesNoHide sale dates
ticket_class_idYesTicket Class ID (required)
auto_hide_beforeNoAuto-hide before time
delivery_methodsNoDelivery methods
hide_descriptionNoHide description
maximum_quantityNoMax per order
minimum_quantityNoMin per order
inventory_tier_idNoInventory tier ID
sales_start_afterNoTrigger ticket ID
order_confirmation_messageNoConfirmation message
secondary_assignment_enabledNoSecondary barcode enabled

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses partial-update semantics, a time-gated field requirement, mutual-exclusion rules (include_fee vs split_fee, donation vs cost/free), and a detailed 400-error catalog that reveals validation constraints. It does not describe the response body or reversibility, keeping it out of the top band.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, endpoint, and partial-update rule, then organized into clearly labeled sections (public fields, private fields, errors, auth). It is long, but the 24-parameter surface justifies much of it, though the field list partially restates schema descriptions and the error catalog is verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers endpoint, auth, update semantics, all editable fields, and the error taxonomy. The main gap is the absence of any statement about the return value, which matters since no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: the exact cost format ('CURRENCY,amount_in_cents'), the allowed delivery_methods values, the public/private field grouping, and mutual-exclusion constraints. These exceed the terse one-line schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Update an existing Ticket Class for an event,' and pins it to an exact endpoint (POST /events/{event_id}/ticket_classes/{ticket_class_id}/). This distinguishes it from siblings like create_ticket_class, get_ticket_class, and list_ticket_classes without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides useful operating constraints ('Supports partial updates', inventory_tier_id required after May 7 2020 for tiered events) that shape when it can be used, but never names alternatives or states when-not-to-use this tool. Usage is implied through the field/constraint notes rather than explicitly articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_venueB

Update a Venue by ID.

ENDPOINT: POST /venues/{venue_id}/

VENUE FIELDS (all optional for update):

  • name (string): Venue name

  • address (object): Address

  • age_restriction (string): Age restriction

  • capacity (number): Max capacity

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoVenue name
addressNoAddress
capacityNoCapacity
venue_idYesVenue ID (required)
age_restrictionNoAge restriction

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the POST endpoint, required bearer token, and that all fields are optional for update, but it omits mutation side effects, permission requirements beyond auth, error behavior, and what happens to unspecified fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose and organized into endpoint, fields, and authentication sections. However, the field list largely repeats the schema descriptions, which is mildly wasteful given full schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the endpoint, auth, and parameter optionality. It is adequate but missing return-value expectations and failure-mode details that an agent would need for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already defines all parameters. The description's field list and optionality note add little beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a Venue by ID') and includes the exact endpoint. It is clearly distinguishable from get_venue, create_venue, and list_venues in the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for updating an existing venue, but gives no when-to-use guidance, no exclusions, and no comparison to alternatives like create_venue or get_venue. It only notes that fields are optional.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_mediaB

Upload a Media image file.

ENDPOINT: POST /media/upload/

ERRORS (400):

  • BAD_FILE: File not valid

  • BAD_FORMAT: File format not supported

  • BAD_UPLOAD_TOKEN: Upload token invalid

  • S3_ERROR: Error uploading to S3, try again

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameNoFile name
file_typeNoFile MIME type
upload_tokenNoUpload token

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses authentication requirements, specific 400 error codes, and an S3 retry condition, but it omits mutation side effects, supported file formats, size limits, and how the required upload token is obtained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose, then cleanly separated into endpoint, error codes, and authentication. Every section is relevant to invoking the tool correctly, with no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description is adequate at a minimum: it covers the endpoint, errors, and auth. However, for an upload tool it leaves important gaps around token prerequisites, accepted formats, and response behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already names all three parameters and gives basic descriptions. The tool description adds no further parameter semantics such as format constraints, token acquisition, or requiredness, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Upload a Media image file,' and adds the exact endpoint. It is clear what the tool does, though it does not explicitly distinguish itself from sibling tools such as get_media_upload or get_media.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no alternatives, and no prerequisites such as obtaining an upload token via a sibling tool. It mentions authentication and errors but not the workflow or selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 81 tool updatesv1.0.6
    • First observedcalculate_item_pricing
    • First observedcancel_event
    • First observedcopy_event
    • First observedcreate_custom_question
    • First observedcreate_default_question
    • First observedcreate_discount
    • First observedcreate_event
    • First observedcreate_event_schedule
    • First observedcreate_inventory_tier
    • First observedcreate_multiple_inventory_tiers
    • First observedcreate_seat_map
    • First observedcreate_text_overrides
    • First observedcreate_ticket_class
    • First observedcreate_venue
    • First observedcreate_webhook
    • First observeddelete_custom_question
    • First observeddelete_default_question
    • First observeddelete_discount
    • First observeddelete_event
    • First observeddelete_inventory_tier
    • First observeddelete_webhook
    • First observedget_api_docs
    • First observedget_attendee
    • First observedget_attendee_report
    • First observedget_capacity_tier
    • First observedget_category
    • First observedget_current_user
    • First observedget_custom_question
    • First observedget_default_question
    • First observedget_discount
    • First observedget_display_settings
    • First observedget_event
    • First observedget_event_description
    • First observedget_event_series
    • First observedget_format
    • First observedget_inventory_tier
    • First observedget_media
    • First observedget_media_upload
    • First observedget_order
    • First observedget_organization
    • First observedget_sales_report
    • First observedget_structured_content
    • First observedget_subcategory
    • First observedget_text_overrides
    • First observedget_ticket_buyer_settings
    • First observedget_ticket_class
    • First observedget_user
    • First observedget_venue
    • First observedlist_attendees
    • First observedlist_categories
    • First observedlist_custom_questions
    • First observedlist_default_questions
    • First observedlist_discounts
    • First observedlist_events
    • First observedlist_events_by_series
    • First observedlist_fee_rates
    • First observedlist_formats
    • First observedlist_inventory_tiers
    • First observedlist_orders
    • First observedlist_organization_members
    • First observedlist_organization_roles
    • First observedlist_organizations
    • First observedlist_seat_maps
    • First observedlist_subcategories
    • First observedlist_ticket_classes
    • First observedlist_venues
    • First observedlist_webhooks
    • First observedpublish_event
    • First observedset_structured_content
    • First observedunpublish_event
    • First observedupdate_capacity_tier
    • First observedupdate_default_question
    • First observedupdate_discount
    • First observedupdate_display_settings
    • First observedupdate_event
    • First observedupdate_inventory_tier
    • First observedupdate_multiple_inventory_tiers
    • First observedupdate_ticket_buyer_settings
    • First observedupdate_ticket_class
    • First observedupdate_venue
    • First observedupload_media

TDQS

B3.3/5.0

Scored across 81 tools

Disambiguation3/5

Many tools target distinct resources and actions, but notable overlaps exist: get_user and get_current_user both hit /users/me/, and create_inventory_tier vs create_multiple_inventory_tiers (bulk) can be confused. With 81 tools, the cognitive load makes selection error-prone, though detailed descriptions help mitigate ambiguity.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., list_events, create_event, update_ticket_class). Minor variations like 'get_current_user' vs 'get_user' do not break the pattern. No mixed conventions are present.

Tool Count1/5

81 tools is an extreme mismatch for an MCP server; even a large API like Eventbrite can be exposed with fewer, higher-level tools. The count far exceeds the recommended 3-15 range, causing significant selection burden for an agent.

Completeness4/5

The surface covers most Eventbrite domains: events, orders, attendees, tickets, discounts, venues, webhooks, media, inventory tiers, seat maps, custom questions, text overrides, pricing, reports, and structured content. However, some areas like organizer management, refunds, and user-specific event lists are missing, so minor gaps remain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers