Dify ACTION
Run Workflow
Run the published workflow of the Dify app that the connected API key belongs to, and return its outputs. Only works for Workflow-type apps: a Chatflow, Chatbot, Agent, or Text Generator app's key returns a
not_workflow_app error. Requires the workflow to be published; an unpublished workflow returns an invalid_param error. Use Get App Parameters first to learn the input variable names. Example: Inputs { "city": "San Francisco" }, User user-123 → { workflow_run_id, data: { id, status: "succeeded", outputs: { result: "..." }, total_tokens, elapsed_time } }. This action uses blocking response mode, which waits for the run to finish before returning; long-running workflows on Dify Cloud risk being cut off by the platform's 100-second edge proxy timeout, in which case the run may still complete server-side but this action will not see the result. See the documentation- Action
- Writes data
- API key
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Dify account once, then configure and run Run Workflow from your backend or agent.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "dify-run-workflow",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
dify: { authProvisionId: "apn_xxxxxxx" },
inputs: "Inputs",
user: "User",
},
})
console.log(result)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "dify-run-workflow",
"configured_props": {
"dify": { "authProvisionId": "apn_xxxxxxx" },
"inputs": "Inputs",
"user": "User"
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "dify",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "dify-run-workflow",
arguments: {
inputs: "Inputs",
user: "User",
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
inputs Inputs | object | Values for the app's input variables, keyed by variable name, e.g. { "city": "San Francisco" }. Leave empty ({}) if the app defines no input variables — most chat apps don't. Use Get App Parameters to discover this app's actual variable names and whether each is required. Optional |
user User | string | A unique identifier for the end user, defined by you (e.g. an internal user ID or session ID) — not a Dify account. Dify scopes conversations, messages, and files to this value, so reuse the same User across requests for the same end user. When reading conversations or messages, this must match the User value used when they were created — Dify returns an empty page, not an error, for a mismatched value. For List Conversations and List Messages, Dify has no endpoint to list end users: use the User value from the user's request, or ask for it. See the documentation Required |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- dify-run-workflow
- Version
- 0.0.1
- App
- Dify
- Authentication
- API key
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗