{
  "service": "pylon",
  "displayName": "Pylon",
  "categories": [
    "Communication",
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "pylon_api_token",
      "description": "Pylon API token sent as a Bearer token. Generate it in the Pylon dashboard under Settings > API tokens: https://app.usepylon.com/settings/api-tokens."
    }
  ],
  "homepageUrl": "https://www.usepylon.com",
  "actions": [
    {
      "id": "pylon.create_account",
      "service": "pylon",
      "name": "create_account",
      "description": "Create a Pylon account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The account name."
          },
          "account_type": {
            "type": "string",
            "enum": [
              "customer",
              "internal",
              "community",
              "partner"
            ],
            "description": "The account type."
          },
          "domains": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "An account domain."
            },
            "description": "Domains for the account, without a leading scheme."
          },
          "primary_domain": {
            "type": "string",
            "minLength": 1,
            "description": "The primary domain, which must be included in domains when domains are provided."
          },
          "external_ids": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "external_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The external ID. It must be unique for the object type."
                },
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The label for this external ID. It must be unique on the object."
                }
              },
              "additionalProperties": false,
              "description": "An external ID associated with a Pylon account or contact."
            },
            "description": "External IDs associated with the object."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Pylon tag."
            },
            "description": "Tags to set on the Pylon object."
          },
          "owner_id": {
            "type": "string",
            "minLength": 1,
            "description": "The user ID of the account owner."
          },
          "logo_url": {
            "type": "string",
            "description": "The square .png, .jpg, or .jpeg logo URL for the account.",
            "format": "uri"
          },
          "custom_fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The slug of the custom field."
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The single value for the custom field. For select or relationship fields, use the option slug or related object ID."
                },
                "values": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "description": "A custom field value."
                  },
                  "description": "The values for a multi-valued custom field, such as a multiselect field."
                }
              },
              "additionalProperties": false,
              "required": [
                "slug"
              ],
              "description": "A Pylon custom field value."
            },
            "description": "Custom field values to apply to the Pylon object."
          }
        },
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "description": "Input for creating a Pylon account."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "account": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Pylon account ID."
              },
              "name": {
                "type": "string",
                "description": "The account name."
              },
              "primary_domain": {
                "type": "string",
                "description": "The account's primary domain."
              },
              "domains": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "An account domain."
                },
                "description": "Domains associated with the account."
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "An account tag."
                },
                "description": "Tags associated with the account."
              },
              "type": {
                "type": "string",
                "description": "The account type."
              },
              "created_at": {
                "type": "string",
                "description": "The time when the account was created."
              },
              "updated_at": {
                "type": "string",
                "description": "The time when the account was last updated."
              }
            },
            "additionalProperties": true,
            "description": "A Pylon account."
          }
        },
        "additionalProperties": false,
        "description": "The created account returned by Pylon."
      }
    },
    {
      "id": "pylon.create_contact",
      "service": "pylon",
      "name": "create_contact",
      "description": "Create a Pylon contact.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The contact name."
          },
          "email": {
            "type": "string",
            "description": "The contact email address.",
            "format": "email"
          },
          "account_id": {
            "type": "string",
            "minLength": 1,
            "description": "The account that this contact belongs to."
          },
          "account_external_id": {
            "type": "string",
            "minLength": 1,
            "description": "The external ID of the account that this contact belongs to."
          },
          "avatar_url": {
            "type": "string",
            "description": "The square .png, .jpg, or .jpeg avatar URL for the contact.",
            "format": "uri"
          },
          "external_ids": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "external_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The external ID. It must be unique for the object type."
                },
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The label for this external ID. It must be unique on the object."
                }
              },
              "additionalProperties": false,
              "description": "An external ID associated with a Pylon account or contact."
            },
            "description": "External IDs associated with the object."
          },
          "phone_numbers": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A contact phone number."
            },
            "description": "Phone numbers for the contact. Pylon expects digits only and at most 15 digits."
          },
          "primary_phone_number": {
            "type": "string",
            "minLength": 1,
            "description": "The primary phone number, which must be in phone_numbers."
          },
          "portal_role": {
            "type": "string",
            "minLength": 1,
            "description": "The portal role slug to assign to the contact."
          },
          "portal_role_id": {
            "type": "string",
            "minLength": 1,
            "description": "The custom portal role ID to assign to the contact."
          },
          "custom_fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The slug of the custom field."
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The single value for the custom field. For select or relationship fields, use the option slug or related object ID."
                },
                "values": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "description": "A custom field value."
                  },
                  "description": "The values for a multi-valued custom field, such as a multiselect field."
                }
              },
              "additionalProperties": false,
              "required": [
                "slug"
              ],
              "description": "A Pylon custom field value."
            },
            "description": "Custom field values to apply to the Pylon object."
          }
        },
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "description": "Input for creating a Pylon contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Pylon contact ID."
              },
              "name": {
                "type": "string",
                "description": "The contact name."
              },
              "email": {
                "type": "string",
                "description": "The contact's primary email address."
              },
              "emails": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "A contact email address."
                },
                "description": "All email addresses for the contact."
              },
              "phone_numbers": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "A contact phone number."
                },
                "description": "Phone numbers for the contact."
              },
              "account": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The account associated with the contact."
              }
            },
            "additionalProperties": true,
            "description": "A Pylon contact."
          }
        },
        "additionalProperties": false,
        "description": "The created contact returned by Pylon."
      }
    },
    {
      "id": "pylon.create_issue",
      "service": "pylon",
      "name": "create_issue",
      "description": "Create a Pylon issue with a title, HTML body, and requester or account context.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The issue title."
          },
          "body_html": {
            "type": "string",
            "minLength": 1,
            "description": "The HTML content of the issue body."
          },
          "account_id": {
            "type": "string",
            "minLength": 1,
            "description": "The account this issue belongs to."
          },
          "requester_id": {
            "type": "string",
            "minLength": 1,
            "description": "The contact this issue is on behalf of."
          },
          "requester_email": {
            "type": "string",
            "description": "The requester email address. Pylon creates a contact when none exists.",
            "format": "email"
          },
          "requester_name": {
            "type": "string",
            "minLength": 1,
            "description": "The full name to use when creating a requester contact."
          },
          "requester_avatar_url": {
            "type": "string",
            "description": "The requester avatar URL.",
            "format": "uri"
          },
          "user_id": {
            "type": "string",
            "minLength": 1,
            "description": "The internal user to attribute the first message to."
          },
          "contact_id": {
            "type": "string",
            "minLength": 1,
            "description": "The contact to attribute the first message to."
          },
          "assignee_id": {
            "type": "string",
            "minLength": 1,
            "description": "The user the issue should be assigned to."
          },
          "team_id": {
            "type": "string",
            "minLength": 1,
            "description": "The team the issue should be assigned to."
          },
          "priority": {
            "type": "string",
            "enum": [
              "urgent",
              "high",
              "medium",
              "low"
            ],
            "description": "The issue priority."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Pylon tag."
            },
            "description": "Tags to set on the Pylon object."
          },
          "attachment_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A publicly reachable attachment URL.",
              "format": "uri"
            },
            "description": "Publicly reachable attachment URLs for Pylon to fetch and attach."
          },
          "author_unverified": {
            "type": "boolean",
            "description": "Whether the requester's identity has not been verified."
          },
          "created_at": {
            "type": "string",
            "description": "The issue creation timestamp in RFC3339 format.",
            "format": "date-time"
          },
          "custom_fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The slug of the custom field."
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The single value for the custom field. For select or relationship fields, use the option slug or related object ID."
                },
                "values": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "description": "A custom field value."
                  },
                  "description": "The values for a multi-valued custom field, such as a multiselect field."
                }
              },
              "additionalProperties": false,
              "required": [
                "slug"
              ],
              "description": "A Pylon custom field value."
            },
            "description": "Custom field values to apply to the Pylon object."
          },
          "destination_metadata": {
            "type": "object",
            "properties": {
              "destination": {
                "type": "string",
                "enum": [
                  "slack",
                  "email",
                  "in_app_chat",
                  "internal",
                  "sms",
                  "whatsapp"
                ],
                "description": "How Pylon should deliver the initial issue message."
              },
              "email": {
                "type": "string",
                "minLength": 1,
                "description": "The configured email address used to send email to the requester."
              },
              "email_ccs": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "A CC email address.",
                  "format": "email"
                },
                "description": "Email addresses to CC on the message."
              },
              "email_bccs": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "A BCC email address.",
                  "format": "email"
                },
                "description": "Email addresses to BCC on the message."
              },
              "chat_widget_app_id": {
                "type": "string",
                "minLength": 1,
                "description": "The chat widget app ID used for in-app chat delivery."
              },
              "from_sms_phone_number_id": {
                "type": "string",
                "minLength": 1,
                "description": "The Telnyx phone number ID used for SMS delivery."
              },
              "whatsapp_app_id": {
                "type": "string",
                "minLength": 1,
                "description": "The WhatsApp app ID used for WhatsApp delivery."
              },
              "whatsapp_message_template_language": {
                "type": "string",
                "minLength": 1,
                "description": "The WhatsApp message template language."
              },
              "whatsapp_message_template_name": {
                "type": "string",
                "minLength": 1,
                "description": "The WhatsApp message template name."
              }
            },
            "additionalProperties": false,
            "description": "Delivery metadata for a newly created Pylon issue."
          }
        },
        "additionalProperties": false,
        "required": [
          "title",
          "body_html"
        ],
        "description": "Input for creating a Pylon issue."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "issue": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Pylon issue ID."
              },
              "number": {
                "type": "integer",
                "description": "The Pylon issue number."
              },
              "title": {
                "type": "string",
                "description": "The issue title."
              },
              "body_html": {
                "type": "string",
                "description": "The issue body in HTML."
              },
              "state": {
                "type": "string",
                "description": "The current issue state or custom status slug."
              },
              "type": {
                "type": "string",
                "enum": [
                  "conversation",
                  "ticket"
                ],
                "description": "The issue type."
              },
              "link": {
                "type": "string",
                "description": "The link to the issue in Pylon."
              },
              "created_at": {
                "type": "string",
                "description": "The time when the issue was created."
              },
              "updated_at": {
                "type": "string",
                "description": "The time when the issue was last updated."
              }
            },
            "additionalProperties": true,
            "description": "A Pylon issue."
          }
        },
        "additionalProperties": false,
        "description": "The created issue returned by Pylon."
      }
    },
    {
      "id": "pylon.create_issue_note",
      "service": "pylon",
      "name": "create_issue_note",
      "description": "Create an internal note on a Pylon issue.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Pylon issue ID."
          },
          "body_html": {
            "type": "string",
            "minLength": 1,
            "description": "The HTML body of the internal note."
          },
          "attachment_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A publicly reachable attachment URL.",
              "format": "uri"
            },
            "description": "Publicly reachable attachment URLs for Pylon to fetch and attach."
          },
          "message_id": {
            "type": "string",
            "minLength": 1,
            "description": "The internal note message ID to reply to."
          },
          "thread_id": {
            "type": "string",
            "minLength": 1,
            "description": "The internal thread ID to post the note to."
          },
          "thread_name": {
            "type": "string",
            "minLength": 1,
            "description": "The thread name to use if Pylon creates a new internal thread."
          },
          "user_id": {
            "type": "string",
            "minLength": 1,
            "description": "The internal user ID to post the note as."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "body_html"
        ],
        "description": "Input for creating a Pylon internal issue note."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "note": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The ID of the created message."
              },
              "issue_id": {
                "type": "string",
                "description": "The ID of the issue that received the note."
              }
            },
            "additionalProperties": false,
            "description": "The Pylon message identifiers returned after creating a note."
          }
        },
        "additionalProperties": false,
        "description": "The created note returned by Pylon."
      }
    },
    {
      "id": "pylon.get_account",
      "service": "pylon",
      "name": "get_account",
      "description": "Fetch one Pylon account by account ID or external ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Pylon account ID or external ID."
          }
        },
        "additionalProperties": false,
        "description": "Input for fetching one Pylon account."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "account": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Pylon account ID."
              },
              "name": {
                "type": "string",
                "description": "The account name."
              },
              "primary_domain": {
                "type": "string",
                "description": "The account's primary domain."
              },
              "domains": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "An account domain."
                },
                "description": "Domains associated with the account."
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "An account tag."
                },
                "description": "Tags associated with the account."
              },
              "type": {
                "type": "string",
                "description": "The account type."
              },
              "created_at": {
                "type": "string",
                "description": "The time when the account was created."
              },
              "updated_at": {
                "type": "string",
                "description": "The time when the account was last updated."
              }
            },
            "additionalProperties": true,
            "description": "A Pylon account."
          }
        },
        "additionalProperties": false,
        "description": "The account returned by Pylon."
      }
    },
    {
      "id": "pylon.get_contact",
      "service": "pylon",
      "name": "get_contact",
      "description": "Fetch one Pylon contact by contact ID with optional paginated account context.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Pylon contact ID."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "The pagination cursor returned by a previous Pylon request."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 999,
            "description": "The number of related accounts to fetch. Pylon requires this query value and accepts values from 1 through 999."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "limit"
        ],
        "description": "Input for fetching one Pylon contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "pagination": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "cursor": {
                    "type": "string",
                    "description": "The cursor for the next page of results."
                  },
                  "has_next_page": {
                    "type": "boolean",
                    "description": "Whether another page of results is available."
                  }
                },
                "additionalProperties": false,
                "description": "Cursor pagination metadata returned by Pylon."
              },
              {
                "type": "null"
              }
            ]
          },
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Pylon contact ID."
              },
              "name": {
                "type": "string",
                "description": "The contact name."
              },
              "email": {
                "type": "string",
                "description": "The contact's primary email address."
              },
              "emails": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "A contact email address."
                },
                "description": "All email addresses for the contact."
              },
              "phone_numbers": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "A contact phone number."
                },
                "description": "Phone numbers for the contact."
              },
              "account": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The account associated with the contact."
              }
            },
            "additionalProperties": true,
            "description": "A Pylon contact."
          }
        },
        "additionalProperties": false,
        "description": "The contact returned by Pylon."
      }
    },
    {
      "id": "pylon.get_issue",
      "service": "pylon",
      "name": "get_issue",
      "description": "Fetch one Pylon issue by ID or issue number.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Pylon issue ID or issue number."
          }
        },
        "additionalProperties": false,
        "description": "Input for fetching one Pylon issue."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "issue": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Pylon issue ID."
              },
              "number": {
                "type": "integer",
                "description": "The Pylon issue number."
              },
              "title": {
                "type": "string",
                "description": "The issue title."
              },
              "body_html": {
                "type": "string",
                "description": "The issue body in HTML."
              },
              "state": {
                "type": "string",
                "description": "The current issue state or custom status slug."
              },
              "type": {
                "type": "string",
                "enum": [
                  "conversation",
                  "ticket"
                ],
                "description": "The issue type."
              },
              "link": {
                "type": "string",
                "description": "The link to the issue in Pylon."
              },
              "created_at": {
                "type": "string",
                "description": "The time when the issue was created."
              },
              "updated_at": {
                "type": "string",
                "description": "The time when the issue was last updated."
              }
            },
            "additionalProperties": true,
            "description": "A Pylon issue."
          }
        },
        "additionalProperties": false,
        "description": "The issue returned by Pylon."
      }
    },
    {
      "id": "pylon.get_me",
      "service": "pylon",
      "name": "get_me",
      "description": "Fetch the Pylon organization associated with the API token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input for fetching the Pylon organization."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "organization": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Pylon organization ID."
              },
              "name": {
                "type": "string",
                "description": "The Pylon organization name."
              }
            },
            "additionalProperties": false,
            "description": "A Pylon organization returned by the /me endpoint."
          }
        },
        "additionalProperties": false,
        "description": "The organization returned by Pylon."
      }
    },
    {
      "id": "pylon.list_issue_messages",
      "service": "pylon",
      "name": "list_issue_messages",
      "description": "List messages, replies, and internal notes on one Pylon issue.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Pylon issue ID."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "The pagination cursor returned by a previous Pylon request."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "description": "The number of messages to fetch. Pylon accepts values from 1 through 1000."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input for listing Pylon issue messages."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "pagination": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "cursor": {
                    "type": "string",
                    "description": "The cursor for the next page of results."
                  },
                  "has_next_page": {
                    "type": "boolean",
                    "description": "Whether another page of results is available."
                  }
                },
                "additionalProperties": false,
                "description": "Cursor pagination metadata returned by Pylon."
              },
              {
                "type": "null"
              }
            ]
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Pylon message ID."
                },
                "message_html": {
                  "type": "string",
                  "description": "The message body in HTML."
                },
                "is_private": {
                  "type": "boolean",
                  "description": "Whether this message is private."
                },
                "source": {
                  "type": "string",
                  "description": "The message source."
                },
                "timestamp": {
                  "type": "string",
                  "description": "The time when the message was created."
                }
              },
              "additionalProperties": true,
              "description": "A Pylon issue message."
            },
            "description": "The issue messages returned by Pylon."
          }
        },
        "additionalProperties": false,
        "description": "The paginated messages returned by Pylon."
      }
    },
    {
      "id": "pylon.list_issues",
      "service": "pylon",
      "name": "list_issues",
      "description": "List Pylon issues within a required time range of up to 30 days.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "start_time": {
            "type": "string",
            "description": "The start time of the issue range in RFC3339 format.",
            "format": "date-time"
          },
          "end_time": {
            "type": "string",
            "description": "The end time of the issue range in RFC3339 format.",
            "format": "date-time"
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "The pagination cursor returned by a previous Pylon request."
          },
          "limit": {
            "type": "integer",
            "minimum": 0,
            "maximum": 20000,
            "description": "The number of issues to fetch. Pylon accepts 0 through 20000."
          }
        },
        "additionalProperties": false,
        "required": [
          "start_time",
          "end_time"
        ],
        "description": "Input for listing Pylon issues. The runtime rejects ranges where start_time is after end_time or the range exceeds 30 days."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "pagination": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "cursor": {
                    "type": "string",
                    "description": "The cursor for the next page of results."
                  },
                  "has_next_page": {
                    "type": "boolean",
                    "description": "Whether another page of results is available."
                  }
                },
                "additionalProperties": false,
                "description": "Cursor pagination metadata returned by Pylon."
              },
              {
                "type": "null"
              }
            ]
          },
          "issues": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Pylon issue ID."
                },
                "number": {
                  "type": "integer",
                  "description": "The Pylon issue number."
                },
                "title": {
                  "type": "string",
                  "description": "The issue title."
                },
                "body_html": {
                  "type": "string",
                  "description": "The issue body in HTML."
                },
                "state": {
                  "type": "string",
                  "description": "The current issue state or custom status slug."
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "conversation",
                    "ticket"
                  ],
                  "description": "The issue type."
                },
                "link": {
                  "type": "string",
                  "description": "The link to the issue in Pylon."
                },
                "created_at": {
                  "type": "string",
                  "description": "The time when the issue was created."
                },
                "updated_at": {
                  "type": "string",
                  "description": "The time when the issue was last updated."
                }
              },
              "additionalProperties": true,
              "description": "A Pylon issue."
            },
            "description": "The issues returned by Pylon."
          }
        },
        "additionalProperties": false,
        "description": "The paginated issues returned by Pylon."
      }
    },
    {
      "id": "pylon.search_accounts",
      "service": "pylon",
      "name": "search_accounts",
      "description": "Search Pylon accounts with a filter and optional fuzzy text search.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "object",
            "properties": {
              "field": {
                "type": "string",
                "minLength": 1,
                "description": "The Pylon field to filter on."
              },
              "operator": {
                "type": "string",
                "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",
                  "greater_than",
                  "less_than",
                  "greater_than_or_equals",
                  "less_than_or_equals"
                ],
                "description": "The Pylon filter operator."
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "A string filter value."
                  },
                  {
                    "type": "number",
                    "description": "A numeric filter value."
                  },
                  {
                    "type": "boolean",
                    "description": "A boolean filter value."
                  },
                  {
                    "type": "null",
                    "description": "A null filter value."
                  }
                ],
                "description": "A value used in a Pylon search filter."
              },
              "values": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "A string filter value."
                    },
                    {
                      "type": "number",
                      "description": "A numeric filter value."
                    },
                    {
                      "type": "boolean",
                      "description": "A boolean filter value."
                    },
                    {
                      "type": "null",
                      "description": "A null filter value."
                    }
                  ],
                  "description": "A value used in a Pylon search filter."
                },
                "description": "Multiple values for an in-style Pylon search filter."
              },
              "filters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "A nested Pylon filter."
                },
                "description": "Nested filters for compound and/or search filters."
              }
            },
            "additionalProperties": true,
            "description": "A Pylon search filter object."
          },
          "search_text": {
            "type": "string",
            "minLength": 1,
            "description": "Fuzzy text search intersected with the provided account filter."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "The pagination cursor returned by a previous Pylon request."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 999,
            "description": "The number of accounts to fetch. Pylon accepts values from 1 through 999."
          }
        },
        "additionalProperties": false,
        "required": [
          "filter"
        ],
        "description": "Input for searching Pylon accounts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "pagination": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "cursor": {
                    "type": "string",
                    "description": "The cursor for the next page of results."
                  },
                  "has_next_page": {
                    "type": "boolean",
                    "description": "Whether another page of results is available."
                  }
                },
                "additionalProperties": false,
                "description": "Cursor pagination metadata returned by Pylon."
              },
              {
                "type": "null"
              }
            ]
          },
          "accounts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Pylon account ID."
                },
                "name": {
                  "type": "string",
                  "description": "The account name."
                },
                "primary_domain": {
                  "type": "string",
                  "description": "The account's primary domain."
                },
                "domains": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "An account domain."
                  },
                  "description": "Domains associated with the account."
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "An account tag."
                  },
                  "description": "Tags associated with the account."
                },
                "type": {
                  "type": "string",
                  "description": "The account type."
                },
                "created_at": {
                  "type": "string",
                  "description": "The time when the account was created."
                },
                "updated_at": {
                  "type": "string",
                  "description": "The time when the account was last updated."
                }
              },
              "additionalProperties": true,
              "description": "A Pylon account."
            },
            "description": "The accounts returned by Pylon."
          }
        },
        "additionalProperties": false,
        "description": "The paginated accounts returned by Pylon."
      }
    },
    {
      "id": "pylon.search_contacts",
      "service": "pylon",
      "name": "search_contacts",
      "description": "Search Pylon contacts with a filter and optional fuzzy text search.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "object",
            "properties": {
              "field": {
                "type": "string",
                "minLength": 1,
                "description": "The Pylon field to filter on."
              },
              "operator": {
                "type": "string",
                "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",
                  "greater_than",
                  "less_than",
                  "greater_than_or_equals",
                  "less_than_or_equals"
                ],
                "description": "The Pylon filter operator."
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "A string filter value."
                  },
                  {
                    "type": "number",
                    "description": "A numeric filter value."
                  },
                  {
                    "type": "boolean",
                    "description": "A boolean filter value."
                  },
                  {
                    "type": "null",
                    "description": "A null filter value."
                  }
                ],
                "description": "A value used in a Pylon search filter."
              },
              "values": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "A string filter value."
                    },
                    {
                      "type": "number",
                      "description": "A numeric filter value."
                    },
                    {
                      "type": "boolean",
                      "description": "A boolean filter value."
                    },
                    {
                      "type": "null",
                      "description": "A null filter value."
                    }
                  ],
                  "description": "A value used in a Pylon search filter."
                },
                "description": "Multiple values for an in-style Pylon search filter."
              },
              "filters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "A nested Pylon filter."
                },
                "description": "Nested filters for compound and/or search filters."
              }
            },
            "additionalProperties": true,
            "description": "A Pylon search filter object."
          },
          "search_text": {
            "type": "string",
            "minLength": 1,
            "description": "Fuzzy text search intersected with the provided contact filter."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "The pagination cursor returned by a previous Pylon request."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 999,
            "description": "The number of contacts to fetch. Pylon accepts values from 1 through 999."
          }
        },
        "additionalProperties": false,
        "required": [
          "filter"
        ],
        "description": "Input for searching Pylon contacts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "pagination": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "cursor": {
                    "type": "string",
                    "description": "The cursor for the next page of results."
                  },
                  "has_next_page": {
                    "type": "boolean",
                    "description": "Whether another page of results is available."
                  }
                },
                "additionalProperties": false,
                "description": "Cursor pagination metadata returned by Pylon."
              },
              {
                "type": "null"
              }
            ]
          },
          "contacts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Pylon contact ID."
                },
                "name": {
                  "type": "string",
                  "description": "The contact name."
                },
                "email": {
                  "type": "string",
                  "description": "The contact's primary email address."
                },
                "emails": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "A contact email address."
                  },
                  "description": "All email addresses for the contact."
                },
                "phone_numbers": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "A contact phone number."
                  },
                  "description": "Phone numbers for the contact."
                },
                "account": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The account associated with the contact."
                }
              },
              "additionalProperties": true,
              "description": "A Pylon contact."
            },
            "description": "The contacts returned by Pylon."
          }
        },
        "additionalProperties": false,
        "description": "The paginated contacts returned by Pylon."
      }
    },
    {
      "id": "pylon.update_issue",
      "service": "pylon",
      "name": "update_issue",
      "description": "Update mutable fields on one Pylon issue by ID or issue number.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Pylon issue ID or issue number."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The updated issue title."
          },
          "state": {
            "type": "string",
            "minLength": 1,
            "description": "The new issue state or custom status slug."
          },
          "type": {
            "type": "string",
            "enum": [
              "conversation",
              "ticket"
            ],
            "description": "The updated issue type."
          },
          "account_id": {
            "type": "string",
            "minLength": 1,
            "description": "The account this issue belongs to."
          },
          "requester_id": {
            "type": "string",
            "minLength": 1,
            "description": "The contact this issue is on behalf of."
          },
          "assignee_id": {
            "type": "string",
            "description": "The user to assign this issue to. Use an empty string to remove the assignee."
          },
          "team_id": {
            "type": "string",
            "description": "The team to assign this issue to. Use an empty string to remove the team."
          },
          "customer_portal_visible": {
            "type": "boolean",
            "description": "Whether the issue should be visible in the customer portal."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Pylon tag."
            },
            "description": "Tags to set on the Pylon object."
          },
          "custom_fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The slug of the custom field."
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The single value for the custom field. For select or relationship fields, use the option slug or related object ID."
                },
                "values": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "description": "A custom field value."
                  },
                  "description": "The values for a multi-valued custom field, such as a multiselect field."
                }
              },
              "additionalProperties": false,
              "required": [
                "slug"
              ],
              "description": "A Pylon custom field value."
            },
            "description": "Custom field values to apply to the Pylon object."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input for updating a Pylon issue. The runtime requires at least one mutable issue field."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "request_id": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Pylon request ID for tracking this API call."
              },
              {
                "type": "null"
              }
            ]
          },
          "issue": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Pylon issue ID."
              },
              "number": {
                "type": "integer",
                "description": "The Pylon issue number."
              },
              "title": {
                "type": "string",
                "description": "The issue title."
              },
              "body_html": {
                "type": "string",
                "description": "The issue body in HTML."
              },
              "state": {
                "type": "string",
                "description": "The current issue state or custom status slug."
              },
              "type": {
                "type": "string",
                "enum": [
                  "conversation",
                  "ticket"
                ],
                "description": "The issue type."
              },
              "link": {
                "type": "string",
                "description": "The link to the issue in Pylon."
              },
              "created_at": {
                "type": "string",
                "description": "The time when the issue was created."
              },
              "updated_at": {
                "type": "string",
                "description": "The time when the issue was last updated."
              }
            },
            "additionalProperties": true,
            "description": "A Pylon issue."
          }
        },
        "additionalProperties": false,
        "description": "The updated issue returned by Pylon."
      }
    }
  ]
}
