For AI assistants
The Recs MCP server
Recs is where local curators (DJs, music journalists, nightlife personalities and event creators) pick the events worth going to in their city and say why. This server lets your AI assistant ask Recs "what's worth going to" and get named, attributed recommendations instead of a list of listings.
- Server URL
https://recscompany.com/mcp- Protocol
- Model Context Protocol, Streamable HTTP
- Sign-in
- None. No account, no API key.
- Access
- Read-only, public data only, free
What it is
A public, read-only Model Context Protocol (MCP) server at https://recscompany.com/mcp. There is no sign-in, and it exposes only what the public website at recscompany.com already shows: upcoming events, the curators who picked them and their notes, curator profiles, and the cities that have picks. Nothing about Recs accounts, organizers' private data or the curator dashboard is reachable, and the server never changes anything.
Results are upcoming events by default; past events come back only when asked for. Dates are local to the venue. Opening the server URL in a browser returns a JSON description of the server and its tools.
Recs is early, so coverage is still thin: right now 12 cities have upcoming picks, and the most are in Brooklyn, Phoenix and Amsterdam. Elsewhere, expect few or no results. list_cities always says where picks are.
The five tools
search_events
Find upcoming events by free text (an artist, show, venue, genre or a curator's name), city or neighborhood, a time like tonight or this weekend, curator, category or price. Each result says who recommended it and why.
| Argument | Type | Notes |
|---|---|---|
query | string | Free text, up to 200 characters. Every word has to match something public about the event; "tonight", "this weekend" and "free" are read as filters. |
city | string | A city, borough or neighborhood: "NYC", "Brooklyn, NY", "Bushwick". New York covers all five boroughs. |
nearby | boolean | Also include the surrounding metro area. Default false. |
curator | string | Only events picked by this curator: username, @handle or display name. |
category | string | A Recs category name or slug, e.g. "music" or "nightlife" (which includes DJ sets and club nights). |
when | string | today, tonight, tomorrow, this_weekend, next_weekend, this_week, next_week, next_7_days, this_month, next_30_days, or a weekday name. Read in each venue's own time zone. |
from | string | Earliest date, YYYY-MM-DD (a date-time is read as its date). |
to | string | Latest date, YYYY-MM-DD. |
free | boolean | Only events with a known price of zero. |
max_price | number | Only events whose lowest known price is at or under this. Events with no known price are left out. |
include_past | boolean | Also return events that already happened. Default false. |
limit | integer | How many results, 1 to 50. Default 20. |
cursor | string | The next_cursor from the previous call, for the next page of results. Pass the same other arguments. |
get_event
One event in full: description, venue, dates, price, the curators who picked it with their notes, and a ticket link.
| Argument | Type | Notes |
|---|---|---|
idrequired | string | A Recs event URL, an event id or the slug from the URL. |
get_curator
A curator's public profile (bio, location, social links) and their upcoming picks with notes.
| Argument | Type | Notes |
|---|---|---|
usernamerequired | string | A username, @handle, profile URL or display name. A miss suggests close matches. |
limit | integer | How many upcoming picks, 1 to 50. Default 25. |
cursor | string | The next_cursor from the previous call, for the next page of upcoming picks. Pass the same other arguments. |
list_curators
Curators worth following: with a city, those with upcoming picks there first, then those based there.
| Argument | Type | Notes |
|---|---|---|
city | string | A city, borough or neighborhood, read the same way as in search_events. |
nearby | boolean | Also include the surrounding metro area. Default false. |
limit | integer | How many results, 1 to 50. Default 20. |
cursor | string | The next_cursor from the previous call, for the next page of results. Pass the same other arguments. |
list_cities
Cities with upcoming events on Recs, with how many events, how many of them curators picked, and how many curators. Curator picks first.
| Argument | Type | Notes |
|---|---|---|
limit | integer | How many results, 1 to 50. Default 50. |
What a result looks like
One event from search_events, trimmed to the fields an assistant uses most:
{
"url": "https://recscompany.com/event/dice-HHTdTG",
"title": "DICE",
"start": "2026-11-07T19:30-07:00",
"venue": {
"name": "Last Exit Live",
"address": "717 S. Central Ave, Phoenix, AZ 85004",
"city": "Phoenix",
"state": "AZ",
"country": "US"
},
"price": { "low": 20, "high": 24, "currency": "USD" },
"ticket_url": "https://www.eventbrite.com/e/dice-tickets-1989444504066?aff=odwdwdspacecraft&utm_source=recs&utm_medium=agent&utm_campaign=mcp&utm_content=benalire&utm_id=ag62e43b34d0",
"recommended_by": [
{
"username": "benalire",
"name": "Ben Alire",
"note": "Dice just knows how to rock. Somewhere between beach rock and alt rock, lies Dice, and I'm here for it.",
"url": "https://recscompany.com/benalire"
}
]
}Every event also carries id, description, end, time_zone, category, tags, availability, image_url, organizer and is_past. url is the Recs event page; ticket_url goes to the organizer's ticketing provider; recommended_by lists every curator who picked the event, with their public note, their own tag for it, their relationship to it ("Promoting", "Hosting" or "DJing", null for a plain recommendation) and profile URL. Results come back both as structuredContent and as a JSON text block, and every tool declares an outputSchema describing that shape.
An empty search is not a dead end. When search_events finds nothing, or list_curators finds no one in a city, the result carries a hint: the cities that do have picks, busiest first; for a city with none, the closest cities with picks in the same state or country, in hint.nearby; and a one-line hint.message an assistant can offer instead of "nothing found".
Ask the way a fan talks. city takes a borough or neighborhood (a neighborhood is searched as its borough), when takes "tonight" or "this_weekend", and words like "tonight" or "free" in query become those filters. When the server reads a city or query that way, the result says so in notes.
Add it to your assistant
Claude (claude.ai and the Claude apps)
- Open Customize > Connectors, click + Add and choose Add custom connector.
- Name it Recs, paste
https://recscompany.com/mcpas the URL and choose No sign in. - In a chat, open the + menu, choose Connectors and turn Recs on.
On Team and Enterprise plans an owner adds it first, under Organization settings > Connectors > Add > Custom > Web; members then find it under Customize > Connectors.
Claude Code
claude mcp add --transport http recs https://recscompany.com/mcpCursor
Or add an entry to ~/.cursor/mcp.json (or the project's .cursor/mcp.json):
{
"mcpServers": {
"recs": {
"url": "https://recscompany.com/mcp"
}
}
}VS Code
Or add an entry to .vscode/mcp.json (or run MCP: Add Server and pick HTTP):
{
"servers": {
"recs": {
"type": "http",
"url": "https://recscompany.com/mcp"
}
}
}ChatGPT (developer mode)
Under Settings > Connectors > Advanced, turn on Developer mode. Then create a connector with the server URL above and no authentication, and enable it in a chat from the + menu.
Any other MCP client, or a shell
Use the Streamable HTTP transport with the server URL and no auth. To try it without a client, the MCP Inspector CLI works:
npx @modelcontextprotocol/inspector --cli https://recscompany.com/mcp \
--transport http --method tools/call --tool-name search_events \
--tool-arg city="Brooklyn" --tool-arg limit=5Or call it directly. The Accept header must name both types:
curl -s https://recscompany.com/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Things to ask
Cities with picks right now: Brooklyn, Phoenix, Amsterdam, Gilbert, Montreal, Nashville, New York, San Antonio and 4 more.
- "What's worth going to in Brooklyn, according to Recs curators?"
- "Who should I follow on Recs for events in Phoenix?"
- "What are Recs curators picking in Amsterdam? Who picked each one and why?"
- "Which cities have Recs picks right now?"
- "Tell me about this Recs event: https://recscompany.com/event/..."
Attribution and ticket links
Curators are the point of Recs, so the server asks assistants to credit them by name and link the Recs event page as the source. Every ticket_url leads to the organizer's own ticketing provider and carries attribution that credits the recommending curator; Recs may earn an affiliate commission on tickets bought through it. Assistants should pass the link on exactly as returned, since rewriting its query string removes the curator's credit. Curator picks are editorial, not paid placements.
For curators
When someone asks an AI assistant connected to Recs what's worth going to, your public picks are what it can recommend, credited to you by name with your note and a link to your profile. Every ticket link it hands out for your pick carries your attribution, so a sale through it credits you the same way a sale through your Recs page does. There is nothing to set up: only what is already public on your profile is included. Become a Recs curator.
For organizers
Your events appear when curators pick them, and your own house listings appear too, with your organizer name. The ticket link handed out is your primary active ticket link, ahead of any curator's link, as on the event page. Recs adds its own attribution to that link but never overwrites your own utm_* tags. Recs for organizers.
Rate limits and result size
Up to 240 calls per IP address per minute. Over that, the server answers HTTP 429; wait a minute and try again.
Results come a page at a time. limit sets the page size (1 to 50; the default is in each tool's table). When a result has a next_cursor, call the same tool again with the same arguments plus cursor set to it for the next page; next_cursor is null on the last page. search_events, get_curator (its picks) and list_curators page this way; list_cities returns every city in one call. Cursors are opaque: pass them back exactly as returned.
Stability and changes
Current version: 0.3.0 (the serverInfo.version the server reports). Tool names, argument names and result fields will not be renamed or removed without notice here first. New optional arguments and new fields can appear at any time, so clients should ignore fields they don't know.
- 2026-10-160.3.0: fan-shaped questions. city takes boroughs, neighborhoods and spellings like NYC (New York covers all five boroughs), with nearby for the metro; when (tonight, this weekend, a weekday and more, in the venue's own time zone); free and max_price; query words match categories, tags, organizers and curators' names and public notes; curator and get_curator take a display name; results carry notes on how a city or query was read; list_cities counts organizer listings and adds curator_picks; list_curators adds curators based in the city.
- 2026-10-160.2.0: cursor paging (cursor argument, next_cursor in results) on search_events, get_curator and list_curators; an empty result carries a hint naming the cities that do have picks; every tool declares an outputSchema; each recommended_by entry adds tag and relationship.
- 2026-10-15Production launch: five read-only tools, no sign-in.
Data and privacy
The server has no accounts and asks nothing about you. Each tool call is logged with the tool name, its arguments, the client IP address and user agent, for abuse prevention and usage measurement. Nothing else from your conversation reaches Recs. See the Recs privacy policy and terms of service.
Support
Questions, a tool that misbehaves, or a listing you would like fixed: [email protected]. A machine-readable overview of the whole site, including this server, is at recscompany.com/llms.txt.