Skip to main content
Glama

mcp-google-sheets

props.ts3.21 kB
import { DropdownOption, Property } from '@activepieces/pieces-framework'; import { TaskadeAPIClient } from './client'; const createEmptyOptions = (placeholder: string) => { return { disabled: true, options: [], placeholder, }; }; export const taskadeProps = { workspace_id: Property.Dropdown({ displayName: 'Workspace', refreshers: [], required: true, options: async ({ auth }) => { if (!auth) { return createEmptyOptions('Please connect account first.'); } const client = new TaskadeAPIClient(auth as string); const response = await client.listWorkspaces(); const options: DropdownOption<string>[] = []; for (const workspace of response.items) { options.push({ label: workspace.name, value: workspace.id }); } return { disabled: false, options, }; }, }), folder_id: Property.Dropdown({ displayName: 'Folder', refreshers: ['workspace_id'], required: false, options: async ({ auth, workspace_id }) => { if (!auth) { return createEmptyOptions('Please connect account first.'); } if (!workspace_id) { return createEmptyOptions('Please select workspace.'); } const client = new TaskadeAPIClient(auth as string); const response = await client.listWorkspaceFolders(workspace_id as string); const options: DropdownOption<string>[] = []; for (const folder of response.items) { options.push({ label: folder.name, value: folder.id }); } return { disabled: false, options, }; }, }), project_id: Property.Dropdown({ displayName: 'Project', refreshers: ['workspace_id', 'folder_id'], required: true, options: async ({ auth, workspace_id, folder_id }) => { if (!auth) { return createEmptyOptions('Please connect account first.'); } if (!workspace_id) { return createEmptyOptions('Please select workspace.'); } const workspaceId = workspace_id as string; const folderId = (folder_id as string) ?? workspaceId; const client = new TaskadeAPIClient(auth as string); const response = await client.listProjects(folderId as string); const options: DropdownOption<string>[] = []; for (const project of response.items) { options.push({ label: project.name, value: project.id }); } return { disabled: false, options, }; }, }), task_id: Property.Dropdown({ displayName: 'Task', refreshers: ['project_id'], required: true, options: async ({ auth, project_id }) => { if (!auth) { return createEmptyOptions('Please connect account first.'); } if (!project_id) { return createEmptyOptions('Please select project.'); } const client = new TaskadeAPIClient(auth as string); const options: DropdownOption<string>[] = []; let after; let moreTasks = true; while (moreTasks) { const response = await client.listTasks(project_id as string, { limit: 100, after }); if (response.items.length === 0) { moreTasks = false; } else { after = response.items[response.items.length - 1].id; for (const task of response.items) { options.push({ label: task.text, value: task.id }); } } } return { disabled: false, options, }; }, }), };

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