Other MCP clients
Connect ChatGPT, Cursor or any client that speaks remote MCP to your LeadMove workspace.
LeadMove's server lives at https://app.leadmove.io/mcp. Any client that supports remote MCP servers over Streamable HTTP with OAuth can connect to it, the same way Claude does.
If yours also accepts a bearer token, a key works and skips the sign-in entirely.
Whichever client you use, permissions and limits are the same, and the connection appears in Settings → Developers → Connected assistants like any other.
What a client needs to support
| Transport | Remote MCP over Streamable HTTP (POST), not stdio |
| Authorization | OAuth 2.1 with PKCE (S256), or a bearer token you paste in |
| Client identity | Dynamic Client Registration, or client ID metadata documents |
| Client authentication | None (a public client, PKCE is the proof), or private_key_jwt with a published JWKS, as ChatGPT does. A client whose metadata declares private_key_jwt signs every token request: without its assertion it is refused, whatever else it lists |
| Discovery | Reads WWW-Authenticate on a 401, or lets you point at the server URL |
Clients that only run local MCP servers over stdio cannot reach us — there is nothing to install on your machine.
ChatGPT
ChatGPT connects to LeadMove on plans with custom connectors. On some of them, Developer mode has to be switched on first, under Settings → Connectors → Advanced.
Pick ChatGPT in Settings → Developers → Connect an assistant: the dialog opens ChatGPT's settings and has the URL ready to copy. Then:
- Settings → Connectors → Create.
- Server URL:
https://app.leadmove.io/mcp. - Authenticate. You land on the LeadMove permission screen, sign in, tick what it may do, and confirm.
The connection then shows as ChatGPT in your connections list, and the LeadMove dialog, if you left it open, says Connected.
When ChatGPT asks before it uses a LeadMove tool, its prompt names the tool: Pipelines, Preview: pause a buyer, Apply a previewed change. A tool titled Preview: only shows you what would change, a tool named after what it shows only reads, and Apply a previewed change is the one that makes the change you just read. Approve every LeadMove tool once or always, except Apply a previewed change, which you approve each time. Nothing changes until that one runs.
What you see in ChatGPT
The same preview card as in Claude: what would change, who is affected, whether it can be undone, with Apply, Discard and, once applied, Undo for 7 days. Saying yes in the chat works just as well. ChatGPT often repeats the preview as a list under the card; both say the same thing.
ChatGPT doesn't see clicks on the card. To carry on from there, press Tell ChatGPT: it puts a line such as "I applied it from the card: Pause BrightHome Energy." in your message box, and nothing is sent until you send it. Setups, previews kept for later and conversations you come back to work as they do in Claude.
A client that doesn't draw cards shows the same preview as text.
Cursor
Pick Cursor in Connect an assistant for this block, ready to copy. Cursor reads ~/.cursor/mcp.json (or .cursor/mcp.json in a project). With OAuth:
Restart Cursor and approve the sign-in when it opens a browser. To skip the browser, choose Use a key instead under the block: the dialog creates a key and gives you the same block with a headers entry.
Anything else
Point the client at https://app.leadmove.io/mcp and let it discover the rest. An unauthenticated request answers 401 with a WWW-Authenticate header naming our metadata document, which is what a well-behaved client follows to find the sign-in flow by itself.
Start by calling describe_capabilities: it reports what your connection holds, which tools are available to it right now, and what the account has switched on.
Troubleshooting
"Couldn't reach the server." Check the URL is exactly https://app.leadmove.io/mcp — no trailing slash, no /api/, https not http.
"Authentication failed" straight away. The client sent no credentials, or a secret from somewhere else. An ingestion key from a pipeline and an lm_live_ API key are both rejected here; they are different secrets for different jobs.
It connected, but there are no tools. Either the connection holds no permission your role still allows — check the row in Settings — or Let assistants read this workspace is switched off for the organization.
It worked yesterday and asks to sign in today. The connection was revoked or suspended, or its refresh token lapsed after 30 days unused. The row in Settings says which.
Everything answers not_found. Names are resolved inside your organization only. A close name is usually suggested back to you when one exists; if none is, quote the name exactly as it reads in the app, or use the ID from the page header.