Salesforce ACTION
List Email Messages
List Salesforce email messages, newest first, optionally scoped to one case. Returns the full email records including subject and body - use List Case Feed Items instead if you only need to know that an email happened. Find the case ID with List Cases first. Omit
Case ID to list the most recent emails across the org, which can be large - set Limit. See the documentation- Action
- Read only
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Salesforce account once, then configure and run List Email 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: "salesforce_rest_api-list-email-messages",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
salesforce_rest_api: { authProvisionId: "apn_xxxxxxx" },
caseId: "Case ID",
fields: ["Fields"],
},
})
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": "salesforce_rest_api-list-email-messages",
"configured_props": {
"salesforce_rest_api": { "authProvisionId": "apn_xxxxxxx" },
"caseId": "Case ID",
"fields": ["Fields"]
}
}'// 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": "salesforce_rest_api",
},
},
},
)
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: "salesforce_rest_api-list-email-messages",
arguments: {
caseId: "Case ID",
fields: ["Fields"],
},
})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 |
|---|---|---|
caseId Case ID | string | The ID of the case to retrieve email messages for (15- or 18-character Salesforce ID, e.g. 5005g00001ABCDeAAI). Use the List Cases action to retrieve case IDs. Omit to list emails across all records. Optional Dynamic |
fields Fields | string[] | The EmailMessage fields to return. Defaults to every field on the object, which includes the full message body. Id is always returned. Optional Dynamic |
limit Limit | integer | The maximum number of email messages to return. Valid values are integers from 1 through 1000. Omit to return every message Salesforce sends in one batch. 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
- salesforce_rest_api-list-email-messages
- Version
- 0.1.3
- App
- Salesforce
- Authentication
- OAuth
- Read-only
- Yes
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗