Skip to main content
Glama

mcp-google-sheets

index.ts1.65 kB
import { Static, Type } from '@sinclair/typebox' const FileResponseInterfaceV1 = Type.Object({ base64Url: Type.String(), fileName: Type.String(), extension: Type.Optional(Type.String()), }) const FileResponseInterfaceV2 = Type.Object({ mimeType: Type.String(), url: Type.String(), fileName: Type.Optional(Type.String()), }) export const FileResponseInterface = Type.Union([FileResponseInterfaceV1, FileResponseInterfaceV2]) export type FileResponseInterface = Static<typeof FileResponseInterface> export enum HumanInputFormResultTypes { FILE = 'file', MARKDOWN = 'markdown', } export function createKeyForFormInput(displayName: string) { const inputKey = displayName .toLowerCase() .replace(/\s+(\w)/g, (_, letter) => letter.toUpperCase()) .replace(/^(.)/, letter => letter.toLowerCase()) /**We do this because react form inputs must not contain quotes */ return inputKey.replaceAll(/[\\"''\n\r\t]/g, '') } export const HumanInputFormResult = Type.Union([ Type.Object({ type: Type.Literal(HumanInputFormResultTypes.FILE), value: FileResponseInterface, }), Type.Object({ type: Type.Literal(HumanInputFormResultTypes.MARKDOWN), value: Type.String(), files: Type.Optional(Type.Array(FileResponseInterface)), }), ]) export type HumanInputFormResult = Static<typeof HumanInputFormResult> export const ChatFormResponse = Type.Object({ sessionId: Type.String(), message: Type.String(), files: Type.Optional(Type.Array(Type.String())), }) export type ChatFormResponse = Static<typeof ChatFormResponse>

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