Dify ACTION
List Conversations
List a Dify Chatflow, Chatbot, Agent, or Legacy Agent app's conversations, most recently active first. Conversations are scoped by
User, so pass the same value used to create those conversations to see that end user's threads. Example: User user-123, Limit 20 → { data: [{ id, name: "iPhone Specs Chat", inputs, status: "normal", created_at, updated_at }], has_more: true, limit: 20 }. If has_more is true, call again with Last Conversation ID set to the id of the last conversation in data. Pass a conversation's id to List Messages to read it. See the documentation- Action
- Read only
- API key
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Dify account once, then configure and run List Conversations 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-list-conversations",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
dify: { authProvisionId: "apn_xxxxxxx" },
user: "User",
lastId: "Last Conversation ID",
},
})
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-list-conversations",
"configured_props": {
"dify": { "authProvisionId": "apn_xxxxxxx" },
"user": "User",
"lastId": "Last Conversation ID"
}
}'// 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-list-conversations",
arguments: {
user: "User",
lastId: "Last Conversation ID",
},
})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 |
|---|---|---|
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 |
lastId Last Conversation ID | string | Pagination cursor: the id of the last conversation from the previous page's results. Omit to fetch the first page. Optional |
limit Limit | integer | Number of results to return per page, between 1 and 100. Defaults to 20. Optional |
sortBy Sort By | string | Field to sort results by. Defaults to -updated_at (most recently updated first). Optional |
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-list-conversations
- Version
- 0.0.1
- App
- Dify
- Authentication
- API key
- Read-only
- Yes
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗