Quickstart
From a new project to a real ChatGPT or Claude call in about two minutes, then the same from your app.
You need an account with a verified email address. Steps 1 to 5 run in your browser with no code; step 6 is the code your app needs.
1. Create a project#
Open the dashboard, sign in and click New project. Name it after your app: hosts see the project name as the server's name. The form has a Spend cap in credits per month (optional) field for a spend cap; leave it empty for none, then click Create project.
The publishable key (pk_…) is shown once. Copy it: your app uses it to create links. It is public by design and can do nothing but create links.
2. Try it in the browser#
On the project page, click Try it in the browser, then Start. The page creates a link labelled "Try it in the browser", opens the app socket from this tab and registers one read-only tool, browser_time. It shows the link's MCP URL, steps for each host, and logs every call and result.
3. Paste the URL into a host#
Copy the MCP URL and add it as a custom connector with no authentication:
- ChatGPT: in Plugins, choose Add custom MCP server, paste the URL as the Server URL and pick No authentication. Full steps.
- Claude: in Customize > Connectors, choose Add custom connector, paste the URL and use no sign-in. Full steps.
- Claude Code: run
claude mcp add --transport http relay <url>.
4. See the first call#
Ask something that needs the tool, such as "What time is it in my browser? Use browser_time." The call frame appears in the Live log, the page answers with a result, and the answer shows up in the chat. The call is also listed in the project's Calls tab.
No host at hand? Call the URL with curl, putting the URL token from the page in place of the sample:
⫻
curl
5. Finish#
Click Revoke and finish. The link is revoked, its URL answers 404 from then on, and you can remove the connector from the host.
6. Do it from your app#
Your app does what the Try it page did: create a link once per person and device, keep the link token, open the socket and answer calls.
Create a link#
loadSecret, saveSecret and deviceName stand for your platform's secure storage and device name: the macOS Keychain, the Windows Credential Manager, the Secret Service on Linux, or an encrypted file. See Links for the response and its errors.
Connect and answer calls#
Install @meslzy/relay, then connect an MCP server you already have through the official MCP SDK, or register tools with the plain helper. The package is sugar over the WebSocket protocol: a client of about 30 lines in any language, and that protocol remains the contract.
notes.search is your code: it runs the tool and returns the text for the model. LINK_TOKEN is the value linkTokenOf() returns. Both connect, reconnect with backoff, answer cancel and stop for good on a final close code. Show the person the MCP URL you saved when the link was created, with a copy button and a line on where to paste it.
Next steps#
- Writing the client in another language: WebSocket protocol.
- Let the person pause, rotate or revoke their link from your app: the helper's
app.pause(),app.resume(),app.rotate()andapp.revoke(), which send the link commands. - Mark read-only tools so ChatGPT stops asking for confirmation: Connect ChatGPT.