{
  "service": "sender",
  "displayName": "Sender",
  "categories": [
    "Marketing",
    "Communication"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Access Token",
      "placeholder": "sender_api_token",
      "description": "Sender API access token used with the Authorization Bearer header. Create or manage it in Sender account settings: https://app.sender.net/settings/tokens."
    }
  ],
  "homepageUrl": "https://www.sender.net",
  "actions": [
    {
      "id": "sender.add_subscribers_to_group",
      "service": "sender",
      "name": "add_subscribers_to_group",
      "description": "Add subscribers or a Sender conditions selection to a group.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "minLength": 1,
            "description": "The Sender group ID."
          },
          "subscribers": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A subscriber email address.",
              "format": "email"
            },
            "description": "Email addresses to add or remove from the group.",
            "minItems": 1
          },
          "conditions": {
            "type": "string",
            "minLength": 1,
            "description": "Sender conditions expression for selecting subscribers."
          },
          "trigger_automation": {
            "type": "boolean",
            "description": "Whether Sender should trigger automations for newly added subscribers."
          }
        },
        "additionalProperties": false,
        "required": [
          "groupId"
        ],
        "description": "Input for adding subscribers to a Sender group.",
        "oneOf": [
          {
            "required": [
              "subscribers"
            ]
          },
          {
            "required": [
              "conditions"
            ]
          }
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether Sender accepted the group membership change."
          },
          "message": {
            "description": "The message returned by Sender."
          }
        },
        "additionalProperties": false,
        "description": "A Sender group membership mutation response."
      }
    },
    {
      "id": "sender.create_field",
      "service": "sender",
      "name": "create_field",
      "description": "Create a Sender custom subscriber field.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The display title of the custom field."
          },
          "type": {
            "type": "string",
            "enum": [
              "number",
              "text",
              "datetime"
            ],
            "description": "The Sender field type."
          }
        },
        "additionalProperties": false,
        "required": [
          "title",
          "type"
        ],
        "description": "Input for creating a Sender custom field."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether Sender created the field."
          },
          "message": {
            "description": "The message returned by Sender."
          },
          "field": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A Sender custom field record.",
            "default": {
              "type": "boolean",
              "description": "Whether this is a default Sender field."
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "success",
          "message"
        ],
        "description": "A Sender field mutation response."
      }
    },
    {
      "id": "sender.create_subscriber",
      "service": "sender",
      "name": "create_subscriber",
      "description": "Create a Sender subscriber with optional groups and custom fields.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The subscriber email address.",
            "format": "email"
          },
          "firstname": {
            "type": "string",
            "minLength": 1,
            "description": "The subscriber first name."
          },
          "lastname": {
            "type": "string",
            "minLength": 1,
            "description": "The subscriber last name."
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Sender group ID."
            },
            "description": "Sender group IDs assigned to the subscriber.",
            "minItems": 1
          },
          "fields": {
            "type": "object",
            "additionalProperties": {
              "description": "A custom field value accepted by Sender."
            },
            "description": "Custom field values keyed by Sender field name."
          },
          "phone": {
            "type": "string",
            "minLength": 1,
            "description": "The subscriber phone number with country code."
          },
          "trigger_automation": {
            "type": "boolean",
            "description": "Whether Sender should trigger automations for this change."
          }
        },
        "additionalProperties": false,
        "required": [
          "email"
        ],
        "description": "Input for creating a Sender subscriber."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether Sender accepted the subscriber change."
          },
          "message": {
            "description": "The message returned by Sender."
          },
          "subscriber": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Sender subscriber ID."
              },
              "email": {
                "type": "string",
                "description": "The subscriber email address."
              },
              "firstname": {
                "type": "string",
                "description": "The subscriber first name."
              },
              "lastname": {
                "type": "string",
                "description": "The subscriber last name."
              },
              "phone": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The subscriber phone number."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "phone_country": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "phone_code": {
                        "type": "integer",
                        "description": "The numeric country calling code."
                      },
                      "country_code": {
                        "type": "string",
                        "description": "The ISO country code."
                      }
                    },
                    "additionalProperties": true,
                    "description": "Sender phone country metadata."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "created": {
                "type": "string",
                "description": "When Sender created the subscriber record."
              },
              "status": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "The marketing email subscription status."
                  },
                  "temail": {
                    "type": "string",
                    "description": "The transactional email subscription status."
                  }
                },
                "additionalProperties": true,
                "description": "Sender subscriber status details."
              },
              "bounced_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the subscriber bounced, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unsubscribed_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the subscriber unsubscribed, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "location": {
                "description": "Location details returned by Sender, when present."
              },
              "subscriber_tags": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "The Sender group ID."
                    },
                    "title": {
                      "type": "string",
                      "description": "The Sender group title."
                    }
                  },
                  "additionalProperties": true,
                  "description": "A Sender group tag attached to a subscriber."
                },
                "description": "Groups attached to this subscriber."
              },
              "columns": {
                "description": "Custom field values returned by Sender."
              }
            },
            "additionalProperties": true,
            "description": "A Sender subscriber record."
          }
        },
        "additionalProperties": false,
        "required": [
          "success",
          "message"
        ],
        "description": "A Sender subscriber mutation response."
      }
    },
    {
      "id": "sender.get_campaign",
      "service": "sender",
      "name": "get_campaign",
      "description": "Get one Sender campaign by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Sender campaign ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input for getting one Sender campaign."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "campaign": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Sender campaign ID."
              },
              "subject": {
                "type": "string",
                "description": "The campaign subject."
              },
              "reply_to": {
                "type": "string",
                "description": "The reply-to email address."
              },
              "language": {
                "type": "string",
                "description": "The campaign language."
              },
              "recipient_count": {
                "type": "integer",
                "description": "The campaign recipient count."
              },
              "from": {
                "type": "string",
                "description": "The campaign sender name."
              },
              "schedule_time": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the campaign is scheduled, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last_action": {
                "type": "string",
                "description": "The last campaign action recorded by Sender."
              },
              "sent_time": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the campaign was sent, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "type": "string",
                "description": "The campaign status."
              },
              "created": {
                "type": "string",
                "description": "When Sender created the campaign."
              },
              "modified": {
                "type": "string",
                "description": "When Sender last modified the campaign."
              },
              "title": {
                "type": "string",
                "description": "The campaign title."
              },
              "domain_id": {
                "type": "string",
                "description": "The Sender sending domain ID."
              },
              "preheader": {
                "type": "string",
                "description": "The campaign preheader text."
              },
              "opens": {
                "type": "integer",
                "description": "Total opens reported by Sender."
              },
              "clicks": {
                "type": "integer",
                "description": "Total clicks reported by Sender."
              },
              "bounces_count": {
                "type": "integer",
                "description": "Total bounces reported by Sender."
              },
              "sent_count": {
                "type": "integer",
                "description": "Total sent emails reported by Sender."
              },
              "campaign_groups": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "A Sender group ID."
                },
                "description": "Group IDs targeted by the campaign."
              },
              "segments": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "A Sender segment ID."
                },
                "description": "Segment IDs targeted by the campaign."
              }
            },
            "additionalProperties": true,
            "description": "A Sender campaign record."
          }
        },
        "additionalProperties": false,
        "description": "A Sender campaign detail response."
      }
    },
    {
      "id": "sender.get_group",
      "service": "sender",
      "name": "get_group",
      "description": "Get one Sender group by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Sender group ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input for getting one Sender group."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "group": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Sender group ID."
              },
              "title": {
                "type": "string",
                "description": "The Sender group title."
              },
              "recipient_count": {
                "type": "integer",
                "description": "Total recipients in the group."
              },
              "active_subscribers": {
                "type": "integer",
                "description": "Active subscribers in the group."
              },
              "unsubscribed_count": {
                "type": "integer",
                "description": "Unsubscribed recipients in the group."
              },
              "bounced_count": {
                "type": "integer",
                "description": "Bounced recipients in the group."
              },
              "phone_count": {
                "type": "integer",
                "description": "Phone recipients in the group."
              },
              "active_phone_count": {
                "type": "integer",
                "description": "Active phone recipients in the group."
              },
              "account_id": {
                "type": "string",
                "description": "The Sender account ID."
              },
              "user_id": {
                "type": "string",
                "description": "The Sender user ID."
              },
              "created": {
                "type": "string",
                "description": "When Sender created the group."
              },
              "modified": {
                "type": "string",
                "description": "When Sender last modified the group."
              },
              "is_recalculating_subscribers": {
                "type": "boolean",
                "description": "Whether Sender is recalculating group subscribers."
              }
            },
            "additionalProperties": true,
            "description": "A Sender group record."
          }
        },
        "additionalProperties": false,
        "description": "A Sender group detail response."
      }
    },
    {
      "id": "sender.get_subscriber",
      "service": "sender",
      "name": "get_subscriber",
      "description": "Get one Sender subscriber by email address, phone number, or ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "minLength": 1,
            "description": "The subscriber email address, phone number, or Sender ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "identifier"
        ],
        "description": "Input for getting one Sender subscriber."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "subscriber": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Sender subscriber ID."
              },
              "email": {
                "type": "string",
                "description": "The subscriber email address."
              },
              "firstname": {
                "type": "string",
                "description": "The subscriber first name."
              },
              "lastname": {
                "type": "string",
                "description": "The subscriber last name."
              },
              "phone": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The subscriber phone number."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "phone_country": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "phone_code": {
                        "type": "integer",
                        "description": "The numeric country calling code."
                      },
                      "country_code": {
                        "type": "string",
                        "description": "The ISO country code."
                      }
                    },
                    "additionalProperties": true,
                    "description": "Sender phone country metadata."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "created": {
                "type": "string",
                "description": "When Sender created the subscriber record."
              },
              "status": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "The marketing email subscription status."
                  },
                  "temail": {
                    "type": "string",
                    "description": "The transactional email subscription status."
                  }
                },
                "additionalProperties": true,
                "description": "Sender subscriber status details."
              },
              "bounced_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the subscriber bounced, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unsubscribed_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the subscriber unsubscribed, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "location": {
                "description": "Location details returned by Sender, when present."
              },
              "subscriber_tags": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "The Sender group ID."
                    },
                    "title": {
                      "type": "string",
                      "description": "The Sender group title."
                    }
                  },
                  "additionalProperties": true,
                  "description": "A Sender group tag attached to a subscriber."
                },
                "description": "Groups attached to this subscriber."
              },
              "columns": {
                "description": "Custom field values returned by Sender."
              }
            },
            "additionalProperties": true,
            "description": "A Sender subscriber record."
          }
        },
        "additionalProperties": false,
        "description": "A Sender subscriber detail response."
      }
    },
    {
      "id": "sender.get_workflow",
      "service": "sender",
      "name": "get_workflow",
      "description": "Get one Sender automation workflow by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Sender workflow ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input for getting one Sender workflow."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "workflow": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A Sender workflow record."
          }
        },
        "additionalProperties": false,
        "description": "A Sender workflow detail response."
      }
    },
    {
      "id": "sender.list_campaigns",
      "service": "sender",
      "name": "list_campaigns",
      "description": "List Sender campaigns with pagination and an optional status filter.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for Sender pagination."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of records to return per page."
          },
          "status": {
            "type": "string",
            "enum": [
              "SCHEDULED",
              "SENDING",
              "SENT",
              "DRAFT"
            ],
            "description": "A Sender campaign status filter."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Sender campaigns."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "campaigns": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Sender campaign ID."
                },
                "subject": {
                  "type": "string",
                  "description": "The campaign subject."
                },
                "reply_to": {
                  "type": "string",
                  "description": "The reply-to email address."
                },
                "language": {
                  "type": "string",
                  "description": "The campaign language."
                },
                "recipient_count": {
                  "type": "integer",
                  "description": "The campaign recipient count."
                },
                "from": {
                  "type": "string",
                  "description": "The campaign sender name."
                },
                "schedule_time": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the campaign is scheduled, when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "last_action": {
                  "type": "string",
                  "description": "The last campaign action recorded by Sender."
                },
                "sent_time": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the campaign was sent, when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "type": "string",
                  "description": "The campaign status."
                },
                "created": {
                  "type": "string",
                  "description": "When Sender created the campaign."
                },
                "modified": {
                  "type": "string",
                  "description": "When Sender last modified the campaign."
                },
                "title": {
                  "type": "string",
                  "description": "The campaign title."
                },
                "domain_id": {
                  "type": "string",
                  "description": "The Sender sending domain ID."
                },
                "preheader": {
                  "type": "string",
                  "description": "The campaign preheader text."
                },
                "opens": {
                  "type": "integer",
                  "description": "Total opens reported by Sender."
                },
                "clicks": {
                  "type": "integer",
                  "description": "Total clicks reported by Sender."
                },
                "bounces_count": {
                  "type": "integer",
                  "description": "Total bounces reported by Sender."
                },
                "sent_count": {
                  "type": "integer",
                  "description": "Total sent emails reported by Sender."
                },
                "campaign_groups": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "A Sender group ID."
                  },
                  "description": "Group IDs targeted by the campaign."
                },
                "segments": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "A Sender segment ID."
                  },
                  "description": "Segment IDs targeted by the campaign."
                }
              },
              "additionalProperties": true,
              "description": "A Sender campaign record."
            },
            "description": "The Sender campaigns returned for this page."
          },
          "links": {
            "type": "object",
            "properties": {
              "first": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the first page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the last page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "prev": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the previous page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the next page."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination links returned by Sender."
          },
          "meta": {
            "type": "object",
            "properties": {
              "current_page": {
                "type": "integer",
                "description": "The current page number."
              },
              "from": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The first item number on this page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last_page": {
                "type": "integer",
                "description": "The last available page number."
              },
              "path": {
                "type": "string",
                "description": "The request path reported by Sender."
              },
              "per_page": {
                "type": "integer",
                "description": "The number of records per page."
              },
              "to": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The last item number on this page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "total": {
                "type": "integer",
                "description": "The total number of records."
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sender."
          },
          "hasMoreResources": {
            "type": "boolean",
            "description": "Whether Sender reports another page after this one."
          }
        },
        "additionalProperties": false,
        "required": [
          "campaigns"
        ],
        "description": "A page of Sender campaigns."
      }
    },
    {
      "id": "sender.list_fields",
      "service": "sender",
      "name": "list_fields",
      "description": "List Sender custom subscriber fields with pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for Sender pagination."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of records to return per page."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Sender custom fields."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Sender custom field record.",
              "default": {
                "type": "boolean",
                "description": "Whether this is a default Sender field."
              }
            },
            "description": "The Sender fields returned for this page."
          },
          "links": {
            "type": "object",
            "properties": {
              "first": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the first page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the last page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "prev": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the previous page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the next page."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination links returned by Sender."
          },
          "meta": {
            "type": "object",
            "properties": {
              "current_page": {
                "type": "integer",
                "description": "The current page number."
              },
              "from": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The first item number on this page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last_page": {
                "type": "integer",
                "description": "The last available page number."
              },
              "path": {
                "type": "string",
                "description": "The request path reported by Sender."
              },
              "per_page": {
                "type": "integer",
                "description": "The number of records per page."
              },
              "to": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The last item number on this page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "total": {
                "type": "integer",
                "description": "The total number of records."
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sender."
          },
          "hasMoreResources": {
            "type": "boolean",
            "description": "Whether Sender reports another page after this one."
          }
        },
        "additionalProperties": false,
        "required": [
          "fields"
        ],
        "description": "A page of Sender fields."
      }
    },
    {
      "id": "sender.list_groups",
      "service": "sender",
      "name": "list_groups",
      "description": "List Sender groups with pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for Sender pagination."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of records to return per page."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Sender groups."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Sender group ID."
                },
                "title": {
                  "type": "string",
                  "description": "The Sender group title."
                },
                "recipient_count": {
                  "type": "integer",
                  "description": "Total recipients in the group."
                },
                "active_subscribers": {
                  "type": "integer",
                  "description": "Active subscribers in the group."
                },
                "unsubscribed_count": {
                  "type": "integer",
                  "description": "Unsubscribed recipients in the group."
                },
                "bounced_count": {
                  "type": "integer",
                  "description": "Bounced recipients in the group."
                },
                "phone_count": {
                  "type": "integer",
                  "description": "Phone recipients in the group."
                },
                "active_phone_count": {
                  "type": "integer",
                  "description": "Active phone recipients in the group."
                },
                "account_id": {
                  "type": "string",
                  "description": "The Sender account ID."
                },
                "user_id": {
                  "type": "string",
                  "description": "The Sender user ID."
                },
                "created": {
                  "type": "string",
                  "description": "When Sender created the group."
                },
                "modified": {
                  "type": "string",
                  "description": "When Sender last modified the group."
                },
                "is_recalculating_subscribers": {
                  "type": "boolean",
                  "description": "Whether Sender is recalculating group subscribers."
                }
              },
              "additionalProperties": true,
              "description": "A Sender group record."
            },
            "description": "The Sender groups returned for this page."
          },
          "links": {
            "type": "object",
            "properties": {
              "first": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the first page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the last page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "prev": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the previous page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the next page."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination links returned by Sender."
          },
          "meta": {
            "type": "object",
            "properties": {
              "current_page": {
                "type": "integer",
                "description": "The current page number."
              },
              "from": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The first item number on this page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last_page": {
                "type": "integer",
                "description": "The last available page number."
              },
              "path": {
                "type": "string",
                "description": "The request path reported by Sender."
              },
              "per_page": {
                "type": "integer",
                "description": "The number of records per page."
              },
              "to": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The last item number on this page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "total": {
                "type": "integer",
                "description": "The total number of records."
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sender."
          },
          "hasMoreResources": {
            "type": "boolean",
            "description": "Whether Sender reports another page after this one."
          }
        },
        "additionalProperties": false,
        "required": [
          "groups"
        ],
        "description": "A page of Sender groups."
      }
    },
    {
      "id": "sender.list_subscribers",
      "service": "sender",
      "name": "list_subscribers",
      "description": "List Sender subscribers with pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for Sender pagination."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of records to return per page."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Sender subscribers."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "subscribers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Sender subscriber ID."
                },
                "email": {
                  "type": "string",
                  "description": "The subscriber email address."
                },
                "firstname": {
                  "type": "string",
                  "description": "The subscriber first name."
                },
                "lastname": {
                  "type": "string",
                  "description": "The subscriber last name."
                },
                "phone": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The subscriber phone number."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "phone_country": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "phone_code": {
                          "type": "integer",
                          "description": "The numeric country calling code."
                        },
                        "country_code": {
                          "type": "string",
                          "description": "The ISO country code."
                        }
                      },
                      "additionalProperties": true,
                      "description": "Sender phone country metadata."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created": {
                  "type": "string",
                  "description": "When Sender created the subscriber record."
                },
                "status": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "description": "The marketing email subscription status."
                    },
                    "temail": {
                      "type": "string",
                      "description": "The transactional email subscription status."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Sender subscriber status details."
                },
                "bounced_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the subscriber bounced, when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "unsubscribed_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "When the subscriber unsubscribed, when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "location": {
                  "description": "Location details returned by Sender, when present."
                },
                "subscriber_tags": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "The Sender group ID."
                      },
                      "title": {
                        "type": "string",
                        "description": "The Sender group title."
                      }
                    },
                    "additionalProperties": true,
                    "description": "A Sender group tag attached to a subscriber."
                  },
                  "description": "Groups attached to this subscriber."
                },
                "columns": {
                  "description": "Custom field values returned by Sender."
                }
              },
              "additionalProperties": true,
              "description": "A Sender subscriber record."
            },
            "description": "The Sender subscribers returned for this page."
          },
          "links": {
            "type": "object",
            "properties": {
              "first": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the first page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the last page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "prev": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the previous page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the next page."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination links returned by Sender."
          },
          "meta": {
            "type": "object",
            "properties": {
              "current_page": {
                "type": "integer",
                "description": "The current page number."
              },
              "from": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The first item number on this page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last_page": {
                "type": "integer",
                "description": "The last available page number."
              },
              "path": {
                "type": "string",
                "description": "The request path reported by Sender."
              },
              "per_page": {
                "type": "integer",
                "description": "The number of records per page."
              },
              "to": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The last item number on this page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "total": {
                "type": "integer",
                "description": "The total number of records."
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sender."
          },
          "hasMoreResources": {
            "type": "boolean",
            "description": "Whether Sender reports another page after this one."
          }
        },
        "additionalProperties": false,
        "required": [
          "subscribers"
        ],
        "description": "A page of Sender subscribers."
      }
    },
    {
      "id": "sender.list_workflows",
      "service": "sender",
      "name": "list_workflows",
      "description": "List Sender automation workflows with pagination and filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number for Sender pagination."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of workflows to return per page (1-100)."
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "PAUSED"
            ],
            "description": "A Sender workflow status filter."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "Only return workflows whose title starts with this string."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Sender workflows."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "workflows": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Sender workflow record."
            },
            "description": "The Sender workflows returned for this page."
          },
          "links": {
            "type": "object",
            "properties": {
              "first": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the first page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the last page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "prev": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the previous page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "next": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the next page."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Pagination links returned by Sender."
          },
          "meta": {
            "type": "object",
            "properties": {
              "current_page": {
                "type": "integer",
                "description": "The current page number."
              },
              "from": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The first item number on this page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "last_page": {
                "type": "integer",
                "description": "The last available page number."
              },
              "path": {
                "type": "string",
                "description": "The request path reported by Sender."
              },
              "per_page": {
                "type": "integer",
                "description": "The number of records per page."
              },
              "to": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The last item number on this page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "total": {
                "type": "integer",
                "description": "The total number of records."
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sender."
          },
          "hasMoreResources": {
            "type": "boolean",
            "description": "Whether Sender reports another page after this one."
          }
        },
        "additionalProperties": false,
        "required": [
          "workflows"
        ],
        "description": "A page of Sender workflows."
      }
    },
    {
      "id": "sender.remove_subscribers_from_group",
      "service": "sender",
      "name": "remove_subscribers_from_group",
      "description": "Remove subscribers or a Sender conditions selection from a group.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "minLength": 1,
            "description": "The Sender group ID."
          },
          "subscribers": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A subscriber email address.",
              "format": "email"
            },
            "description": "Email addresses to add or remove from the group.",
            "minItems": 1
          },
          "conditions": {
            "type": "string",
            "minLength": 1,
            "description": "Sender conditions expression for selecting subscribers."
          }
        },
        "additionalProperties": false,
        "required": [
          "groupId"
        ],
        "description": "Input for removing subscribers from a Sender group.",
        "oneOf": [
          {
            "required": [
              "subscribers"
            ]
          },
          {
            "required": [
              "conditions"
            ]
          }
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether Sender accepted the group membership change."
          },
          "message": {
            "description": "The message returned by Sender."
          }
        },
        "additionalProperties": false,
        "description": "A Sender group membership mutation response."
      }
    },
    {
      "id": "sender.update_subscriber",
      "service": "sender",
      "name": "update_subscriber",
      "description": "Update a Sender subscriber by email address, phone number, or ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "minLength": 1,
            "description": "The subscriber email address, phone number, or Sender ID."
          },
          "firstname": {
            "type": "string",
            "minLength": 1,
            "description": "The subscriber first name."
          },
          "lastname": {
            "type": "string",
            "minLength": 1,
            "description": "The subscriber last name."
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Sender group ID."
            },
            "description": "Sender group IDs assigned to the subscriber.",
            "minItems": 1
          },
          "fields": {
            "type": "object",
            "additionalProperties": {
              "description": "A custom field value accepted by Sender."
            },
            "description": "Custom field values keyed by Sender field name."
          },
          "phone": {
            "type": "string",
            "minLength": 1,
            "description": "The subscriber phone number with country code."
          },
          "trigger_automation": {
            "type": "boolean",
            "description": "Whether Sender should trigger automations for this change."
          },
          "subscriber_status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "UNSUBSCRIBED",
              "BOUNCED",
              "SPAM_REPORTED"
            ],
            "description": "A Sender subscriber status value."
          },
          "sms_status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "UNSUBSCRIBED",
              "BOUNCED",
              "SPAM_REPORTED"
            ],
            "description": "A Sender subscriber status value."
          },
          "transactional_email_status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "UNSUBSCRIBED",
              "BOUNCED",
              "SPAM_REPORTED"
            ],
            "description": "A Sender subscriber status value."
          }
        },
        "additionalProperties": false,
        "required": [
          "identifier"
        ],
        "description": "Input for updating a Sender subscriber by email, phone number, or ID."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether Sender accepted the subscriber change."
          },
          "message": {
            "description": "The message returned by Sender."
          },
          "subscriber": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Sender subscriber ID."
              },
              "email": {
                "type": "string",
                "description": "The subscriber email address."
              },
              "firstname": {
                "type": "string",
                "description": "The subscriber first name."
              },
              "lastname": {
                "type": "string",
                "description": "The subscriber last name."
              },
              "phone": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The subscriber phone number."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "phone_country": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "phone_code": {
                        "type": "integer",
                        "description": "The numeric country calling code."
                      },
                      "country_code": {
                        "type": "string",
                        "description": "The ISO country code."
                      }
                    },
                    "additionalProperties": true,
                    "description": "Sender phone country metadata."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "created": {
                "type": "string",
                "description": "When Sender created the subscriber record."
              },
              "status": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "The marketing email subscription status."
                  },
                  "temail": {
                    "type": "string",
                    "description": "The transactional email subscription status."
                  }
                },
                "additionalProperties": true,
                "description": "Sender subscriber status details."
              },
              "bounced_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the subscriber bounced, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unsubscribed_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "When the subscriber unsubscribed, when present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "location": {
                "description": "Location details returned by Sender, when present."
              },
              "subscriber_tags": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "The Sender group ID."
                    },
                    "title": {
                      "type": "string",
                      "description": "The Sender group title."
                    }
                  },
                  "additionalProperties": true,
                  "description": "A Sender group tag attached to a subscriber."
                },
                "description": "Groups attached to this subscriber."
              },
              "columns": {
                "description": "Custom field values returned by Sender."
              }
            },
            "additionalProperties": true,
            "description": "A Sender subscriber record."
          }
        },
        "additionalProperties": false,
        "required": [
          "success",
          "message"
        ],
        "description": "A Sender subscriber mutation response."
      }
    }
  ]
}
