Discover and configure available apps programmatically, with automatic app identification from prompts.

Overview

Pipedream provides access to + APIs. Every integration is also available as an MCP server and the vast majority of integrations (like Notion, Gmail, or Slack) has its own specific set of tools.

Discovering apps

Search for available apps

import { PipedreamClient } from "@pipedream/sdk";
 
// Initialize the Pipedream SDK client
const client = new PipedreamClient({
  projectEnvironment: PIPEDREAM_ENVIRONMENT,
  clientId: PIPEDREAM_CLIENT_ID,
  clientSecret: PIPEDREAM_CLIENT_SECRET,
  projectId: PIPEDREAM_PROJECT_ID
});
 
// Search for Google Sheets apps, sorted by featured weight
const apps = await client.apps.list({ 
  q: "google sheets",
  sort_key: "featured_weight",
  sort_direction: "desc"
});
Check out the full API reference for listing apps

Automatic app discovery

If using Pipedream MCP, you can enable Pipedream to automatically identifyrelevant apps from a given prompt.
Check out how this works at chat.pipedream.com

Enabling app discovery

Add the appDiscovery=true parameter to your MCP server requests:
HeaderQuery ParamValueRequired?
x-pd-app-discoveryappDiscoverytrueNo
App discovery currently requires full-config mode to be enabled

How it works

When app discovery is enabled:
  1. Pipedream analyzes the incoming prompt to identify which apps are most relevant
  2. The initial tool call responses with an array of relevant apps
  3. When the client reload its available tools, it will now have tools for the relevant apps

Examples

Basic setup with app discovery

import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { PipedreamClient } from "@pipedream/sdk";

// Get access token
const client = new PipedreamClient({
  projectEnvironment: PIPEDREAM_ENVIRONMENT,
  clientId: PIPEDREAM_CLIENT_ID,
  clientSecret: PIPEDREAM_CLIENT_SECRET,
  projectId: PIPEDREAM_PROJECT_ID
});

const accessToken = await client.rawAccessToken;

// Configure MCP transport with app discovery enabled
const transport = new StreamableHTTPClientTransport(new URL(serverUrl), {
  requestInit: {
    headers: {
      "Authorization": `Bearer ${accessToken}`,
      "x-pd-project-id": PIPEDREAM_PROJECT_ID,
      "x-pd-environment": PIPEDREAM_ENVIRONMENT,
      "x-pd-external-user-id": EXTERNAL_USER_ID,
      "x-pd-app-discovery": "true",
      "x-pd-tool-mode": "full-config"
    }
  }
});

How app discovery works with different prompts

App discovery automatically detects which apps are referenced in user prompts:
User InputApps Detected
”Send a message to the #general channel in Slack”slack
”Create a task in Notion and send a notification to Slack”notion, slack
”Add this email to my spreadsheet”google_sheets, microsoft_excel, airtable_oauth, zoho_sheet, smartsheet
”Schedule a meeting and update my CRM”google_calendar, zoho_crm, hubspot

Limitations

  • App discovery currently requires full-config mode to be enabled
  • Detection accuracy depends heavily on the clarity of the prompt