AdCopilot docs
Troubleshooting

Connecting Cursor and other clients

Which assistants work with AdCopilot and why there is no API key. Cursor (re-add it and approve once if Approve did nothing), and fixes for VS Code, Microsoft Copilot Studio, Google Antigravity, Windsurf, Claude Code and Gemini CLI, and for a client that cannot sign in.

View as Markdown
Open inChatGPTClaudePerplexity

Claude and ChatGPT have their own pages: Connecting Claude and Connecting ChatGPT. This page covers the rest.

Which assistants work

AdCopilot works with an assistant that can do two things:

  • add a remote MCP server by its URL, over HTTP:

    https://mcp.adcopilot.cloud/mcp
  • sign in through your browser with OAuth, the sign-in MCP clients use: the client registers itself with AdCopilot and opens AdCopilot's approval page, Let <assistant> use your AdCopilot?.

Step-by-step guides: ChatGPT, Claude, Claude Code and Codex and Gemini CLI. Every other client follows Any MCP client, with the notes below.

There is no API key

What you see. Your client asks for an API key, a token, a client ID or a client secret.

Why it happens. Some clients offer several ways to sign in. AdCopilot uses only one: OAuth in your browser. It never issues API keys, and the connector URL holds no secret.

Fix.

  1. Choose the client's OAuth sign-in, the one that discovers the details by itself, and leave key fields empty.
  2. Press Approve on AdCopilot's page when it opens.

A client that can only send an API key or a fixed header cannot connect to AdCopilot.

Cursor

Cursor connects: it adds AdCopilot, opens Let Cursor use your AdCopilot?, and Approve completes. If Approve did nothing on an earlier try, remove AdCopilot in Cursor's MCP settings, add it again, and press Approve once. See Approve does nothing.

Cursor reads the JSON shape on Any MCP client: mcpServers → adcopilot → url.

VS Code

VS Code's mcp.json lists servers under servers, not mcpServers, and wants the type. Microsoft documents this shape, and VS Code's MCP: Add Server command (choose HTTP) writes it for you:

{
  "servers": {
    "adcopilot": {
      "type": "http",
      "url": "https://mcp.adcopilot.cloud/mcp"
    }
  }
}

VS Code then signs in through your browser: press Approve on AdCopilot's page. If it does nothing, see Approve does nothing.

Microsoft Copilot Studio

Follow Microsoft's Connect your agent to an existing Model Context Protocol (MCP) server, with these choices:

  1. On your agent's Tools page, choose Add a tool, New tool, then Model Context Protocol.
  2. Give it a Server name and a Server description, and put https://mcp.adcopilot.cloud/mcp in Server URL.
  3. For authentication choose OAuth 2.0, then Dynamic discovery. Not API key, and not Manual: both ask for a key, or a client ID and secret, that AdCopilot does not issue.
  4. Choose Create, then Next, then Create a new connection. AdCopilot's approval page opens: press Approve, then choose Add to agent.

Google Antigravity, Windsurf and other clients

Add AdCopilot as a remote MCP server by URL in the client's own MCP settings. Most clients that read a JSON file accept the shape on Any MCP client; some name the address field differently, so check the client's documentation. The client then opens AdCopilot's approval page in your browser: press Approve.

Claude Code

  • Not signed in. Run /mcp, choose adcopilot and authenticate.
  • Tools missing after a release. Run /mcp, choose adcopilot and reconnect.
  • You added the connector by hand and installed the plugin. The copy added by hand hides the plugin's: see Already added the connector by hand?.

Gemini CLI

  • Not signed in. Run /mcp auth adcopilot and press Approve on the page that opens.
  • Tools missing after a release. Restart Gemini CLI. Still missing: remove AdCopilot (gemini mcp remove adcopilot) and add it again, as in Connect Gemini CLI.

The client cannot sign in

What you see. While connecting, the client reports one of these from AdCopilot:

ErrorWhat it means
access_denied: "the user declined the request"Cancel was pressed on the approval page.
invalid_redirect_uri: "redirect_uris entries must be absolute https:// URIs (http://localhost or http://127.0.0.1 allowed for dev clients): …"The client asked to be sent back to an address AdCopilot does not accept.
invalid_request: "code_challenge is required (PKCE)" or "code_challenge_method must be S256"The client does not use the secure sign-in AdCopilot requires.
invalid_scope: "unsupported scope requested"The client asked for permissions AdCopilot does not offer.

An invalid_scope inside a tool's answer, after you are connected, is something else: Google would not renew AdCopilot's access to a product. See Google would not renew access.

Why it happens. AdCopilot only sends you back to an https:// address, or to http://localhost or http://127.0.0.1 on your own computer, and requires the PKCE sign-in with S256. A client that uses an app-only address, or skips PKCE, cannot sign in.

Fix.

  1. access_denied: start the connection again and press Approve.
  2. The others: update the client to its latest version and try again. If it still fails, the client can't connect to AdCopilot yet; use another assistant.

If it persists. Write to [email protected] with the client's name and version and the exact error, so we know which clients need it.

On this page