Skip to main content
Glama

mcp-google-sheets

client.ts3.83 kB
import { Authentication, AuthenticationType, HttpMessageBody, HttpMethod, QueryParams, httpClient, } from '@activepieces/pieces-common'; import { Folder, FolderCreateRequest, FolderCreateResponse, FolderGetRequest, FolderHierarchy, FolderListRequest, } from './models/folder'; import { ActionResponse, prepareQueryRequest } from './models/common'; import { Paste, PasteCreateRequest, PasteCreateResponse, PasteEditRequest, PasteListRequest, PasteShareRequest, } from './models/paste'; function ensureSuccessfulResponse<T extends ActionResponse>(res: T): T { if (!res.success) { throw 'Request failed'; } return res; } export class PastefyClient { constructor( private apiKey?: string, private instanceUrl = 'https://pastefy.app' ) {} async makeRequest<T extends HttpMessageBody>( method: HttpMethod, url: string, query?: QueryParams, body?: object ): Promise<T> { const authentication: Authentication | undefined = this.apiKey ? { type: AuthenticationType.BEARER_TOKEN, token: this.apiKey, } : undefined; const res = await httpClient.sendRequest<T>({ method, url: this.instanceUrl + '/api/v2' + url, queryParams: query, body, authentication, }); return res.body; } async createFolder( request: FolderCreateRequest ): Promise<FolderCreateResponse> { return ensureSuccessfulResponse<FolderCreateResponse>( await this.makeRequest(HttpMethod.POST, '/folder', undefined, request) ); } async listFolders(request: FolderListRequest): Promise<Folder[]> { return await this.makeRequest( HttpMethod.GET, '/folder', prepareQueryRequest(request) ); } async getFolder(id: string, request?: FolderGetRequest): Promise<Folder> { return await this.makeRequest( HttpMethod.GET, '/folder/' + id, prepareQueryRequest(request) ); } async getFolderHierarchy(parentId?: string): Promise<FolderHierarchy[]> { const folders = await this.listFolders({ page_size: 99999, filter: { parent: parentId || 'null', }, }); const hierarchies: FolderHierarchy[] = []; for (const folder of folders) { hierarchies.push({ id: folder.id, name: folder.name, children: await this.getFolderHierarchy(folder.id), }); } return hierarchies; } async deleteFolder(id: string): Promise<ActionResponse> { return ensureSuccessfulResponse( await this.makeRequest(HttpMethod.DELETE, '/folder/' + id) ); } async createPaste(request: PasteCreateRequest): Promise<PasteCreateResponse> { return ensureSuccessfulResponse<PasteCreateResponse>( await this.makeRequest(HttpMethod.POST, '/paste', undefined, request) ); } async listPastes(request: PasteListRequest): Promise<Paste[]> { return await this.makeRequest( HttpMethod.GET, '/paste', prepareQueryRequest(request) ); } async getPaste(id: string): Promise<Paste> { return await this.makeRequest(HttpMethod.GET, '/paste/' + id); } async editPaste( id: string, request: PasteEditRequest ): Promise<ActionResponse> { return ensureSuccessfulResponse( await this.makeRequest(HttpMethod.PUT, '/paste/' + id, undefined, request) ); } async deletePaste(id: string): Promise<ActionResponse> { return ensureSuccessfulResponse( await this.makeRequest(HttpMethod.DELETE, '/paste/' + id) ); } async sharePaste( id: string, request: PasteShareRequest ): Promise<ActionResponse> { return ensureSuccessfulResponse( await this.makeRequest( HttpMethod.POST, '/paste/' + id + '/friend', 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