FlowiseAI/Flowise · error · Error

Pipedream app slug is required

Error message

Pipedream app slug is required

What it means

Thrown by PipedreamMCP.getTools when nodeData.inputs.appSlug is empty. The Pipedream MCP server selects tools by app slug, so a missing slug makes the request meaningless and is rejected before any network call.

Source

Thrown at packages/components/nodes/tools/MCP/Pipedream/PipedreamMCP.ts:261

        const workspaceId = options?.searchOptions?.workspaceId?._value || options?.workspaceId
        if (!workspaceId) return value

        const appDataSource = options.appDataSource as DataSource
        const databaseEntities = options.databaseEntities as IDatabaseEntity
        const optionsWithWorkspaceId = options.workspaceId ? options : { ...options, workspaceId }
        const variables = await getVars(appDataSource, databaseEntities, nodeData, optionsWithWorkspaceId)
        const vars = prepareSandboxVars(variables) as Record<string, string>

        return value.replace(VAR_PLACEHOLDER_RE, (match, varName) => {
            return vars[varName] != null ? String(vars[varName]) : match
        })
    }

    async getTools(nodeData: INodeData, options: ICommonObject, isLoadMethod = false): Promise<Tool[]> {
        const appSlug = nodeData.inputs?.appSlug as string
        if (!appSlug) {
            throw new Error('Pipedream app slug is required')
        }

        const SLUG_PATTERN = /^[a-z0-9](?:[a-z0-9_-]{0,98}[a-z0-9])?(?:,\s*[a-z0-9](?:[a-z0-9_-]{0,98}[a-z0-9])?)*$/
        if (!SLUG_PATTERN.test(appSlug)) {
            throw new Error('Invalid app slug format. Must be lowercase letters, digits, hyphens and underscores only.')
        }

        let externalUserId = nodeData.inputs?.externalUserId as string
        externalUserId = await this.resolveVarsInString(externalUserId, nodeData, options)

        if (externalUserId.includes('{{')) {
            if (!isLoadMethod) {
                throw new Error(
                    'Variables in User ID are not resolved. ' +
                        '{{$vars.*}} requires a matching workspace variable. ' +
                        '{{$flow.*}} variables (e.g. sessionId) are only available at runtime, not when refreshing actions.'
                )
            }

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Open the Pipedream_MCP node and enter the app slug (e.g. 'slack', 'github', 'google_sheets') in the appSlug field.
  2. Confirm the slug matches the lowercase identifier shown on mcp.pipedream.com / Pipedream's app directory.
  3. If using a variable, ensure it resolves to a non-empty string before getTools runs.
Defensive patterns

Strategy: validation

Validate before calling

const appSlug = nodeData.inputs?.appSlug as string
if (!appSlug || !appSlug.trim()) {
    throw new Error('Pipedream app slug is required') // block before getTools body
}

Type guard

function hasAppSlug(inputs: unknown): inputs is { appSlug: string } {
    return typeof inputs === 'object' && inputs !== null
        && typeof (inputs as any).appSlug === 'string'
        && (inputs as any).appSlug.trim().length > 0
}

Try / catch

try {
    await pipedream.getTools(nodeData, options)
} catch (e) {
    if (e instanceof Error && e.message === 'Pipedream app slug is required') {
        // prompt for the appSlug input
    }
}

Prevention

When it happens

Trigger: The Pipedream_MCP node has no 'appSlug' input set (blank field, or the field was never filled). Triggered during tool-load (refresh actions) or at runtime when getTools is called.

Common situations: User adds the node but leaves appSlug empty; a flow/template was duplicated without copying the appSlug; the UI field was cleared; variable substitution produced an empty value.

Related errors


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/a8c351d23f41c00f. Report an issue: GitHub.