/pinkfish-sidekick | Type: Embedded | PCID required: No
Tools
| Tool | Description |
|---|---|
workflow_create | Create a new workflow automation. Returns automationId and starterCode. Use only when no automationId exists in context (headless/API scenarios). If automationId already exists, use workflow_update directly instead. |
workflow_update | Update workflow code only. Use code-edit format showing ONLY the sections being changed. Include 2-3 lines of actual unchanged code BEFORE and AFTER your changes for context, then use // … existing code … as placeholder to skip larger unchanged sections. If you added or changed WORKFLOW_RESOURCES, call workflow_bind_resources next, then verify with workflow_read({ automationId, checkResources: true }) before the first workflow_run. |
workflow_bind_resources | Apply resource bindings for an existing workflow. Use this after workflow_update whenever you add, repair, or change WORKFLOW_RESOURCES bindings. Supported binding types include connection, collection, trigger, and agent. After binding, verify with workflow_read({ automationId, checkResources: true }) before the first workflow_run. Example: workflow_bind_resources({ automationId: ”…”, bindings: { salesConn: { id: “pcid_123”, resourceType: “connection” } } }). The bindings parameter is REQUIRED — you must provide at least one binding. |
workflow_edit | DEPRECATED — Use workflow_manual_edit instead. |
| FOR FRONTEND USE ONLY - Agents should use workflow_update instead. |
- Adding/removing nodes from the UI palette
- Rearranging edges via drag-drop
- Rebinding resources (changing connections)
workflow_manual_edit | FOR FRONTEND USE ONLY - Agents should use workflow_update instead.
LLM-powered workflow edits for frontend UI operations. Replaces workflow_edit with a more robust approach:
- Accepts the same structured operations (addNodes, removeNodes, updateNodes, addEdges, removeEdges)
- Uses an LLM to generate targeted code edits with FastApply merge
- Eliminates fragile code parsing/regeneration
workflow_read | Get workflow structure and optionally focused details for a specific node.
IMPORTANT: Only include parameters you actually need. Do NOT pass empty strings, empty arrays, or false for optional parameters — omit them entirely. For example, to check resources, send ONLY: { automationId: ”…”, checkResources: true }
Choose one primary read mode:
- Use only
automationIdfor a lightweight structure read - Add exactly one focused mode (
nodeId,nodeIds,search,addBetween, orincludeCode) when you need targeted details - Add
checkResources: trueonly when verifying bindings or resource health
- nodes: List of {id, name, type} for all nodes
- edges: Connection graph
- resources: List of declared resource names
- focus.node: Node details (see below for what’s returned based on node type)
- focus.neighbors: Before/after nodes with their schemas
- focus.availableData: All upstream node outputs (field names)
- focus.globals: Inputs, resources, context variables (@workflow., @user., etc.)
- code-block/mcp-tool nodes: Returns code, inputSchema, outputSchema
- Control flow nodes (router, merge, for-each, if-else, loop, while, parallel, try-catch, delay, race, sub-workflow): Returns full node properties (expression, routes, sources, body, etc.) - NO code since these are runtime primitives
- trigger nodes: Returns full node properties including outputSchema
- focusedNodes: Map of nodeId to {code, inputSchema, outputSchema} for each requested node
- matches: Array of {nodeId, line, match, context} for each matching line
- totalMatches: Total count
- insertionPoint: Context for where to add the node
- code: Full workflow code (WARNING: can be very large for complex workflows)
- resources: Detailed binding status for each resource |
|
workflow_run| Execute workflow and return results. Runs entire workflow by default. Use runUntilNode to stop after a specific node completes. Long-running workflows are automatically handled by the async execution system. | |workflow_pin| Pin or unpin node outputs to reuse across workflow runs. Pinned nodes skip execution and use stored output from a previous run. Use this to avoid re-running expensive operations (LLM calls, API requests) during development. | |workflow_run_status| Check the status of a workflow run and wait for completion. Automatically polls until the workflow completes or the async execution system handles long-running operations. Returns full results when complete. | |workflow_set_inputs| Set default/test input values for workflows. Values are used when running via workflow_run (dev/test runs) and optionally merged with trigger-provided values at runtime when useAsGlobals is true. Use this to define test data that matches your trigger type — for example, simulated email fields for email triggers, custom values for schedule triggers, or form field values for API/interface triggers. For input schemas (form field definitions), use the trigger tools (workflow_trigger_api or workflow_trigger_interface) instead. | |mcp_discover| Find MCP servers and tools for any task. Covers external integrations (gmail, slack, zendesk, salesforce) AND embedded capabilities (datastore, llm, ocr, web-application, summarization, translation, web scraping). Returns tool specifications along with IDs needed to use them when relevant. | |capabilities_discover| Discover available capabilities for a task. Returns lightweight recommendations for tools, agent skills, connections, and/or resources. Call capability_details to get full details for selected items. Use the “types” parameter to filter by capability type. | |capability_details| Get full details for selected capabilities. For tools: returns inputSchema (full JSON Schema with nested objects, arrays, enums, and required fields), outputSchema, isDynamic (true for dynamic MCP servers), and any matching agent skill content. For agent skills: returns full knowledge content. For connections: returns connection metadata. For resources: returns collection details. Use the “types” parameter to filter by capability type. For custom integrations, when capabilities_discover returns a tool name like “myintegration_c_request”, pass ONLY that exact tool name to capability_details (not the integration name or skill name). The response automatically includes all associated content including skill instructions. | |workflow_results| Deep inspection of workflow run output files. Use after workflow_run to verify output correctness or inspect data. Operations: “list” (artifact summaries with structure/preview/tips — use first to see which files exist, including HTML/UI artifacts), “search” (regex across files), “read” (extract data with path/sample/pagination/fields), “getUrl” (get signed URL for a specific file to download or pass to another tool). For full execution logs (pf.log.* output), use read with filename: “stdout.txt” — returns JSON with a log field. | |workflow_release_diff| Compare current draft code against the latest published release. Returns a unified diff showing what changed, per-step breakdown, and summary statistics (lines added/removed/changed). Use this to understand what code was running in production vs what has been modified since. | |workflow_trigger_schedule| Create, manage, and list schedule triggers that automatically start workflows on a cron schedule. Actions: create, get, update, delete, list, enable, disable. Pass resourceName to auto-bind on create. VERSION CONTROL: useDraft=true for development (default), useDraft=false + release=N for production. | |workflow_trigger_api| Create, manage, and list API (webhook) triggers that provide an HTTP endpoint to start workflows. Actions: create, get, update, delete, list, enable, disable. Pass resourceName to auto-bind on create. For API and Interface triggers, use inputSchema to define form fields (see workflow-trigger-schema skill for details). VERSION CONTROL: useDraft=true for development (default), useDraft=false + release=N for production. | |workflow_trigger_email| Create, manage, and list email triggers that start workflows when emails are received. Actions: create, get, update, delete, list, enable, disable. Pass resourceName to auto-bind on create. VERSION CONTROL: useDraft=true for development (default), useDraft=false + release=N for production. | |workflow_trigger_application| Create, manage, and list application triggers (GitHub, Shopify, etc.) that start workflows on app events. Actions: create, get, update, delete, list, enable, disable. Pass resourceName to auto-bind on create. VERSION CONTROL: useDraft=true for development (default), useDraft=false + release=N for production. | |workflow_trigger_interface| Create, manage, and list interface triggers (user-facing forms generated from a workflow’s inputSchema). Actions: create, get, update, delete, list, enable, disable. Pass resourceName to auto-bind on create. VERSION CONTROL: useDraft=true for development (default), useDraft=false + release=N for production. | |workflow_trigger_replace| Replace an existing trigger in one call: reads old trigger, creates replacement with carried-forward fields, then deletes old trigger. Use this for switch/replace operations to avoid dropping required properties. Pass resourceName to auto-bind the new trigger after creation. | |workflow_trigger_list_all| List triggers across all trigger types. When automationId is provided, returns only triggers for that workflow. When omitted, returns all triggers across all workflows. | |workflow_trigger_cleanup| Delete unused triggers for an automation. Unused = trigger exists but is not bound to any resource in WORKFLOW_RESOURCES. Call this after creating replacement triggers to clean up orphaned triggers. Returns list of deleted triggers, kept triggers, and failed triggers (with error details if any could not be deleted). | |workflow_agents| Create, read, update, list, and invoke agents for use in workflows. Agents can be bound to workflows via workflow_bind_resources and called via pf.agents.get() and pf.agents.call(). ACTIONS: create (new agent), read (get details), update (modify), list (all agents), invoke (call agent). FOR CREATE/UPDATE WITH SERVERS: Call mcp_discover first to see available MCP servers and tools. | |workflow_invoke| Invoke/call/execute another workflow (sub-workflow) using its webhook trigger URL. Use this when a workflow needs to call or trigger another workflow. Automatically executes async and polls for results (up to 14 minutes). Get the webhookEndpoint URL from the trigger sub-agent or workflow_trigger_* tools. | |workflow_list| List all workflows accessible to the user. Returns workflows that have API triggers configured, including their automation ID, name, and trigger details. Use this to discover existing workflows that can be invoked as sub-workflows. |
workflow_create
Create a new workflow automation. Returns automationId and starterCode. Use only when no automationId exists in context (headless/API scenarios). If automationId already exists, use workflow_update directly instead. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | No | — | If provided, initializes this existing automation with starter code. Usually omitted to create a new automation. |
name | string | Yes | — | Display name for the workflow (e.g., “Email Processor”, “Data Sync”). Required. |
description | string | No | — | Brief description of what the workflow does. |
workflow_update
Update workflow code only. Use code-edit format showing ONLY the sections being changed. Include 2-3 lines of actual unchanged code BEFORE and AFTER your changes for context, then use // … existing code … as placeholder to skip larger unchanged sections. If you added or changed WORKFLOW_RESOURCES, call workflow_bind_resources next, then verify with workflow_read({ automationId, checkResources: true }) before the first workflow_run. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
spa | any | Yes | — | |
_def | any | Yes | — | |
parse | any | Yes | — | |
safeParse | any | Yes | — | |
parseAsync | any | Yes | — | |
safeParseAsync | any | Yes | — | |
refine | any | Yes | — | |
refinement | any | Yes | — | |
superRefine | any | Yes | — | |
optional | any | Yes | — | |
nullable | any | Yes | — | |
nullish | any | Yes | — | |
array | any | Yes | — | |
promise | any | Yes | — | |
or | any | Yes | — | |
and | any | Yes | — | |
transform | any | Yes | — | |
brand | any | Yes | — | |
default | any | Yes | — | |
catch | any | Yes | — | |
describe | any | Yes | — | |
pipe | any | Yes | — | |
readonly | any | Yes | — | |
isNullable | any | Yes | — | |
isOptional | any | Yes | — | |
~standard | any | Yes | — | |
_cached | any | Yes | — | |
nonstrict | any | Yes | — | |
augment | any | Yes | — |
workflow_bind_resources
Apply resource bindings for an existing workflow. Use this after workflow_update whenever you add, repair, or change WORKFLOW_RESOURCES bindings. Supported binding types include connection, collection, trigger, and agent. After binding, verify with workflow_read({ automationId, checkResources: true }) before the first workflow_run. Example: workflow_bind_resources({ automationId: ”…”, bindings: { salesConn: { id: “pcid_123”, resourceType: “connection” } } }). The bindings parameter is REQUIRED — you must provide at least one binding. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID |
bindings | any | Yes | — | Resource bindings: map logical names to { id, resourceType }. Supported binding types include connection, collection, trigger, and agent. Example: { “mySlack”: { “id”: “conn-123”, “resourceType”: “connection” }, “apiEntry”: { “id”: “trigger-789”, “resourceType”: “trigger” }, “analyst”: { “id”: “agent-456”, “resourceType”: “agent” } } |
workflow_edit
DEPRECATED — Use workflow_manual_edit instead. FOR FRONTEND USE ONLY - Agents should use workflow_update instead. Legacy surgical workflow edits using parse→regenerate. Replaced by workflow_manual_edit which uses LLM+FastApply for more robust editing. Surgical workflow edits for frontend UI operations:- Adding/removing nodes from the UI palette
- Rearranging edges via drag-drop
- Rebinding resources (changing connections)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID to edit |
expectedVersion | number | No | — | Expected automation version (from last read). If provided, fails if version changed. |
addNodes | any | No | — | Nodes to add |
removeNodes | string[] | No | — | Node IDs to remove (also removes edges and functions) |
updateNodes | object[] | No | — | Nodes to update |
addEdges | object[] | No | — | Edges to add |
removeEdges | object[] | No | — | Edges to remove |
updateFunctions | object[] | No | — | Node functions to update |
updateResources | any | No | — | Resources to update or rebind |
workflow_manual_edit
FOR FRONTEND USE ONLY - Agents should use workflow_update instead. LLM-powered workflow edits for frontend UI operations. Replaces workflow_edit with a more robust approach:- Accepts the same structured operations (addNodes, removeNodes, updateNodes, addEdges, removeEdges)
- Uses an LLM to generate targeted code edits with FastApply merge
- Eliminates fragile code parsing/regeneration
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID to edit |
expectedVersion | number | No | — | Expected automation version (from last read). If provided, fails if version changed. |
addNodes | any | No | — | Nodes to add |
removeNodes | string[] | No | — | Node IDs to remove (also removes edges and functions) |
updateNodes | object[] | No | — | Nodes to update |
addEdges | object[] | No | — | Edges to add |
removeEdges | object[] | No | — | Edges to remove |
updateFunctions | object[] | No | — | Node functions to update |
updateResources | any | No | — | Resources to update or rebind |
workflow_read
Get workflow structure and optionally focused details for a specific node. IMPORTANT: Only include parameters you actually need. Do NOT pass empty strings, empty arrays, or false for optional parameters — omit them entirely. For example, to check resources, send ONLY: { automationId: ”…”, checkResources: true } Choose one primary read mode:- Use only
automationIdfor a lightweight structure read - Add exactly one focused mode (
nodeId,nodeIds,search,addBetween, orincludeCode) when you need targeted details - Add
checkResources: trueonly when verifying bindings or resource health
- nodes: List of {id, name, type} for all nodes
- edges: Connection graph
- resources: List of declared resource names
- focus.node: Node details (see below for what’s returned based on node type)
- focus.neighbors: Before/after nodes with their schemas
- focus.availableData: All upstream node outputs (field names)
- focus.globals: Inputs, resources, context variables (@workflow., @user., etc.)
- code-block/mcp-tool nodes: Returns code, inputSchema, outputSchema
- Control flow nodes (router, merge, for-each, if-else, loop, while, parallel, try-catch, delay, race, sub-workflow): Returns full node properties (expression, routes, sources, body, etc.) - NO code since these are runtime primitives
- trigger nodes: Returns full node properties including outputSchema
- focusedNodes: Map of nodeId to {code, inputSchema, outputSchema} for each requested node
- matches: Array of {nodeId, line, match, context} for each matching line
- totalMatches: Total count
- insertionPoint: Context for where to add the node
- code: Full workflow code (WARNING: can be very large for complex workflows)
- resources: Detailed binding status for each resource
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID to read |
nodeId | string | No | — | Focused single-node read. Prefer this when inspecting one node. Omit nodeIds/search/includeCode unless you specifically need a different mode. For code-block/mcp-tool: returns code. For control flow nodes (router, merge, for-each, etc.): returns all node properties (no code). |
nodeIds | string[] | No | — | Focused multi-node read. Use this instead of includeCode when you only need a few nodes. Omit nodeId/search/includeCode unless you intentionally want a different mode. Returns focusedNodes map with {code, inputSchema, outputSchema} per node. |
search | string | No | — | Regex pattern to search across the full workflow code. Use this instead of includeCode when you are looking for a specific pattern. Omit nodeId/nodeIds/includeCode unless you intentionally need another mode. Returns matching lines with node attribution and context. |
searchLimit | number | No | — | Maximum number of matches to return for search. Default: 50. Use a lower value for broad patterns. |
addBetween | object | No | — | Get insertion context between two nodes. OMIT THIS PARAMETER ENTIRELY if you are not inserting a node between two existing nodes. Do not pass empty strings or placeholder values — just leave addBetween out of your request. |
expandDataFrom | string[] | No | — | Get full schemas (not just field names) for specific upstream nodes |
includeCode | boolean | No | — | Include full workflow code in response. Use only when you truly need the entire file; prefer nodeId, nodeIds, or search for targeted reads. |
checkResources | boolean | No | — | Include detailed resource binding status. Combine with automationId alone for binding verification, or add it to another focused read when you explicitly need both. |
workflow_run
Execute workflow and return results. Runs entire workflow by default. Use runUntilNode to stop after a specific node completes. Long-running workflows are automatically handled by the async execution system. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID to run |
inputs | object | No | — | Runtime input values as key-value pairs (overrides default inputs set via workflow_set_inputs). |
runUntilNode | string | No | — | Stop execution after this node completes. Only nodes on the path from trigger to this node will execute. Use this to run part of a workflow without executing downstream nodes. |
nodeId | string | No | — | DEPRECATED: Use runUntilNode instead. Node ID to run in isolation for testing. |
maxWaitMs | number | No | — | [Testing only] Maximum internal polling time in milliseconds before returning. Default 14 minutes. Use a smaller value (e.g. 2000) in tests to quickly trigger RUNNING response. |
workflow_pin
Pin or unpin node outputs to reuse across workflow runs. Pinned nodes skip execution and use stored output from a previous run. Use this to avoid re-running expensive operations (LLM calls, API requests) during development. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID |
pins | object | Yes | — | Map of nodeId to runId (to pin) or null (to unpin). Example: { “node_A”: “run-123”, “node_B”: null } pins node_A to run-123 outputs and unpins node_B. |
workflow_run_status
Check the status of a workflow run and wait for completion. Automatically polls until the workflow completes or the async execution system handles long-running operations. Returns full results when complete. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID |
runId | string | Yes | — | Run ID from a previous workflow execution |
maxWaitMs | number | No | — | [Testing only] Maximum internal polling time in milliseconds before returning. Default 14 minutes. Use a smaller value (e.g. 2000) in tests to quickly trigger RUNNING response. |
workflow_set_inputs
Set default/test input values for workflows. Values are used when running via workflow_run (dev/test runs) and optionally merged with trigger-provided values at runtime when useAsGlobals is true. Use this to define test data that matches your trigger type — for example, simulated email fields for email triggers, custom values for schedule triggers, or form field values for API/interface triggers. For input schemas (form field definitions), use the trigger tools (workflow_trigger_api or workflow_trigger_interface) instead. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID to set inputs for |
inputs | string | Yes | — | Input values as object or JSON string. Keys must match the input names used in @workflow.keyName references. Set values that match your trigger type for realistic test runs: |
| • Email triggers: { from: “sender@example.com”, subject: “Test Subject”, body: “Email body text”, htmlBody: “<p>HTML body</p>”, attachments: [] } | ||||
| • Schedule triggers: any custom key-value pairs the workflow expects (e.g., { reportDate: “2026-01-15”, region: “US” }) | ||||
| • API/Interface triggers: values matching the form fields defined in the trigger inputSchema (e.g., { full_name: “Jane Doe”, department: “engineering” }) |
mcp_discover
Find MCP servers and tools for any task. Covers external integrations (gmail, slack, zendesk, salesforce) AND embedded capabilities (datastore, llm, ocr, web-application, summarization, translation, web scraping). Returns tool specifications along with IDs needed to use them when relevant. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
userRequest | string | Yes | — | Natural language description of the task (e.g., “Get Gmail emails”, “Summarize text”, “Create HTML app”, “Extract text from PDF”). |
includeResources | boolean | No | true | Include user connections (with PCIDs for auth) and collections (datastores, vaults). Default true. |
refreshCache | boolean | No | false | Bypass cache to fetch fresh data. Default false. Set true only if user just added a new connection or collection. |
capabilities_discover
Discover available capabilities for a task. Returns lightweight recommendations for tools, agent skills, connections, and/or resources. Call capability_details to get full details for selected items. Use the “types” parameter to filter by capability type. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
request | string | Yes | — | Natural language description of the task (e.g., “process vendor invoices”, “create HTML dashboard”, “send email with attachments”). |
types | string[] | No | — | Filter results to specific capability types. If omitted, returns all types. Examples: [“connection”] for connections only, [“resource”] for resources only, [“tool”, “agentSkill”] for tools and skills only. |
context | string | No | — | Skill context filter. Use “workflow-creation” if you are the Agent Mode Workflow Builder (building or editing workflows). Use “agent-execution” for all other agents executing tasks. If omitted, returns all skills. |
capability_details
Get full details for selected capabilities. For tools: returns inputSchema (full JSON Schema with nested objects, arrays, enums, and required fields), outputSchema, isDynamic (true for dynamic MCP servers), and any matching agent skill content. For agent skills: returns full knowledge content. For connections: returns connection metadata. For resources: returns collection details. Use the “types” parameter to filter by capability type. For custom integrations, when capabilities_discover returns a tool name like “myintegration_c_request”, pass ONLY that exact tool name to capability_details (not the integration name or skill name). The response automatically includes all associated content including skill instructions. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | string[] | Yes | — | Names/IDs of capabilities to get details for (e.g., [“google-drive”, “invoice-processing”, “html-creation”, “My Google Drive Connection”, “sales”]). Use exact tool names returned from capabilities_discover. |
types | string[] | No | — | Filter results to specific capability types. If omitted, searches all types. Examples: [“connection”] for connections only, [“resource”] for resources only. |
workflow_results
Deep inspection of workflow run output files. Use after workflow_run to verify output correctness or inspect data. Operations: “list” (artifact summaries with structure/preview/tips — use first to see which files exist, including HTML/UI artifacts), “search” (regex across files), “read” (extract data with path/sample/pagination/fields), “getUrl” (get signed URL for a specific file to download or pass to another tool). For full execution logs (pf.log.* output), use read with filename: “stdout.txt” — returns JSON with a log field. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID |
runId | string | No | — | Run ID to inspect. If not provided, uses the last dev run (__lastDevRunId from automation inputs). |
operation | string | Yes | — | Operation type: “list” (get artifact summaries with structure/preview/tips — best first step after workflow_run, especially to spot HTML/UI outputs), “search” (regex search across files), “read” (read actual data), “getUrl” (get signed URL for a file) |
pattern | string | No | — | [search] Regex pattern to search for across all output files. Case-insensitive. |
limit | number | No | 10 | [search] Maximum number of matches to return. Default: 10. |
filename | string | No | — | [read/getUrl] Name of the output file to read or get URL for. Examples: “node_2_output.json”, “stdout.txt” (full execution logs — JSON with log field), “dashboard.html” (fetch the rendered HTML artifact directly). |
path | string | No | — | [read] Path to extract specific data. Supports dot notation (data.users.0.name) and bracket notation (data.users[0].name). Examples: “tickets.0” (first ticket), “data.users[1]” (second user), “users[0].email”. Does not support wildcards or negative indices. |
sample | number | No | — | [read] Return only first N items from array. Useful for inspecting structure without loading all data. |
offset | number | No | — | [read] Pagination offset - skip first N items. Combine with limitRead for pagination. |
limitRead | number | No | — | [read] Pagination limit - return N items after offset. |
fields | string[] | No | — | [read] Field projection - return only specified fields from objects. Example: [“id”, “subject”] returns only those fields. |
workflow_release_diff
Compare current draft code against the latest published release. Returns a unified diff showing what changed, per-step breakdown, and summary statistics (lines added/removed/changed). Use this to understand what code was running in production vs what has been modified since. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID to compare draft vs published code |
workflow_trigger_schedule
Create, manage, and list schedule triggers that automatically start workflows on a cron schedule. Actions: create, get, update, delete, list, enable, disable. Pass resourceName to auto-bind on create. VERSION CONTROL: useDraft=true for development (default), useDraft=false + release=N for production. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | Yes | — | Operation to perform. update requires version (get via read first). |
automationId | string | No | — | Workflow ID (same as automationId). Required for all actions except list without filter. |
id | string | No | — | Trigger ID. Required for: read, update, delete, enable, disable. |
version | number | No | — | Current trigger version. Required for update/delete. Get current version via read first. |
name | string | No | — | Display name for the trigger. Required for create. |
useDraft | boolean | No | true | If true, run the current draft workflow code (development mode). If false, run a specific published release (production mode) - must also set release parameter. |
release | number | No | 0 | Release version number (1, 2, 3…). Only used when useDraft=false. Must specify an exact release number that has been published - there is no “latest” option. |
queueId | string | No | — | Queue ID specifying which queue will process runs from this trigger. Queues control concurrency and sequential execution. |
resourceName | string | No | — | Optional workflow resource name to auto-bind on create (e.g., “dailySchedule”). |
cron | string | No | — | AWS EventBridge cron expression: 6 fields required “minute hour day-of-month month day-of-week year”. Required for create. The 6th field (year) can be * for every year. Ask the user for their schedule in natural language, then convert to cron. Examples: “0 9 * * ? *” = 9AM daily, “0 */2 * * ? *” = every 2 hours, “0 9 ? * MON-FRI *” = weekdays at 9AM. |
tz | string | No | — | IANA timezone. Required for create. Ask the user for their timezone, then convert to IANA format. Examples: “America/Los_Angeles”, “America/New_York”, “UTC”. |
inputs | string | No | — | JSON string of inputs to pass to the workflow when the schedule fires. These are the runtime values available to the workflow as @input.<field>. |
workflow_trigger_api
Create, manage, and list API (webhook) triggers that provide an HTTP endpoint to start workflows. Actions: create, get, update, delete, list, enable, disable. Pass resourceName to auto-bind on create. For API and Interface triggers, use inputSchema to define form fields (see workflow-trigger-schema skill for details). VERSION CONTROL: useDraft=true for development (default), useDraft=false + release=N for production. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | Yes | — | Operation to perform. update requires version (get via read first). |
automationId | string | No | — | Workflow ID (same as automationId). Required for all actions except list without filter. |
id | string | No | — | Trigger ID. Required for: read, update, delete, enable, disable. |
version | number | No | — | Current trigger version. Required for update/delete. Get current version via read first. |
name | string | No | — | Display name for the trigger. Required for create. |
useDraft | boolean | No | true | If true, run the current draft workflow code (development mode). If false, run a specific published release (production mode) - must also set release parameter. |
release | number | No | 0 | Release version number (1, 2, 3…). Only used when useDraft=false. Must specify an exact release number that has been published - there is no “latest” option. |
queueId | string | No | — | Queue ID specifying which queue will process runs from this trigger. Queues control concurrency and sequential execution. |
resourceName | string | No | — | Optional workflow resource name to auto-bind on create (e.g., “apiEndpoint”). |
apiKeyId | string | No | — | API key ID for authentication. If omitted or set to “new”, a new API key is auto-created with name “API key for {triggerName}, {automationId}”. |
designatedOutput | object | No | — | Specifies which output file to return when the API is called with wait=true. Object with stepIndex (number) and fileName (string). Example: {stepIndex: 1, fileName: “output.json”}. If omitted, all outputs are returned. |
inputSchema | any | No | — | JSON object documenting the inputs this API trigger expects. Informational only — callers (agents, systems) read this to know what values to send. Each key is a field name mapping to an object with type, required, label, placeholder, and other options. Supported types: string, number, boolean, enum, array, object, csv, date, datetime, email, url, file. This is NOT JSON Schema — do not use “type”: “object” or “properties” at the top level. See the workflow-trigger-schema skill for full format reference. |
workflow_trigger_email
Create, manage, and list email triggers that start workflows when emails are received. Actions: create, get, update, delete, list, enable, disable. Pass resourceName to auto-bind on create. VERSION CONTROL: useDraft=true for development (default), useDraft=false + release=N for production. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | Yes | — | Operation to perform. update requires version (get via read first). |
automationId | string | No | — | Workflow ID (same as automationId). Required for all actions except list without filter. |
id | string | No | — | Trigger ID. Required for: read, update, delete, enable, disable. |
version | number | No | — | Current trigger version. Required for update/delete. Get current version via read first. |
name | string | No | — | Display name for the trigger. Required for create. |
useDraft | boolean | No | true | If true, run the current draft workflow code (development mode). If false, run a specific published release (production mode) - must also set release parameter. |
release | number | No | 0 | Release version number (1, 2, 3…). Only used when useDraft=false. Must specify an exact release number that has been published - there is no “latest” option. |
queueId | string | No | — | Queue ID specifying which queue will process runs from this trigger. Queues control concurrency and sequential execution. |
resourceName | string | No | — | Optional workflow resource name to auto-bind on create (e.g., “emailTrigger”). |
approvedSenders | string[] | No | — | List of approved sender email addresses. Emails from addresses not in this list (or approvedDomains) are rejected. |
approvedDomains | string[] | No | — | List of approved sender domains (e.g., “company.com”). Emails from domains not in this list (or approvedSenders) are rejected. |
workflow_trigger_application
Create, manage, and list application triggers (GitHub, Shopify, etc.) that start workflows on app events. Actions: create, get, update, delete, list, enable, disable. Pass resourceName to auto-bind on create. VERSION CONTROL: useDraft=true for development (default), useDraft=false + release=N for production. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | Yes | — | Operation to perform. update requires version (get via read first). |
automationId | string | No | — | Workflow ID (same as automationId). Required for all actions except list without filter. |
id | string | No | — | Trigger ID. Required for: read, update, delete, enable, disable. |
version | number | No | — | Current trigger version. Required for update/delete. Get current version via read first. |
name | string | No | — | Display name for the trigger. Required for create. |
useDraft | boolean | No | true | If true, run the current draft workflow code (development mode). If false, run a specific published release (production mode) - must also set release parameter. |
release | number | No | 0 | Release version number (1, 2, 3…). Only used when useDraft=false. Must specify an exact release number that has been published - there is no “latest” option. |
queueId | string | No | — | Queue ID specifying which queue will process runs from this trigger. Queues control concurrency and sequential execution. |
resourceName | string | No | — | Optional workflow resource name to auto-bind on create (e.g., “githubWebhook”). |
appService | string | No | — | MCP service key (e.g., “github”, “shopify”, “stripe”). Required for create. |
appConnectionId | string | No | — | Connection ID (PCID) for the service. Required for create. |
appTriggerType | string | No | — | Specific trigger type (e.g., “github_repository_events”, “shopify_orders”). Required for create. |
appTriggerMechanism | string | No | — | How the trigger receives events: “webhook” (real-time) or “polling” (periodic check). |
appConfig | object | No | — | App-specific configuration object. Example for GitHub: { owner: “org”, repo: “repo-name”, events: [“push”, “pull_request”] }. |
pollInterval | number | No | — | Poll interval in seconds for polling triggers. Valid values: 60, 300, 900, 1800, 3600. |
pollBatchMode | boolean | No | — | If true, batch all events into one run. If false, one run per event. |
webhookSecret | string | No | — | Secret for webhook signature verification (webhook mechanism only). |
workflow_trigger_interface
Create, manage, and list interface triggers (user-facing forms generated from a workflow’s inputSchema). Actions: create, get, update, delete, list, enable, disable. Pass resourceName to auto-bind on create. VERSION CONTROL: useDraft=true for development (default), useDraft=false + release=N for production. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | Yes | — | Operation to perform. update requires version (get via read first). |
automationId | string | No | — | Workflow ID (same as automationId). Required for all actions except list without filter. |
id | string | No | — | Trigger ID. Required for: read, update, delete, enable, disable. |
version | number | No | — | Current trigger version. Required for update/delete. Get current version via read first. |
name | string | No | — | Display name for the trigger. Required for create. |
useDraft | boolean | No | true | If true, run the current draft workflow code (development mode). If false, run a specific published release (production mode) - must also set release parameter. |
release | number | No | 0 | Release version number (1, 2, 3…). Only used when useDraft=false. Must specify an exact release number that has been published - there is no “latest” option. |
queueId | string | No | — | Queue ID specifying which queue will process runs from this trigger. Queues control concurrency and sequential execution. |
resourceName | string | No | — | Optional workflow resource name to auto-bind on create (e.g., “intakeForm”). |
apiKeyId | string | No | — | API key ID for authentication. If omitted or set to “new”, a new API key is auto-created with name “API key for {triggerName}, {automationId}”. |
designatedOutput | object | No | — | Specifies which node output to display to the user. Used by “form-results” and “results-viewer” subtypes. Can be set at creation or added later via update once the workflow nodes exist. Object with stepIndex (number) and fileName (string). Example: {stepIndex: 1, fileName: “output.json”}. |
inputSchema | any | No | — | JSON object defining the form fields rendered to the user. Required for “form-confirmation” and “form-results” subtypes. Each key is a field name mapping to an object with type, required, label, placeholder, and other options. Supported types: string, number, boolean, enum, array, object, csv, date, datetime, email, url, file. This is NOT JSON Schema — do not use “type”: “object” or “properties” at the top level. See the workflow-trigger-schema skill for full format reference. |
subType | string | No | — | Interface template subtype. Required for create, optional for update/read/list/delete flows. Values: “form-confirmation” (user fills form, sees thank-you page), “form-results” (user fills form, sees output from designatedOutput node — designatedOutput can be set later via update), “results-viewer” (no form — displays designatedOutput node results directly — designatedOutput can be set later via update). |
workflow_trigger_replace
Replace an existing trigger in one call: reads old trigger, creates replacement with carried-forward fields, then deletes old trigger. Use this for switch/replace operations to avoid dropping required properties. Pass resourceName to auto-bind the new trigger after creation. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Workflow ID (automationId). Required. |
oldTriggerId | string | Yes | — | Trigger ID to replace. The handler reads this trigger first to preserve fields and version-lock deletion. |
newType | string | No | — | Optional type for the replacement trigger. If omitted, keeps the old trigger type. |
name | string | No | — | Display name for the new trigger. If omitted, carries forward the old name. |
useDraft | boolean | No | — | If true, run draft workflow code. If omitted, carries forward old trigger setting. |
release | number | No | — | Release version used when useDraft=false. If omitted, carries forward old trigger setting. |
queueId | string | No | — | Optional queue ID. If omitted, carries forward old queueId when present. |
resourceName | string | No | — | Optional workflow resource name to auto-bind the NEW trigger on replacement. |
cron | string | No | — | Schedule trigger cron expression. Required when replacing to schedule and no prior schedule cron exists. |
tz | string | No | — | Schedule trigger timezone. Required when replacing to schedule and no prior schedule timezone exists. |
inputs | string | No | — | Optional JSON string runtime inputs for schedule triggers. If omitted, carries forward old value when present. |
apiKeyId | string | No | — | API key for api/interface triggers. If omitted, carries forward old value when present. |
designatedOutput | object | No | — | Designated output for result-based triggers. If omitted, carries forward old value when present. |
inputSchema | any | No | — | Form/input schema. Include when creating or editing fields; otherwise old schema is carried forward when present. |
subType | string | No | — | Interface subtype. Required when replacing to interface and it cannot be carried forward from the old trigger. |
approvedSenders | string[] | No | — | Email trigger approved sender list. If omitted, carries forward old value when present. |
approvedDomains | string[] | No | — | Email trigger approved domains list. If omitted, carries forward old value when present. |
appService | string | No | — | Application trigger MCP service key (e.g., github). Required when replacing to application and no prior value exists. |
appConnectionId | string | No | — | Application trigger connection ID. Required when replacing to application and no prior value exists. |
appTriggerType | string | No | — | Application trigger type. Required when replacing to application and no prior value exists. |
appTriggerMechanism | string | No | — | Application trigger mechanism. If omitted, carries forward old value when present. |
appConfig | object | No | — | Application trigger configuration object. If omitted, carries forward old value when present. |
pollInterval | number | No | — | Application polling interval in seconds. If omitted, carries forward old value when present. |
pollBatchMode | boolean | No | — | Application polling batch mode. If omitted, carries forward old value when present. |
webhookSecret | string | No | — | Application webhook secret. If omitted, carries forward old value when present. |
workflow_trigger_list_all
List triggers across all trigger types. When automationId is provided, returns only triggers for that workflow. When omitted, returns all triggers across all workflows. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | No | — | Optional workflow ID to scope results. Omit to list all triggers globally. |
workflow_trigger_cleanup
Delete unused triggers for an automation. Unused = trigger exists but is not bound to any resource in WORKFLOW_RESOURCES. Call this after creating replacement triggers to clean up orphaned triggers. Returns list of deleted triggers, kept triggers, and failed triggers (with error details if any could not be deleted). Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
automationId | string | Yes | — | Automation ID to clean up triggers for |
workflow_agents
Create, read, update, list, and invoke agents for use in workflows. Agents can be bound to workflows via workflow_bind_resources and called via pf.agents.get() and pf.agents.call(). ACTIONS: create (new agent), read (get details), update (modify), list (all agents), invoke (call agent). FOR CREATE/UPDATE WITH SERVERS: Call mcp_discover first to see available MCP servers and tools. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | Yes | — | Operation: create (new agent), read (get by ID), update (modify), list (all agents), invoke (call agent) |
agentId | string | No | — | [read, update, invoke] ID of the agent (e.g. “ua_abc123”). Required for read, update, and invoke actions. |
name | string | No | — | [create, update] Display name for the agent. Required for create. |
description | string | No | — | [create, update] Description of what the agent does. |
instructions | string | No | — | [create, update] System instructions/prompt that guides agent behavior. Required for create. |
outputSchema | string | No | — | [create, update] Optional JSON schema for structured agent output. |
servers | object[] | No | — | [create, update] MCP servers and tools for the agent. IMPORTANT: Call mcp_discover first to get valid server/tool names. For update, replaces existing servers completely. |
workflows | object[] | No | — | [create, update] Workflows the agent can trigger. |
message | string | No | — | [invoke] The message or task to send to the agent. Required for invoke action. |
chatId | string | No | — | [invoke] Optional chat ID to continue a previous conversation. If provided, the conversation history will be loaded. If omitted, a new conversation will be started. |
mode | string | No | — | [invoke] Optional agent mode for routing. “action_agent” routes to GPT-based agent (default), “claude_agent” routes to Claude-based agent. |
messagesInResponse | boolean | No | — | [invoke] If true, includes the full message history in the response. Useful for debugging or reviewing conversation context. |
workflow_invoke
Invoke/call/execute another workflow (sub-workflow) using its webhook trigger URL. Use this when a workflow needs to call or trigger another workflow. Automatically executes async and polls for results (up to 14 minutes). Get the webhookEndpoint URL from the trigger sub-agent or workflow_trigger_* tools. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Yes | — | The workflow trigger URL (webhookEndpoint). Get this from the trigger sub-agent or workflow_trigger_* tools when creating/listing triggers for the target workflow. |
payload | object | No | — | Input parameters for the workflow. Should match the workflow’s expected input schema. |
workflow_list
List all workflows accessible to the user. Returns workflows that have API triggers configured, including their automation ID, name, and trigger details. Use this to discover existing workflows that can be invoked as sub-workflows. Parameters:| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
filter | string | No | "with_triggers" | Filter workflows: “all” returns all automations, “with_triggers” (default) returns only those with API triggers, “without_triggers” returns those without triggers. |

