Zendesk ACTION
Reply to Side Conversation
Reply to an existing Zendesk side conversation. Zendesk requires recipients on every reply, so pass the participants the reply should go to. See the documentation
- Action
- Writes data
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Zendesk account once, then configure and run Reply to Side Conversation 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: "zendesk-reply-to-side-conversation",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
zendesk: { authProvisionId: "apn_xxxxxxx" },
ticketId: "Ticket ID",
sideConversationId: "Side 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": "zendesk-reply-to-side-conversation",
"configured_props": {
"zendesk": { "authProvisionId": "apn_xxxxxxx" },
"ticketId": "Ticket ID",
"sideConversationId": "Side 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": "zendesk",
},
},
},
)
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: "zendesk-reply-to-side-conversation",
arguments: {
ticketId: "Ticket ID",
sideConversationId: "Side 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 |
|---|---|---|
ticketId Ticket ID | string | The ID of the ticket. Required Dynamic |
sideConversationId Side Conversation ID | string | Identifier of the side conversation (UUID, e.g. 8566255a-ece5-11e8-857d-493066fa7b17). Select List Side Conversations to see available IDs for a ticket. Required Dynamic |
body Message Body | string | The plain-text body of the side conversation message. Required |
recipients Recipients | string | Recipients for this reply, as a JSON array of participant objects. Zendesk requires this on every reply, and returns Invalid parameter: to is required when it is omitted, so repeat the participants the reply should go to (read them with Get Side Conversation). Use [{"email":"person@example.com","name":"Person"}] for an external email recipient or [{"user_id":123}] for an existing Zendesk agent. Do not mix participant types in the same array. Required |
subject Subject | string | The subject of the side conversation message. Optional |
customSubdomain Custom Subdomain | string | For Enterprise Zendesk accounts: optionally specify the subdomain to use. This will override the subdomain that was provided when connecting your Zendesk account to Pipedream. For example, if you Zendesk URL is https://examplehelp.zendesk.com, your subdomain is examplehelp 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
- zendesk-reply-to-side-conversation
- Version
- 0.0.2
- App
- Zendesk
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗