Developer docs

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

Point the client at 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 detailValue
Authorization serverhttps://dfxintel.com (metadata at /.well-known/oauth-authorization-server)
Protected resource metadataserved by the exchange for each sign-in URL (RFC 9728)
Flowauthorization code with PKCE, S256 only
Client registrationClient ID Metadata Documents or dynamic client registration (RFC 7591)
Scopesread; watch (implies read) for the five watch tools
Tokensaccess 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.