{
  "service": "cutt_ly",
  "displayName": "Cuttly",
  "categories": [
    "Marketing",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "CUTTLY_API_KEY",
      "description": "Cuttly API key passed with the key query parameter. Generate it from the Edit Account page described in the API docs: https://cutt.ly/api-documentation/cuttly-links-api"
    }
  ],
  "homepageUrl": "https://cutt.ly",
  "actions": [
    {
      "id": "cutt_ly.get_link_analytics",
      "service": "cutt_ly",
      "name": "get_link_analytics",
      "description": "Retrieve click analytics for a Cuttly short URL.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "shortUrl": {
            "type": "string",
            "description": "The shortened URL to inspect in Cuttly analytics.",
            "format": "uri"
          },
          "dateFrom": {
            "type": "string",
            "description": "Inclusive start date in YYYY-MM-DD format for the analytics query.",
            "format": "date"
          },
          "dateTo": {
            "type": "string",
            "description": "Inclusive end date in YYYY-MM-DD format for the analytics query.",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "required": [
          "shortUrl"
        ],
        "description": "The input payload for retrieving Cuttly link analytics."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "shortUrl": {
            "type": "string",
            "description": "The shortened URL returned by the analytics API.",
            "format": "uri"
          },
          "url": {
            "type": "string",
            "description": "The original destination URL.",
            "format": "uri"
          },
          "title": {
            "type": "string",
            "description": "Title of the shortened URL, when available."
          },
          "createdAt": {
            "type": "string",
            "description": "Date string returned by Cuttly for when the short URL was created."
          },
          "totalClicks": {
            "type": "integer",
            "minimum": 0,
            "description": "Total number of successful clicks reported by Cuttly."
          },
          "facebookClicks": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of clicks attributed to Facebook."
          },
          "twitterClicks": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of clicks attributed to Twitter/X."
          },
          "linkedinClicks": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of clicks attributed to LinkedIn."
          },
          "otherClicks": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of clicks attributed to all other sources."
          },
          "botClicks": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of clicks attributed to bots."
          },
          "referrers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "domain": {
                  "type": "string",
                  "description": "Referrer domain returned by Cuttly."
                },
                "clicks": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Number of clicks attributed to this referrer."
                }
              },
              "additionalProperties": false,
              "required": [
                "domain",
                "clicks"
              ],
              "description": "Single Cuttly referrer breakdown entry."
            },
            "description": "Clicks grouped by referrer domain returned by Cuttly."
          },
          "countries": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "tag": {
                  "type": "string",
                  "description": "Breakdown tag returned by Cuttly."
                },
                "clicks": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Number of clicks attributed to this breakdown entry."
                }
              },
              "additionalProperties": false,
              "required": [
                "tag",
                "clicks"
              ],
              "description": "Single Cuttly analytics breakdown entry."
            },
            "description": "Clicks grouped by country code returned by Cuttly."
          },
          "deviceTypes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "tag": {
                  "type": "string",
                  "description": "Breakdown tag returned by Cuttly."
                },
                "clicks": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Number of clicks attributed to this breakdown entry."
                }
              },
              "additionalProperties": false,
              "required": [
                "tag",
                "clicks"
              ],
              "description": "Single Cuttly analytics breakdown entry."
            },
            "description": "Clicks grouped by device type returned by Cuttly."
          },
          "operatingSystems": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "tag": {
                  "type": "string",
                  "description": "Breakdown tag returned by Cuttly."
                },
                "clicks": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Number of clicks attributed to this breakdown entry."
                }
              },
              "additionalProperties": false,
              "required": [
                "tag",
                "clicks"
              ],
              "description": "Single Cuttly analytics breakdown entry."
            },
            "description": "Clicks grouped by operating system returned by Cuttly."
          },
          "browsers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "tag": {
                  "type": "string",
                  "description": "Breakdown tag returned by Cuttly."
                },
                "clicks": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Number of clicks attributed to this breakdown entry."
                }
              },
              "additionalProperties": false,
              "required": [
                "tag",
                "clicks"
              ],
              "description": "Single Cuttly analytics breakdown entry."
            },
            "description": "Clicks grouped by browser returned by Cuttly."
          },
          "brands": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "tag": {
                  "type": "string",
                  "description": "Breakdown tag returned by Cuttly."
                },
                "clicks": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Number of clicks attributed to this breakdown entry."
                }
              },
              "additionalProperties": false,
              "required": [
                "tag",
                "clicks"
              ],
              "description": "Single Cuttly analytics breakdown entry."
            },
            "description": "Clicks grouped by device brand returned by Cuttly."
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "tag": {
                  "type": "string",
                  "description": "Breakdown tag returned by Cuttly."
                },
                "clicks": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Number of clicks attributed to this breakdown entry."
                }
              },
              "additionalProperties": false,
              "required": [
                "tag",
                "clicks"
              ],
              "description": "Single Cuttly analytics breakdown entry."
            },
            "description": "Clicks grouped by device language returned by Cuttly."
          },
          "bots": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Bot name returned by Cuttly."
                },
                "clicks": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Number of clicks attributed to this bot."
                }
              },
              "additionalProperties": false,
              "required": [
                "name",
                "clicks"
              ],
              "description": "Single Cuttly bot breakdown entry."
            },
            "description": "Clicks grouped by bot name returned by Cuttly."
          }
        },
        "additionalProperties": false,
        "required": [
          "shortUrl",
          "url",
          "totalClicks",
          "facebookClicks",
          "twitterClicks",
          "linkedinClicks",
          "otherClicks",
          "botClicks",
          "referrers",
          "countries",
          "deviceTypes",
          "operatingSystems",
          "browsers",
          "brands",
          "languages",
          "bots"
        ],
        "description": "Normalized link analytics returned by the Cuttly analytics API."
      }
    },
    {
      "id": "cutt_ly.shorten_url",
      "service": "cutt_ly",
      "name": "shorten_url",
      "description": "Create a short URL with the Cuttly Regular API.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The destination URL to shorten.",
            "format": "uri"
          },
          "alias": {
            "type": "string",
            "minLength": 1,
            "description": "Preferred custom alias for the shortened URL."
          },
          "useCustomDomain": {
            "type": "boolean",
            "description": "Whether to use the account's active branded domain instead of the default cutt.ly domain."
          },
          "disableTitle": {
            "type": "boolean",
            "description": "Whether to skip fetching the destination page title for faster responses."
          },
          "publicStats": {
            "type": "boolean",
            "description": "Whether to enable public click statistics for the created short URL."
          }
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "description": "The input payload for creating a Cuttly short URL."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "shortUrl": {
            "type": "string",
            "description": "The shortened URL created by Cuttly.",
            "format": "uri"
          },
          "url": {
            "type": "string",
            "description": "The original destination URL.",
            "format": "uri"
          },
          "title": {
            "type": "string",
            "description": "The destination page title returned by Cuttly, when available."
          },
          "createdAt": {
            "type": "string",
            "description": "Date string returned by Cuttly for when the short URL was created."
          }
        },
        "additionalProperties": false,
        "required": [
          "shortUrl",
          "url"
        ],
        "description": "The created short URL returned by Cuttly."
      }
    }
  ]
}
