Back to skills
SKILL.md
Pipedream Connect
BSecurityConnect 2,000+ APIs with managed OAuth via Pipedream. Includes full UI integration for OpenClaw Gateway dashboard with per-agent app isolation.
- 21 stars
- 0 votes
- 0 copies
- 3 views
- Added September 7, 2026
Works with
Security analysis
85/100- Creates or modifies cron jobs for persistent execution
- Installs packages at runtime which could introduce malicious dependencies
Pro scans all 12 files and shows the line behind each finding
npx -y skills add modbender/skill-library-mcp --skill pipedream-connect --agent claude-codeAre you the author of Pipedream Connect?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-pipedream-connect)---
name: pipedream-connect
description: Connect 2,000+ APIs with managed OAuth via Pipedream. Includes full UI integration for OpenClaw Gateway dashboard with per-agent app isolation.
metadata: {"openclaw":{"emoji":"๐","requires":{"bins":["mcporter"],"openclaw":">=2026.1.0"},"category":"integrations"}}
---
# Pipedream Connect
Connect your AI agents to 2,000+ APIs with managed OAuth via Pipedream. Each agent gets its own isolated app connections and OAuth tokens.
## What's New (2026-03-01 v1.3.0)
- **Per-agent app connections** โ App connections moved to Agents โ [Agent] โ Tools โ Pipedream
- **Global tab = credentials only** โ The Pipedream tab is now for platform auth (Client ID/Secret/Project ID) only
- **External User ID defaults to agent slug** โ e.g. `main`, `scout-monitor` (not a UUID)
- **Live connected apps** โ Refresh queries the Pipedream API for real connected accounts
- **Environment warning** โ Agent panel shows a warning when running in development mode
- **New RPCs**: `pipedream.connect`, `pipedream.disconnect`, `pipedream.test` (per-agent, use `agentId` + `appSlug`)
## What's New (v1.3.0) โ Vault-Backed Secrets
- **`clientId` and `clientSecret` stored in `~/.openclaw/secrets.json`** (OpenClaw vault) โ no longer plaintext in `pipedream-credentials.json`
- **`PIPEDREAM_CLIENT_SECRET` removed from `mcporter.json` env** โ client secret is never written to mcporter config
- **Auto-migration**: on first gateway start after upgrade, existing `pipedream-credentials.json` secrets are silently moved to vault and stripped from the file
- **Token refresh script** now reads from vault first (falls back to credentials.json โ mcporter.json for backwards compat)
- **`pipedream-credentials.json`** now contains only non-sensitive fields: `projectId`, `environment`, `externalUserId`
- VirusTotal "suspicious" flag resolved โ no plaintext credential files
## Architecture
```
Global Pipedream Tab
โโโ Platform credentials (Client ID, Secret, Project ID, Environment)
โโโ Agent quick-links table (โ navigate to per-agent config)
Agents โ [Agent] โ Tools โ Pipedream
โโโ External User ID (defaults to agent slug)
โโโ Connected Apps (live from Pipedream API)
โโโ Available Apps grid + Browse All Apps modal
โโโ Manual slug entry
```
## Prerequisites
1. **Pipedream Account** โ [pipedream.com](https://pipedream.com)
2. **mcporter** โ `npm install -g mcporter`
3. **OpenClaw Gateway** โ v2026.1.0 or later
## Setup
### Step 1: Create OAuth Client & Project
1. Go to [pipedream.com/settings/api](https://pipedream.com/settings/api) โ **New OAuth Client**
2. Copy **Client ID** and **Client Secret**
3. Go to [pipedream.com/projects](https://pipedream.com/projects) โ create a project
4. Copy **Project ID** (`proj_...`)
### Step 2: Configure Platform Credentials
1. OpenClaw Dashboard โ **Pipedream** tab โ **Configure**
2. Enter Client ID, Client Secret, Project ID
3. Set **Environment** to `production` (not development โ development tokens expire faster and have lower rate limits)
4. Click **Save Credentials**
### Step 3: Connect Apps Per Agent
1. Go to **Agents โ [Agent] โ Tools โ Pipedream**
2. Verify the **External User ID** (defaults to agent slug, e.g. `main`)
3. Click **Connect** on any app in the grid โ completes OAuth in a popup
4. Click **โป Refresh** after OAuth completes to see the app appear in Connected Apps
### Step 4: Token Refresh (Recommended)
```bash
# Cron job โ runs every 45 minutes
(crontab -l 2>/dev/null; echo "*/45 * * * * /usr/bin/python3 $HOME/openclaw/skills/pipedream-connect/scripts/pipedream-token-refresh.py >> $HOME/openclaw/logs/pipedream-cron.log 2>&1") | crontab -
```
## Per-Agent Isolation
Each agent uses a separate Pipedream `external_user_id`:
| Agent | External User ID | Pipedream Identity |
|-------|-----------------|-------------------|
| `main` | `main` | Isolated OAuth tokens |
| `scout-monitor` | `scout-monitor` | Isolated OAuth tokens |
| `scout-spark` | `scout-spark` | Isolated OAuth tokens |
Config stored at: `~/.openclaw/workspace/config/integrations/pipedream/{agentId}.json`
**External User ID defaults to agent slug.** Override it in Agents โ Tools โ Pipedream โ Edit.
## RPC Reference
### Global (credentials)
| RPC | Params | Description |
|-----|--------|-------------|
| `pipedream.status` | โ | Get global credential status + agent summaries |
| `pipedream.saveCredentials` | `clientId, clientSecret, projectId, environment` | Save platform credentials |
| `pipedream.getToken` | โ | Get/refresh the platform OAuth access token |
| `pipedream.getConnectUrl` | `agentId, appSlug` | Get OAuth connect URL for a user+app |
| `pipedream.connectApp` | `agentId, appSlug` | Complete app connection + write to mcporter |
| `pipedream.disconnectApp` | `agentId, appSlug` | Disconnect app + remove from mcporter |
| `pipedream.refreshToken` | `agentId?, appSlug?` | Refresh token(s) โ all or specific agent/app |
| `pipedream.activate` | `agentId, appSlug` | Activate an app (add to mcporter if not present) |
### Per-Agent
| RPC | Params | Description |
|-----|--------|-------------|
| `pipedream.agent.status` | `agentId` | Get config + live connected apps from API |
| `pipedream.agent.save` | `agentId, externalUserId` | Save per-agent config |
| `pipedream.agent.delete` | `agentId` | Remove per-agent config |
| `pipedream.connect` | `agentId, appSlug` | Get OAuth connect URL for agent |
| `pipedream.disconnect` | `agentId, appSlug` | Disconnect app + remove from mcporter |
| `pipedream.test` | `agentId, appSlug` | Test app connection |
## Using Connected Tools
```bash
# Gmail (agent: main โ externalUserId: main)
mcporter call pipedream-main-gmail.gmail-find-email \
instruction="Find unread emails from today"
# Google Calendar (agent: scout-monitor)
mcporter call pipedream-scout-monitor-google-calendar.google-calendar-find-event \
instruction="Find events for tomorrow"
```
Server names follow the pattern: `pipedream-{externalUserId}-{appSlug}`
## Environment: Development vs Production
โ ๏ธ **Use Production** for real work:
- Development tokens expire faster and have lower rate limits
- Set in: Pipedream tab โ Edit credentials โ Environment โ Production
- The agent Pipedream panel shows a warning when running in development mode
## Security
| Behavior | Detail |
|----------|--------|
| **clientId** | Stored in `~/.openclaw/secrets.json` (vault, 0600) |
| **clientSecret** | Stored in `~/.openclaw/secrets.json` (vault, 0600) โ never in plaintext config files |
| Non-secret config | `~/.openclaw/workspace/config/pipedream-credentials.json` โ projectId, environment, externalUserId only |
| Per-agent config | `~/.openclaw/workspace/config/integrations/pipedream/{agentId}.json` |
| Access tokens (JWT) | Short-lived Bearer token in `mcporter.json` Authorization header โ acceptable, refreshed every 45 min |
| mcporter env | `PIPEDREAM_CLIENT_SECRET` is **never** written to mcporter.json |
| External API calls | `api.pipedream.com`, `remote.mcp.pipedream.net` |
| Auto-migration | Existing plaintext credentials.json secrets automatically moved to vault on first gateway start |
## Troubleshooting
**Connected app not showing after OAuth**
โ Click โป Refresh โ the panel queries the Pipedream API live for connected accounts
**`unknown method: pipedream.connect`**
โ Rebuild and restart gateway: `pnpm build && openclaw gateway restart`
**`No Pipedream credentials configured`**
โ Set up credentials in the global Pipedream tab first
**Development environment warning**
โ Edit credentials in Pipedream tab, change Environment to `production`, save
**Token expired**
โ Set up the 45-minute cron job above, or click Connect again to re-authorize
## Support
- **ClawHub**: [clawhub.ai/skills/pipedream-connect](https://clawhub.ai/skills/pipedream-connect)
- **Pipedream Docs**: [pipedream.com/docs](https://pipedream.com/docs)
- **MCP Apps**: [mcp.pipedream.com](https://mcp.pipedream.com)
- **OpenClaw Discord**: [discord.com/invite/clawd](https://discord.com/invite/clawd)
## Reference Files
| File | Purpose |
|------|---------|
| `reference/pipedream-backend.ts` | Gateway RPC handlers (all pipedream.* methods) |
| `reference/pipedream-views.ts` | Global Pipedream tab UI (Lit) |
| `reference/pipedream-controller.ts` | Global tab state management |
| `reference/agent-pipedream-views.ts` | Per-agent Pipedream panel UI (Agents โ Tools โ Pipedream) |
| `reference/agent-pipedream-controller.ts` | Per-agent state management |
| `reference/README.md` | Reference file notes |
| `scripts/` | Token refresh and utility scripts |
Files in this skill
- .metadata.json
- CHANGELOG.md
- INSTALL.md
- SKILL.md
- reference/README.md
- reference/agent-pipedream-controller.ts
- reference/agent-pipedream-views.ts
- reference/pipedream-backend.ts
- reference/pipedream-controller.ts
- reference/pipedream-views.ts
- scripts/pipedream-token-refresh.py
- scripts/setup-cron.sh
Attribution
Related skills
View all in security โComments
Loading commentsโฆ
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.