hunter_domain_search
Find email addresses associated with a specific domain using open-source intelligence. This tool helps identify contacts and verify organizational email patterns.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to search for email addresses |
Implementation Reference
- src/index.ts:254-262 (handler)MCP tool registration and handler implementation for hunter_domain_search in src/index.ts.
server.tool( "hunter_domain_search", { domain: z.string().describe("Domain to search for email addresses") }, async ({ domain }) => { const result = await hunterClient.domainSearch(domain); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; } - src/tools/hunter.ts:32-57 (handler)Core API logic for Hunter domain search.
async domainSearch(domain: string): Promise<HunterResult> { const apiKey = configManager.get("HUNTER_API_KEY"); if (!apiKey) { throw new McpError( ErrorCode.InvalidRequest, "HUNTER_API_KEY is not configured" ); } try { const data = await this.fetch<any>("domain-search", { method: "GET", }, { domain, api_key: apiKey, }); return HunterResultSchema.parse(data); } catch (error) { if (error instanceof McpError) throw error; throw new McpError( ErrorCode.InternalError, `Hunter.io error: ${(error as Error).message}` ); } } - src/tools/hunter.ts:6-20 (schema)Zod schema validation for Hunter.io domain search response.
export const HunterResultSchema = z.object({ data: z.object({ domain: z.string(), organization: z.string().nullable(), emails: z.array(z.object({ value: z.string(), type: z.string(), confidence: z.number(), sources: z.array(z.any()), first_name: z.string().nullable(), last_name: z.string().nullable(), position: z.string().nullable(), })), }), });