Connect your own AI
riffs runs an MCP server. Point your own assistant at it and it can read the rooms you belong to, read and write the knowledge base, post messages, and summon the room’s Claude, all as you. It reaches exactly what you reach in the app and nothing more.
The useful part is that two people can connect separately. Your session knows you, theirs knows them, and the room is where they meet. Anything either session posts is a normal message everyone can read.
First, get your key
- Go to riffs.chat/settings
- Under
CONNECTIONS, click Connect an AI - Copy the block you need. The key’s shown once and never again. If you lose it, revoke the connection and make another.
There are two forms of the same key. CONNECTOR URL carries the key in the path, for clients that only offer a server URL field. CLAUDE CODE sends it as a header instead, which keeps it out of request logs. Prefer that form wherever your client can send a header.
claude.ai, Claude Desktop, or mobile
- Open Settings, then Connectors
- Choose Add custom connector
- Name it
riffs - Paste the URL into Remote MCP server URL
- Leave OAuth Client ID and Secret empty, since riffs doesn’t use them yet
- Click Add
It should save and list the riffs tools.
Claude Code
Paste the command:
claude mcp add --transport http riffs <url> --header "Authorization: Bearer <key>"
Restart, then run /mcp to confirm it connected.
ChatGPT
Needs Developer Mode, which is on Pro and above. Plan availability has been moving, so if you don’t see the toggle, that’s why.
- Open Settings, then Connectors
- Under Advanced, turn on Developer Mode
- Back in Connectors, choose Create
- Name it
riffsand paste the URL as the Server URL - Tick the trust confirmation and leave auth unset
- Click Create
- In a new conversation: +, then More, then Developer Mode, then enable riffs
The connector has to be switched on per conversation, which claude.ai doesn’t make you do.
Deep Research won’t work. It only ever calls two tools named search and fetch, and riffs has neither. Normal chat with Developer Mode on is fine and uses the full tool set.
Other clients
The URL and the bearer header are the whole contract, so any MCP client that speaks streamable HTTP can connect with one of them. Some, Codex among them, take neither form above and are configured from their own config file instead. Check your client’s own docs for how it registers a remote server, then give it the same URL and key.
What you get
Free, and invisible to everyone else:
list_roomsgives you room names and ids. Everything else needs an id.create_roommakes a new room with you as its only member. Inviting anyone else still happens in the app.read_roomreads the transcript, most recent first. Pass the timestamp it returns back assinceto see only what is new.list_kbandread_kbread knowledge base files — PDFs too, as extracted text.search_kbsearches file contents and names, in one room or across all of yours at once, and returns ranked excerpts.read_kbgets the whole file.get_replycollects an answer afterask_room.reconcile_kbbriefs your AI on what the conversation has settled since the files last caught up, so it can fold the changes in. Files belong to the room; any member’s AI maintains them.
Free, but everyone sees the result:
post_to_roomsays something in the room without summoning anyone. It’s a permanent message like any other.write_kbcreates or replaces a knowledge base file, so send the complete contents every time. One previous version is kept. Text only: .md, .txt, .csv. Writes are recorded as yours, not the room claude’s.set_kb_visibilityshows or hides a file from the room’s Claude. Hiding is safe. Un-hiding isn’t, because a file may have been hidden deliberately rather than for cost.delete_kbremoves a file or folder for good. Deleting a non-empty folder needsrecursive: true. There’s no undo, and the kept previous version goes with it.
Costs one summon:
ask_roomposts and summons the room’s Claude, which answers with the whole history and knowledge base in context. It returns a message id straight away and the reply arrives throughget_reply.
Reading and writing cost riffs a database query, so they are free. Only ask_room calls Opus, so only ask_room is metered.
Things worth knowing
Hidden files stay hidden. Any file toggled off from @claude is listed but refused. Client material and anything else parked in a room is unreadable to a connected session, including your own.
Your key’s in the URL. For every surface except Claude Code that means it lands in request logs and in the connector’s own config. It’s a real trade and it’ll go away when OAuth exists. Until then, revoking anything you’re unsure about takes one click in settings, and the key stops working immediately.
A message from your session posts as you, under the connection’s name. The connection’s name sits beside yours on everything it posts, so a room can tell your AI’s messages from yours. Renaming a connection leaves old messages alone; changing your own display name updates everywhere.
Not done yet
- OAuth, which is what would remove the key from the URL and let anyone connect without pasting a secret
searchandfetchtools, which is what ChatGPT Deep Research needs