Dify ACTION
List Messages
Return a Dify Chatflow, Chatbot, Agent, or Legacy Agent conversation's message history. The first call returns the latest messages; page backward into older ones with
First Message ID. Use List Conversations to find a Conversation ID. Each message includes the query/answer pair, so this is how an agent reconstructs prior turns of a conversation instead of relying on its own memory. By default each message is trimmed to id, conversation_id, query, answer, status, error, feedback, and created_at; set Include Full Details to also get retrieved knowledge-base passages (retriever_resources), agent reasoning (agent_thoughts), files, and token usage. Example: Conversation ID 45701982-8118-4bc5-8e9b-64562b4555f2, User user-123 → { data: [{ id, conversation_id, query: "What are the specs of the iPhone 13 Pro Max?", answer: "...", status: "normal", feedback: { rating: "like" }, created_at }], has_more: true, limit: 20 }. If has_more is true, call again with First Message ID set to the id of the first message in data to get older messages. 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 Messages 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-messages",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
dify: { authProvisionId: "apn_xxxxxxx" },
conversationId: "Conversation ID",
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-list-messages",
"configured_props": {
"dify": { "authProvisionId": "apn_xxxxxxx" },
"conversationId": "Conversation ID",
"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-list-messages",
arguments: {
conversationId: "Conversation ID",
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 |
|---|---|---|
conversationId Conversation ID | string | The ID of the conversation to read. Use List Conversations to find valid IDs. Required |
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 |
firstId First Message ID | string | Pagination cursor: the id of the first message in the current page's data array. Pass it to fetch the previous (older) page. Omit to fetch the latest messages. Optional |
limit Limit | integer | Number of results to return per page, between 1 and 100. Defaults to 20. Optional |
includeFullDetails Include Full Details | boolean | Return Dify's full message objects, including retriever_resources, agent_thoughts, message_files, inputs, and token/price usage. These can be large on knowledge-base and agent apps. Defaults to false. 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-messages
- Version
- 0.0.1
- App
- Dify
- Authentication
- API key
- Read-only
- Yes
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗