From 52964395e441917d9363ec0e5464c3fc9bf06a2d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 8 Sep 2026 23:10:37 +0000 Subject: [PATCH] Add Hunter third-party MCP plugin with API key header auth Package Hunter's hosted Streamable HTTP MCP server (https://mcp.hunter.io/mcp) using the official Cursor setup from https://hunter.io/agents.md: X-API-Key with ${HUNTER_API_KEY}. This is a fresh-from-main take on #317, which used OAuth-only config and documented the API key as an opt-in alternative. Official Cursor packaging is header auth, so plugin.json declares the HUNTER_API_KEY template variable the same way other BYO-credential plugins do. Co-authored-by: Sam Sokolin --- .cursor-plugin/marketplace.json | 5 ++ README.md | 1 + third_party/hunter/.cursor-plugin/plugin.json | 51 +++++++++++++ third_party/hunter/CHANGELOG.md | 9 +++ third_party/hunter/LICENSE | 21 +++++ third_party/hunter/README.md | 72 ++++++++++++++++++ third_party/hunter/assets/logo.png | Bin 0 -> 5580 bytes third_party/hunter/mcp.json | 11 +++ 8 files changed, 170 insertions(+) create mode 100644 third_party/hunter/.cursor-plugin/plugin.json create mode 100644 third_party/hunter/CHANGELOG.md create mode 100644 third_party/hunter/LICENSE create mode 100644 third_party/hunter/README.md create mode 100644 third_party/hunter/assets/logo.png create mode 100644 third_party/hunter/mcp.json diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 003ea47cc..9cb30e8b9 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -342,6 +342,11 @@ "name": "attio", "source": "third_party/attio", "description": "Search and update CRM records, lists, notes, and tasks." + }, + { + "name": "hunter", + "source": "third_party/hunter", + "description": "Find and verify emails, discover companies, and save leads." } ] } diff --git a/README.md b/README.md index e9c711178..32103e163 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `xero` | [Xero](third_party/xero/) | Cursor | Integrations | Read and write invoices, contacts, reports, and payroll. | | `x-ads` | [X Ads](third_party/x-ads/) | Cursor | Integrations | Manage ad campaigns, create ads, track conversions, and pull performance stats. | | `attio` | [Attio](third_party/attio/) | Cursor | Integrations | Search and update CRM records, lists, notes, and tasks. | +| `hunter` | [Hunter](third_party/hunter/) | Cursor | Integrations | Find and verify emails, discover companies, and save leads. | Author values match each plugin’s `plugin.json` `author.name` (Cursor lists `plugins@cursor.com` in the manifest). ## Repository structure diff --git a/third_party/hunter/.cursor-plugin/plugin.json b/third_party/hunter/.cursor-plugin/plugin.json new file mode 100644 index 000000000..dfaa1beea --- /dev/null +++ b/third_party/hunter/.cursor-plugin/plugin.json @@ -0,0 +1,51 @@ +{ + "name": "hunter", + "displayName": "Hunter", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Find and verify emails, discover companies, and save leads.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://hunter.io/agents.md", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "hunter", + "email finder", + "email verifier", + "domain search", + "prospecting", + "enrichment", + "leads", + "gtm", + "sales", + "mcp" + ], + "category": "integrations", + "tags": [ + "hunter", + "sales", + "prospecting", + "enrichment", + "mcp" + ], + "variables": { + "type": "object", + "properties": { + "HUNTER_API_KEY": { + "type": "string", + "title": "Hunter API key", + "description": "API key from https://hunter.io/api-keys. The Free plan works." + } + }, + "required": [ + "HUNTER_API_KEY" + ] + }, + "mcpServers": "./mcp.json" +} diff --git a/third_party/hunter/CHANGELOG.md b/third_party/hunter/CHANGELOG.md new file mode 100644 index 000000000..c60d52ca6 --- /dev/null +++ b/third_party/hunter/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `hunter` MCP server pointing at Hunter's hosted Streamable HTTP endpoint (`https://mcp.hunter.io/mcp`). +- Auth uses a Hunter API key supplied by the user as an `X-API-Key` header (`${HUNTER_API_KEY}`). +- Logo: Hunter's official fox mark, from the `hunter-io` GitHub organization. diff --git a/third_party/hunter/LICENSE b/third_party/hunter/LICENSE new file mode 100644 index 000000000..ca2bba771 --- /dev/null +++ b/third_party/hunter/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Cursor + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/hunter/README.md b/third_party/hunter/README.md new file mode 100644 index 000000000..cf9c64d6f --- /dev/null +++ b/third_party/hunter/README.md @@ -0,0 +1,72 @@ +# Hunter + +Cursor plugin that connects agents to [Hunter](https://hunter.io) through Hunter's official remote [Model Context Protocol](https://modelcontextprotocol.io/) server. + +Find and verify professional email addresses, list the contacts behind any company domain, discover companies that match a profile, enrich people and companies, and save contacts as leads. + +Official Cursor setup: https://hunter.io/agents.md + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Hunter**. +3. Click **Install**, then set your Hunter API key (below). + +Or run `/add-plugin hunter` in chat. + +## MCP + +```json +{ + "mcpServers": { + "hunter": { + "type": "http", + "url": "https://mcp.hunter.io/mcp", + "headers": { + "X-API-Key": "${HUNTER_API_KEY}" + } + } + } +} +``` + +Auth is a Hunter **API key** sent in an `X-API-Key` header. Create one at https://hunter.io/api-keys (Free plan is enough), then set it in **Dashboard → Plugins → Configure**. Do not commit the key. + +## Before you connect + +You need a Hunter account and an API key. The MCP server is available on all Hunter plans, including the free plan, and uses the plan and credits attached to that key. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Discover | Find companies by industry, size, location, technology, and more, or describe the target in natural language (free, no credits) | +| Domain Search | List the people and email addresses behind a company domain, with department and seniority filters | +| Email Finder | Find a professional's most likely email address from a name and company or domain | +| Email Verifier | Check whether an email address is deliverable and see its confidence score and sources | +| Enrichment | Pull person and company data from an email address or domain | +| Leads | Create, update, and organize leads and lead lists; push leads to a connected CRM | +| Campaigns | Add recipients to campaigns and start outreach sequences | + +The hosted runtime is the source of truth for tool names and schemas. + +## Notes + +- Tool calls run with the permissions and credits attached to the API key. Domain Search, Email Finder, Email Verifier, and Enrichment calls cost credits the same way they do in the Hunter app; Discover is free. +- This plugin follows Hunter's official Cursor packaging: Streamable HTTP at `https://mcp.hunter.io/mcp` with `X-API-Key`. Hunter also documents OAuth for some clients; do not use OAuth for this plugin. +- Hunter's `test-api-key` only works against the REST API; the MCP server rejects it with a 401. +- The `hunter-io/hunter-mcp` GitHub repository is Hunter's old local (stdio) server and is archived. Hunter directs all clients to the remote server above. + +## Docs + +- Agent setup instructions: https://hunter.io/agents.md +- Hunter MCP: https://hunter.io/mcp +- API keys: https://hunter.io/api-keys +- API reference (MCP section): https://hunter.io/api-documentation/v2#mcp +- Server URL: https://mcp.hunter.io/mcp + +Logo is Hunter's official fox mark, from the `hunter-io` GitHub organization. + +## License + +MIT diff --git a/third_party/hunter/assets/logo.png b/third_party/hunter/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2ee73cd7fc92d919ccce65c8b1adafc090166ac8 GIT binary patch literal 5580 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 HZr=Yt9L8%B literal 0 HcmV?d00001 diff --git a/third_party/hunter/mcp.json b/third_party/hunter/mcp.json new file mode 100644 index 000000000..48e22b6a0 --- /dev/null +++ b/third_party/hunter/mcp.json @@ -0,0 +1,11 @@ +{ + "mcpServers": { + "hunter": { + "type": "http", + "url": "https://mcp.hunter.io/mcp", + "headers": { + "X-API-Key": "${HUNTER_API_KEY}" + } + } + } +}