> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.neetoinvoice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect your AI assistant

> MCP server setup for Claude, ChatGPT, Claude Code, Codex, Cursor, Gemini CLI, VS Code, and Windsurf.

## Server details

|                |                                                  |
| -------------- | ------------------------------------------------ |
| Endpoint       | `https://connect.neetoinvoice.com/mcp/messages`  |
| Transport      | HTTP                                             |
| Authentication | OAuth, or `Authorization: Bearer <your-api-key>` |

## Which method does my client use?

The credential decides the permissions boundary, so read
[Authentication](/mcp/authentication) before picking.

| Client                      | OAuth   | API key |
| --------------------------- | ------- | ------- |
| Claude (claude.ai, desktop) | Yes     | -       |
| ChatGPT                     | Yes     | -       |
| Claude Code                 | Not yet | Yes     |
| Codex                       | Not yet | Yes     |
| Cursor                      | Not yet | Yes     |
| Gemini CLI                  | Not yet | Yes     |
| VS Code                     | Not yet | Yes     |
| Windsurf                    | Not yet | Yes     |

<Note>
  Terminal and editor clients register a `http://localhost/...` callback during OAuth. This
  deployment currently accepts only HTTPS callbacks, so those clients use an API key for now.
  Claude and ChatGPT redirect over HTTPS and work with OAuth today.
</Note>

## OAuth clients

<Tabs>
  <Tab title="Claude">
    1. Open **Settings → Connectors**.

    2. Click **Add**, then **Add custom connector**.

    3. Enter a **Name**, for example `NeetoInvoice`.

    4. Paste the URL:

       ```
       https://connect.neetoinvoice.com/mcp/messages
       ```

    5. Click **Add**, then **Connect** and approve the workspace in the browser window.

    Works on claude.ai and the Claude desktop app.
  </Tab>

  <Tab title="ChatGPT">
    1. Open **Settings → Security and login** and turn on **Developer mode**.

    2. Go to **Plugins → Browse plugins → +** and choose **New Plugin**.

    3. Paste the URL:

       ```
       https://connect.neetoinvoice.com/mcp/messages
       ```

    4. Approve the workspace in the browser window.
  </Tab>
</Tabs>

## API key clients

Replace `YOUR_API_KEY` in every block with a key from your workspace. See
[Authentication](/mcp/authentication#api-key-scoped-to-the-workspace).

<Tabs>
  <Tab title="Claude Code">
    ```bash theme={"system"}
    claude mcp add --transport http neeto-invoice \
      https://connect.neetoinvoice.com/mcp/messages \
      --header "Authorization: Bearer YOUR_API_KEY"
    ```

    Or add it to `~/.claude.json` by hand:

    ```json ~/.claude.json theme={"system"}
    {
      "mcpServers": {
        "neeto-invoice": {
          "type": "http",
          "url": "https://connect.neetoinvoice.com/mcp/messages",
          "headers": {
            "Authorization": "Bearer YOUR_API_KEY"
          }
        }
      }
    }
    ```

    Save and restart Claude Code.
  </Tab>

  <Tab title="Codex">
    Codex uses TOML, not JSON. Add to `~/.codex/config.toml`:

    ```toml ~/.codex/config.toml theme={"system"}
    [mcp_servers.neeto-invoice]
    url = "https://connect.neetoinvoice.com/mcp/messages"
    bearer_token_env_var = "NEETOINVOICE_API_KEY"
    ```

    `bearer_token_env_var` is the **name** of the environment variable, not the key itself.
    Export the key in your shell:

    ```bash theme={"system"}
    export NEETOINVOICE_API_KEY=YOUR_API_KEY
    ```
  </Tab>

  <Tab title="Cursor">
    Add the server to `~/.cursor/mcp.json`:

    ```json ~/.cursor/mcp.json theme={"system"}
    {
      "mcpServers": {
        "neeto-invoice": {
          "url": "https://connect.neetoinvoice.com/mcp/messages",
          "headers": {
            "Authorization": "Bearer YOUR_API_KEY"
          }
        }
      }
    }
    ```

    Save, then restart Cursor or reload the window.
  </Tab>

  <Tab title="Gemini CLI">
    Add the server to `~/.gemini/settings.json`. Gemini CLI names the field `httpUrl`; plain
    `url` means SSE and will not work here:

    ```json ~/.gemini/settings.json theme={"system"}
    {
      "mcpServers": {
        "neeto-invoice": {
          "httpUrl": "https://connect.neetoinvoice.com/mcp/messages",
          "headers": {
            "Authorization": "Bearer YOUR_API_KEY"
          }
        }
      }
    }
    ```
  </Tab>

  <Tab title="VS Code">
    Add the server to `.vscode/mcp.json` in your workspace. VS Code nests servers under
    `servers`, not `mcpServers`:

    ```json .vscode/mcp.json theme={"system"}
    {
      "servers": {
        "neeto-invoice": {
          "type": "http",
          "url": "https://connect.neetoinvoice.com/mcp/messages",
          "headers": {
            "Authorization": "Bearer YOUR_API_KEY"
          }
        }
      }
    }
    ```

    Requires VS Code 1.99 or later, with GitHub Copilot Chat in Agent mode.

    <Warning>
      Unlike the other clients, this config lives inside your repository. Add
      `.vscode/mcp.json` to `.gitignore` before you paste a key into it, or you will commit a
      working API key.
    </Warning>
  </Tab>

  <Tab title="Windsurf">
    Add the server to `~/.codeium/windsurf/mcp_config.json`. Windsurf names the field
    `serverUrl`, not `url`:

    ```json ~/.codeium/windsurf/mcp_config.json theme={"system"}
    {
      "mcpServers": {
        "neeto-invoice": {
          "serverUrl": "https://connect.neetoinvoice.com/mcp/messages",
          "headers": {
            "Authorization": "Bearer YOUR_API_KEY"
          }
        }
      }
    }
    ```

    Save, then enable the server under **Settings → Cascade → MCP Servers**. Windsurf caps the
    number of MCP tools it loads across all servers, so disable servers you are not using.
  </Tab>
</Tabs>

<Note>
  Three keys differ between clients and cause most silent failures: VS Code nests under
  `servers` while the others use `mcpServers`; Windsurf names the endpoint `serverUrl` and
  Gemini CLI names it `httpUrl`, while the others use `url`; and Codex uses TOML rather than
  JSON.
</Note>

## Confirm the connection

Ask your assistant to list your workspaces. It should call `ListWorkspaces` and report the
workspace your credential belongs to.

```
List my NeetoInvoice workspaces
```

If nothing happens, see [Troubleshooting](/mcp/troubleshooting).

## Next steps

<CardGroup cols={2}>
  <Card title="Examples" icon="comments" href="/mcp/examples">
    Prompts to try once the connection is live.
  </Card>

  <Card title="Tools" icon="wrench" href="/mcp/tools">
    Every tool the server exposes.
  </Card>
</CardGroup>
