Skip to main content
Glama

mcp-google-sheets

count-emails.ts2.76 kB
import { createAction, Property } from '@activepieces/pieces-framework'; import { HttpError, HttpMethod, QueryParams } from '@activepieces/pieces-common'; import { hunterApiCall } from '../common'; import { hunterAuth } from '../../index'; import { domainProp, companyProp, emailTypeProp } from '../common/props'; export const countEmailsAction = createAction({ auth: hunterAuth, name: 'count-emails', displayName: 'Count Emails', description: 'Returns the number of email addresses found for a domain or company.', props: { domain: domainProp, company: companyProp, type: emailTypeProp, }, async run(context) { const { domain, company, type } = context.propsValue as { domain?: string; company?: string; type?: 'personal' | 'generic'; }; if (!domain && !company) { throw new Error( 'You must provide at least a domain or a company name to count emails.' ); } const qparams: QueryParams = {}; if (domain) qparams['domain'] = domain; if (!domain && company) qparams['company'] = company; if (type) qparams['type'] = type; let respBody; try { respBody = await hunterApiCall({ apiKey: context.auth, endpoint: '/email-count', method: HttpMethod.GET, qparams, }); } catch (err) { const httpErr = err as HttpError; const status = httpErr.response?.status; const details = (httpErr.response?.body as any)?.errors?.[0]?.details || 'Unknown error'; if (status === 400 && details.includes('wrong_params')) { throw new Error('Missing domain or company parameter.'); } if (status === 400 && details.includes('invalid_type')) { throw new Error( 'Invalid type. Must be "personal" or "generic", exactly as shown.' ); } if (status === 429) { throw new Error( 'Rate limit exceeded (15 req/s). Please wait a moment and try again.' ); } throw new Error(`Hunter Email Count API error: ${details}`); } const data = (respBody as any).data; return { total: data.total as number, personal_emails: data.personal_emails as number, generic_emails: data.generic_emails as number, department: data.department as Record<string, number>, seniority: data.seniority as Record<string, number>, }; }, });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server