Tool modes

Pipedream MCP supports a few different methods for interacting with tools:
  1. Sub-agent (default)
  2. Full config
  3. Tools only

Sub-agent

When using Pipedream MCP in sub-agent mode, all tools you expose to your LLM take a single input: instruction. The Pipedream MCP server passes the instruction to an LLM to handle the configuration of the main tool using a set of agents with narrowly scoped sets of instructions and additional tools to aid in the configuration and execution of the top-level user prompt.
  • The benefit with this approach is that sub-agent mode abstracts some of the complexity with handling things like remote options and dynamic props, especially for MCP clients that don’t automatically reload tools.
  • However, one downside is that as a developer, you lose some of the control and observability in this model.
While in Beta, Pipedream eats the costs of the LLM tokens in sub-agent mode. We’ll likely pass these costs to developers in the future.

Full-config

Full-config mode enables support for loading and configuring dynamic props. This mode provides the most flexibility for tool configuration and is required for certain features like automatic app discovery. Use full-config mode when you need:
Your MCP client must be able to reload the list of available tools on each turn. See here for example implementations.

Configuring dynamic props

  • Tools that use dynamic props can’t be configured in one shot, as the full prop definition isn’t known until certain inputs are defined.
  • For example, the full set of props for google_sheets-add-single-row aren’t known until you configure the hasHeaders prop. Once you know if there’s a header row, you can retrieve the column names from the header row and make them available as props that can be configured.
  • As you call each tool, you should reload the available tools for the server to expose meta tools for configuration, such as begin_configuration_google_sheets-add-single-row, which causes the rest of the tools to be removed and only expose tools relevant to the configuration.

Enabling full-config mode

To use full-config mode, you need to set 2 parameters:
  • Set the toolMode to full-config
  • Pass a conversationId in order to maintain state for your end user’s conversation
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-slug": APP_SLUG,
      "x-pd-tool-mode": "full-config", // Enable full-config mode
      "x-pd-conversation-id": CONVERSATION_ID // Maintain conversation state
    }
  }
});

Tools-only

To handle all tool configuration and calling directly, you should use tools-only mode.
While some tools will be able to be fully configured and executed in a single shot, not all tools will work in tools-only mode.