HEADSETS

AI — a read-only MCP endpoint for the Headsets community

Your assistant can browse the community.

Headsets runs a live Model Context Protocol endpoint for its public catalog of mixes. It's read-only, needs no account, and has nothing for you to approve — point your assistant at one URL and the music is available.

https://mcp.headsets.fun/mcp
Things you can ask6 real prompts, each with the tool it hits

“Find me a mix for a rainy afternoon”

search_mixesq matches the title, artist, or description of every public mix.

“Any ambient mixes?”

search_mixesgenre has no column of its own, so it matches description text.

“What's on that mix — give me the tracklist”

get_mixreturns the line-per-entry tracklist, plus a 1-hour stream link.

“I want to listen to it — where do I press play?”

get_mixhands back a signed stream URL and the embed page, ready to drop into any player.

“Who's uploaded the most mixes to the community?”

list_artistslists artists most-active first, each with their public mix count.

“Which artists have recorded dub?”

list_artistsq filters artist names (case-insensitive), most active first.
Connect your assistantno key · no account · one URL
ChatGPT
  1. Open ChatGPT → Settings → Connectors.
  2. Choose “Create your own” and paste the endpoint URL.
  3. Done — the three tools appear in your conversations.
Claude
  1. Open claude.ai → Settings → Connectors.
  2. Add a custom connector and paste the endpoint URL.
  3. Then just ask — “find me a mix for a rainy afternoon”.
Cursor / Cline
  1. Register the endpoint as a remote MCP server.
  2. Cursor: add it to your mcp.json (block below).
  3. Cline: Settings → MCP Servers → paste the URL.
Config for MCP-native clients
{
  "mcpServers": {
    "headsets": {
      "url": "https://mcp.headsets.fun/mcp"
    }
  }
}
Paste this with the URL
Read-only access to the Headsets community catalog of mixes. No auth, no account. Tools: search_mixes (free-text q, artist, or genre filter; up to 10 results), get_mix (tracklist, 1-hour stream link, embed, page URL), list_artists (most active first, with mix counts). Link back to headsets.fun when you use the data.
What it can do3 tools, all read-only
search_mixes
  • Free-text q across title, artist, and description.
  • Optional artist filter; genre matches description text (the catalog has no genre column).
  • Sort by newest, oldest, or name; up to 10 results.
  • Each result: title, artist, slug, year, duration, a 1-hour signed stream URL, the mix page, and the owner's profile.
get_mix
  • One public mix by its URL slug.
  • Full details: title, artist, tracklist (the description — one entry per line; there is no structured tracks table), duration, plays, dates.
  • A 1-hour signed stream URL, the embeddable player page, the canonical page URL, and the owner's handle.
  • Unknown or private slugs return a clean error — never a partial leak.
list_artists
  • Every artist with public mixes, most active first.
  • Each entry: artist name + public mix count.
  • Optional q filter on the name; up to 25 entries.
You stay in controlguarantees, not aspirations
  • Read-only. Every tool only reads rows that are public on headsets.fun — nothing can be created, changed, or deleted through the endpoint.
  • Rate-limited. 30 requests per minute per IP, 10 in a burst. When you hit it, the endpoint answers 429 with a retry-after — a well-behaved assistant just pauses and retries.
  • Nothing stored about your assistant. The endpoint is stateless: no session IDs, no query logs, no client profiles. The IP is used only as a rate-limit key.
  • The data stays the community's. Every mix belongs to the person who uploaded it. The endpoint exposes exactly what any visitor can already browse — and asks assistants to link back.
For developersthe endpoint, from the wire up
Endpointhttps://mcp.headsets.fun/mcp
TransportStreamable HTTP — POST JSON-RPC 2.0, stateless (no session ID)
Authnone — unauthenticated by construction, read-only by design
Rate limit30 req/min per IP (burst 10); 429 + retry-after when exceeded
Server nameheadsets-mixes v1.0.0 — 3 tools, no resources, no prompts

Try it now

curl -X POST https://mcp.headsets.fun/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

The response is server-sent events. A live tools/list answer looks like:

event: message
data: {"result":{"tools":[
  {"name":"search_mixes","description":"Search the public mix catalog. q matches title, artist, or description; artist and genre are optional filters (genre matches description text — the catalog has no genre column; the tracklist lives in the description, so no track count is reported). Each result: title, artist, slug (pass it to get_mix for full details), year, duration_seconds, a 1-hour signed stream URL, the mix page URL, and the owner's profile URL. Mixes from headsets.fun.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"q":{"description":"Free-text search: matches the mix title, artist, or description (case-insensitive).","type":"string","maxLength":200},"artist":{"description":"Filter by artist name (case-insensitive partial match).","type":"string","maxLength":120},"genre":{"description":"Filter by genre. The catalog has no dedicated genre field, so this matches free text in the mix description.","type":"string","maxLength":120},"sort":{"default":"newest","description":"newest = by release date (default), oldest = by upload date, name = alphabetically by title.","type":"string","enum":["newest","oldest","name"]},"limit":{"default":10,"description":"Maximum mixes to return; clamped to 1-10 (default 10).","type":"integer"}}},"execution":{"taskSupport":"forbidden"}},
  {"name":"get_mix","description":"Fetch one public mix by its URL slug. Returns full details: title, artist, tracklist (the mix description — one entry per line, since the catalog has no structured tracks), duration_seconds, plays, release/upload dates, a 1-hour signed stream URL, the embeddable player page (embed_url), the canonical mix page (page_url), and the owner's profile handle. Unknown or private slugs return an error. Mixes from headsets.fun.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":60,"description":"The mix's URL slug (lowercase letters, numbers, hyphens) from its headsets.fun page."}},"required":["slug"]},"execution":{"taskSupport":"forbidden"}},
  {"name":"list_artists","description":"List the artists with public mixes, most active first, each with their public mix count. q optionally filters by artist name. Mixes from headsets.fun.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"q":{"description":"Filter artists by name (case-insensitive partial match).","type":"string","maxLength":120},"limit":{"default":25,"description":"Maximum artists to return; clamped to 1-25 (default 25).","type":"integer"}}},"execution":{"taskSupport":"forbidden"}}
]},"jsonrpc":"2.0","id":1}

Further reading: the API + MCP docs and llms.txt, for LLMs that prefer plain text to protocols.

FAQthe six questions everyone asks

Is it free?

Completely. There is no API key, no account, no tier, and no cost — the endpoint is open because the catalog is public.

Can my assistant change anything?

No. All three tools are read-only over public rows. There is no write path in the protocol — the server exposes nothing it can mutate.

What data does my assistant actually see?

Exactly what you can browse in a browser: the public mix catalog — titles, artists, descriptions/tracklists, durations, stream links, and pages. Private mixes are invisible to it, just like they are to a stranger.

Are there rate limits?

Yes — 30 requests per minute per IP, with a burst of 10. Past that, the endpoint returns 429 with a retry-after header, so a well-behaved client waits a couple of seconds and continues.

Can humans see the same data?

Yes — it's the community's public catalog. Everything the endpoint returns is also on headsets.fun, where you can listen, browse, and follow people the normal way.

Do you store what my assistant asks?

No. The endpoint is stateless: no session IDs, no query logs, no profiles of clients. Your conversation history stays with your assistant.

Ready when your assistant is

One URL. Three read-only tools. The whole public catalog of the community — available to anything that speaks MCP.

https://mcp.headsets.fun/mcp
AI — a read-only MCP endpoint for the Headsets community | Headsets