The three values
Wherever your client asks for a remote or custom MCP server, those go in. If it offers a choice of transports, pick Streamable HTTP - not stdio, and not the deprecated HTTP+SSE.
The two shapes you will meet
Most clients use one of these. If yours is not documented here, try the first.serverUrl instead of url, streamableHttp instead of http, headers as a list of strings rather than an object. The values stay the same.
Clients that only speak stdio
Some older clients launch local processes and cannot reach a remote server. Bridge to it withmcp-remote, which runs locally and forwards to us:
Testing without a client
Useful when you want to know whether the problem is us or your editor. Open a session:200 with an mcp-session-id response header and the server’s capabilities in the body.
initialize succeeds even without a valid key - authentication is checked when a tool actually runs. To test the key itself, call a tool: pass the returned mcp-session-id back as a header, send notifications/initialized, then call tools/call with getAccountBalance. A bad key returns error_code: unauthorized.Checklist when it will not connect
1
Is the path there?
https://mcp.2extract.com/mcp, not the bare host.2
Is the transport right?
Streamable HTTP. If the client only lists SSE, it is likely too old for this server.
3
Is the header exactly right?
Bearer, one space, then the key. Watch for a trailing newline from copy-paste.4
Did the client reload?
Most need a restart, not just a new conversation.
5
Does the key have the scopes?
If some tools work and others do not, it is scopes - not the connection. See Overview.
Next steps
FAQ
Error codes and what each one means.
Tools
Everything the agent can call.