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

# MCP Server

> Connect any MCP-compatible client (Claude, ChatGPT, Cursor) to the full NeuralVerge API over the Model Context Protocol.

# MCP Server

NeuralVerge exposes its full API as a remote [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server, so any MCP-compatible client — Claude, ChatGPT, Cursor, or a custom agent — can call AI Research, Search, AI Extract, and every Data Source directly as tools, without writing any HTTP integration code.

Every tool is a thin 1:1 wrapper around the corresponding REST endpoint documented in the **API Reference** tab, so anything you can do with the REST API you can also do from an MCP client.

## Endpoint

```
https://api.neuralverge.ai/functions/v1/mcp-server
```

The server speaks MCP's **Streamable HTTP** transport and is stateless — each request is handled independently, with no session to keep alive between calls.

Requests must include:

```
Accept: application/json, text/event-stream
```

## Authentication

Send the same bearer token you use for the REST API:

`Authorization: Bearer YOUR_ACCESS_TOKEN`

See [Authentication](./authentication) for how to obtain a token. A request with a missing or invalid token is rejected with `401 Unauthorized` before any tool runs.

## Available tools

### AI Research

| Tool                 | Description                                                                                                               |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `run_research`       | Starts the full AI Research workflow (multi-step search, analysis, structured reporting). Async — returns a `session_id`. |
| `get_session_status` | Polls a session created by `run_research` until it is `complete` or `failed`.                                             |

### AI Extract

| Tool          | Description                                                                                                           |
| ------------- | --------------------------------------------------------------------------------------------------------------------- |
| `run_extract` | Loads a page by URL and extracts structured data per natural-language instructions and/or a JSON schema. Synchronous. |

### Search

| Tool         | Description                                               |
| ------------ | --------------------------------------------------------- |
| `run_search` | Runs a synchronous web search and returns ranked results. |

### Data Sources — LinkedIn

| Tool                            | Description                                                           |
| ------------------------------- | --------------------------------------------------------------------- |
| `run_linkedin_email`            | LinkedIn profile lookup by URL, including email when available.       |
| `run_linkedin_domain`           | Finds a LinkedIn profile from a company name/domain plus a full name. |
| `run_linkedin_company_search`   | Searches LinkedIn companies by query with optional filters.           |
| `run_linkedin_people_search`    | Searches LinkedIn people with free-text query and advanced filters.   |
| `run_linkedin_company_employee` | Searches employees of one or more given companies.                    |

### Data Sources — Email & Phone

| Tool                      | Description                                                          |
| ------------------------- | -------------------------------------------------------------------- |
| `run_email_enrichment`    | Enriches a known email with profile data.                            |
| `run_email_validation`    | Validates deliverability of an email address.                        |
| `run_email_finder`        | Finds a professional email from a domain, first name, and last name. |
| `run_phone_enrichment`    | Enriches a known phone number, worldwide.                            |
| `run_phone_enrichment_us` | Validates and enriches a US phone number specifically.               |

### Data Sources — Company

| Tool                     | Description                                                         |
| ------------------------ | ------------------------------------------------------------------- |
| `run_crunchbase_company` | Fetches structured company data from a Crunchbase organization URL. |

`run_research` is the only asynchronous tool — call `get_session_status` every 2–5 seconds until `status` is `complete` or `failed`. Every other tool, including `run_search`, returns its result immediately in the tool response. See [Errors & Rate Limits](./errors-and-rate-limits) for the general polling guidance this follows.

## Connecting an MCP client

### Claude Code / Claude Desktop

```bash theme={null}
claude mcp add --transport http neuralverge \
  https://api.neuralverge.ai/functions/v1/mcp-server \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

### Generic remote HTTP client (ChatGPT, Cursor, etc.)

Add a remote MCP connector pointing at the endpoint above, with an `Authorization: Bearer YOUR_ACCESS_TOKEN` header. Any client that speaks MCP's Streamable HTTP transport works — the server does not require any client-specific setup.

### MCP Inspector

```bash theme={null}
npx @modelcontextprotocol/inspector
```

Connect to `https://api.neuralverge.ai/functions/v1/mcp-server` in **HTTP** mode and set the `Authorization` header to explore and test tools interactively.

## Example request

```bash theme={null}
curl -X POST "https://api.neuralverge.ai/functions/v1/mcp-server" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "run_email_validation",
      "arguments": { "email": "john@example.com" }
    }
  }'
```

## Errors

A missing or invalid `Authorization` header fails the whole request with `401 Unauthorized`, the same as the REST API.

Once a request is authenticated, errors from an individual tool call (invalid parameters, `402 Payment Required` for usage limits, upstream failures, and so on) are returned inside the MCP tool result with `isError: true` rather than as an HTTP failure — this lets the calling model see and react to the error instead of the whole request failing. The underlying status codes are the same ones described in [Errors & Rate Limits](./errors-and-rate-limits).

## Next steps

* Review [Authentication](./authentication) to get an access token
* Browse [AI Research](./ai-research), [AI Extract](./ai-extract), [Search](./search), and [Data Sources](./data-sources) for what each tool does under the hood
* Browse the **API Reference** tab for the full REST schema each tool wraps
