Skip to main content
Glama

mcp-google-sheets

client.ts4.05 kB
import { HttpMessageBody, HttpMethod, QueryParams, httpClient, } from '@activepieces/pieces-common'; import { vboutCommon } from '.'; import { CampaignCreateRequest, ContactCreateRequest, ContactList, ContactUpdateRequest, EmailListCreateRequest, SocialMediaChannelListResponse, SocialMediaPostCreateRequest, TagCreateRequest, VboutResponseBody, } from './models'; function emptyValueFilter( accessor: (key: string) => any ): (key: string) => boolean { return (key: string) => { const val = accessor(key); return ( val !== null && val !== undefined && (typeof val != 'string' || val.length > 0) ); }; } export function prepareQuery(request?: Record<string, any>): QueryParams { const params: QueryParams = {}; if (!request) return params; Object.keys(request) .filter(emptyValueFilter((k) => request[k])) .forEach((k: string) => { params[k] = (request as Record<string, any>)[k].toString(); }); return params; } export class VboutClient { constructor(private apiKey: string) {} async makeRequest<T extends HttpMessageBody>( method: HttpMethod, url: string, query?: QueryParams, body?: object ): Promise<T> { const res = await httpClient.sendRequest<T>({ method, url: vboutCommon.baseUrl + url, queryParams: { key: this.apiKey, ...query }, body, }); return res.body; } async validateAuth() { return await this.makeRequest(HttpMethod.GET, '/app/me'); } async listEmailLists() { return ( await this.makeRequest< VboutResponseBody<{ lists: { count: number; items: ContactList[]; }; }> >(HttpMethod.GET, '/emailmarketing/getlists') ).response.data; } async getContactByEmail(email: string, listId?: string) { return await this.makeRequest< VboutResponseBody<{ contact: { id: string; email: string; listid: string; list_name: string; [key: string]: any; }[]; }> >( HttpMethod.GET, '/emailmarketing/getcontactbyemail', prepareQuery({ email: email, listid: listId }) ); } async getEmailList(listId: string) { return await this.makeRequest<VboutResponseBody<{ list: ContactList }>>( HttpMethod.GET, '/emailmarketing/getlist', prepareQuery({ id: listId }) ); } async createEmailList(request: EmailListCreateRequest) { return await this.makeRequest( HttpMethod.POST, '/emailMarketing/AddList', undefined, request ); } async addContact(request: ContactCreateRequest) { return await this.makeRequest( HttpMethod.POST, '/emailMarketing/AddContact', undefined, request ); } async updateContact(request: ContactUpdateRequest) { return await this.makeRequest( HttpMethod.POST, '/emailMarketing/EditContact', undefined, request ); } async addTagToContact(request: TagCreateRequest) { return await this.makeRequest( HttpMethod.POST, '/emailMarketing/AddTag', undefined, request ); } async removeTagFromContact(email: string, tagname: string) { return await this.makeRequest( HttpMethod.DELETE, '/emailMarketing/RemoveTag', prepareQuery({ email, tagname, }) ); } async addCampaign(request: CampaignCreateRequest) { return await this.makeRequest( HttpMethod.POST, '/emailMarketing/AddCampaign', undefined, request ); } async listSocialMediaChannels() { return ( await this.makeRequest< VboutResponseBody<{ channels: SocialMediaChannelListResponse }> >(HttpMethod.GET, '/socialMedia/Channels') ).response.data; } async createSocialMediaPost(request: SocialMediaPostCreateRequest) { return await this.makeRequest( HttpMethod.POST, '/socialMedia/AddPost', undefined, request ); } }

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