Grain ACTION
Manage Recording Sharing
Shares or unshares a recording with a specific user or team. Use List Recordings to find the recording's ID, and List Users or List Teams to resolve the target's ID. Set
operation to share to grant access or unshare to revoke it, and targetType to user or team. Example: recordingId: "pppp6666-qq77-rr88-ss99-tttt00000000", operation: "share", targetType: "user", targetId: "d91b7ed0-a149-425c-9623-0664148e4fc1" shares the recording with that user and returns {"success": true}. See the documentation- Action
- Writes data
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Grain account once, then configure and run Manage Recording Sharing 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: "grain-manage-recording-sharing",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
grain: { authProvisionId: "apn_xxxxxxx" },
recordingId: "Recording ID",
operation: "Operation",
},
})
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": "grain-manage-recording-sharing",
"configured_props": {
"grain": { "authProvisionId": "apn_xxxxxxx" },
"recordingId": "Recording ID",
"operation": "Operation"
}
}'// 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": "grain",
},
},
},
)
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: "grain-manage-recording-sharing",
arguments: {
recordingId: "Recording ID",
operation: "Operation",
},
})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 |
|---|---|---|
recordingId Recording ID | string | The ID of the recording to fetch. Use List Recordings to find recording IDs. Required |
operation Operation | string | Whether to share or unshare the recording. Required |
targetType Target Type | string | Whether the target is a user or a team. Required |
targetId Target ID | string | The ID of the user (from List Users) or team (from List Teams) to share or unshare the recording with. E.g. d91b7ed0-a149-425c-9623-0664148e4fc1. Required |
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
- grain-manage-recording-sharing
- Version
- 0.0.1
- App
- Grain
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗