Skip to main content
Restart the client first. Every client reads its MCP config at startup, and Cursor can also reload the window from the command palette. Then check the items for your kind of client.On Claude or ChatGPT, which connect over OAuth, confirm the connector was actually added and that you completed the sign in rather than closing the browser tab partway. In ChatGPT the plugin is only created once you tick the risk acknowledgement.On Claude Code, Cursor, Gemini CLI, Codex, VS Code, Windsurf, or Antigravity, which read a config file:
  1. Check the config key. Claude Code, Cursor, Gemini CLI, Windsurf, and Antigravity nest servers under mcpServers. VS Code uses servers, and Codex uses a [mcp_servers.<name>] section in TOML. A server under the wrong key is ignored silently.
  2. Check the URL key. Windsurf and Antigravity expect serverUrl, and Gemini CLI expects httpUrl because it reserves url for SSE. Claude Code, Codex, Cursor, and VS Code expect url.
  3. Check the endpoint. It is https://connect.neetoinvoice.com/mcp/messages, with no trailing slash.
  4. Check the syntax. In JSON a trailing comma or an unclosed brace makes the whole file unreadable, which takes out any other servers too.
Full snippets for each client are on Connect.
On an API key connection, the Authorization header must read Bearer YOUR_API_KEY, with the word Bearer and a single space before the key. Confirm the key has not been revoked, and that it belongs to the workspace you expect: a key generated in one workspace does not work in another. Generate a new key from workspace settings if you are unsure.On an OAuth connection there is no key to check. Remove the connector and add it again to run the sign in from the start.
A client that finds a credential in its config never starts the OAuth flow. Remove the headers block, or the bearer_token_env_var line in Codex, and restart the client. It then answers the server’s 401 by opening the sign in.
The opposite case: the credential is missing, so the client falls back to OAuth. Add the headers block with "Authorization": "Bearer YOUR_API_KEY", or set bearer_token_env_var = "NEETOINVOICE_API_KEY" in Codex and export that variable, then restart the client. Codex takes the name of an environment variable, not the key itself.
The first screen asks for a workspace subdomain, not a full URL or an email address. For acme.neetoinvoice.com, enter acme. See Workspace subdomain.
That is the scoping working as intended. An OAuth connection acts as the person who approved it, so lists and searches come back filtered to your permissions, and asking for a specific client or project you cannot open is refused rather than answered.If the assistant genuinely needs to reach everything in the workspace, that is what an API key connection is for. See Authentication.
The approval screen has two optional permissions, Create and update and Delete, and a tool that needs one you left unticked is refused with a message naming it. Nothing is broken and nothing half happened.To grant it, remove the connector and add it again, ticking the permission this time. See Authentication. An API key connection carries every permission, so this cannot happen on one.
An OAuth connection covers the workspaces you ticked while approving it. Name the workspace in your prompt, or ask the assistant to list the workspaces it can reach. To add another one, run the sign in again and tick it.An API key belongs to exactly one workspace, so a key connection reaching the wrong one means the wrong key. Add the server a second time, with the other key and a different server name.
MCP needs VS Code 1.99 or later with GitHub Copilot running in Agent mode. It is not available in Ask or Edit mode. Check the version, switch Copilot to Agent mode, and confirm that .vscode/mcp.json is in the workspace you have open. On an API key connection, VS Code prompts for the key the first time the server is used, so answer that prompt.
Enable the server after saving the config: Settings → Cascade → MCP Servers in Windsurf, Settings → Customizations in Antigravity. Windsurf also caps the total number of tools at 100 across every connected server, so turn off servers you are not using and reload.
Adding NeetoInvoice as a custom connector is only half of it. The connector still has to be authorized against your workspace before it can be used. Open Settings > Connectors, remove NeetoInvoice, and add it again if the authorization did not complete. One connector list backs claude.ai, the Claude desktop app, Claude mobile, and Cowork, so fixing it in one fixes it everywhere.On a Team plan the connector may be waiting on an admin instead, who allows it under Organization settings > Connectors.
The server publishes its OAuth metadata without any credential, so one request tells you whether the problem is on the server or in your client:
A JSON document whose issuer is https://connect.neetoinvoice.com means the host is reachable and answering, so look at the client’s setup next. It does not prove that every tool call succeeds. No answer, or an error page, means the server cannot be reached from your network. Try again in a few minutes, and if it persists, tell us.

Still stuck

Reach us through the help center, or at support@neetoinvoice.com. Tell us which client you are using and what the assistant reports when it tries a NeetoInvoice tool.