Pull Up runs a public, read-only Model Context Protocol (MCP) server. AI assistants such as Claude and ChatGPT can use it to search upcoming nights and live music in New York City and give people the page where they can buy tickets. It needs no account and no sign-in.
Connect
Server URL: https://pullup.fm/api/mcp
Streamable HTTP with JSON responses: one JSON-RPC 2.0 message per POST, no session and no event stream. No authentication. It supports MCP protocol versions 2025-11-25, 2025-06-18 and 2025-03-26.
In Claude or any MCP client, add a custom connector with the URL above. A short machine-readable summary is at /.well-known/mcp.json.
Where requests may come from
Server-to-server clients send no Origin header: a hosted connector, a script, or an agent calling from its own backend. That is the normal case and needs nothing extra.
A request that carries an Origin header is a browser request. The server accepts browser requests only from https://pullup.fm; any other origin gets HTTP 403 with a message that says so. This is intentional and will stay: it stops another website from using its visitors' browsers to call this server. If your agent runs inside a web page on another site, call the server from your own backend instead.
Agents that can only make GET requests do not need this server to read Pull Up. Every public night page at https://pullup.fm/e/{id} carries the night's facts and schema.org MusicEvent JSON-LD, with a price only when it is confirmed. The New York guides list upcoming nights by time window, genre and borough: Tonight, This weekend, Jazz, House and techno, Reggaeton and Latin, Afrobeats and amapiano, Hip-hop and R&B, Brooklyn, Free and under $20. The sitemap at /sitemap.xml lists every public night page, and /llms.txt is the short version of this page for agents.
Tools
All three tools only read public listings. None of them changes anything, places an order or takes a payment.
search_nights finds listed upcoming nights. Optional arguments: date_from and date_to (YYYY-MM-DD, New York dates), neighborhood, borough, genre (common spellings work: dnb, drum and bass, hip hop, r&b), query (an artist, venue or night name), max_price_usd and limit (1 to 25, default 10). Results come earliest first. Each night has its id, name, venue, neighborhood, date, start time, genres, up to six billed names, a short description when there is one, the price when it is confirmed, its status, when it was last checked, its page link and purchase details.
Example: "What techno is on in Brooklyn this weekend?"
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_nights",
"arguments": { "genre": "techno", "borough": "Brooklyn", "limit": 5 }
}
}get_night reads one night by the id that search_nights returned: the full known lineup, the description, the address when known, every upcoming date, its status, when it was last checked and purchase details.
Example: "Tell me more about the first one. Who else is playing?"
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_night",
"arguments": { "id": "ID_FROM_SEARCH_NIGHTS" }
}
}how_to_buy returns where to buy tickets for a night, by id.
Example: "How do I get tickets for that?"
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "how_to_buy",
"arguments": { "id": "ID_FROM_SEARCH_NIGHTS" }
}
}How purchase links work
The server only hands back a link. The person opens it and buys in their own browser, so no money moves through the connector and no assistant can buy on anyone's behalf.
For nights Pull Up sells, the link is the night's page on pullup.fm, where checkout happens. Those results list each ticket tier on sale with its all-in price in US dollars and whether it is in stock or sold out. For other nights, the link is the seller's page for that event. When no event-specific link is known, the result is null rather than a guess. Pull Up links end in ?ref=mcp so we can tell a visit came from an assistant.
// A night Pull Up sells
{ "type": "pullup",
"url": "https://pullup.fm/e/NIGHT_ID?ref=mcp",
"tiers": [{ "name": "General", "price_usd": 20, "availability": "InStock" }] }
// A night another seller sells
{ "type": "seller", "url": "https://SELLER_EVENT_PAGE" }
// No event-specific link known
nullCoverage
New York City only, upcoming nights only. Past, cancelled and postponed nights are removed. Coverage is partial: an empty or short result does not mean nothing is on.
Listings are checked nightly, and last_checked says when a night was last checked or seen. Set times, sell-outs and cancellations can change after a check, so confirm them on the linked page. Prices appear only when confirmed. Dates and times are New York time.
Limits
120 requests per minute from one IP address. Anthropic's and OpenAI's published outbound addresses may make 1,200 per minute, because many people's assistants share them. Over the limit, the server answers HTTP 429 with Retry-After: 60.
search_nights returns at most 25 nights per call. get_night returns the full known lineup and every upcoming date. Text arguments take 1 to 200 characters.
An unknown night id or a temporary outage comes back as a tool result with isError: true and a message that says what to do next. A bad argument does too on MCP protocol version 2025-11-25, so the assistant can correct the call; on 2025-06-18 and 2025-03-26 it is a JSON-RPC -32602 error with the same message. A malformed request or an unknown tool always gets a JSON-RPC error that says what to fix.
Privacy
When assistants search Pull Up, we keep the tool used, the search terms and filters sent (including any night id), how many nights came back, the app name the assistant reports and the time, for 90 days to improve our listings. We scrub out the emails, phone numbers and passwords we can recognize (a best effort), and we never keep IP addresses, headers, cookies or account details. The tools only receive the arguments above, never the conversation. The full policy is on the privacy page.
Support
Email ayushupneja@gmail.com. If a call went wrong, include the request you sent and the response you got. If a listing, price, date or ticket link looks wrong, include the night's link and we'll check it.