# Conductor Deck > Conductor Deck is a visual automation platform for Elgato Stream Deck. Users build node-based workflows on a drag-and-drop canvas, connect 3,000+ cloud services via Pipedream Connect, and assign workflows to physical Stream Deck buttons with one click. ## Product overview Conductor Deck turns an Elgato Stream Deck into a programmable automation controller. Users wire up multi-step workflows visually: a trigger fires, nodes execute in topological order, and results flow back to the Stream Deck display. ### Key capabilities - **Visual workflow builder** — Drag-and-drop canvas with snap-to-grid placement and collision avoidance. - **3,000+ integrations** — Slack, Discord, Spotify, GitHub, Google Sheets, Notion, Linear, Jira, and more via Pipedream Connect. - **Stream Deck sync** — Assign any workflow to a physical button via a companion plugin. - **Long-press cancel** — Long-press a running Run Workflow button on Stream Deck to cancel the latest run without opening the app. - **AI workflow generation** — Describe what you want in natural language and Conductor Deck builds the workflow using Claude. - **MCP server** — Control workflows, devices, and templates from AI desktop clients like Claude Desktop. - **Local actions** — Shell commands, keyboard shortcuts, HTTP requests, OBS control, URL launchers, and notifications. - **Execution engine** — DAG-based executor with parallel waves, per-node retry/skip/abort, and variable interpolation. - **Version history** — Snapshot and restore previous workflow states (Pro: 100 versions, Max: unlimited). - **Public status page** — Check Conductor Deck health and probe-based uptime indicators at /status. - **Activity triage** — Node-level step status filter in the activity log to jump straight to the failing step. - **Feedback** — In-app bug report and feature request dialog with category routing. ### How it compares - **Elgato built-in actions**: single-step, no multi-step workflows or cloud integrations. - **Zapier / Make**: general automation, not designed for Stream Deck hardware integration. - **Hand-coded plugins**: requires Elgato SDK knowledge; Conductor Deck is visual and no-code. ## Pricing | Plan | Monthly | Annual | Workflows | Runs/month | Concurrent | Key features | |------|---------|--------|-----------|------------|------------|--------------| | Free | $0 | $0 | 3 | 100 | 2 | Core builder, manual triggers | | Pro | $15 | $12/mo | Unlimited | 5,000 | 5 | Webhook/cron triggers, Pipedream Connect, 100 versions | | Max | $35 | $28/mo | Unlimited | 20,000 | 10 | API access, priority execution, unlimited versions | ## Public API (no account required) Base URL `https://www.conductordeck.com`. Everything under `/api/v1` is read-only and anonymous. | Operation ID | Endpoint | Returns | |---|---|---| | getPublicApiHealth | GET /api/v1/health | Liveness and deployed revision of the public API | | listIntegrations | GET /api/v1/integrations | Paged, searchable app catalog (q, category, availability, limit, offset) | | getIntegration | GET /api/v1/integrations/{slug} | One app plus its available triggers and actions | | listWorkflowTemplates | GET /api/v1/templates | Built-in workflow template summaries (q, category) | | getWorkflowTemplate | GET /api/v1/templates/{id} | One template including its node and edge graph | | getServiceHealth | GET /api/health | Liveness including the database | | getAuthenticatedIdentity | GET /api/v1/me | The presented API key's account and scopes (key required, no scope required) | | listOwnWorkflows | GET /api/v1/me/workflows | The key owner's workflows (scope: workflows:read) | | listOwnRuns | GET /api/v1/me/runs | The key owner's run history (scope: runs:read) | | callMcpServer | POST /api/mcp | MCP over Streamable HTTP, JSON-RPC 2.0 | - Start at [/api](/api): a keyless JSON index of every endpoint, both auth options, the rate-limit policy, the error shape, and the versioning/deprecation policy. Nothing needs to be guessed from convention. - Typed schema: [/openapi.json](/openapi.json). Prose reference: [/developers](/developers). - Versioning and deprecation policy: [/developers/versioning](/developers/versioning). - Rate limits are published per response in `RateLimit-Limit`, `RateLimit-Remaining`, `RateLimit-Reset`, and `RateLimit-Policy`; a 429 adds `Retry-After`. - Errors always return `{ "error": { code, message, hint, documentation_url, request_id } }` as JSON. `code` is a closed set: `bad_request`, `not_found`, `rate_limited`, `upstream_unavailable`, `internal_error`. Any `/api/` path with no handler returns the same shape with a 404 status. - Versioning is in the path (`/api/v1`), echoed in `X-API-Version`. Deprecations are signalled with `Deprecation` (RFC 9745) and `Sunset` (RFC 8594) headers, with at least 180 days between the first `Sunset` header and removal. Nothing is deprecated today, so no endpoint sends those headers; the policy is published as structured JSON at [/api](/api) and as `x-deprecation-policy` in [/openapi.json](/openapi.json). - Permissions are declared at [/.well-known/oauth-protected-resource](/.well-known/oauth-protected-resource) (RFC 9728). The public surface needs the `public:read` scope, which every caller holds; `/api/v1/me` needs a scoped API key or an OAuth access token. - API keys are created self-serve at [/settings/api-keys](/settings/api-keys), shown once, stored only as a SHA-256 hash, and revocable. They are read-only, carry exactly the scopes chosen at creation, and can never mint another key. A 401 or 403 returns an RFC 6750 `WWW-Authenticate` challenge naming the required scope. - Agents should prefer OAuth over asking someone for a key. Conductor Deck runs an OAuth 2.1 authorization server declared at [/.well-known/oauth-authorization-server](/.well-known/oauth-authorization-server) (RFC 8414): register at `/api/oauth/register` (RFC 7591, no client secret issued), send the account holder to `/oauth/authorize`, exchange the code at `/api/oauth/token`. PKCE with S256 is required and `plain` is rejected; the only grantable scopes are `workflows:read` and `runs:read`; access tokens (`Authorization: Bearer cd_oat_…`) expire after 8 hours and no refresh tokens are issued. Revoke early at `/api/oauth/revoke` (RFC 7009). ## Remote MCP server - Endpoint: POST `/api/mcp` — Streamable HTTP transport, JSON-RPC 2.0, stateless, no credential. - Tools: `search_integrations`, `get_integration`, `list_workflow_templates`, `get_workflow_template`, `get_docs_article`. - Manifest listing both this server and the local Stream Deck server: [/.well-known/mcp](/.well-known/mcp). - The local server (workflow execution and hardware control) ships inside the Stream Deck plugin; bridge stdio clients with `npx @conductordeck/mcp-shim`. ## Markdown responses Public pages answer with `text/markdown` when a client sends `Accept: text/markdown`; responses carry `Vary: Accept`. Unknown URLs answer 404 with a markdown body listing recovery links. ## Public app routes - [Home](/): Product overview and primary entry point. - [About](/about): Company, how the product is built and operated, contact routes. - [Developers](/developers): Public API, MCP server, rate limits, errors, versioning. - [Pricing](/pricing): Plan comparison and upgrade path. - [MCP reference](/mcp): Tool catalog for AI clients. - [Download](/download): Plugin installer and setup path. - [Status](/status): Public uptime and health indicators. - [Changelog](/changelog): Release history. - [Status](/status): Live uptime status for Conductor Deck and its dependencies. - [Help](/help): Help center entry point. - [Help / Support policy](/help/support-policy): Refund and support policy. - [Integrations](/integrations): App directory with 3,000+ provider pages. - [Integration details](/integrations/[id]): SEO pages for individual providers. - [Templates](/templates): Public template catalog. - [Shared template](/templates/[slug]): Permalink for a shared workflow template. - [Docs index](/docs): Help center entry point. - [Terms](/terms): Terms of service. - [Privacy](/privacy): Privacy policy. - [Security](/security): Data handling, sub-processors, tenant isolation testing, and vulnerability disclosure policy. - [Change password](/.well-known/change-password): Standard well-known redirect to password reset. - [OpenAPI schema](/openapi.json): Schema for public read-only endpoints. ## Help articles - [Generate workflows with AI](/docs/generate-workflows-with-ai): Use natural language to create a workflow. - [Create your first workflow](/docs/create-your-first-workflow): First workflow guide. - [Connect an integration](/docs/connect-an-integration): Authorize a cloud app. - [Use variables in workflows](/docs/use-variables-in-workflows): Pass data between steps. - [Assign workflows to Stream Deck](/docs/assign-workflows-to-stream-deck): Map a workflow to a button. - [Manage runs and limits](/docs/manage-runs-and-limits): Monitor usage and failures. - [Support policy](/help/support-policy): Refund eligibility and support hours. ## MCP tools (for AI agents) | Tool | Description | |------|-------------| | health | Connection sanity check | | workflows | List and read workflows (read-only) | | run_workflow | Run, cancel, retry, and poll workflow status | | stream_deck | Hardware control: list devices, set buttons, alerts, clear | | templates | List, use, create, and share templates | ## Workflow node types | Node | Purpose | |------|---------| | Trigger | Event source: button press, webhook, cron, Pipedream event | | Action | Execute: HTTP request, Pipedream action, local command | | Condition | Branch: evaluate conditions, route to true/false paths | | Delay | Wait: pause execution for a configured duration | | Loop | Iterate: repeat child nodes by count or over a collection | | Parallel | Fan-out: run multiple branches concurrently | | Sub-workflow | Nest: call another workflow (up to 5 levels deep) | ## Discoverability files - [llms.txt](/llms.txt): Short navigation file for model consumers. - [llms-full.txt](/llms-full.txt): This file — expanded product reference. - [Structured navigation](/.well-known/llms.json): Machine-readable site navigation. - [Plugin manifest](/.well-known/ai-plugin.json): AI discoverability manifest. - [API catalog](/.well-known/api-catalog): RFC 9727 linkset naming every API this domain publishes. - [OpenAPI schema](/openapi.json): Typed schema for every public endpoint. - [Agent instructions](/.well-known/agent-instructions.md): When to use Conductor Deck and how an agent should call it. - [MCP manifest](/.well-known/mcp): Remote and local Model Context Protocol servers. - [Protected-resource metadata](/.well-known/oauth-protected-resource): RFC 9728 permission declaration. - [Authorization server metadata](/.well-known/oauth-authorization-server): RFC 8414 OAuth 2.1 server declaration. - [App sitemap](/sitemap.xml): Public route inventory for search discovery. - [Robots rules](/robots.txt): Crawl guidance for public and internal routes.