Connect Cursor, VS Code and the CLI

The API key path for clients without an OAuth flow: generating a key, adding it as a bearer token, and the config for each client.

Updated Aug 25, 2026

Cursor, VS Code and the Signl CLI authenticate with an API key rather than OAuth. Generate a key in the dashboard, add it as an Authorization: Bearer header in the client's MCP config, and reload. The key is shown exactly once, so copy it before you close the dialog.

Generate a key

  1. In your dashboard, open API Key and generate one. It begins with sk_signl_.
  2. Copy it immediately. Keys are stored only as a SHA-256 hash, so nobody, including us, can show it to you again.
  3. Generate one key per client. Revoking a shared key disconnects everything at once; a per-client key keeps revocation surgical.

Treat it like a password. Anyone holding it can spend your credits.

Cursor

Create .cursor/mcp.json in your project, or edit the global one at ~/.cursor/mcp.json via Settings, then MCP:

{
  "mcpServers": {
    "signl": {
      "url": "YOUR_MCP_URL",
      "headers": {
        "Authorization": "Bearer sk_signl_YOUR_KEY"
      }
    }
  }
}

Replace YOUR_MCP_URL with the server URL from the Connect page of your dashboard. Reload Cursor, then enable the server under Settings, MCP if prompted.

The project-level file is the convenient option and the one most likely to end up committed. If you use it, put the key in an environment variable or add the file to .gitignore.

VS Code

Open the Command Palette and run MCP: Add Server, or create .vscode/mcp.json directly:

{
  "servers": {
    "signl": {
      "type": "http",
      "url": "YOUR_MCP_URL",
      "headers": {
        "Authorization": "Bearer sk_signl_YOUR_KEY"
      }
    }
  }
}

Click Start above the server entry, then enable Signl's tools in Copilot Chat's agent mode. Note the key is servers, not mcpServers, and the entry needs "type": "http". Both differ from Cursor's shape and copying one into the other is the most common mistake here.

The CLI

signl login sk_signl_YOUR_KEY

The CLI stores the key locally and uses it for every subsequent command.

Any other client

Signl speaks Streamable HTTP MCP at a single POST endpoint. Any client that can send a bearer token will work:

  • URL: the server URL from your dashboard
  • Transport: Streamable HTTP
  • Header: Authorization: Bearer sk_signl_YOUR_KEY

X-Api-Key is accepted as an alternative to the Authorization header if your client prefers it.

Confirm it worked

Ask the agent:

What Signl tools do you have access to?

It should list five: search_signals, get_weekly_drop, get_credit_balance, enrich_lead and refresh_person_signals.

If it lists none, in order of likelihood: the client has not reloaded, the server is added but not started, the key was pasted with a trailing space, or the header name is wrong. Check the client's MCP panel for the server's status before assuming the key is bad. See my agent cannot see Signl's tools.

Revoking

Revoke a key from the dashboard. It stops working immediately, and so does every client using it, which is the argument for one key per client.

If you connected over OAuth instead, revoking that grant affects only that client. See security and data handling.

Connect your agent for the OAuth path, connect ChatGPT for that client specifically, and the MCP tool reference for what each tool takes.

Common questions

Should I commit my Signl MCP config to git?

Not with a key in it. A project-level config file is convenient and is exactly the kind of file that ends up in a repository. Put the key in an environment variable your client can read, or use the global config in your home directory instead of the project one, and add the project file to .gitignore if it exists.

Can I use one API key for every client?

You can, and you should not. Revoking a shared key disconnects everything using it at once. Generate one key per client so that revoking a laptop's key does not also break your CLI and your editor. Keys are free and unlimited in number.

Why does Cursor or VS Code not show the Signl tools?

Usually the client has not reloaded, or the server is added but not started. Reload the window, then check the MCP settings panel for the server's status: both clients list servers with an explicit enabled or started state, and a server that is present but stopped exposes no tools.

More in Getting started

Still stuck?

We answer support questions ourselves, usually the same day.

Email support