DFX Intelligence · developer docs
Connect a client
Connect Claude, Claude Code, ChatGPT, Cursor, VS Code or any MCP client to the DFX Intelligence MCP server, keyless or on your membership.
Short answer
https://exchange-production-9123.up.railway.app/mcp/core?c=docs. No key, no sign-up. To read as your account, use https://exchange-production-9123.up.railway.app/mcp/core/member and sign in.Keyless, in one line per client
Every client below connects to the core profile, https://exchange-production-9123.up.railway.app/mcp/core?c=docs, with no key and no sign-up. It speaks Streamable HTTP (protocol 2025-06-18); no session id is issued or required. The core profile lists 19 tools, led by research. The full profile, https://exchange-production-9123.up.railway.app/mcp?c=docs, lists every tool (134) and is for agents that need a specific tool outside the core.
Claude Code
claude mcp add --transport http dfx "https://exchange-production-9123.up.railway.app/mcp/core?c=docs"
Claude (claude.ai and Claude Desktop): a custom connector
Pro and Max: Customize > Connectors > + Add > Add custom connector Team and Enterprise: an Owner adds it under Organization settings > Connectors > Add > Custom > Web Name: DFX Intelligence URL: https://exchange-production-9123.up.railway.app/mcp/core?c=docs Authentication: No sign in
ChatGPT (developer mode)
chatgpt.com/plugins > + > Add custom MCP server (developer mode; workspace policies apply) Name: DFX Intelligence URL: https://exchange-production-9123.up.railway.app/mcp/core?c=docs Authentication: none
Cursor (.cursor/mcp.json), Windsurf, Cline and other clients that take a URL
{
"mcpServers": {
"dfx": {
"url": "https://exchange-production-9123.up.railway.app/mcp/core?c=docs"
}
}
}Cursor, one click (paste in a browser on a machine with Cursor)
cursor://anysphere.cursor-deeplink/mcp/install?name=dfx-intelligence&config=eyJ1cmwiOiJodHRwczovL2V4Y2hhbmdlLXByb2R1Y3Rpb24tOTEyMy51cC5yYWlsd2F5LmFwcC9tY3AvY29yZT9jPWRvY3MifQ==
VS Code (.vscode/mcp.json)
{
"servers": {
"dfx": {
"type": "http",
"url": "https://exchange-production-9123.up.railway.app/mcp/core?c=docs"
}
}
}Claude Desktop config file, for builds without remote connectors (bridged through mcp-remote)
{
"mcpServers": {
"dfx": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://exchange-production-9123.up.railway.app/mcp/core?c=docs"
]
}
}
}Any other MCP client that accepts a remote Streamable HTTP URL connects the same way. Set a descriptive clientInfo.name on initialize: it is how DFX tells your integration's traffic apart when you ask for help.
On your membership
To read as your DFX account instead of as a stranger, add the sign-in URL, https://exchange-production-9123.up.railway.app/mcp/core/member. The client opens dfxintel.com, you sign in and allow the connection, and the agent then reads what your plan reads and draws on the same allowance. Revoke it on your account page; the next call is refused.
Signed in, in Claude (claude.ai and Claude Desktop)
Customize > Connectors > + Add > Add custom connector Name: DFX Intelligence URL: https://exchange-production-9123.up.railway.app/mcp/core/member Authentication: Sign in now; the sign-in opens on dfxintel.com; allow the connection.
Signed in, in Claude Code
claude mcp add --transport http dfx https://exchange-production-9123.up.railway.app/mcp/core/member then run /mcp in Claude Code and sign in
Signed in, in ChatGPT (developer mode)
MCP server URL: https://exchange-production-9123.up.railway.app/mcp/core/member Authentication: OAuth
| OAuth detail | Value |
|---|---|
| Authorization server | https://dfxintel.com (metadata at /.well-known/oauth-authorization-server) |
| Protected resource metadata | served by the exchange for each sign-in URL (RFC 9728) |
| Flow | authorization code with PKCE, S256 only |
| Client registration | Client ID Metadata Documents or dynamic client registration (RFC 7591) |
| Scopes | read; watch (implies read) for the five watch tools |
| Tokens | access 1 hour, refresh 30 days; a revoke takes effect on the next call |
Clients that can send a header can use a key instead. Create one on your account page and send it as a Bearer token. Keep it out of source control; an environment variable is the usual place.
With a key, in Claude Code
claude mcp add --transport http dfx "https://exchange-production-9123.up.railway.app/mcp/core?c=docs" \ --header "Authorization: Bearer dfx_live_YOURKEY"
With a key, in Cursor or VS Code
{
"mcpServers": {
"dfx": {
"url": "https://exchange-production-9123.up.railway.app/mcp/core?c=docs",
"headers": {
"Authorization": "Bearer ${env:DFX_KEY}"
}
}
}
}With a key, on the JSON API
curl -H "Authorization: Bearer dfx_live_YOURKEY" "https://dfxintel.com/api/data-factory/v1/search?q=golub"
Check the connection
A plain GET on either endpoint returns the tool list as JSON without a handshake. An initialize call names the server and its version:
initialize
curl -s "https://exchange-production-9123.up.railway.app/mcp/core?c=docs" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18",
"capabilities":{},"clientInfo":{"name":"my-research-agent","version":"1.0"}}}'What production returned at . Abridged after the start of the instructions string, which runs to about 2,900 characters.
{"jsonrpc": "2.0", "id": 1, "result": {"protocolVersion": "2025-06-18", "capabilities": {"tools": {"listChanged": false}}, "serverInfo": {"name": "dfx-real-estate", "title": "DFX Intelligence", "version": "0.16.0"}, "instructions": "DFX Intelligence, core profile: ..."}}Checked against production on . The same page as Markdown, for agents: /api/data-factory/v1/docs/connect.