Skip to main content
Glama

mcp-google-sheets

add-subscriber.ts2.44 kB
import { HttpMethod } from '@activepieces/pieces-common'; import { createAction, Property } from '@activepieces/pieces-framework'; import { sendpulseApiCall } from '../common/client'; import { sendpulseAuth } from '../common/auth'; import { mailingListDropdown } from '../common/props'; export const addSubscriberAction = createAction({ auth: sendpulseAuth, name: 'add-subscriber', displayName: 'Add Subscriber', description: 'Add subscriber to mailing list', props: { mailingListId: mailingListDropdown, email: Property.ShortText({ displayName: 'Email Address', description: 'Subscriber email address', required: true, }), variables: Property.Object({ displayName: 'Variables', description: 'Optional subscriber variables (e.g., name, phone)', required: false, }), tags: Property.Array({ displayName: 'Tag IDs', description: 'Optional tag IDs to assign', required: false, }), }, async run(context) { const { mailingListId, email, variables, tags } = context.propsValue; const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { throw new Error(`Invalid email format: ${email}`); } const emailObject: any = { email }; if (variables && Object.keys(variables).length > 0) { emailObject.variables = variables; } const requestBody: any = { emails: [emailObject], }; if (tags && tags.length > 0) { const tagNumbers = tags.map((tag) => { const num = Number(tag); if (isNaN(num)) { throw new Error(`Invalid tag ID: ${tag}. Tag IDs must be numbers.`); } return num; }); requestBody.tags = tagNumbers; } try { const result = await sendpulseApiCall<{ result: boolean }>({ method: HttpMethod.POST, auth: context.auth, resourceUri: `/addressbooks/${mailingListId}/emails`, body: requestBody, }); if (result.result === true) { return { success: true, message: 'Subscriber added successfully', email, variables: variables || {}, mailingListId, tags: requestBody.tags || [], }; } throw new Error('SendPulse API returned failure'); } catch (error: any) { throw new Error(`Failed to add subscriber: ${error.message || 'Unknown error'}`); } }, });

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