{
  "service": "zerobounce",
  "displayName": "ZeroBounce",
  "categories": [
    "Communication",
    "Marketing"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "ZEROBOUNCE_API_KEY",
      "description": "ZeroBounce API key sent with the api_key query parameter. Create your account at https://www.zerobounce.net/api/ and manage keys from your account settings.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://www.zerobounce.net",
  "actions": [
    {
      "id": "zerobounce.create_filter_rule",
      "service": "zerobounce",
      "name": "create_filter_rule",
      "description": "Create or update one ZeroBounce custom allow/block filter rule.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "rule": {
            "type": "string",
            "enum": [
              "allow",
              "block"
            ],
            "description": "Whether the filter rule should allow or block matching addresses."
          },
          "target": {
            "type": "string",
            "enum": [
              "email",
              "domain",
              "mx",
              "tld"
            ],
            "description": "The filter scope used by ZeroBounce for this rule."
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "description": "The filter value such as an email address, domain, MX record, or TLD."
          }
        },
        "additionalProperties": false,
        "required": [
          "rule",
          "target",
          "value"
        ],
        "description": "The input payload for creating or updating a custom ZeroBounce filter rule."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "The confirmation message returned by ZeroBounce."
          }
        },
        "additionalProperties": false,
        "required": [
          "message"
        ],
        "description": "The ZeroBounce custom filter rule mutation response."
      }
    },
    {
      "id": "zerobounce.get_activity_data",
      "service": "zerobounce",
      "name": "get_activity_data",
      "description": "Get ZeroBounce email activity data for one email address.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address used for this ZeroBounce request.",
            "format": "email"
          }
        },
        "additionalProperties": false,
        "required": [
          "email"
        ],
        "description": "The input payload for reading email activity data."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "found": {
            "type": "boolean",
            "description": "Whether ZeroBounce found activity data for the email address."
          },
          "active_in_days": {
            "type": "string",
            "enum": [
              "30",
              "60",
              "90",
              "180",
              "365",
              "365+"
            ],
            "description": "The last activity bucket returned by ZeroBounce when available."
          }
        },
        "additionalProperties": false,
        "required": [
          "found"
        ],
        "description": "The ZeroBounce activity data response."
      }
    },
    {
      "id": "zerobounce.get_api_usage",
      "service": "zerobounce",
      "name": "get_api_usage",
      "description": "Get ZeroBounce API usage metrics for a date range.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "start_date": {
            "type": "string",
            "description": "The inclusive usage period start date in YYYY-MM-DD format.",
            "format": "date"
          },
          "end_date": {
            "type": "string",
            "description": "The inclusive usage period end date in YYYY-MM-DD format.",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "required": [
          "start_date",
          "end_date"
        ],
        "description": "The input payload for reading ZeroBounce API usage metrics."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "The total number of API validations in the time range."
          },
          "start_date": {
            "type": "string",
            "description": "The inclusive usage period start date returned by ZeroBounce.",
            "format": "date"
          },
          "end_date": {
            "type": "string",
            "description": "The inclusive usage period end date returned by ZeroBounce.",
            "format": "date"
          },
          "status_valid": {
            "type": "integer",
            "description": "The number of validations with status_valid."
          },
          "status_invalid": {
            "type": "integer",
            "description": "The number of validations with status_invalid."
          },
          "status_catch_all": {
            "type": "integer",
            "description": "The number of validations with status_catch_all."
          },
          "status_do_not_mail": {
            "type": "integer",
            "description": "The number of validations with status_do_not_mail."
          },
          "status_spamtrap": {
            "type": "integer",
            "description": "The number of validations with status_spamtrap."
          },
          "status_unknown": {
            "type": "integer",
            "description": "The number of validations with status_unknown."
          },
          "sub_status_toxic": {
            "type": "integer",
            "description": "The number of validations with sub_status_toxic."
          },
          "sub_status_disposable": {
            "type": "integer",
            "description": "The number of validations with sub_status_disposable."
          },
          "sub_status_role_based": {
            "type": "integer",
            "description": "The number of validations with sub_status_role_based."
          },
          "sub_status_possible_trap": {
            "type": "integer",
            "description": "The number of validations with sub_status_possible_trap."
          },
          "sub_status_global_suppression": {
            "type": "integer",
            "description": "The number of validations with sub_status_global_suppression."
          },
          "sub_status_timeout_exceeded": {
            "type": "integer",
            "description": "The number of validations with sub_status_timeout_exceeded."
          },
          "sub_status_mail_server_temporary_error": {
            "type": "integer",
            "description": "The number of validations with sub_status_mail_server_temporary_error."
          },
          "sub_status_mail_server_did_not_respond": {
            "type": "integer",
            "description": "The number of validations with sub_status_mail_server_did_not_respond."
          },
          "sub_status_greylisted": {
            "type": "integer",
            "description": "The number of validations with sub_status_greylisted."
          },
          "sub_status_antispam_system": {
            "type": "integer",
            "description": "The number of validations with sub_status_antispam_system."
          },
          "sub_status_does_not_accept_mail": {
            "type": "integer",
            "description": "The number of validations with sub_status_does_not_accept_mail."
          },
          "sub_status_exception_occurred": {
            "type": "integer",
            "description": "The number of validations with sub_status_exception_occurred."
          },
          "sub_status_failed_syntax_check": {
            "type": "integer",
            "description": "The number of validations with sub_status_failed_syntax_check."
          },
          "sub_status_mailbox_not_found": {
            "type": "integer",
            "description": "The number of validations with sub_status_mailbox_not_found."
          },
          "sub_status_unroutable_ip_address": {
            "type": "integer",
            "description": "The number of validations with sub_status_unroutable_ip_address."
          },
          "sub_status_possible_typo": {
            "type": "integer",
            "description": "The number of validations with sub_status_possible_typo."
          },
          "sub_status_no_dns_entries": {
            "type": "integer",
            "description": "The number of validations with sub_status_no_dns_entries."
          },
          "sub_status_role_based_catch_all": {
            "type": "integer",
            "description": "The number of validations with sub_status_role_based_catch_all."
          },
          "sub_status_mailbox_quota_exceeded": {
            "type": "integer",
            "description": "The number of validations with sub_status_mailbox_quota_exceeded."
          },
          "sub_status_forcible_disconnect": {
            "type": "integer",
            "description": "The number of validations with sub_status_forcible_disconnect."
          },
          "sub_status_failed_smtp_connection": {
            "type": "integer",
            "description": "The number of validations with sub_status_failed_smtp_connection."
          },
          "sub_status_leading_period_removed": {
            "type": "integer",
            "description": "The number of validations with sub_status_leading_period_removed."
          },
          "sub_status_alias_address": {
            "type": "integer",
            "description": "The number of validations with sub_status_alias_address."
          },
          "sub_status_mx_forward": {
            "type": "integer",
            "description": "The number of validations with sub_status_mx_forward."
          },
          "sub_status_alternate": {
            "type": "integer",
            "description": "The number of validations with sub_status_alternate."
          },
          "sub_status_blocked": {
            "type": "integer",
            "description": "The number of validations with sub_status_blocked."
          },
          "sub_status_allowed": {
            "type": "integer",
            "description": "The number of validations with sub_status_allowed."
          }
        },
        "additionalProperties": true,
        "required": [
          "total",
          "start_date",
          "end_date"
        ],
        "description": "The ZeroBounce API usage metrics response."
      }
    },
    {
      "id": "zerobounce.get_credit_balance",
      "service": "zerobounce",
      "name": "get_credit_balance",
      "description": "Get the current ZeroBounce credit balance.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "This action does not require any input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "credits": {
            "type": "integer",
            "description": "The remaining ZeroBounce credits."
          }
        },
        "additionalProperties": false,
        "required": [
          "credits"
        ],
        "description": "The ZeroBounce credit balance response."
      }
    },
    {
      "id": "zerobounce.list_filter_rules",
      "service": "zerobounce",
      "name": "list_filter_rules",
      "description": "List the current ZeroBounce custom allow/block filter rules.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "This action does not require any input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "filters": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "rule": {
                  "type": "string",
                  "enum": [
                    "allow",
                    "block"
                  ],
                  "description": "Whether the filter rule should allow or block matching addresses."
                },
                "target": {
                  "type": "string",
                  "enum": [
                    "email",
                    "domain",
                    "mx",
                    "tld"
                  ],
                  "description": "The filter scope used by ZeroBounce for this rule."
                },
                "value": {
                  "type": "string",
                  "description": "The filter value returned by ZeroBounce."
                }
              },
              "additionalProperties": false,
              "description": "One ZeroBounce custom filter rule entry."
            },
            "description": "The custom allow/block rules currently configured in ZeroBounce."
          }
        },
        "additionalProperties": false,
        "required": [
          "filters"
        ],
        "description": "The ZeroBounce list filter rules response."
      }
    },
    {
      "id": "zerobounce.validate_email",
      "service": "zerobounce",
      "name": "validate_email",
      "description": "Validate a single email address with ZeroBounce in real time.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "minLength": 1,
            "description": "The raw email address to validate with ZeroBounce."
          },
          "ip_address": {
            "type": "string",
            "description": "The optional client IP address used for geo enrichment."
          },
          "credits_info": {
            "type": "boolean",
            "description": "Whether ZeroBounce should include remaining credits information in the response."
          }
        },
        "additionalProperties": false,
        "required": [
          "email"
        ],
        "description": "The input payload for validating a single email address."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "The validated email address returned by ZeroBounce."
          },
          "status": {
            "type": "string",
            "enum": [
              "valid",
              "invalid",
              "catch-all",
              "unknown",
              "spamtrap",
              "abuse",
              "do_not_mail"
            ],
            "description": "The top-level validation status returned by ZeroBounce."
          },
          "free_email": {
            "type": "boolean",
            "description": "Whether the email belongs to a free email provider."
          },
          "mx_found": {
            "type": "boolean",
            "description": "Whether ZeroBounce found MX records for the domain."
          },
          "sub_status": {
            "type": "string",
            "description": "The more specific ZeroBounce validation sub-status."
          },
          "mx_record": {
            "type": "string",
            "description": "The MX record returned by ZeroBounce."
          },
          "did_you_mean": {
            "anyOf": [
              {
                "type": "string",
                "description": "The correction suggestion returned by ZeroBounce, if any."
              },
              {
                "type": "null"
              }
            ]
          },
          "domain": {
            "type": "string",
            "description": "The domain portion of the validated email address."
          },
          "account": {
            "type": "string",
            "description": "The local-part portion of the validated email address."
          },
          "active_in_days": {
            "type": "string",
            "enum": [
              "30",
              "60",
              "90",
              "180",
              "365",
              "365+"
            ],
            "description": "The last activity bucket returned by ZeroBounce when available."
          },
          "processed_at": {
            "type": "string",
            "description": "The ZeroBounce processing timestamp, if any."
          },
          "smtp_provider": {
            "anyOf": [
              {
                "type": "string",
                "description": "The smtp provider value inferred by ZeroBounce, or null when unavailable."
              },
              {
                "type": "null"
              }
            ]
          },
          "firstname": {
            "anyOf": [
              {
                "type": "string",
                "description": "The firstname value inferred by ZeroBounce, or null when unavailable."
              },
              {
                "type": "null"
              }
            ]
          },
          "lastname": {
            "anyOf": [
              {
                "type": "string",
                "description": "The lastname value inferred by ZeroBounce, or null when unavailable."
              },
              {
                "type": "null"
              }
            ]
          },
          "gender": {
            "anyOf": [
              {
                "type": "string",
                "description": "The gender value inferred by ZeroBounce, or null when unavailable."
              },
              {
                "type": "null"
              }
            ]
          },
          "country": {
            "anyOf": [
              {
                "type": "string",
                "description": "The country value inferred by ZeroBounce, or null when unavailable."
              },
              {
                "type": "null"
              }
            ]
          },
          "region": {
            "anyOf": [
              {
                "type": "string",
                "description": "The region value inferred by ZeroBounce, or null when unavailable."
              },
              {
                "type": "null"
              }
            ]
          },
          "city": {
            "anyOf": [
              {
                "type": "string",
                "description": "The city value inferred by ZeroBounce, or null when unavailable."
              },
              {
                "type": "null"
              }
            ]
          },
          "zipcode": {
            "anyOf": [
              {
                "type": "string",
                "description": "The zipcode value inferred by ZeroBounce, or null when unavailable."
              },
              {
                "type": "null"
              }
            ]
          },
          "domain_age_days": {
            "anyOf": [
              {
                "type": "string",
                "description": "The domain age days value inferred by ZeroBounce, or null when unavailable."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": true,
        "required": [
          "address",
          "status",
          "free_email",
          "mx_found"
        ],
        "description": "The ZeroBounce single email validation response."
      }
    }
  ]
}
