Zendesk ACTION
Upload Ticket Attachments
Upload one or more files as ticket attachments via the Zendesk Uploads API. Returns upload tokens that can be used when creating or updating tickets. See the documentation.
- Action
- Writes data
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Zendesk account once, then configure and run Upload Ticket Attachments 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-upload-ticket-attachments",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
zendesk: { authProvisionId: "apn_xxxxxxx" },
attachments: ["Attachments"],
customSubdomain: "Custom Subdomain",
},
})
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-upload-ticket-attachments",
"configured_props": {
"zendesk": { "authProvisionId": "apn_xxxxxxx" },
"attachments": ["Attachments"],
"customSubdomain": "Custom Subdomain"
}
}'// 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-upload-ticket-attachments",
arguments: {
attachments: ["Attachments"],
customSubdomain: "Custom Subdomain",
},
})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 |
|---|---|---|
attachments Attachments | string[] | File paths or URLs to attach to the ticket. Multiple files can be attached. 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 |
syncDir SyncDir | dir | 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-upload-ticket-attachments
- Version
- 0.0.6
- App
- Zendesk
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗