Skip to main content
Glama
index.ts4 kB
import { AiOverageState, isNil, PiecesFilterType, PlanName, PlatformPlanWithOnlyLimits, PlatformUsageMetric } from '@activepieces/shared' import { Static, Type } from '@sinclair/typebox' export const PRICE_PER_EXTRA_ACTIVE_FLOWS = 5 export const AI_CREDITS_USAGE_THRESHOLD = 15000 export type ProjectPlanLimits = { nickname?: string locked?: boolean pieces?: string[] aiCredits?: number | null piecesFilterType?: PiecesFilterType } export enum ApSubscriptionStatus { ACTIVE = 'active', CANCELED = 'canceled', } export const METRIC_TO_LIMIT_MAPPING = { [PlatformUsageMetric.ACTIVE_FLOWS]: 'activeFlowsLimit', } as const export const METRIC_TO_USAGE_MAPPING = { [PlatformUsageMetric.ACTIVE_FLOWS]: 'activeFlows', } as const export const SetAiCreditsOverageLimitParamsSchema = Type.Object({ limit: Type.Number({ minimum: 10 }), }) export type SetAiCreditsOverageLimitParams = Static<typeof SetAiCreditsOverageLimitParamsSchema> export const ToggleAiCreditsOverageEnabledParamsSchema = Type.Object({ state: Type.Enum(AiOverageState), }) export type ToggleAiCreditsOverageEnabledParams = Static<typeof ToggleAiCreditsOverageEnabledParamsSchema> export const UpdateActiveFlowsAddonParamsSchema = Type.Object({ newActiveFlowsLimit: Type.Number(), }) export type UpdateActiveFlowsAddonParams = Static<typeof UpdateActiveFlowsAddonParamsSchema> export const CreateCheckoutSessionParamsSchema = Type.Object({ newActiveFlowsLimit: Type.Number(), }) export type CreateSubscriptionParams = Static<typeof CreateCheckoutSessionParamsSchema> export enum PRICE_NAMES { AI_CREDITS = 'ai-credit', ACTIVE_FLOWS = 'active-flow', } export const PRICE_ID_MAP = { [PRICE_NAMES.AI_CREDITS]: { dev: 'price_1RnbNPQN93Aoq4f8GLiZbJFj', prod: 'price_1Rnj5bKZ0dZRqLEKQx2gwL7s', }, [PRICE_NAMES.ACTIVE_FLOWS]: { dev: 'price_1SQbbYQN93Aoq4f8WK2JC4sf', prod: 'price_1SQbcvKZ0dZRqLEKHV5UepRx', }, } export const STANDARD_CLOUD_PLAN: PlatformPlanWithOnlyLimits = { plan: 'standard', includedAiCredits: 200, aiCreditsOverageLimit: undefined, aiCreditsOverageState: AiOverageState.ALLOWED_BUT_OFF, activeFlowsLimit: 10, projectsLimit: 1, agentsEnabled: true, tablesEnabled: true, todosEnabled: true, mcpsEnabled: true, embeddingEnabled: false, globalConnectionsEnabled: false, customRolesEnabled: false, environmentsEnabled: false, analyticsEnabled: false, showPoweredBy: false, auditLogEnabled: false, managePiecesEnabled: false, manageTemplatesEnabled: false, customAppearanceEnabled: false, manageProjectsEnabled: false, projectRolesEnabled: false, customDomainsEnabled: false, apiKeysEnabled: false, ssoEnabled: false, } export const OPEN_SOURCE_PLAN: PlatformPlanWithOnlyLimits = { embeddingEnabled: false, globalConnectionsEnabled: false, customRolesEnabled: false, mcpsEnabled: true, tablesEnabled: true, todosEnabled: true, agentsEnabled: true, includedAiCredits: 0, aiCreditsOverageLimit: undefined, aiCreditsOverageState: AiOverageState.NOT_ALLOWED, environmentsEnabled: false, analyticsEnabled: false, showPoweredBy: false, auditLogEnabled: false, managePiecesEnabled: false, manageTemplatesEnabled: false, customAppearanceEnabled: false, manageProjectsEnabled: false, projectRolesEnabled: false, customDomainsEnabled: false, apiKeysEnabled: false, ssoEnabled: false, stripeCustomerId: undefined, stripeSubscriptionId: undefined, stripeSubscriptionStatus: undefined, } export const APPSUMO_PLAN = (planName: PlanName): PlatformPlanWithOnlyLimits => ({ ...STANDARD_CLOUD_PLAN, plan: planName, activeFlowsLimit: undefined, }) export const isCloudPlanButNotEnterprise = (plan?: string): boolean => { if (isNil(plan)) { return false } return plan === PlanName.STANDARD }

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