MCP server
Stateless Streamable HTTP (JSON-RPC 2.0, protocol 2025-06-18 with fallbacks). One URL, https://uplift.page/mcp, for everyone: browsing, evaluating, and installing full skills work anonymously. The first time your agent calls a workspace tool, the server asks it to sign you in: you enter your email code, approve the agent once, and every call then runs as you against the workspaces you belong to. A workspace key (upk_…) does the same for automation and CI.
Connect your agent
Every client needs only the URL. When a tool needs your workspace, the server answers 401 and your client opens uplift.page to sign in with your emailed code; you allow the app once, and it never sees anything outside the workspaces you belong to. No client ID, secret or key to paste. Revoke an app later under Account → Connected agents.
Claude (web, desktop, mobile, Cowork)
Customize → Connectors → Add custom connector. On Team and Enterprise, an Owner adds it once under Organization settings → Connectors and members connect it.
Name: uplift.page URL: https://uplift.page/mcp (leave Advanced settings empty)
Sign in: Public tools work straight away. The first workspace request shows a Connect card in the chat; sign in and Claude retries.
Claude Code
Add it once for every project (-s user), or per project without it.
claude mcp add -s user --transport http uplift https://uplift.page/mcp
Sign in: When a workspace tool asks, run /mcp, pick uplift and choose Authenticate.
ChatGPT
Settings → Apps → Advanced settings → turn on Developer mode, then Create app (or connector) with the URL and OAuth authentication.
MCP server URL: https://uplift.page/mcp Authentication: OAuth
Sign in: ChatGPT signs you in when you add it. It doesn't support API keys, so sign-in is the only way.
Codex (CLI and IDE extension)
Add the server to ~/.codex/config.toml, then sign in once.
[mcp_servers.uplift] url = "https://uplift.page/mcp"
Sign in: codex mcp login uplift opens the browser.
Cursor
Settings → MCP → Add new MCP server, or edit ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project).
{
"mcpServers": {
"uplift": { "url": "https://uplift.page/mcp" }
}
}Sign in: Cursor shows Needs login next to the server; click it to sign in.
VS Code (GitHub Copilot agent mode)
Command Palette → MCP: Add Server → HTTP, or add it to .vscode/mcp.json (workspace) or your user mcp.json.
{
"servers": {
"uplift": { "type": "http", "url": "https://uplift.page/mcp" }
}
}Sign in: VS Code asks to sign in the first time the server starts.
Windsurf / Devin
Cascade → MCP servers → Add custom server, or edit ~/.codeium/windsurf/mcp_config.json.
{
"mcpServers": {
"uplift": { "serverUrl": "https://uplift.page/mcp" }
}
}Sign in: Windsurf opens the browser to sign in when it connects.
Gemini CLI / Antigravity
Add it to ~/.gemini/settings.json (Antigravity: its MCP settings, same shape).
{
"mcpServers": {
"uplift": { "httpUrl": "https://uplift.page/mcp" }
}
}Sign in: Run /mcp auth uplift (Antigravity asks you to paste back the code it shows).
Goose
goose configure → Add Extension → Remote Extension (Streamable HTTP), or Extensions → Add custom extension in the desktop app.
https://uplift.page/mcp
Sign in: Goose opens the browser to sign in when the extension starts.
Zed
Agent panel → Settings → Add Custom Server, or add it under context_servers in settings.json.
{
"context_servers": {
"uplift": { "url": "https://uplift.page/mcp" }
}
}Sign in: Zed runs the standard MCP sign-in when the server asks.
MCP Inspector (testing)
Run the inspector, choose Streamable HTTP and the URL.
npx @modelcontextprotocol/inspector
Sign in: Use Open Auth Settings → Quick OAuth Flow, then Connect.
Other clients: add a remote (Streamable HTTP) MCP server with the URL above. Any client that supports MCP authorization signs in the same way; field names vary, so check your client's MCP settings if one differs.
Automation, CI and hooks
Machines that can't sign in in a browser use a workspace key from dashboard.uplift.page → Telemetry keys, as a literal Authorization header in the client's own config. Desktop apps and scheduled runs don't read your shell profile, so an environment variable there arrives empty. A key in the header also turns off the sign-in flow in most clients.
claude mcp add -s user --transport http uplift https://uplift.page/mcp --header "Authorization: Bearer upk_YOUR_KEY"
{
"mcpServers": {
"uplift": {
"type": "http",
"url": "https://uplift.page/mcp",
"headers": { "Authorization": "Bearer upk_YOUR_KEY" }
}
}
}curl -s https://uplift.page/mcp -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"pull_skill","arguments":{"slug":"code-style"}}}' \
| jq -r '.result.structuredContent.markdown' > skills/code-style/SKILL.mdcurl -s -X POST https://uplift.page/mcp -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq '.result.tools[].name'Public tools
Skill-library tools
List, install, and score skills: public skills need no account; signing in (or a workspace key) unlocks your workspace's private side. People in several workspaces pass workspace to pick one of theirs. Writes need a paid plan.
A typical agent flow: recommend_stack with the build intent → adopt the mini prompt → ship → send_feedback with the outcome. For skills: list_skills → pull_skill → write the markdown to skills/<slug>/SKILL.md. The instructions field returned by initialize tells models exactly this.