# Crustdata MCP MCP Server

> **Crustdata MCP MCP Server** is a hosted, multitenant Model Context Protocol (MCP) server run by **MewCP** (https://mewcp.com), giving AI agents managed access to Crustdata MCP.
>
> MewCP takes care of all MCP infrastructure for you — credential storage, OAuth flows,
> token refresh, and production-grade auto-scaling — so your AI agents can connect to
> third-party services and run freely without you managing any MCP server yourself.
>
> Server page:  https://mewcp.com/mcp/crustdata-mcp
> MewCP docs:   https://docs.mewcp.com
> Full catalog: https://mewcp.com/llms.txt

---

## About

Crustdata provides access to a continuously updated database of B2B companies and over 1 billion professional profiles. Search people and companies using 150+ filters, enrich profiles with 350+ data points including verified emails, employment history, funding, headcount, and website traffic, monitor company and people changes, and build targeted prospect and candidate lists.

---

## Details

- Server ID: `crustdata-mcp`
- Version: 4.0.1
- Tools: 60
- Authentication: OAuth, managed by MewCP
- Transport: http

---

## Access

The gateway URL below serves your **entire MewCP toolset**, not this server on its
own. Pasting a config snippet is not enough — Crustdata MCP has to be in the toolset
first. In order:

1. Add Crustdata MCP to your toolset at https://mewcp.com/mcp/crustdata-mcp
2. Connect your Crustdata MCP account (OAuth); MewCP stores the credential and attaches it to each call
3. Copy your MewCP API key from the dashboard (Developer)
4. Configure your client with the snippet for it below

Once connected, an agent does **not** see this server's tools as top-level tools.
It sees four meta-tools and reaches everything through them:

- `search(query)` — find tools by keyword across the toolset
- `get_schema(tools)` — full description and arguments for the tools you picked
- `list_accounts(provider)` — only when one app has several connected accounts
- `call_tool(server_maskedId, tool_name, args)` — execute

So the list below is what `search` can return for this server, not a set of
callable tool names on their own.

---

## Tools (60)

Descriptions are truncated to 160 characters; call `get_schema`
for the full text and the argument schema. Where a tool is annotated, its type
is shown — treat `destructive` as irreversible.

- `crustdata_credits_check_v2` _(read)_ — CREDIT BALANCE (/account/credits, API version 2025-11-01). FREE. The balance is under `account.credits`, with the recurring grant (recurring_credits,…
- `crustdata_credits_check` _(read)_ — CREDIT BALANCE (/account/credits, API version 2025-11-01). FREE. The balance is under `account.credits`, with the recurring grant (recurring_credits,…
- `crustdata_account_endpoints_v2` _(read)_ — ACCOUNT ENDPOINT PERMISSIONS — NEW API (v2025-11-01). Lists every Crustdata API endpoint with this account's access status (enabled/disabled), effective rate…
- `crustdata_autocomplete_person_v2` _(read)_ — PERSON FIELD AUTOCOMPLETE (/person/search/autocomplete, API version 2025-11-01). It replaces the retired crustdata_autocomplete_person. FREE. Resolves exact…
- `crustdata_autocomplete_company_v2` _(read)_ — COMPANY FIELD AUTOCOMPLETE (/company/search/autocomplete, API version 2025-11-01). It replaces the retired crustdata_autocomplete_company. FREE. Resolves exact…
- `crustdata_autocomplete_job` _(read)_ — JOB FIELD AUTOCOMPLETE (v2025-11-01). FREE — no credits. Returns the exact indexed values a crustdata_job_search filter will accept, so use it BEFORE filtering…
- `crustdata_company_identify_v2` _(read)_ — COMPANY IDENTIFY (/company/identify, API version 2025-11-01). It replaces the retired crustdata_company_identify. FREE. Resolves a company to its…
- `crustdata_company_enrich_v2` _(read)_ — COMPANY ENRICHMENT (/company/enrich, API version 2025-11-01). It replaces the retired crustdata_company_enrich. Full company profile from the Crustdata…
- `crustdata_company_search_db_v2` _(read)_ — COMPANY SEARCH — DATASET (/company/search, API version 2025-11-01). It replaces the retired crustdata_company_search_db. The primary company search: filter the…
- `crustdata_company_search_semantic` _(read)_ — COMPANY SEMANTIC SEARCH — natural-language ranked company search on the /company/search dataset (v2025-11-01). crustdata_company_search_db_v2 covers ordinary…
- `crustdata_job_search` _(read)_ — Search the job listings database. Find jobs by company, title, location, category, and more. Supports filters, sorting, cursor pagination (up to 1000 results),…
- `crustdata_people_enrich_v2` _(read)_ — PERSON ENRICHMENT (/person/enrich, API version 2025-11-01). It replaces the retired crustdata_people_enrich. Full person profile (work history, education,…
- `crustdata_people_search_db_v2` _(read)_ — PEOPLE SEARCH — DATASET (/person/search, API version 2025-11-01). It replaces the retired crustdata_people_search_db. The primary people search: filter the…
- `crustdata_people_search_semantic` _(read)_ — PEOPLE SEMANTIC SEARCH (beta) — natural-language people search on the /person/search dataset (v2025-11-01). crustdata_people_search_db_v2 covers ordinary…
- `crustdata_batch_people_enrich` _(read)_ — RENAMED — call crustdata_batch_person_contact_enrich instead. This name is kept as a temporary alias for backward compatibility; it forwards to…
- `crustdata_get_batch` _(read)_ — RETRIEVE AN EXISTING ASYNC BATCH by its batch_id — status plus results. Use this whenever a batch tool returned a batch_id instead of results because the job…
- `crustdata_list_batches` _(read)_ — LIST THE ACCOUNT'S ASYNC BATCH JOBS, most recent first — every batch type (company/person enrich, contact enrich, person identify, job search). Use it to find…
- `crustdata_company_identify` _(read)_ — Retired. Company identify on the v1 API, which has been shut down; every call returns an error and makes no API request. crustdata_company_identify_v2 covers…
- `crustdata_company_enrich` _(read)_ — Retired. Company enrichment on the v1 API, which has been shut down; every call returns an error and makes no API request. crustdata_company_enrich_v2 covers…
- `crustdata_company_search_db` _(read)_ — Retired. Company database search on the v1 API, which has been shut down; every call returns an error and makes no API request. crustdata_company_search_db_v2…
- `crustdata_company_search` _(read)_ — Retired. Live company search on the v1 API, which has been shut down; every call returns an error and makes no API request. crustdata_company_search_v2 covers…
- `crustdata_autocomplete_company` _(read)_ — Retired. Company filter autocomplete on the v1 API, which has been shut down; every call returns an error and makes no API request.…
- `crustdata_people_enrich` _(read)_ — Retired. Person enrichment on the v1 API, which has been shut down; every call returns an error and makes no API request. crustdata_people_enrich_v2 covers…
- `crustdata_people_search_db` _(read)_ — Retired. People database search on the v1 API, which has been shut down; every call returns an error and makes no API request. crustdata_people_search_db_v2…
- `crustdata_people_search` _(read)_ — Retired. Live people search on the v1 API, which has been shut down; every call returns an error and makes no API request. crustdata_people_search_live_v2…
- `crustdata_autocomplete_person` _(read)_ — Retired. Person filter autocomplete on the v1 API, which has been shut down; every call returns an error and makes no API request.…
- `crustdata_social_posts` _(read)_ — Retired. Social posts by profile on the v1 API, which has been shut down; every call returns an error and makes no API request. crustdata_social_posts_v2…
- `crustdata_social_posts_by_keyword` _(read)_ — Retired. Social post keyword search on the v1 API, which has been shut down; every call returns an error and makes no API request.…
- `crustdata_company_social_posts` _(read)_ — Retired. Social post keyword search on the v1 API, which has been shut down; every call returns an error and makes no API request.…
- `crustdata_web_search` _(read)_ — Retired. Web search on the v1 API, which has been shut down; every call returns an error and makes no API request. crustdata_web_search_v2 covers this…
- `crustdata_web_fetch` _(read)_ — Retired. Web page fetch on the v1 API, which has been shut down; every call returns an error and makes no API request. crustdata_web_fetch_v2 covers this…
- `crustdata_autocomplete_filter` _(read)_ — Retired. Live-search filter autocomplete on the v1 API, which has been shut down; every call returns an error and makes no API request.…
- `crustdata_install_skills` _(write)_ — Install Crustdata research skills locally so they appear as native /slash-commands in Claude Code (e.g., /research-person). By default writes full skill…
- `crustdata_skill_versions` _(read)_ — Return current server-side version markers for the caller's granted skills. Each version is the ISO timestamp of the most recent update to the skill in the…
- `crustdata_get_skill_file` _(read)_ — Fetch a helper file (reference, script, README, etc.) for a centrally-managed skill. Use this whenever the live SKILL.md body (from crustdata_get_skill_body)…
- `crustdata_get_skill_body` _(read)_ — Fetch the live SKILL.md body for a centrally-managed skill. The local SKILL.md installed at ~/.claude/skills/<name>/SKILL.md is intentionally a stub that…
- `crustdata_list_my_skills` _(read)_ — List the Crustdata skills your account has access to install. Use this BEFORE crustdata_install_skills to see what's available, or to confirm what was granted.…
- `crustdata_social_post_search` _(read)_ — SOCIAL POST SEARCH (/social_post/search, API version 2025-11-01). Searches the indexed Crustdata dataset of professional-network social posts — the tool for…
- `crustdata_web_search_v2` _(read)_ — WEB SEARCH (/web/search/live, API version 2025-11-01). It replaces the retired crustdata_web_search. Live search across web, news, academic, deep research, and…
- `crustdata_web_fetch_v2` _(read)_ — WEB FETCH (/web/enrich/live, API version 2025-11-01). It replaces the retired crustdata_web_fetch. Fetch the content of 1-10 web pages. Optional human_mode…
- `crustdata_company_technographics` _(read)_ — TECHNOGRAPHICS — what technologies a company uses (v2025-11-01). Billed as a base enrich plus a technographics add-on (rates: crustdata_credit_costs);…
- `crustdata_company_search_by_technology` _(read)_ — FIND COMPANIES BY TECHNOLOGY (technographics search, v2025-11-01). THE tool for 'which companies use Snowflake?', 'find companies running dbt AND Airflow',…
- `crustdata_healthz` _(read)_ — Lightweight liveness probe for the Crustdata MCP server itself. Returns {status: 'ok'} when the server is reachable. Does NOT call the Crustdata API or consume…
- `crustdata_credit_costs` _(read)_ — Return a markdown table of how many Crustdata credits each MCP tool call costs, broken down by variation (cached vs realtime, reactors/comments, business…
- `crustdata_watcher_create` _(write)_ — LEGACY event watcher (v1 /watcher/watches). Every subject it covers now has a v2 watch, so create new watches with crustdata_watch_create: profile or attribute…
- `crustdata_watcher_update` _(write)_ — Update an existing watcher subscription. Can change status (pause/resume), update webhook endpoint, or modify filters for certain subscription types. SEE ALSO:…
- `crustdata_watcher_simulate` _(read)_ — Simulate a watcher subscription to test your webhook endpoint. Sends a test notification without creating a persistent subscription.
- `crustdata_watcher_list` _(read)_ — List the caller's watcher subscriptions, most recent first. Returns id, event_type_slug, status, frequency, created_at, last_run_id, notification_endpoint, and…
- `crustdata_watcher_get` _(read)_ — Get the full details of a single watcher subscription by ID (status, filters, endpoint, frequency, etc.). SEE ALSO: crustdata_watch_get — the NEW v2 watch…
- `crustdata_watcher_runs` _(read)_ — List recent runs of a watcher. Each entry includes the run id, status (RUNNING/SUCCESS/FAILED/SKIPPED), started_at, completed_at, new_records_count,…
- `crustdata_watcher_run_summary` _(read)_ — Fetch the detailed summary of a single watcher run: per-stage pipeline logs with timestamps AND the actual webhook payload(s) we delivered for that run. Each…
- `crustdata_watcher_cancel` _(destructive)_ — Permanently cancel a watcher subscription by ID. Cancellation is irreversible — the watch stops running and cannot be reactivated (use crustdata_watcher_update…
- `crustdata_watch_create` _(write)_ — WATCH CREATE — NEW watcher system (v2025-11-01 API). Create an entity watch on people or companies, or a discovery watch on people, companies, jobs, or social…
- `crustdata_watch_list` _(read)_ — WATCH LIST — NEW watcher system (v2025-11-01 API). Manages watches created by crustdata_watch_create (NOT the legacy crustdata_watcher_* watches). FREE. Lists…
- `crustdata_watch_get` _(read)_ — WATCH GET — NEW watcher system (v2025-11-01 API). Manages watches created by crustdata_watch_create (NOT the legacy crustdata_watcher_* watches). FREE. Returns…
- `crustdata_watch_update` _(write)_ — WATCH UPDATE — NEW watcher system (v2025-11-01 API). Manages watches created by crustdata_watch_create (NOT the legacy crustdata_watcher_* watches). FREE.…
- `crustdata_watch_cancel` _(destructive)_ — WATCH CANCEL — NEW watcher system (v2025-11-01 API). Manages watches created by crustdata_watch_create (NOT the legacy crustdata_watcher_* watches). FREE.…
- `crustdata_watch_runs` _(read)_ — WATCH RUNS — NEW watcher system (v2025-11-01 API). Run history for a watch created by crustdata_watch_create (NOT the legacy crustdata_watcher_* watches, whose…
- `crustdata_watch_run_summary` _(read)_ — WATCH RUN SUMMARY — NEW watcher system (v2025-11-01 API). One run of a watch created by crustdata_watch_create (NOT the legacy crustdata_watcher_* watches,…
- `crustdata_get_twitter_posts` _(read)_ — Find recent Twitter/X posts from a company or person by their Twitter handle. This is the Twitter/X post tool — it covers tweets, X posts and Twitter posts,…

---

## Connect

Gateway URL: https://gateway.mewcp.com/personal/mcp

Every request carries one header:

    Authorization: Bearer <API_KEY>

Replace `API_KEY` with your own key from the dashboard (Developer).

## Apps

### Claude Desktop

Mac & Windows app

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "mewcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://gateway.mewcp.com/personal/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your config? Just add the server entry inside it.

1. Open Claude Desktop → Settings → Developer → "Edit Config"
2. Paste the snippet inside the outer { } of the config file (merge with your existing "mcpServers" section if you have one)
3. Save the file, then quit Claude Desktop completely and reopen it
4. Start a new conversation — your tool will be available

### VS Code

Copilot / Cline

- Command Palette → "MCP: Open User Configuration" (opens mcp.json). For one project only, use .vscode/mcp.json instead.

```json
{
  "mcp.servers": {
    "mewcp": {
      "type": "http",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have a "servers" section in your mcp.json? Just add the server entry inside it.

1. Open VS Code → Command Palette (Cmd+Shift+P / Ctrl+Shift+P)
2. Run "MCP: Open User Configuration" to open your mcp.json
3. Paste the snippet and save
4. Start the server when prompted (or from the MCP servers view) and use it in Copilot Chat

### Cursor

AI-first editor

- macOS: `~/.cursor/mcp.json`
- Windows: `%USERPROFILE%\.cursor\mcp.json`

```json
{
  "mcpServers": {
    "mewcp": {
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your mcp.json? Just add the server entry inside it.

1. Open Cursor → Settings → Cursor Settings → MCP
2. Click "Add new global MCP server"
3. Paste the snippet and save
4. Restart Cursor

### Codex

OpenAI's CLI agent

- Add the snippet to your Codex MCP config or your standard MCP config file for the CLI tool you use.

```json
{
  "mcpServers": {
    "mewcp": {
      "type": "http",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Codex generally reads a standard MCP server block, so you can add this alongside your other configured servers.

1. Open your Codex MCP config or project-level config file
2. Paste the MewCP server block inside the config JSON/TOML structure your tool expects
3. Save the file and restart Codex
4. Verify the tool is available inside a fresh session

### Claude Code

Anthropic's CLI agent

- ~/.claude.json (user scope) or .mcp.json in your project root — create it if it doesn't exist. Or skip the file and use the CLI command below.

```json
{
  "mcpServers": {
    "mewcp": {
      "type": "http",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your config? Just add the server entry inside it.

1. Open ~/.claude.json (or .mcp.json in your project root) in a text editor
2. Paste the snippet inside the outer { } (merge with your existing "mcpServers" section if you have one)
3. Save the file and start (or restart) Claude Code
4. Or skip the file entirely and run the CLI command below instead

### OpenCode

Open-source terminal agent

- ~/.config/opencode/opencode.json (global) or opencode.json in your project root — create it if it doesn't exist.

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mewcp": {
      "type": "remote",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcp" section in your opencode.json? Just add the server entry inside it.

1. Open ~/.config/opencode/opencode.json (or opencode.json in your project root) in a text editor
2. Paste the snippet inside the outer { } (merge with your existing "mcp" section if you have one)
3. Save the file and start (or restart) OpenCode

### OpenClaw

Self-hosted agent gateway

- ~/.openclaw/openclaw.json — create it if it doesn't exist.

```json
{
  "mcp": {
    "servers": {
      "mewcp": {
        "transport": "streamable-http",
        "url": "https://gateway.mewcp.com/personal/mcp",
        "enabled": true,
        "headers": {
          "Authorization": "Bearer API_KEY"
        }
      }
    }
  }
}
```

Already have an "mcp" section in your openclaw.json? Just add the server entry inside "servers".

1. Open ~/.openclaw/openclaw.json in a text editor
2. Paste the snippet inside the outer { } (merge with your existing "mcp" section if you have one)
3. Save the file and restart OpenClaw

### Antigravity

Google's agentic IDE

- ~/.gemini/config/mcp_config.json (global) or .agents/mcp_config.json (workspace-local) — create it if it doesn't exist.

```json
{
  "mcpServers": {
    "mewcp": {
      "serverUrl": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your config? Just add the server entry inside it. Remote servers must use the "serverUrl" field — the legacy "url"/"httpUrl" fields aren't supported.

1. In the editor's agent side panel, click "…" → "MCP Servers" → "Manage MCP Servers" → "View raw config" (Antigravity CLI: type /mcp instead to open the Interactive MCP Manager)
2. Paste the snippet inside the outer { } (merge with your existing "mcpServers" section if you have one)
3. Save the file — the server connects automatically

### Hermes

Nous Research's CLI agent

- config.yaml in your Hermes config directory (~/.hermes) — add this under a top-level "mcp_servers:" key.

```yaml
mcp_servers:
  mewcp:
    url: "https://gateway.mewcp.com/personal/mcp"
    headers:
      Authorization: "Bearer API_KEY"
```

Already have an "mcp_servers" section in your config.yaml? Just add the server entry inside it.

1. Open config.yaml in your Hermes config directory
2. Paste the snippet under the top-level "mcp_servers:" key (merge with existing entries if you have any)
3. Save the file, then run /reload-mcp in Hermes (or start a fresh session)
4. Ask Hermes "Tell me which MCP-backed tools are available right now" to confirm it connected

### DeepSeek Harness

DeepSeek's agent harness

- cordis.yml in your DSH project — or the patch file you mount plugins from.

```yaml
- id: mcp-mewcp
  name: '@deepseek-ai/dsh-mcp-client'
  config:
    serverName: mewcp
    transport: streamable-http
    url: https://gateway.mewcp.com/personal/mcp
    headers:
      Authorization: "Bearer API_KEY"
```

One plugin instance = one MCP server. Add this entry to your plugin list; don't nest it inside another entry.

1. Open cordis.yml (or your patch file) in your DSH project
2. Paste the entry into your plugin list, keeping the leading dash and indentation
3. Restart DSH (or let HMR reload) — tools register as mcp__mewcp__<tool_name>
4. Verify with: dsh web --dump-config | grep -A3 mcp

## SDKs

### Python

fastmcp client

```python
import asyncio
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport

SERVER_URL = "https://gateway.mewcp.com/personal/mcp"
API_KEY = "API_KEY"

transport = StreamableHttpTransport(
    url=SERVER_URL,
    headers={
        "Authorization": f"Bearer {API_KEY}",
    }
)

async def main():
    client = Client(transport)
    async with client:
        tools = await client.list_tools()
        print(tools)

asyncio.run(main())
```

1. Install fastmcp: pip install fastmcp
2. Copy the snippet into your project
3. Replace API_KEY with your key from the dashboard
4. Run your script

### TypeScript

MCP SDK

```typescript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const SERVER_URL = "https://gateway.mewcp.com/personal/mcp";
const API_KEY = "API_KEY";

const transport = new StreamableHTTPClientTransport(new URL(SERVER_URL), {
  requestInit: {
    headers: {
      Authorization: `Bearer ${API_KEY}`,
    },
  },
});

const client = new Client({ name: "mewcp-client", version: "1.0.0" });
await client.connect(transport);

const tools = await client.listTools();
console.log(tools.tools.map((t) => t.name));
```

1. Install: npm install @modelcontextprotocol/sdk
2. Copy the snippet into your project
3. Replace API_KEY with your key from the dashboard
4. Run with Node 18+ as an ES module (e.g. npx tsx script.ts)