{
  "version": 1,
  "availability": "Requires an installed plugin offering the requested action; choose from its Quick Actions list",
  "docsUrl": "https://docs.hypermatic.com/emailify/automation/parameters",
  "inputLimits": {
    "quickActionsPasteMaxCharacters": 149,
    "parserOptionsMaxCharacters": 16384,
    "maxTargetIds": 100,
    "rejectedAmbiguousLength": 150
  },
  "optionDefinitionFormat": "Hypermatic parameter fields v1; not JSON Schema",
  "plugin": "emailify",
  "parameters": [
    "command",
    "parameters"
  ],
  "shortcuts": [
    {
      "command": "open",
      "name": "Open Emailify",
      "action": "open",
      "advanced": false,
      "parameters": [],
      "target": "none"
    },
    {
      "command": "create-email",
      "name": "Create New Email",
      "action": "create",
      "advanced": false,
      "parameters": [
        {
          "name": "Email name",
          "key": "name",
          "allowFreeform": true,
          "optional": false
        }
      ],
      "target": "none"
    },
    {
      "command": "export-emails",
      "name": "Export Selected Emails",
      "action": "export",
      "advanced": false,
      "parameters": [
        {
          "name": "Format",
          "key": "format",
          "allowFreeform": false,
          "optional": true
        }
      ],
      "target": "current selection"
    },
    {
      "command": "shortcut-block",
      "name": "Add Component to Selected Email",
      "action": "block",
      "advanced": false,
      "parameters": [
        {
          "name": "Component node ID",
          "key": "componentId",
          "allowFreeform": true,
          "optional": false
        }
      ],
      "target": "current selection"
    },
    {
      "command": "advanced-compose",
      "name": "Advanced: compose",
      "action": "compose",
      "advanced": true,
      "parameters": [
        {
          "name": "Advanced options (JSON)",
          "key": "options",
          "allowFreeform": true,
          "optional": false
        }
      ],
      "target": "none"
    },
    {
      "command": "advanced-export",
      "name": "Advanced: Export Selected Emails",
      "action": "export",
      "advanced": true,
      "parameters": [
        {
          "name": "Target (optional node IDs)",
          "key": "target",
          "allowFreeform": true,
          "optional": true
        },
        {
          "name": "Advanced options (JSON)",
          "key": "options",
          "allowFreeform": true,
          "optional": true
        }
      ],
      "target": "optional node IDs or current selection"
    },
    {
      "command": "advanced-create",
      "name": "Advanced: Create New Email",
      "action": "create",
      "advanced": true,
      "parameters": [
        {
          "name": "Advanced options (JSON)",
          "key": "options",
          "allowFreeform": true,
          "optional": false
        }
      ],
      "target": "none"
    },
    {
      "command": "advanced-block",
      "name": "Advanced: Add Component to Selected Email",
      "action": "block",
      "advanced": true,
      "parameters": [
        {
          "name": "Advanced options (JSON)",
          "key": "options",
          "allowFreeform": true,
          "optional": false
        },
        {
          "name": "Target (optional node IDs)",
          "key": "target",
          "allowFreeform": true,
          "optional": true
        }
      ],
      "target": "optional node IDs or current selection"
    }
  ],
  "actions": {
    "open": {
      "description": "Open the normal interactive plugin",
      "fields": {},
      "target": "none",
      "execution": "builtin"
    },
    "compose": {
      "description": "Create an email from existing Emailify library components",
      "target": "none",
      "execution": "worker",
      "fields": {
        "name": {
          "type": "string",
          "min": 1,
          "max": 120,
          "required": true,
          "description": "Name of the new item"
        },
        "subject": {
          "type": "string",
          "max": 500,
          "description": "Email subject"
        },
        "preheader": {
          "type": "string",
          "max": 500,
          "description": "Email preview text"
        },
        "components": {
          "type": "array",
          "min": 1,
          "max": 50,
          "required": true,
          "description": "Ordered components from the component library",
          "item": {
            "type": "object",
            "description": "Library component",
            "fields": {
              "componentId": {
                "type": "string",
                "required": true,
                "max": 100,
                "pattern": "^[0-9]+:[0-9]+$",
                "description": "Existing Emailify component ID in the Figma file"
              },
              "overrides": {
                "type": "object",
                "description": "Optional exact slot values",
                "fields": {
                  "text": {
                    "type": "array",
                    "max": 100,
                    "description": "Exact component library slot overrides",
                    "item": {
                      "type": "object",
                      "description": "Slot value",
                      "fields": {
                        "slotRef": {
                          "type": "string",
                          "required": true,
                          "max": 200,
                          "pattern": "^@path:(?:root|[0-9]+(?:\\.[0-9]+)*)$",
                          "description": "Exact @path reference from the component component library"
                        },
                        "value": {
                          "type": "string",
                          "required": true,
                          "max": 12000,
                          "description": "Replacement slot value"
                        }
                      }
                    }
                  },
                  "links": {
                    "type": "array",
                    "max": 100,
                    "description": "Exact component library slot overrides",
                    "item": {
                      "type": "object",
                      "description": "Slot value",
                      "fields": {
                        "slotRef": {
                          "type": "string",
                          "required": true,
                          "max": 200,
                          "pattern": "^@path:(?:root|[0-9]+(?:\\.[0-9]+)*)$",
                          "description": "Exact @path reference from the component component library"
                        },
                        "value": {
                          "type": "string",
                          "required": true,
                          "max": 12000,
                          "description": "Replacement slot value"
                        }
                      }
                    }
                  },
                  "altText": {
                    "type": "array",
                    "max": 100,
                    "description": "Exact component library slot overrides",
                    "item": {
                      "type": "object",
                      "description": "Slot value",
                      "fields": {
                        "slotRef": {
                          "type": "string",
                          "required": true,
                          "max": 200,
                          "pattern": "^@path:(?:root|[0-9]+(?:\\.[0-9]+)*)$",
                          "description": "Exact @path reference from the component component library"
                        },
                        "value": {
                          "type": "string",
                          "required": true,
                          "max": 12000,
                          "description": "Replacement slot value"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "export": {
      "description": "Export selected email frames without uploading",
      "fields": {
        "format": {
          "type": "string",
          "values": [
            "html",
            "mjml",
            "amp"
          ],
          "default": "html",
          "description": "Local email export format"
        },
        "minify": {
          "type": "boolean",
          "default": false,
          "description": "Minify exported code"
        },
        "mjmlVersion": {
          "type": "string",
          "values": [
            "4",
            "5"
          ],
          "default": "5",
          "description": "Existing MJML renderer version"
        }
      },
      "target": "many",
      "execution": "worker"
    },
    "create": {
      "description": "Create a named Emailify email frame",
      "fields": {
        "name": {
          "type": "string",
          "min": 1,
          "max": 120,
          "required": true,
          "description": "Name of the new item"
        }
      },
      "target": "none",
      "execution": "worker"
    },
    "block": {
      "description": "Append one existing component library component instance to an Emailify email frame",
      "fields": {
        "componentId": {
          "type": "string",
          "description": "Existing component ID in the Figma file",
          "required": true,
          "max": 100,
          "pattern": "^[0-9]+:[0-9]+$"
        }
      },
      "target": "one",
      "execution": "worker"
    }
  },
  "examples": {
    "compose": {
      "name": "Newsletter",
      "components": [
        {
          "componentId": "123:456"
        }
      ]
    },
    "create": {
      "name": "Newsletter"
    },
    "export": {
      "format": "html"
    },
    "block": {
      "componentId": "123:456"
    }
  },
  "limitsAndBehavior": "Compose accepts existing Emailify components. Replace example component IDs with the IDs of components in your Figma file. Optional slot references must identify existing editable slots. It preserves linked instances and uses the existing protected-slot checks and creation rollback. Image replacement, built-in preset composition, styling, localization and email-provider uploads remain interactive. The create command creates an empty Emailify frame. Block appends a linked Emailify component to one Emailify frame and returns its instance ID.",
  "completion": {
    "deadlineMs": 300000,
    "visibleNotifications": true,
    "nativeSaveDialog": true,
    "verifySavedArtifact": true
  },
  "invocation": "Figma Quick Actions or a verified host launcher; no REST/MCP launcher is provided",
  "results": "Normal Figma success/error notifications, document changes, native file downloads and published pages"
}
