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

# Cursor

> Add Keenable to Cursor over MCP with one click, an mcp.json entry or the Keenable CLI, and turn off Cursor's own web search.

*MCP server*

Cursor connects to Keenable as a remote MCP server at `https://api.keenable.ai/mcp`. There are three ways to add it: a one-click link, an entry in `mcp.json`, or one command with the [Keenable CLI](https://docs.keenable.ai/cli.md). Cursor's agent also has its own Web Search and Web Fetch tools, and with both available it picks between them from one lookup to the next. [Turn those off](#turn-off-the-built-in-search) and Keenable handles every search.

## Install

### One click

[Add to Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=keenable\&config=eyJ1cmwiOiJodHRwczovL2FwaS5rZWVuYWJsZS5haS9tY3AifQ==)

The link opens Cursor and adds the server with no key, so it runs on the shared public tier: 1,000 requests per hour and up to 10 per second per IP (see [Rate limits](https://docs.keenable.ai/rate-limits.md)). The link carries no key so that a key never ends up in a URL, where browser history and screen recordings can keep it. To use your own key, add it to `mcp.json` as below, or use the CLI.

### mcp.json

Add the server to `~/.cursor/mcp.json` to use it in every project, or to `.cursor/mcp.json` in a repository to share it with that project only:

```json theme={"system"}
{
  "mcpServers": {
    "keenable": {
      "url": "https://api.keenable.ai/mcp",
      "headers": {
        "X-API-Key": "keen_<your_key>"
      }
    }
  }
}
```

The key travels in the `X-API-Key` header. Create one in the [console](https://app.keenable.ai/console); see [Authentication](https://docs.keenable.ai/authentication.md). If the file already has an `mcpServers` object, add the `keenable` entry to it rather than adding a second one. Omit the `headers` block to run on the public tier.

Don't put a project-level `.cursor/mcp.json` that holds your key under version control. Keep the key in the global file, or leave the header out of the shared one.

### Keenable CLI

```bash theme={"system"}
brew install keenableai/tap/keenable-cli
keenable login
keenable configure-mcp --cursor --yes
```

`keenable login` opens a browser device-code flow and stores the credentials locally. `configure-mcp --cursor` then writes the same entry to `~/.cursor/mcp.json`, with the stored key in its `headers` and `"type": "streamable-http"`, and leaves your other servers in the file as they are. For CI or headless hosts, `keenable login --api-key <KEY>` works too, but the key lands in shell history — prefer the browser flow on a developer machine. Run `keenable reset --cursor` to remove the entry. Other install methods are on the [CLI](https://docs.keenable.ai/cli.md#installation) page.

## Turn off the built-in search

Cursor's agent ships Web Search and Web Fetch tools, enabled by default. Open **Cursor Settings → Agents → Context and Tools** and turn both off (the labels and the exact submenu can move between Cursor releases). Keenable's `search_web_pages` and `fetch_page_content` are then the only search and fetch tools the agent has. Keep Web Fetch on if you want Cursor's own page reader for other work.

Those toggles also apply to subagents. If the settings path above doesn't match your build, open a new Agent chat and check the tools list: when Cursor's own Web Search / Web Fetch are gone and the Keenable tools remain, the switch worked. To turn the built-in search back on, switch the toggles on again.

### Tell the agent which tool to use

A rule makes the choice explicit, which helps when you keep Cursor's tools on. Add it under **Customize → Rules** as a user rule to apply it everywhere, or put it in `AGENTS.md` at the root of a repository:

```markdown theme={"system"}
## Web search

- Use `search_web_pages` for anything that needs the web.
- Follow a search with `fetch_page_content` to read the sources you cite.
```

## Verify

Open **Customize** in the sidebar and check that **keenable** is listed and switched on, with both tools. Then start a new Agent chat and ask something that needs the live web. The agent should call `search_web_pages` without being told to.

> [!NOTE]
>
> The server is listed but the agent never calls it? Start a new chat after adding the server or changing the toggles. If it still searches with its own tool, confirm Web Search is off in settings, or check the chat's tools list as described [above](#turn-off-the-built-in-search).

## Keenable SELECT

**Keenable SELECT** is a second Keenable server that answers a question with one SQL query over live web results and returns a table. It has its own Add to Cursor link; see [SELECT](https://docs.keenable.ai/select.md).

→ [Full MCP server reference](https://docs.keenable.ai/mcp-server.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.