{
  "service": "plunk",
  "displayName": "Plunk",
  "categories": [
    "Communication",
    "Marketing"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "sk_...",
      "description": "Plunk API key used with the Authorization Bearer header. Find it in your Plunk project under Settings > API Keys: https://docs.useplunk.com/guides/api-keys.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://www.useplunk.com",
  "actions": [
    {
      "id": "plunk.create_contact",
      "service": "plunk",
      "name": "create_contact",
      "description": "Create or update a Plunk contact by email.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The contact email address.",
            "format": "email"
          },
          "subscribed": {
            "type": "boolean",
            "description": "Whether the contact is subscribed."
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Custom contact data or template variables accepted by Plunk."
          }
        },
        "additionalProperties": false,
        "required": [
          "email"
        ],
        "description": "Input for creating or updating a Plunk contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Plunk contact ID."
              },
              "email": {
                "type": "string",
                "description": "The contact email address.",
                "format": "email"
              },
              "subscribed": {
                "type": "boolean",
                "description": "Whether the contact is subscribed."
              },
              "data": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "Custom contact data or template variables accepted by Plunk."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "type": "string",
                "description": "When the contact was created.",
                "format": "date-time"
              },
              "updatedAt": {
                "type": "string",
                "description": "When the contact was last updated.",
                "format": "date-time"
              },
              "_meta": {
                "type": "object",
                "properties": {
                  "isNew": {
                    "type": "boolean",
                    "description": "Whether Plunk created a new contact."
                  },
                  "isUpdate": {
                    "type": "boolean",
                    "description": "Whether Plunk updated an existing contact."
                  }
                },
                "additionalProperties": true,
                "description": "Metadata describing whether Plunk created or updated the contact."
              }
            },
            "additionalProperties": true,
            "description": "A Plunk contact resource with upsert metadata."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw object returned by the official Plunk API."
          }
        },
        "additionalProperties": false,
        "description": "Contact returned by Plunk after the upsert."
      }
    },
    {
      "id": "plunk.delete_contact",
      "service": "plunk",
      "name": "delete_contact",
      "description": "Delete a Plunk contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "string",
            "minLength": 1,
            "description": "The Plunk contact ID."
          }
        },
        "additionalProperties": false,
        "description": "Input for deleting a Plunk contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean",
            "description": "Whether the contact deletion request completed successfully."
          }
        },
        "additionalProperties": false,
        "description": "Deletion result returned by the connector."
      }
    },
    {
      "id": "plunk.get_contact",
      "service": "plunk",
      "name": "get_contact",
      "description": "Get a single Plunk contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "string",
            "minLength": 1,
            "description": "The Plunk contact ID."
          }
        },
        "additionalProperties": false,
        "description": "Input for retrieving a Plunk contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Plunk contact ID."
              },
              "email": {
                "type": "string",
                "description": "The contact email address.",
                "format": "email"
              },
              "subscribed": {
                "type": "boolean",
                "description": "Whether the contact is subscribed."
              },
              "data": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "Custom contact data or template variables accepted by Plunk."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "type": "string",
                "description": "When the contact was created.",
                "format": "date-time"
              },
              "updatedAt": {
                "type": "string",
                "description": "When the contact was last updated.",
                "format": "date-time"
              }
            },
            "additionalProperties": true,
            "description": "A Plunk contact resource."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw object returned by the official Plunk API."
          }
        },
        "additionalProperties": false,
        "description": "Contact returned by Plunk."
      }
    },
    {
      "id": "plunk.list_contacts",
      "service": "plunk",
      "name": "list_contacts",
      "description": "List Plunk contacts with cursor pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of contacts to return."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "Pagination cursor returned by a previous list request."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Case-insensitive substring search on contact email."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Plunk contacts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Plunk contact ID."
                },
                "email": {
                  "type": "string",
                  "description": "The contact email address.",
                  "format": "email"
                },
                "subscribed": {
                  "type": "boolean",
                  "description": "Whether the contact is subscribed."
                },
                "data": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true,
                      "description": "Custom contact data or template variables accepted by Plunk."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "type": "string",
                  "description": "When the contact was created.",
                  "format": "date-time"
                },
                "updatedAt": {
                  "type": "string",
                  "description": "When the contact was last updated.",
                  "format": "date-time"
                }
              },
              "additionalProperties": true,
              "description": "A Plunk contact resource."
            },
            "description": "Contacts returned by Plunk."
          },
          "cursor": {
            "anyOf": [
              {
                "type": "string",
                "description": "Cursor for the next page."
              },
              {
                "type": "null"
              }
            ]
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether another page is available."
          },
          "total": {
            "type": "integer",
            "description": "Total count on the first page; later pages may return zero."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw object returned by the official Plunk API."
          }
        },
        "additionalProperties": false,
        "description": "A page of Plunk contacts."
      }
    },
    {
      "id": "plunk.send_email",
      "service": "plunk",
      "name": "send_email",
      "description": "Send a transactional email through Plunk.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "to": {
            "anyOf": [
              {
                "type": "string",
                "description": "A single recipient email address.",
                "format": "email"
              },
              {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "The email address.",
                    "format": "email"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The display name."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "email"
                ],
                "description": "An email address with an optional display name."
              },
              {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "A recipient email address.",
                      "format": "email"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "email": {
                          "type": "string",
                          "description": "The email address.",
                          "format": "email"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The display name."
                        }
                      },
                      "additionalProperties": false,
                      "required": [
                        "email"
                      ],
                      "description": "An email address with an optional display name."
                    }
                  ],
                  "description": "A Plunk recipient as an email string or object."
                },
                "description": "Multiple recipients processed by Plunk sequentially.",
                "minItems": 1
              }
            ],
            "description": "One or more Plunk recipients."
          },
          "subject": {
            "type": "string",
            "minLength": 1,
            "maxLength": 998,
            "description": "The email subject. Required when template is omitted."
          },
          "body": {
            "type": "string",
            "minLength": 1,
            "description": "The HTML email body. Required when template is omitted."
          },
          "template": {
            "type": "string",
            "minLength": 1,
            "description": "The Plunk template ID to use for this email."
          },
          "from": {
            "anyOf": [
              {
                "type": "string",
                "description": "A sender email address from a verified domain.",
                "format": "email"
              },
              {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "The email address.",
                    "format": "email"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The display name."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "email"
                ],
                "description": "An email address with an optional display name."
              }
            ],
            "description": "A Plunk sender as an email string or object."
          },
          "subscribed": {
            "type": "boolean",
            "description": "Subscription state to apply to the recipient contact."
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Custom contact data or template variables accepted by Plunk."
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Header value."
            },
            "description": "Custom email headers keyed by header name."
          },
          "reply": {
            "type": "string",
            "description": "The reply-to email address.",
            "format": "email"
          }
        },
        "additionalProperties": false,
        "required": [
          "to"
        ],
        "description": "Input for sending a Plunk transactional email."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "emails": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "contact": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "The Plunk contact ID."
                    },
                    "email": {
                      "type": "string",
                      "description": "The recipient email address.",
                      "format": "email"
                    }
                  },
                  "additionalProperties": false,
                  "description": "The recipient contact linked to the queued email."
                },
                "email": {
                  "type": "string",
                  "description": "The Plunk email record ID."
                }
              },
              "additionalProperties": false,
              "description": "One email queued by Plunk."
            },
            "description": "Email records queued by Plunk."
          },
          "timestamp": {
            "type": "string",
            "description": "Timestamp returned by Plunk for the queued send.",
            "format": "date-time"
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw object returned by the official Plunk API."
          }
        },
        "additionalProperties": false,
        "description": "Result returned after Plunk queues the email."
      }
    },
    {
      "id": "plunk.track_event",
      "service": "plunk",
      "name": "track_event",
      "description": "Track an event for a Plunk contact.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The contact email address. Plunk creates the contact if needed.",
            "format": "email"
          },
          "event": {
            "type": "string",
            "minLength": 1,
            "description": "The event name to track."
          },
          "subscribed": {
            "type": "boolean",
            "description": "Subscription state to apply to the contact."
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Custom contact data or template variables accepted by Plunk."
          }
        },
        "additionalProperties": false,
        "required": [
          "email",
          "event"
        ],
        "description": "Input for tracking a Plunk event."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "string",
            "description": "The Plunk contact ID."
          },
          "event": {
            "type": "string",
            "description": "The Plunk event ID."
          },
          "timestamp": {
            "type": "string",
            "description": "Timestamp returned by Plunk for the tracked event.",
            "format": "date-time"
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw object returned by the official Plunk API."
          }
        },
        "additionalProperties": false,
        "description": "Result returned after Plunk records the event."
      }
    },
    {
      "id": "plunk.update_contact",
      "service": "plunk",
      "name": "update_contact",
      "description": "Update a Plunk contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "string",
            "minLength": 1,
            "description": "The Plunk contact ID."
          },
          "email": {
            "type": "string",
            "description": "Updated contact email address.",
            "format": "email"
          },
          "subscribed": {
            "type": "boolean",
            "description": "Updated subscription state."
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Custom contact data or template variables accepted by Plunk."
          }
        },
        "additionalProperties": false,
        "required": [
          "contactId"
        ],
        "description": "Input for updating a Plunk contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Plunk contact ID."
              },
              "email": {
                "type": "string",
                "description": "The contact email address.",
                "format": "email"
              },
              "subscribed": {
                "type": "boolean",
                "description": "Whether the contact is subscribed."
              },
              "data": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "Custom contact data or template variables accepted by Plunk."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "type": "string",
                "description": "When the contact was created.",
                "format": "date-time"
              },
              "updatedAt": {
                "type": "string",
                "description": "When the contact was last updated.",
                "format": "date-time"
              }
            },
            "additionalProperties": true,
            "description": "A Plunk contact resource."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw object returned by the official Plunk API."
          }
        },
        "additionalProperties": false,
        "description": "Updated contact returned by Plunk."
      }
    },
    {
      "id": "plunk.verify_email",
      "service": "plunk",
      "name": "verify_email",
      "description": "Verify an email address with Plunk.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address to verify.",
            "format": "email"
          }
        },
        "additionalProperties": false,
        "description": "Input for verifying an email address."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address that was verified.",
            "format": "email"
          },
          "valid": {
            "type": "boolean",
            "description": "Whether the email appears valid overall."
          },
          "isDisposable": {
            "type": "boolean",
            "description": "Whether the email uses a disposable domain."
          },
          "isAlias": {
            "type": "boolean",
            "description": "Whether the email uses an alias or forwarding service."
          },
          "isTypo": {
            "type": "boolean",
            "description": "Whether Plunk detected a likely typo."
          },
          "isPlusAddressed": {
            "type": "boolean",
            "description": "Whether the email uses plus addressing."
          },
          "isPersonalEmail": {
            "type": "boolean",
            "description": "Whether the email uses a personal email provider."
          },
          "domainExists": {
            "type": "boolean",
            "description": "Whether DNS indicates that the domain exists."
          },
          "hasWebsite": {
            "type": "boolean",
            "description": "Whether the domain has a website DNS record."
          },
          "hasMxRecords": {
            "type": "boolean",
            "description": "Whether the domain has MX records."
          },
          "suggestedEmail": {
            "anyOf": [
              {
                "type": "string",
                "description": "Suggested correction when Plunk detects a typo.",
                "format": "email"
              },
              {
                "type": "null"
              }
            ]
          },
          "reasons": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "One reason."
            },
            "description": "Human-readable verification reasons."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw object returned by the official Plunk API."
          }
        },
        "additionalProperties": false,
        "description": "Email verification result returned by Plunk."
      }
    }
  ]
}
