@@ -4,7 +4,7 @@ import type { HunterResponse } from '@/tools/hunter/types'
44
55export const HunterBlock : BlockConfig < HunterResponse > = {
66 type : 'hunter' ,
7- name : 'Hunter io' ,
7+ name : 'Hunter. io' ,
88 description : 'Find and verify professional email addresses' ,
99 authMode : AuthMode . ApiKey ,
1010 longDescription :
@@ -45,6 +45,15 @@ export const HunterBlock: BlockConfig<HunterResponse> = {
4545 type : 'short-input' ,
4646 placeholder : '10' ,
4747 condition : { field : 'operation' , value : 'hunter_domain_search' } ,
48+ mode : 'advanced' ,
49+ } ,
50+ {
51+ id : 'offset' ,
52+ title : 'Offset' ,
53+ type : 'short-input' ,
54+ placeholder : '0' ,
55+ condition : { field : 'operation' , value : 'hunter_domain_search' } ,
56+ mode : 'advanced' ,
4857 } ,
4958 {
5059 id : 'type' ,
@@ -57,6 +66,7 @@ export const HunterBlock: BlockConfig<HunterResponse> = {
5766 ] ,
5867 value : ( ) => 'all' ,
5968 condition : { field : 'operation' , value : 'hunter_domain_search' } ,
69+ mode : 'advanced' ,
6070 } ,
6171 {
6272 id : 'seniority' ,
@@ -70,13 +80,15 @@ export const HunterBlock: BlockConfig<HunterResponse> = {
7080 ] ,
7181 value : ( ) => 'all' ,
7282 condition : { field : 'operation' , value : 'hunter_domain_search' } ,
83+ mode : 'advanced' ,
7384 } ,
7485 {
7586 id : 'department' ,
7687 title : 'Department' ,
7788 type : 'short-input' ,
7889 placeholder : 'e.g., sales, marketing, engineering' ,
7990 condition : { field : 'operation' , value : 'hunter_domain_search' } ,
91+ mode : 'advanced' ,
8092 } ,
8193 // Email Finder operation inputs
8294 {
@@ -109,6 +121,7 @@ export const HunterBlock: BlockConfig<HunterResponse> = {
109121 type : 'short-input' ,
110122 placeholder : 'Enter company name' ,
111123 condition : { field : 'operation' , value : 'hunter_email_finder' } ,
124+ mode : 'advanced' ,
112125 } ,
113126 // Email Verifier operation inputs
114127 {
@@ -146,6 +159,54 @@ Return ONLY the search query text - no explanations.`,
146159 type : 'short-input' ,
147160 placeholder : 'Filter by domain' ,
148161 condition : { field : 'operation' , value : 'hunter_discover' } ,
162+ mode : 'advanced' ,
163+ } ,
164+ {
165+ id : 'headcount' ,
166+ title : 'Headcount' ,
167+ type : 'dropdown' ,
168+ options : [
169+ { label : 'Any' , id : '' } ,
170+ { label : '1-10' , id : '1-10' } ,
171+ { label : '11-50' , id : '11-50' } ,
172+ { label : '51-200' , id : '51-200' } ,
173+ { label : '201-500' , id : '201-500' } ,
174+ { label : '501-1000' , id : '501-1000' } ,
175+ { label : '1001-5000' , id : '1001-5000' } ,
176+ { label : '5001-10000' , id : '5001-10000' } ,
177+ { label : '10001+' , id : '10001+' } ,
178+ ] ,
179+ value : ( ) => '' ,
180+ condition : { field : 'operation' , value : 'hunter_discover' } ,
181+ mode : 'advanced' ,
182+ } ,
183+ {
184+ id : 'company_type' ,
185+ title : 'Company Type' ,
186+ type : 'dropdown' ,
187+ options : [
188+ { label : 'Any' , id : '' } ,
189+ { label : 'Educational' , id : 'educational' } ,
190+ { label : 'Government Agency' , id : 'government agency' } ,
191+ { label : 'Non Profit' , id : 'non profit' } ,
192+ { label : 'Partnership' , id : 'partnership' } ,
193+ { label : 'Privately Held' , id : 'privately held' } ,
194+ { label : 'Public Company' , id : 'public company' } ,
195+ { label : 'Self Employed' , id : 'self employed' } ,
196+ { label : 'Self Owned' , id : 'self owned' } ,
197+ { label : 'Sole Proprietorship' , id : 'sole proprietorship' } ,
198+ ] ,
199+ value : ( ) => '' ,
200+ condition : { field : 'operation' , value : 'hunter_discover' } ,
201+ mode : 'advanced' ,
202+ } ,
203+ {
204+ id : 'technology' ,
205+ title : 'Technology' ,
206+ type : 'short-input' ,
207+ placeholder : 'e.g., react, salesforce' ,
208+ condition : { field : 'operation' , value : 'hunter_discover' } ,
209+ mode : 'advanced' ,
149210 } ,
150211
151212 // Find Company operation inputs
@@ -172,6 +233,7 @@ Return ONLY the search query text - no explanations.`,
172233 type : 'short-input' ,
173234 placeholder : 'Enter company name' ,
174235 condition : { field : 'operation' , value : 'hunter_email_count' } ,
236+ mode : 'advanced' ,
175237 } ,
176238 {
177239 id : 'type' ,
@@ -184,6 +246,7 @@ Return ONLY the search query text - no explanations.`,
184246 ] ,
185247 value : ( ) => 'all' ,
186248 condition : { field : 'operation' , value : 'hunter_email_count' } ,
249+ mode : 'advanced' ,
187250 } ,
188251 // API Key (common)
189252 {
@@ -225,7 +288,14 @@ Return ONLY the search query text - no explanations.`,
225288 } ,
226289 params : ( params ) => {
227290 const result : Record < string , unknown > = { }
228- if ( params . limit ) result . limit = Number ( params . limit )
291+ for ( const [ key , value ] of Object . entries ( params ) ) {
292+ if ( value === undefined || value === null || value === '' ) continue
293+ if ( key === 'limit' || key === 'offset' ) {
294+ result [ key ] = Number ( value )
295+ } else {
296+ result [ key ] = value
297+ }
298+ }
229299 return result
230300 } ,
231301 } ,
@@ -253,14 +323,88 @@ Return ONLY the search query text - no explanations.`,
253323 technology : { type : 'string' , description : 'Technology filter' } ,
254324 } ,
255325 outputs : {
256- results : { type : 'json' , description : 'Search results' } ,
257- emails : { type : 'json' , description : 'Email addresses found' } ,
326+ // Domain Search
327+ domain : { type : 'string' , description : 'Domain name' } ,
328+ organization : { type : 'string' , description : 'Organization name (domain search)' } ,
329+ pattern : { type : 'string' , description : 'Email pattern (e.g., {first}.{last})' } ,
330+ disposable : { type : 'boolean' , description : 'Whether the domain is disposable' } ,
331+ webmail : { type : 'boolean' , description : 'Whether the domain is a webmail provider' } ,
332+ accept_all : { type : 'boolean' , description : 'Whether the server accepts all emails' } ,
333+ linked_domains : { type : 'array' , description : 'Linked domains' } ,
334+ emails : {
335+ type : 'array' ,
336+ description :
337+ 'List of emails found for the domain (value, type, confidence, first_name, last_name, position, seniority, department, linkedin, twitter, phone_number, sources, verification)' ,
338+ } ,
339+ // Email Finder
258340 email : { type : 'string' , description : 'Found email address' } ,
259- score : { type : 'number' , description : 'Confidence score' } ,
260- result : { type : 'string' , description : 'Verification result' } ,
261- status : { type : 'string' , description : 'Status message' } ,
262- total : { type : 'number' , description : 'Total results count' } ,
341+ score : { type : 'number' , description : 'Confidence score (0-100)' } ,
342+ first_name : { type : 'string' , description : 'Person first name' } ,
343+ last_name : { type : 'string' , description : 'Person last name' } ,
344+ position : { type : 'string' , description : 'Job position' } ,
345+ linkedin_url : { type : 'string' , description : 'LinkedIn profile URL (email-finder, discover)' } ,
346+ phone_number : { type : 'string' , description : 'Phone number' } ,
347+ company : { type : 'string' , description : 'Company name (email-finder)' } ,
348+ sources : {
349+ type : 'array' ,
350+ description :
351+ 'Source pages where the email was found (domain, uri, extracted_on, last_seen_on, still_on_page)' ,
352+ } ,
353+ verification : {
354+ type : 'json' ,
355+ description : 'Email verification information (date, status)' ,
356+ } ,
357+ // Email Verifier
358+ result : {
359+ type : 'string' ,
360+ description : 'Deliverability result (deliverable, undeliverable, risky)' ,
361+ } ,
362+ status : {
363+ type : 'string' ,
364+ description : 'Verification status (valid, invalid, accept_all, webmail, disposable, unknown)' ,
365+ } ,
366+ regexp : { type : 'boolean' , description : 'Email passes regex validation' } ,
367+ gibberish : { type : 'boolean' , description : 'Whether email looks auto-generated' } ,
368+ mx_records : { type : 'boolean' , description : 'MX records exist for the domain' } ,
369+ smtp_server : { type : 'boolean' , description : 'SMTP server reachable' } ,
370+ smtp_check : { type : 'boolean' , description : 'Email does not bounce' } ,
371+ block : { type : 'boolean' , description : 'Whether the domain blocks verification' } ,
372+ // Discover
373+ results : {
374+ type : 'array' ,
375+ description :
376+ 'Companies matching the search (name, domain, logo, linkedin_url, company_type, industry, size, location, founded_year, crunchbase_url)' ,
377+ } ,
378+ // Companies Find (flattened)
379+ name : { type : 'string' , description : 'Company name (companies-find, discover)' } ,
380+ description : { type : 'string' , description : 'Company description' } ,
381+ industry : { type : 'string' , description : 'Industry classification' } ,
382+ sector : { type : 'string' , description : 'Business sector' } ,
383+ size : { type : 'string' , description : 'Employee headcount range (e.g., "11-50")' } ,
384+ founded_year : { type : 'number' , description : 'Year founded' } ,
385+ location : { type : 'string' , description : 'Headquarters location (formatted)' } ,
386+ country : { type : 'string' , description : 'Country (full name)' } ,
387+ country_code : { type : 'string' , description : 'ISO 3166-1 alpha-2 country code' } ,
388+ state : { type : 'string' , description : 'State/province' } ,
389+ city : { type : 'string' , description : 'City' } ,
390+ linkedin : { type : 'string' , description : 'LinkedIn handle (companies-find)' } ,
391+ twitter : { type : 'string' , description : 'Twitter handle' } ,
392+ facebook : { type : 'string' , description : 'Facebook handle' } ,
393+ logo : { type : 'string' , description : 'Company logo URL' } ,
394+ phone : { type : 'string' , description : 'Company phone number' } ,
395+ tech : { type : 'array' , description : 'Technologies used by the company' } ,
396+ // Email Count
397+ total : { type : 'number' , description : 'Total email count' } ,
263398 personal_emails : { type : 'number' , description : 'Personal emails count' } ,
264399 generic_emails : { type : 'number' , description : 'Generic emails count' } ,
400+ department : {
401+ type : 'json' ,
402+ description :
403+ 'Email count by department (executive, it, finance, management, sales, legal, support, hr, marketing, communication, education, design, health, operations)' ,
404+ } ,
405+ seniority : {
406+ type : 'json' ,
407+ description : 'Email count by seniority level (junior, senior, executive)' ,
408+ } ,
265409 } ,
266410}
0 commit comments