tickets-dev-mcp
OfficialRetrieves live SeatGeek event listings, all-in prices, and seat maps through the Tickets.dev API, enabling price comparison and event lookup across marketplaces.
Retrieves live StubHub event listings, all-in prices, and seat maps through the Tickets.dev API, enabling price comparison and event lookup across marketplaces.
Retrieves live Ticketmaster event listings, all-in prices, and seat maps through the Tickets.dev API, enabling price comparison and event lookup across marketplaces.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tickets-dev-mcpfind the cheapest 2 seats for the Eagles at Sphere and compare prices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

Tickets.dev AI
This repo is the home for using Tickets.dev with AI agents. Tickets.dev returns live ticket listings, all-in prices and seat maps from Ticketmaster, StubHub, SeatGeek, Vivid Seats, TickPick, Gametime, Viagogo and more, in one schema.
Tickets.dev is a standard HTTP API, so any agent that can make web requests can use it. This repo adds an agent skill, plugins for popular agent tools, and an MCP server.
What you can ask
I have 2 seats in section 110, row 36 for the Eagles at Sphere. What are the same and nearby seats listed for on each marketplace?
Show the seat map for this StubHub event with the cheapest all-in price in each section.
How many tickets are listed for each Sphere show next month, and what's the get-in price?
Write a script that saves the listed tickets and get-in price for these events every morning.
Related MCP server: mcp-web-search
Use the API with any agent
Give your agent the OpenAPI spec, the agent docs and your API key. Get a key at tickets.dev and send it in the x-api-key header.
Most tasks take two calls. Find the event, then capture one marketplace page:
curl "https://api.tickets.dev/v1/events?query=eagles%20sphere" \
-H "x-api-key: $TICKETS_DEV_KEY"
curl -G "https://api.tickets.dev/v1/capture" \
--data-urlencode "url=https://www.ticketmaster.com/eagles-live-at-sphere-las-vegas-nevada-12-11-2026/event/17006483D6FAFC60" \
-H "x-api-key: $TICKETS_DEV_KEY"Agent skill
The tickets-dev skill covers the details of ticket data that agents tend to get wrong, such as all-in prices, sellable quantities, and why a listing that disappears isn't proof of a sale. It's plain Markdown, so you can add it to any agent's instructions.
Plugins
If you use one of these agent tools, we recommend installing the Tickets.dev plugin. It includes the skill and tools your agent can call directly.
Claude Code
Run these commands in Claude Code:
/plugin marketplace add Tickets-dot-dev/ai
/plugin install tickets-dev@tickets-devCodex
Run this command:
codex plugin marketplace add Tickets-dot-dev/aiThen restart Codex and install Tickets.dev from the Plugins directory.
Cursor
Install the plugin from cursor.directory, or use the MCP server.
Gemini CLI
Run this command:
gemini extensions install https://github.com/Tickets-dot-dev/aiGrok Build
The plugin is coming to the Grok Build marketplace. Until then, use the MCP server.
MCP server
Any MCP client can run the tools directly. Add this to your client's MCP configuration, for example .cursor/mcp.json or Claude Desktop's claude_desktop_config.json:
{
"mcpServers": {
"tickets-dev": {
"command": "npx",
"args": ["-y", "tickets-dev-mcp"],
"env": { "TICKETS_DEV_KEY": "tk_live_..." }
}
}
}Tool | What it does |
| Finds upcoming events and their URL on every marketplace. Free. |
| Returns every listing on one event page, with all-in prices. |
| Ranks one event's listings across marketplaces by all-in price. |
| Returns the section and seat maps, the cheapest price per section and, where the map gives it, venue capacity. |
| Lists supported marketplaces. Free. |
The tools only read data. They can't buy, hold or list tickets.
API key
The plugins and the MCP server read your key from the TICKETS_DEV_KEY environment variable:
export TICKETS_DEV_KEY=tk_live_...Restart your agent after setting it. Don't paste your key into a chat. If the key is missing, the agent tells you how to add it.
Each capture of one event on one marketplace is billed. To limit spending, set TICKETS_DEV_MAX_CAPTURES (default 25 per session). See pricing.
More from Tickets.dev
Development
npm install
node --test # offline tests
TICKETS_DEV_E2E_KEY=<your key> node --test # end-to-end tests (uses a few captures)License
MIT. Not affiliated with any ticket marketplace.
Available Tools
5 toolscompare_pricesCompare prices across marketplacesARead-only
Find one event, capture it on each marketplace, and rank the cheapest tickets for a quantity by all-in price (fees included). Each marketplace captured is one billed Tickets.dev capture. Captures up to max_marketplaces (default 7).
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Rows to return, default 10 | |
| event | Yes | Event name or any marketplace event URL | |
| quantity | No | Tickets wanted, default 2 | |
| max_marketplaces | No | Most marketplaces to capture, default 7 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations by disclosing the non-obvious cost model: each marketplace captured is a separate billed capture, bounded by max_marketplaces. It still doesn't say what happens when an event isn't found on a marketplace or whether partial results are returned, so it's strong 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, then cost, then the cap. The final sentence largely duplicates the schema's max_marketplaces default, which costs it a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work of explaining the return shape (cheapest tickets ranked by all-in price for a quantity). Only failure modes and the exact cost per capture remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so event/quantity/top/max_marketplaces are already documented. The description repeats the max_marketplaces default (already in schema) and adds no format guidance for the event parameter, so it earns baseline only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific multi-step action: resolve one event, capture it on every marketplace, rank results by all-in price for a given quantity. It names the ranking criterion (fees included), which is the distinguishing value versus single-marketplace siblings like get_listings or get_seat_map.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its niche (cross-marketplace price comparison for a ticket quantity) but never explicitly says when to prefer it over get_listings or find_events, nor when not to use it. An agent must infer the routing from context rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_eventsFind eventsARead-only
Find upcoming events by name, performer, venue or any marketplace event URL, with the same event's URL on every marketplace that lists it (Ticketmaster, StubHub, SeatGeek, Vivid Seats, TickPick, Gametime, Viagogo and more). Never billed.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Latest date, ISO 8601 | |
| from | No | Earliest date, ISO 8601 | |
| query | Yes | e.g. "eagles sphere" or a stubhub.com event URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world behavior, so the bar is lower, and the description adds real value: results include each event's URL across eight named marketplaces, and 'Never billed' signals no cost to the caller. It stops short of describing pagination or how many results are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and lookup keys, with the marketplace list placed in a parenthetical rather than leading. The trailing 'Never billed' is a slight non sequitur but is short and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries return-shape duty and does so by explaining that results pair each event with its URLs on multiple marketplaces. The main gap is how the from/to date filters interact with 'upcoming' and what the result set ordering is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 extends the meaning of `query` beyond the schema's examples by stating it accepts performer names, venue names, and any marketplace event URL (not just StubHub). The from/to window is only loosely implied by 'upcoming'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (upcoming events), plus the accepted lookup keys (name, performer, venue, marketplace URL) and the distinctive cross-marketplace URL aggregation. This clearly separates it from get_listings and compare_prices, which operate on an already-identified event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the discovery entry point before get_listings/compare_prices/get_seat_map, but it never names those siblings or states when not to use it. An agent can infer the workflow, but nothing explicit routes it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listingsGet live listingsARead-only
Every listing on one marketplace event page right now: section, row, seats, quantities it can sell, face price, fee and all-in price per ticket, cheapest first. Each marketplace captured is one billed Tickets.dev capture. A listing that disappears later may have sold, been delisted or been repriced; it is not proof of a sale.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | How many to return, default 20 | |
| url | Yes | One marketplace event page URL (from find_events or the user) | |
| quantity | No | Only listings that can sell exactly this many | |
| max_price | No | Only listings at or below this all-in price per ticket |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuinely useful behavioral context beyond the annotations: each marketplace capture is billed, and a listing disappearing is not proof of a sale, which prevents an important misinterpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and uses three efficient sentences with no filler. Every sentence adds value: what is returned, the billing implication, and the sold/delisted/repriced caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with full schema coverage and no output schema, the description is nearly complete: it enumerates the returned fields, ordering, billing implication, and interpretation caveat. It would be stronger if it explicitly positioned itself against compare_prices and get_seat_map, but the essential call context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the input schema. The description adds useful output/ordering context such as all-in price per ticket and cheapest first, but it does not add parameter-specific meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: it returns every live listing on one marketplace event page, with concrete fields like section, row, seats, prices, and ordering. This is easy to distinguish from list_marketplaces, but it does not explicitly contrast itself with compare_prices or get_seat_map, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope: one event page URL, live listings, cheapest first. The schema mentions that the URL comes from find_events or the user, but the description itself gives no explicit when-to-use guidance, exclusions, or alternatives such as compare_prices or get_seat_map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_seat_mapGet seat mapARead-only
The marketplace's own section and seat maps (SVG URLs) for an event, the cheapest all-in price per section, and the venue map's seat capacity where the marketplace gives one. Each marketplace captured is one billed Tickets.dev capture.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | One marketplace event page URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, it discloses a genuine operational trait: each marketplace captured is one billed Tickets.dev capture, which matters for cost-aware invocation. It also flags that capacity is only present 'where the marketplace gives one', warning of partial data. No detail on failure modes for unsupported marketplaces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the first front-loads exactly what is returned, the second carries the billing caveat. No filler, and the cost note is separated so it is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of naming the return fields (SVG URLs, per-section all-in price, capacity). What it still leaves open is response shape — whether results are grouped per marketplace or per section, and whether sections without maps are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'url' parameter with its own description ('One marketplace event page URL'). The description adds nothing beyond that — no note on URL format variations or what happens if the URL is not an event page — so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the concrete resource set: per-section seat maps as SVG URLs, cheapest all-in price per section, and venue seat capacity for an event. It is distinguishable from siblings like get_listings and compare_prices by its map/geometry focus, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent infers it is for when seat-map visuals or per-section pricing are needed. No when-not-to-use condition and no pointer to compare_prices or get_listings as alternatives for pricing-only questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_marketplacesList marketplacesARead-only
The marketplaces Tickets.dev can capture and the hosts that route to each. Never billed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is largely covered. The description adds one genuine behavioral trait not in annotations — 'Never billed' — but the phrase is cryptic (does it mean accessing this list is free, or that these marketplaces never incur capture charges?). It says nothing about return format or stability of the list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded fragments with no filler. The trailing 'Never billed.' is terse to the point of ambiguity, which slightly undercuts clarity, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description carries the burden of describing what comes back, and it does so only loosely ('marketplaces ... and the hosts that route to each'). The ambiguous pricing remark leaves an agent unsure what 'billed' refers to. Adequate but with clear gaps for a reference-data tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 need not explain any inputs and correctly does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource clearly: marketplaces and the hosts that route to each, with the qualifier that these are the ones Tickets.dev can capture. That is a specific and understandable scope. No sibling (find_events, get_listings, compare_prices, get_seat_map) is similar enough to need an explicit distinction, though naming it as a discovery/reference lookup would sharpen it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent is expected to infer that this is a static reference lookup to run when it needs the supported marketplace/host universe. There is no explicit 'use when' statement, no mention of when not to call it, and no routing to alternates (though no real alternate exists for this resource).
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.
5 tool updates
v0.1.0- First observed
compare_prices - First observed
find_events - First observed
get_listings - First observed
get_seat_map - First observed
list_marketplaces
TDQS
Scored across 5 tools
The primary overlap is between get_listings and compare_prices/ get_seat_map, since all three capture marketplace data; however, the descriptions make the boundary fairly clear (single marketplace event page vs. multi-marketplace ranking vs. seat maps). find_events and list_marketplaces are cleanly distinct discovery tools.
All five tools follow a consistent snake_case verb_noun pattern: find_events, get_listings, compare_prices, get_seat_map, list_marketplaces. Verbs are used appropriately to signal the operation type.
Five tools is a well-scoped surface for a ticket price comparison service: two free discovery tools, three billed capture tools. Each tool earns its place with no obvious redundancy.
The core workflow (find event, compare prices, inspect listings and seat maps) is fully covered. Minor gaps exist—no dedicated event-detail tool or historical price lookup—but agents can work around these via find_events and fresh captures.
Maintenance
Related MCP Connectors
Real-time ticket listings, prices and fees across major ticket marketplaces.
Live event ticket market data: prices, inventory, demand and seat maps, with screens and alerts.
Find live events, ticket price trends and each seller's tickets. Some links are affiliate links.
Travel & commerce intelligence for AI agents: search, book & price-track hotels, events, retail.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceSafe, read-only market data for AI trading agents, offering 44 tools to query prediction markets, perpetuals, and cross-venue signals without the ability to execute trades.1MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search the web, read and extract content from webpages, fetch JSON from REST APIs, and collect links while bypassing anti-bot protections.26 npmISC
- FlicenseNot gradedqualityBmaintenanceProvides protocol-neutral market intelligence for the AI agent economy, with read-only tools to search agents, retrieve details and histories, compare agents, list categories, view category rankings, and access methodology.-

Stophy MCPofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to discover and query public web data across web search, YouTube, Reddit, TikTok, Instagram, LinkedIn, maps, shopping, jobs, real estate, and finance through three tools for finding endpoints, inspecting their inputs and costs, and executing calls that return markdown or JSON.287 npmMIT