Ask your assistant what that track was.
ryser.id speaks the Model Context Protocol. Add one URL to ChatGPT, Claude, Cursor or any MCP client and it can look up tracklists, artists and records while you talk. No key, no install, public data only.
Server URL
https://ryser.id/api/mcpStreamable HTTP. No authentication. Read-only.
What it is
MCP (Model Context Protocol) is the open standard assistants use to call outside tools. A server publishes a few named tools with typed inputs; the assistant reads the descriptions and decides when to call them. ryser.id's server exposes the same public data as the REST API, wrapped so a model can use it in conversation: paste a set link, get the tracklist; name a DJ, get what they play.
It is read-only and needs no account. Starting a new analysis is not a tool on purpose: that costs minutes, so the assistant sends you to the analyse link instead.
Claude
Claude.ai and the desktop app. Settings → Connectors → Add custom connector. Name it ryser.id, paste the URL, save. Custom connectors are available on paid Claude plans. Then start a chat and enable the connector under the tools menu if it is not on already.
Claude Code. One command, then it is available in every session:
claude mcp add --transport http ryser https://ryser.id/api/mcp # or scoped to a project so teammates get it too: claude mcp add --transport http --scope project ryser https://ryser.id/api/mcp
Older desktop configs. A client that only speaks stdio can bridge through mcp-remote:
{
"mcpServers": {
"ryser": { "command": "npx", "args": ["-y", "mcp-remote", "https://ryser.id/api/mcp"] }
}
}ChatGPT
Settings → Connectors → Advanced → enable Developer mode, then Create. Name ryser.id, MCP server URL as above, authentication None. Developer-mode connectors are available on Plus, Pro, Team and Enterprise plans; in a chat, open the tools (plus) menu and switch ryser.id on. ChatGPT will show the tool calls it makes and may ask you to confirm the first one.
The connector also works in projects and custom GPTs that allow tools. Deep research mode expects its own two search and fetch tools and will not use this server; ordinary chat and agent mode do.
Cursor, VS Code and other clients
Cursor. Add to .cursor/mcp.json in a project, or the global file under Settings → MCP:
{ "mcpServers": { "ryser": { "url": "https://ryser.id/api/mcp" } } }VS Code (Copilot agent mode). .vscode/mcp.json:
{ "servers": { "ryser": { "type": "http", "url": "https://ryser.id/api/mcp" } } }Anything else. Any client that supports remote servers over Streamable HTTP works with the URL alone. To poke at it by hand:
npx @modelcontextprotocol/inspector # → choose "Streamable HTTP", paste https://ryser.id/api/mcp, connect, list tools, call get_tracklist with a link
The five tools
search_dj_setsquery, limit? | Sets by DJ, event, channel or words from the title. Returns set summaries with ids. |
get_tracklistset_id? | url? | The full timestamped tracklist of a public set, by ryser.id id or by the YouTube, SoundCloud or Mixcloud link. With a link nobody analysed yet it answers found: false plus the link to analyse it. |
get_artistslug | A DJ or producer: links, most played records, sets performed and sets they are played in. Slug is the lowercase hyphenated name, black-coffee. |
get_trackslug | A record: versions heard and every public set it appears in, with the timestamp. Slug is artist-title, da-capo-kelaya. |
latest_setsorigin?, limit? | The newest public tracklists; origin narrows to library (daily scans of popular sets) or community (sets people shared). |
Every tool returns JSON text. Set summaries and tracklist rows have the same fields as the REST objects, including the public url of each set, artist and track, so the assistant can cite the page.
Things to ask
- “What is the tracklist of this set?” with a YouTube, SoundCloud or Mixcloud link. The assistant calls
get_tracklistwith the link. - “Which track plays around 45 minutes in this Boiler Room?” Same call; the model reads the timestamps.
- “What does Amelie Lens play the most?”
get_artistwithamelie-lens: top records, sets performed, sets played in. - “Who has played Kelaya by Da Capo, and when in the set?”
get_trackwithda-capo-kelaya. - “Any new Cercle sets this week?”
search_dj_setswithcercle, orlatest_setswith origin library. - “Make me a Rekordbox-ready list of the matched tracks with key and BPM.” The rows carry both; the assistant formats.
When a set is not on ryser.id yet, the tool says so and hands back the analyse link. Anyone can run it there; a free account gets its first full set for nothing.
Behaviour and limits
- Public data only: sets people shared and the daily library. Private analyses are invisible here, as on the site.
- Results are capped at 50 per call and cached for five minutes, the same as the REST API.
- The server carries short instructions for the model: try
get_tracklistorsearch_dj_setsfirst, and link to the page it used. Most assistants follow them. - Nothing is written, nothing is stored about you. There is no session state; each call stands alone.
- It is beta. Tool names are stable; descriptions and fields may improve. Changes land on What’s new.
Something broken in your client, or a tool you wish existed? [email protected].