Connect your AI
The MCP URL is the same everywhere:
https://papertrade-yield.pages.dev/mcpIt needs no API key or OAuth. Client configuration formats change, so each section names the format it was checked against. If a client rejects a snippet, check its current MCP docs and keep the URL.
Claude Code#
claude mcp add --transport http papertrade-yield https://papertrade-yield.pages.dev/mcpAdd --scope project to write a shared .mcp.json, or --scope user for all projects. The file form:
{
"mcpServers": {
"papertrade-yield": {
"type": "http",
"url": "https://papertrade-yield.pages.dev/mcp"
}
}
}Claude Desktop and claude.ai#
Open Settings, then Connectors, click Add, choose Add custom connector, paste the URL and click Add. Connectors can also be enabled per conversation from the "Add files, connectors, and more" menu.
For a Claude Desktop build that only loads local stdio servers, bridge with mcp-remote in claude_desktop_config.json:
{
"mcpServers": {
"papertrade-yield": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://papertrade-yield.pages.dev/mcp"]
}
}
}Claude API (MCP connector)#
Send the beta header anthropic-beta: mcp-client-2025-11-20. Declare the server in mcp_servers and enable it with an mcp_toolset entry in tools:
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-client-2025-11-20" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 1000,
"messages": [{"role": "user", "content": "What did PAPER stakers earn per 1M PAPER per day this week?"}],
"mcp_servers": [
{"type": "url", "url": "https://papertrade-yield.pages.dev/mcp", "name": "papertrade-yield"}
],
"tools": [
{"type": "mcp_toolset", "mcp_server_name": "papertrade-yield"}
]
}'With the Python SDK use client.beta.messages.create(..., mcp_servers=[...], tools=[{"type": "mcp_toolset", "mcp_server_name": "papertrade-yield"}], betas=["mcp-client-2025-11-20"]).
OpenAI Codex CLI#
codex mcp add papertrade-yield --url https://papertrade-yield.pages.dev/mcpOr edit ~/.codex/config.toml:
[mcp_servers.papertrade-yield]
url = "https://papertrade-yield.pages.dev/mcp"OpenAI Responses API#
{
"model": "gpt-5",
"input": "What is the realized PAPER staking yield over 7 days?",
"tools": [
{
"type": "mcp",
"server_label": "papertrade_yield",
"server_description": "Read-only PAPER staking and yield data for Papertrade (unofficial).",
"server_url": "https://papertrade-yield.pages.dev/mcp",
"require_approval": "never",
"allowed_tools": ["get_staking_stats", "get_apr", "get_yield_history", "get_claims_activity", "get_wallet_staking", "project_rewards", "plan_staking_action"]
}
]
}All tools are read-only, so require_approval: "never" is safe here. Use "always" if you prefer to review each call.
ChatGPT#
In ChatGPT, enable Developer mode (Settings, Apps and Connectors, Advanced settings; availability depends on plan and OpenAI moves this setting from time to time). Then create a connector: give it a name, paste https://papertrade-yield.pages.dev/mcp as the server URL and choose no authentication. Enable the connector in a chat from the tools menu.
Gemini CLI#
gemini mcp add --transport http papertrade-yield https://papertrade-yield.pages.dev/mcpOr in ~/.gemini/settings.json, which uses httpUrl for Streamable HTTP:
{
"mcpServers": {
"papertrade-yield": {
"httpUrl": "https://papertrade-yield.pages.dev/mcp"
}
}
}Cursor#
.cursor/mcp.json in a project, or ~/.cursor/mcp.json globally:
{
"mcpServers": {
"papertrade-yield": {
"url": "https://papertrade-yield.pages.dev/mcp"
}
}
}VS Code#
.vscode/mcp.json:
{
"servers": {
"papertrade-yield": {
"type": "http",
"url": "https://papertrade-yield.pages.dev/mcp"
}
}
}Or run MCP: Add Server from the command palette and choose HTTP.
Windsurf#
~/.codeium/windsurf/mcp_config.json. Windsurf uses serverUrl for remote servers:
{
"mcpServers": {
"papertrade-yield": {
"serverUrl": "https://papertrade-yield.pages.dev/mcp"
}
}
}Press refresh in the MCP panel after saving.
Zed#
In settings.json, under context_servers:
{
"context_servers": {
"papertrade-yield": {
"url": "https://papertrade-yield.pages.dev/mcp"
}
}
}If Zed starts an OAuth prompt, the server does not need one. Use the mcp-remote bridge shown in the Claude Desktop section as a command entry instead.
Cline#
cline_mcp_settings.json (MCP Servers panel, Configure MCP Servers):
{
"mcpServers": {
"papertrade-yield": {
"url": "https://papertrade-yield.pages.dev/mcp",
"type": "streamableHttp",
"disabled": false
}
}
}Goose#
Run goose configure, choose Add Extension, then Remote Extension (Streamable HTTP), and enter the name and the URL. Or add it to ~/.config/goose/config.yaml:
extensions:
papertrade-yield:
name: papertrade-yield
type: streamable_http
uri: https://papertrade-yield.pages.dev/mcp
enabled: true
timeout: 300For one session only: goose session --with-streamable-http-extension https://papertrade-yield.pages.dev/mcp.
Continue#
~/.continue/config.yaml or a file in .continue/mcpServers/:
name: Papertrade Yield
version: 0.0.1
schema: v1
mcpServers:
- name: papertrade-yield
type: streamable-http
url: https://papertrade-yield.pages.dev/mcpAny other agent framework (OpenAPI)#
Frameworks that import OpenAPI tools (LangChain, LlamaIndex, the OpenAI Agents SDK, Dify, n8n and similar) can load https://papertrade-yield.pages.dev/openapi.json directly. It describes the JSON API and the /mcp endpoint. The A2A agent card at /.well-known/agent-card.json lists the same capabilities as skills. See Agent discovery.
Try it#
Once connected, ask:
- "What did PAPER stakers earn per million PAPER over the last 24 hours and 7 days?"
- "If I assume PAPER is worth $0.02, what is the implied APR?"
- "How much PAPER would a $300 liquidated loss mint, and what would it earn in 30 days?"
- "Show wallet 0x... : staked PAPER, pending rewards, lifetime claims."
- "Plan a claim for 0x... and tell me what I would need to sign."
The last one returns a plan only. You sign in your own wallet, never through the AI.