{
  "name": "SearchAccounts",
  "fully_qualified_name": "PylonApi.SearchAccounts@0.1.0",
  "description": "Search and filter accounts using various criteria.\n\nThis tool allows searching and filtering of accounts with specific criteria such as domains, tags, name, external IDs, and custom fields. It supports operators like 'contains', 'equals', 'in', 'not_in', and others, enabling detailed account queries.",
  "toolkit": {
    "name": "PylonApi",
    "description": null,
    "version": "0.1.0"
  },
  "input": {
    "parameters": [
      {
        "name": "account_search_criteria",
        "required": false,
        "description": "JSON object specifying pagination, filters, and limit. Includes cursor, filter details like field, operator, value(s), and limit for number of accounts.",
        "value_schema": {
          "val_type": "json",
          "inner_val_type": null,
          "enum": null,
          "properties": {
            "cursor": {
              "val_type": "string",
              "inner_val_type": null,
              "enum": null,
              "properties": null,
              "inner_properties": null,
              "description": "The cursor to use for pagination."
            },
            "filter": {
              "val_type": "json",
              "inner_val_type": null,
              "enum": null,
              "properties": {
                "field": {
                  "val_type": "string",
                  "inner_val_type": null,
                  "enum": null,
                  "properties": null,
                  "inner_properties": null,
                  "description": "The field for this filter.  For allowed fields, see the documentation for\n\nthe specific endpoint you are using.\n\nFor non-compound filters (any operators other than \"and\" or \"or\"),\n\nField must be set, along with either Value or Values, depending on the operator."
                },
                "operator": {
                  "val_type": "string",
                  "inner_val_type": null,
                  "enum": [
                    "equals",
                    "not_equals",
                    "contains",
                    "does_not_contain",
                    "in",
                    "not_in",
                    "and",
                    "or",
                    "time_is_after",
                    "time_is_before",
                    "time_range",
                    "string_contains",
                    "string_does_not_contain",
                    "is_set",
                    "is_unset"
                  ],
                  "properties": null,
                  "inner_properties": null,
                  "description": "The operator for this filter.\n\n* equals FilterOperatorEquals  Matches objects that are exactly equal to the value in the field.\n\n* not_equals FilterOperatorNotEquals  Matches objects that are not exactly equal to the value in the field.\n\n* contains FilterOperatorContains  For a multi-valued field, such as tags, this operator will match  objects that contain any of the values in the field.\n\n* does_not_contain FilterOperatorDoesNotContain  For a multi-valued field, such as tags, this operator will match  objects that do not contain any of the values in the field.\n\n* in FilterOperatorIn  Matches objects if the field is one of several possible values,  as specified in the values array.\n\n* not_in FilterOperatorNotIn  Matches objects if the field is none of several possible values,  as specified in the values array.\n\n* and FilterOperatorAnd  Matches objects only if all subfilters match.\n\n* or FilterOperatorOr  Matches objects if any subfilter matches.\n\n* time_is_after FilterOperatorTimeIsAfter  Matches objects if the field is after the given time.\n\n* time_is_before FilterOperatorTimeIsBefore  Matches objects if the field is before the given time.\n\n* time_range FilterOperatorTimeRange  Matches objects if the field is between the given times.\n\n* string_contains FilterOperatorStringContains  Matches objects if the field contains the given string.\n\n* string_does_not_contain FilterOperatorStringDoesNotContain  Matches objects if the field does not contain the given string.\n\n* is_set FilterOperatorIsSet  FilterOperatorIsSet matches objects if the field is set.\n\n* is_unset FilterOperatorIsUnset  FilterOperatorIsUnset matches objects if the field is unset."
                },
                "subfilters": {
                  "val_type": "array",
                  "inner_val_type": "json",
                  "enum": null,
                  "properties": null,
                  "inner_properties": {},
                  "description": "Sub-filters for this filter.  Valid only when operator is \"and\" or \"or\".\n\nThe maximum allowed depth for a tree of filters is 3."
                },
                "value": {
                  "val_type": "string",
                  "inner_val_type": null,
                  "enum": null,
                  "properties": null,
                  "inner_properties": null,
                  "description": "The value for this filter. Only used for single-valued operators\n\n(\"equals\", \"not_equals\", \"contains\", \"does_not_contain\")"
                },
                "values": {
                  "val_type": "array",
                  "inner_val_type": "string",
                  "enum": null,
                  "properties": null,
                  "inner_properties": null,
                  "description": "The values for this filter. Only used for multi-valued operators (\"in\", \"not_in\")."
                }
              },
              "inner_properties": null,
              "description": null
            },
            "limit": {
              "val_type": "integer",
              "inner_val_type": null,
              "enum": null,
              "properties": null,
              "inner_properties": null,
              "description": "The number of accounts to fetch. Defaults to 100. Must be greater than 0 and less than 1000."
            }
          },
          "inner_properties": null,
          "description": ""
        },
        "inferrable": true,
        "http_endpoint_parameter_name": "requestBody"
      }
    ]
  },
  "output": {
    "description": "Response from the API endpoint 'SearchAccounts'.",
    "available_modes": [
      "value",
      "error",
      "null"
    ],
    "value_schema": {
      "val_type": "json",
      "inner_val_type": null,
      "enum": null,
      "properties": null,
      "inner_properties": null,
      "description": null
    }
  },
  "requirements": {
    "authorization": null,
    "secrets": [
      {
        "key": "PYLON_SECRET_TOKEN"
      }
    ],
    "metadata": null
  },
  "deprecation_message": null,
  "metadata": {
    "object_type": "api_wrapper_tool",
    "version": "1.1.0",
    "description": "Tools that enable LLMs to interact directly with the pylon API."
  },
  "http_endpoint": {
    "metadata": {
      "object_type": "http_endpoint",
      "version": "1.2.0",
      "description": ""
    },
    "url": "https://api.usepylon.com/accounts/search",
    "http_method": "POST",
    "headers": {},
    "parameters": [
      {
        "name": "requestBody",
        "tool_parameter_name": "account_search_criteria",
        "description": "",
        "value_schema": {
          "val_type": "json",
          "inner_val_type": null,
          "enum": null,
          "properties": {
            "cursor": {
              "val_type": "string",
              "inner_val_type": null,
              "enum": null,
              "properties": null,
              "inner_properties": null,
              "description": "The cursor to use for pagination."
            },
            "filter": {
              "val_type": "json",
              "inner_val_type": null,
              "enum": null,
              "properties": {
                "field": {
                  "val_type": "string",
                  "inner_val_type": null,
                  "enum": null,
                  "properties": null,
                  "inner_properties": null,
                  "description": "The field for this filter.  For allowed fields, see the documentation for\n\nthe specific endpoint you are using.\n\nFor non-compound filters (any operators other than \"and\" or \"or\"),\n\nField must be set, along with either Value or Values, depending on the operator."
                },
                "operator": {
                  "val_type": "string",
                  "inner_val_type": null,
                  "enum": [
                    "equals",
                    "not_equals",
                    "contains",
                    "does_not_contain",
                    "in",
                    "not_in",
                    "and",
                    "or",
                    "time_is_after",
                    "time_is_before",
                    "time_range",
                    "string_contains",
                    "string_does_not_contain",
                    "is_set",
                    "is_unset"
                  ],
                  "properties": null,
                  "inner_properties": null,
                  "description": "The operator for this filter.\n\n* equals FilterOperatorEquals  Matches objects that are exactly equal to the value in the field.\n\n* not_equals FilterOperatorNotEquals  Matches objects that are not exactly equal to the value in the field.\n\n* contains FilterOperatorContains  For a multi-valued field, such as tags, this operator will match  objects that contain any of the values in the field.\n\n* does_not_contain FilterOperatorDoesNotContain  For a multi-valued field, such as tags, this operator will match  objects that do not contain any of the values in the field.\n\n* in FilterOperatorIn  Matches objects if the field is one of several possible values,  as specified in the values array.\n\n* not_in FilterOperatorNotIn  Matches objects if the field is none of several possible values,  as specified in the values array.\n\n* and FilterOperatorAnd  Matches objects only if all subfilters match.\n\n* or FilterOperatorOr  Matches objects if any subfilter matches.\n\n* time_is_after FilterOperatorTimeIsAfter  Matches objects if the field is after the given time.\n\n* time_is_before FilterOperatorTimeIsBefore  Matches objects if the field is before the given time.\n\n* time_range FilterOperatorTimeRange  Matches objects if the field is between the given times.\n\n* string_contains FilterOperatorStringContains  Matches objects if the field contains the given string.\n\n* string_does_not_contain FilterOperatorStringDoesNotContain  Matches objects if the field does not contain the given string.\n\n* is_set FilterOperatorIsSet  FilterOperatorIsSet matches objects if the field is set.\n\n* is_unset FilterOperatorIsUnset  FilterOperatorIsUnset matches objects if the field is unset."
                },
                "subfilters": {
                  "val_type": "array",
                  "inner_val_type": "json",
                  "enum": null,
                  "properties": null,
                  "inner_properties": {},
                  "description": "Sub-filters for this filter.  Valid only when operator is \"and\" or \"or\".\n\nThe maximum allowed depth for a tree of filters is 3."
                },
                "value": {
                  "val_type": "string",
                  "inner_val_type": null,
                  "enum": null,
                  "properties": null,
                  "inner_properties": null,
                  "description": "The value for this filter. Only used for single-valued operators\n\n(\"equals\", \"not_equals\", \"contains\", \"does_not_contain\")"
                },
                "values": {
                  "val_type": "array",
                  "inner_val_type": "string",
                  "enum": null,
                  "properties": null,
                  "inner_properties": null,
                  "description": "The values for this filter. Only used for multi-valued operators (\"in\", \"not_in\")."
                }
              },
              "inner_properties": null,
              "description": null
            },
            "limit": {
              "val_type": "integer",
              "inner_val_type": null,
              "enum": null,
              "properties": null,
              "inner_properties": null,
              "description": "The number of accounts to fetch. Defaults to 100. Must be greater than 0 and less than 1000."
            }
          },
          "inner_properties": null,
          "description": ""
        },
        "accepted_as": "body",
        "required": false,
        "deprecated": false,
        "default": null,
        "documentation_urls": []
      }
    ],
    "documentation_urls": [],
    "secrets": [
      {
        "arcade_key": "PYLON_SECRET_TOKEN",
        "parameter_name": "Authorization",
        "accepted_as": "header",
        "formatted_value": "Bearer {authorization}",
        "description": "",
        "is_auth_token": false
      }
    ],
    "request_body_spec": "{\n  \"content\": {\n    \"application/json\": {\n      \"schema\": {\n        \"properties\": {\n          \"cursor\": {\n            \"description\": \"The cursor to use for pagination.\",\n            \"type\": \"string\",\n            \"x-go-name\": \"Cursor\"\n          },\n          \"filter\": {\n            \"properties\": {\n              \"field\": {\n                \"description\": \"The field for this filter.  For allowed fields, see the documentation for\\n\\nthe specific endpoint you are using.\\n\\nFor non-compound filters (any operators other than \\\"and\\\" or \\\"or\\\"),\\n\\nField must be set, along with either Value or Values, depending on the operator.\",\n                \"type\": \"string\",\n                \"x-go-name\": \"Field\"\n              },\n              \"operator\": {\n                \"description\": \"The operator for this filter.\\n\\n* equals FilterOperatorEquals  Matches objects that are exactly equal to the value in the field.\\n\\n* not_equals FilterOperatorNotEquals  Matches objects that are not exactly equal to the value in the field.\\n\\n* contains FilterOperatorContains  For a multi-valued field, such as tags, this operator will match  objects that contain any of the values in the field.\\n\\n* does_not_contain FilterOperatorDoesNotContain  For a multi-valued field, such as tags, this operator will match  objects that do not contain any of the values in the field.\\n\\n* in FilterOperatorIn  Matches objects if the field is one of several possible values,  as specified in the values array.\\n\\n* not_in FilterOperatorNotIn  Matches objects if the field is none of several possible values,  as specified in the values array.\\n\\n* and FilterOperatorAnd  Matches objects only if all subfilters match.\\n\\n* or FilterOperatorOr  Matches objects if any subfilter matches.\\n\\n* time_is_after FilterOperatorTimeIsAfter  Matches objects if the field is after the given time.\\n\\n* time_is_before FilterOperatorTimeIsBefore  Matches objects if the field is before the given time.\\n\\n* time_range FilterOperatorTimeRange  Matches objects if the field is between the given times.\\n\\n* string_contains FilterOperatorStringContains  Matches objects if the field contains the given string.\\n\\n* string_does_not_contain FilterOperatorStringDoesNotContain  Matches objects if the field does not contain the given string.\\n\\n* is_set FilterOperatorIsSet  FilterOperatorIsSet matches objects if the field is set.\\n\\n* is_unset FilterOperatorIsUnset  FilterOperatorIsUnset matches objects if the field is unset.\",\n                \"enum\": [\n                  \"equals\",\n                  \"not_equals\",\n                  \"contains\",\n                  \"does_not_contain\",\n                  \"in\",\n                  \"not_in\",\n                  \"and\",\n                  \"or\",\n                  \"time_is_after\",\n                  \"time_is_before\",\n                  \"time_range\",\n                  \"string_contains\",\n                  \"string_does_not_contain\",\n                  \"is_set\",\n                  \"is_unset\"\n                ],\n                \"type\": \"string\",\n                \"x-go-enum-desc\": \"equals FilterOperatorEquals  Matches objects that are exactly equal to the value in the field.\\nnot_equals FilterOperatorNotEquals  Matches objects that are not exactly equal to the value in the field.\\ncontains FilterOperatorContains  For a multi-valued field, such as tags, this operator will match  objects that contain any of the values in the field.\\ndoes_not_contain FilterOperatorDoesNotContain  For a multi-valued field, such as tags, this operator will match  objects that do not contain any of the values in the field.\\nin FilterOperatorIn  Matches objects if the field is one of several possible values,  as specified in the values array.\\nnot_in FilterOperatorNotIn  Matches objects if the field is none of several possible values,  as specified in the values array.\\nand FilterOperatorAnd  Matches objects only if all subfilters match.\\nor FilterOperatorOr  Matches objects if any subfilter matches.\\ntime_is_after FilterOperatorTimeIsAfter  Matches objects if the field is after the given time.\\ntime_is_before FilterOperatorTimeIsBefore  Matches objects if the field is before the given time.\\ntime_range FilterOperatorTimeRange  Matches objects if the field is between the given times.\\nstring_contains FilterOperatorStringContains  Matches objects if the field contains the given string.\\nstring_does_not_contain FilterOperatorStringDoesNotContain  Matches objects if the field does not contain the given string.\\nis_set FilterOperatorIsSet  FilterOperatorIsSet matches objects if the field is set.\\nis_unset FilterOperatorIsUnset  FilterOperatorIsUnset matches objects if the field is unset.\",\n                \"x-go-name\": \"Operator\"\n              },\n              \"subfilters\": {\n                \"description\": \"Sub-filters for this filter.  Valid only when operator is \\\"and\\\" or \\\"or\\\".\\n\\nThe maximum allowed depth for a tree of filters is 3.\",\n                \"items\": {\n                  \"$ref\": \"#/components/schemas/Filter\",\n                  \"has_circular_reference\": true\n                },\n                \"type\": \"array\",\n                \"x-go-name\": \"Subfilters\"\n              },\n              \"value\": {\n                \"description\": \"The value for this filter. Only used for single-valued operators\\n\\n(\\\"equals\\\", \\\"not_equals\\\", \\\"contains\\\", \\\"does_not_contain\\\")\",\n                \"type\": \"string\",\n                \"x-go-name\": \"Value\"\n              },\n              \"values\": {\n                \"description\": \"The values for this filter. Only used for multi-valued operators (\\\"in\\\", \\\"not_in\\\").\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"type\": \"array\",\n                \"x-go-name\": \"Values\"\n              }\n            },\n            \"required\": [\n              \"field\",\n              \"operator\"\n            ],\n            \"type\": \"object\",\n            \"x-go-package\": \"pylon/api/apiserver/apitypes\"\n          },\n          \"limit\": {\n            \"description\": \"The number of accounts to fetch. Defaults to 100. Must be greater than 0 and less than 1000.\",\n            \"format\": \"int64\",\n            \"type\": \"integer\",\n            \"x-go-name\": \"Limit\"\n          }\n        },\n        \"required\": [\n          \"filter\"\n        ],\n        \"type\": \"object\",\n        \"x-go-package\": \"pylon/api/apiserver/endpoints\"\n      }\n    }\n  },\n  \"required\": false\n}",
    "use_request_body_schema_mode": true,
    "validate_request_body_schema": false
  }
}
