Skip to main content
Glama

mcp-google-sheets

index.ts3.53 kB
import { HttpError } from '@activepieces/pieces-common'; import { createPiece, PieceAuth, Property, } from '@activepieces/pieces-framework'; import { PieceCategory } from '@activepieces/shared'; import FormData from 'form-data'; import { sendEmail } from './lib/actions/send-email'; import { sendFromTemplate } from './lib/actions/send-from-template'; import { checkEmail, sendFormData } from './lib/common/send-utils'; import { verifyEmail } from './lib/actions/verify-email'; const markdown = ` For Sending API key, follow these steps: 1. Navigate to [Domains](https://app.maileroo.com/domains). 2. Click on the domain you want to use. 3. Click on the **Create sending key** under the API section. 4. Click **New Sending Key**. 5. Copy the key under the **Sending Key** column. For Verification API key, follow these steps: 1. Navigate to [Verification API](https://app.maileroo.com/verifications). 2. Copy the key under the **Verification API** section. `; export const mailerooAuth = PieceAuth.CustomAuth({ required: true, description: markdown, props: { keyType: Property.StaticDropdown({ displayName: 'Type', defaultValue: 'sending', options: { options: [ { label: 'Sending Key', value: 'sending', }, { label: 'Verification Key', value: 'verification', }, ], }, required: true, }), apiKey: PieceAuth.SecretText({ displayName: 'API Key', required: true, }), }, validate: async ({ auth }) => { // This wont' matter as we are just testing the API key validity const PLACEHOLDER_STRING = 'placeholder'; if (auth.keyType === 'sending') { try { const formData = new FormData(); formData.append('from', PLACEHOLDER_STRING); formData.append('to', PLACEHOLDER_STRING); formData.append('subject', PLACEHOLDER_STRING); formData.append('plain', PLACEHOLDER_STRING); await sendFormData('send', formData, auth.apiKey); } catch (e) { const status = (e as HttpError).response.status; // It is safe to assume that that other 4xx status codes means the API key is valid if (status === 401) { return { valid: false, error: 'Invalid API Sending key', }; } else if (status >= 500) { return { valid: false, error: 'An error occurred while validating the API key', }; } } return { valid: true, }; } else { // Need a different implementation because the response for verification key is different const result = await checkEmail(PLACEHOLDER_STRING, auth.apiKey); if (result.status === 200 && result.body.error_code !== '0401') { return { valid: true, }; } else { return { error: 'Invalid Verification API key', valid: false, }; } } }, }); export const maileroo = createPiece({ displayName: 'Maileroo', auth: mailerooAuth, minimumSupportedRelease: '0.30.0', logoUrl: 'https://cdn.activepieces.com/pieces/maileroo.png', categories: [ PieceCategory.MARKETING, PieceCategory.BUSINESS_INTELLIGENCE, PieceCategory.COMMUNICATION, ], description: 'Email Delivery Service with Real-Time Analytics and Reporting', authors: ['codegino'], actions: [sendEmail, sendFromTemplate, verifyEmail], triggers: [], });

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