{
  "service": "ipqualityscore",
  "displayName": "IPQualityScore",
  "categories": [
    "Security",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "IPQUALITYSCORE_API_KEY",
      "description": "IPQualityScore API key embedded in fraud detection API request URLs. Create or view API keys from the IPQS user dashboard: https://www.ipqualityscore.com/user/settings."
    }
  ],
  "homepageUrl": "https://www.ipqualityscore.com/",
  "actions": [
    {
      "id": "ipqualityscore.check_ip_reputation",
      "service": "ipqualityscore",
      "name": "check_ip_reputation",
      "description": "Check an IP address for proxy, VPN, Tor, bot, and abuse risk signals.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ipAddress": {
            "type": "string",
            "minLength": 1,
            "description": "The IPv4 or IPv6 address to inspect."
          },
          "strictness": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3,
            "description": "How strict IPQS should be when scoring the lookup. Higher values may increase false positives."
          },
          "allowPublicAccessPoints": {
            "type": "boolean",
            "description": "Whether to reduce risk flags for public access points such as schools or libraries."
          },
          "userAgent": {
            "type": "string",
            "minLength": 1,
            "description": "The user agent associated with the IP lookup."
          },
          "userLanguage": {
            "type": "string",
            "minLength": 1,
            "description": "The browser language associated with the IP lookup."
          }
        },
        "additionalProperties": false,
        "required": [
          "ipAddress"
        ],
        "description": "Input for checking IP address reputation with IPQualityScore."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether IPQS completed the IP reputation lookup successfully."
          },
          "message": {
            "type": "string",
            "description": "Human-readable status message returned by IPQS."
          },
          "fraud_score": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "The risk score returned by IPQS from 0 to 100."
          },
          "country_code": {
            "anyOf": [
              {
                "type": "string",
                "description": "The two-letter country code associated with the IP."
              },
              {
                "type": "null"
              }
            ]
          },
          "region": {
            "anyOf": [
              {
                "type": "string",
                "description": "The region associated with the IP."
              },
              {
                "type": "null"
              }
            ]
          },
          "city": {
            "anyOf": [
              {
                "type": "string",
                "description": "The city associated with the IP."
              },
              {
                "type": "null"
              }
            ]
          },
          "ISP": {
            "anyOf": [
              {
                "type": "string",
                "description": "The internet service provider associated with the IP."
              },
              {
                "type": "null"
              }
            ]
          },
          "ASN": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The autonomous system number associated with the IP."
              },
              {
                "type": "null"
              }
            ]
          },
          "organization": {
            "anyOf": [
              {
                "type": "string",
                "description": "The organization associated with the IP."
              },
              {
                "type": "null"
              }
            ]
          },
          "is_crawler": {
            "type": "boolean",
            "description": "Whether IPQS identified the IP as a crawler."
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string",
                "description": "The timezone associated with the IP."
              },
              {
                "type": "null"
              }
            ]
          },
          "mobile": {
            "type": "boolean",
            "description": "Whether the IP appears to belong to a mobile connection."
          },
          "host": {
            "anyOf": [
              {
                "type": "string",
                "description": "The host associated with the IP."
              },
              {
                "type": "null"
              }
            ]
          },
          "proxy": {
            "type": "boolean",
            "description": "Whether IPQS identified the IP as a proxy."
          },
          "vpn": {
            "type": "boolean",
            "description": "Whether IPQS identified the IP as a VPN."
          },
          "tor": {
            "type": "boolean",
            "description": "Whether IPQS identified the IP as Tor."
          },
          "active_vpn": {
            "type": "boolean",
            "description": "Whether IPQS identified an active VPN connection."
          },
          "active_tor": {
            "type": "boolean",
            "description": "Whether IPQS identified an active Tor connection."
          },
          "recent_abuse": {
            "type": "boolean",
            "description": "Whether IPQS has seen recent abuse from the IP."
          },
          "bot_status": {
            "type": "boolean",
            "description": "Whether IPQS identified bot behavior for the IP."
          },
          "connection_type": {
            "anyOf": [
              {
                "type": "string",
                "description": "The connection type associated with the IP."
              },
              {
                "type": "null"
              }
            ]
          },
          "abuse_velocity": {
            "anyOf": [
              {
                "type": "string",
                "description": "The recent abuse velocity associated with the IP."
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "type": "string",
            "description": "The IPQS request identifier for support and tracing."
          }
        },
        "additionalProperties": true,
        "required": [
          "success",
          "message",
          "fraud_score"
        ],
        "description": "IP reputation result returned by IPQualityScore."
      }
    },
    {
      "id": "ipqualityscore.scan_url",
      "service": "ipqualityscore",
      "name": "scan_url",
      "description": "Scan a URL or domain and return malware, phishing, and domain risk signals.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "description": "The URL or domain to scan."
          },
          "strictness": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2,
            "description": "How strict IPQS should be when scanning the URL. Higher values may increase false positives."
          }
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "description": "Input for scanning a URL or domain with IPQualityScore."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether IPQS completed the URL scan successfully."
          },
          "message": {
            "type": "string",
            "description": "Human-readable status message returned by IPQS."
          },
          "unsafe": {
            "type": "boolean",
            "description": "Whether IPQS considers the URL unsafe."
          },
          "domain": {
            "anyOf": [
              {
                "type": "string",
                "description": "The domain parsed from the submitted URL."
              },
              {
                "type": "null"
              }
            ]
          },
          "root_domain": {
            "anyOf": [
              {
                "type": "string",
                "description": "The root domain parsed from the submitted URL."
              },
              {
                "type": "null"
              }
            ]
          },
          "ip_address": {
            "anyOf": [
              {
                "type": "string",
                "description": "The IP address associated with the domain."
              },
              {
                "type": "null"
              }
            ]
          },
          "server": {
            "anyOf": [
              {
                "type": "string",
                "description": "The server header or hosting stack returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "content_type": {
            "anyOf": [
              {
                "type": "string",
                "description": "The content type returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "status_code": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The HTTP status code returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "page_size": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The page size returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "domain_rank": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The domain rank returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "dns_valid": {
            "type": "boolean",
            "description": "Whether DNS records for the domain are valid."
          },
          "parking": {
            "type": "boolean",
            "description": "Whether IPQS considers the domain parked."
          },
          "spamming": {
            "type": "boolean",
            "description": "Whether IPQS associates the URL with spam."
          },
          "malware": {
            "type": "boolean",
            "description": "Whether IPQS associates the URL with malware."
          },
          "phishing": {
            "type": "boolean",
            "description": "Whether IPQS associates the URL with phishing."
          },
          "suspicious": {
            "type": "boolean",
            "description": "Whether IPQS considers the URL suspicious."
          },
          "adult": {
            "type": "boolean",
            "description": "Whether IPQS classifies the URL as adult content."
          },
          "risk_score": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "The risk score returned by IPQS from 0 to 100."
          },
          "domain_age": {
            "type": "object",
            "properties": {
              "human": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Human-readable domain age returned by IPQS."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "timestamp": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Domain creation timestamp returned by IPQS."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "iso": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Domain creation date returned by IPQS."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Domain age details returned by IPQualityScore."
          },
          "category": {
            "anyOf": [
              {
                "type": "string",
                "description": "The content category returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "domain_trust": {
            "anyOf": [
              {
                "type": "string",
                "description": "The domain trust classification returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "type": "string",
            "description": "The IPQS request identifier for support and tracing."
          }
        },
        "additionalProperties": true,
        "required": [
          "success",
          "message",
          "unsafe"
        ],
        "description": "URL reputation result returned by IPQualityScore."
      }
    },
    {
      "id": "ipqualityscore.validate_email",
      "service": "ipqualityscore",
      "name": "validate_email",
      "description": "Validate an email address and return deliverability and abuse risk signals.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address to validate.",
            "format": "email"
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 60,
            "description": "Maximum number of seconds IPQS should spend on mail service provider checks."
          },
          "abuseStrictness": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3,
            "description": "How strict IPQS should be when scoring the lookup. Higher values may increase false positives."
          }
        },
        "additionalProperties": false,
        "required": [
          "email"
        ],
        "description": "Input for validating an email address with IPQualityScore."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether IPQS completed the email validation lookup successfully."
          },
          "message": {
            "type": "string",
            "description": "Human-readable status message returned by IPQS."
          },
          "valid": {
            "type": "boolean",
            "description": "Whether IPQS considers the email address valid."
          },
          "disposable": {
            "type": "boolean",
            "description": "Whether the email address belongs to a disposable email provider."
          },
          "smtp_score": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The SMTP deliverability score returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "overall_score": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The overall email quality score returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string",
                "description": "The first name inferred by IPQS, when available."
              },
              {
                "type": "null"
              }
            ]
          },
          "generic": {
            "type": "boolean",
            "description": "Whether IPQS considers the email address generic."
          },
          "common": {
            "type": "boolean",
            "description": "Whether the email address is commonly used."
          },
          "dns_valid": {
            "type": "boolean",
            "description": "Whether DNS records for the email domain are valid."
          },
          "honeypot": {
            "type": "boolean",
            "description": "Whether IPQS identified the email as a honeypot."
          },
          "deliverability": {
            "anyOf": [
              {
                "type": "string",
                "description": "The deliverability classification returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "frequent_complainer": {
            "type": "boolean",
            "description": "Whether the email is associated with frequent complaints."
          },
          "spam_trap_score": {
            "anyOf": [
              {
                "type": "string",
                "description": "The spam trap score returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "catch_all": {
            "type": "boolean",
            "description": "Whether the email domain accepts all mailbox names."
          },
          "timed_out": {
            "type": "boolean",
            "description": "Whether IPQS timed out during provider checks."
          },
          "suspect": {
            "type": "boolean",
            "description": "Whether IPQS considers the email suspicious."
          },
          "recent_abuse": {
            "type": "boolean",
            "description": "Whether IPQS has seen recent abuse for the email."
          },
          "fraud_score": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "The risk score returned by IPQS from 0 to 100."
          },
          "suggested_domain": {
            "anyOf": [
              {
                "type": "string",
                "description": "Suggested corrected domain for possible typos."
              },
              {
                "type": "null"
              }
            ]
          },
          "leaked": {
            "type": "boolean",
            "description": "Whether IPQS found the email in leaked data."
          },
          "sanitized_email": {
            "type": "string",
            "description": "The normalized email address returned by IPQS.",
            "format": "email"
          },
          "request_id": {
            "type": "string",
            "description": "The IPQS request identifier for support and tracing."
          }
        },
        "additionalProperties": true,
        "required": [
          "success",
          "message",
          "valid"
        ],
        "description": "Email validation result returned by IPQualityScore."
      }
    },
    {
      "id": "ipqualityscore.validate_phone",
      "service": "ipqualityscore",
      "name": "validate_phone",
      "description": "Validate a phone number and return carrier, activity, and risk signals.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "minLength": 1,
            "description": "The phone number to validate."
          },
          "country": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 2,
              "description": "An ISO 3166-1 alpha-2 country code.",
              "pattern": "^[A-Za-z]{2}$"
            },
            "description": "Optional ISO 3166-1 alpha-2 countries to use when interpreting local numbers.",
            "minItems": 1
          },
          "strictness": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3,
            "description": "How strict IPQS should be when scoring the lookup. Higher values may increase false positives."
          }
        },
        "additionalProperties": false,
        "required": [
          "phone"
        ],
        "description": "Input for validating a phone number with IPQualityScore."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether IPQS completed the phone validation lookup successfully."
          },
          "message": {
            "type": "string",
            "description": "Human-readable status message returned by IPQS."
          },
          "formatted": {
            "anyOf": [
              {
                "type": "string",
                "description": "The formatted phone number returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "local_format": {
            "anyOf": [
              {
                "type": "string",
                "description": "The local phone number format returned by IPQS."
              },
              {
                "type": "null"
              }
            ]
          },
          "valid": {
            "type": "boolean",
            "description": "Whether IPQS considers the phone number valid."
          },
          "fraud_score": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "The risk score returned by IPQS from 0 to 100."
          },
          "recent_abuse": {
            "type": "boolean",
            "description": "Whether IPQS has seen recent abuse for the phone number."
          },
          "VOIP": {
            "type": "boolean",
            "description": "Whether the phone number appears to be a VoIP number."
          },
          "prepaid": {
            "type": "boolean",
            "description": "Whether the phone number appears to be prepaid."
          },
          "risky": {
            "type": "boolean",
            "description": "Whether IPQS considers the phone number risky."
          },
          "active": {
            "type": "boolean",
            "description": "Whether IPQS considers the phone number active."
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "description": "The phone owner name returned by IPQS, when available."
              },
              {
                "type": "null"
              }
            ]
          },
          "carrier": {
            "anyOf": [
              {
                "type": "string",
                "description": "The carrier associated with the phone number."
              },
              {
                "type": "null"
              }
            ]
          },
          "line_type": {
            "anyOf": [
              {
                "type": "string",
                "description": "The line type associated with the phone number."
              },
              {
                "type": "null"
              }
            ]
          },
          "country": {
            "anyOf": [
              {
                "type": "string",
                "description": "The country associated with the phone number."
              },
              {
                "type": "null"
              }
            ]
          },
          "city": {
            "anyOf": [
              {
                "type": "string",
                "description": "The city associated with the phone number."
              },
              {
                "type": "null"
              }
            ]
          },
          "zip_code": {
            "anyOf": [
              {
                "type": "string",
                "description": "The postal code associated with the phone number."
              },
              {
                "type": "null"
              }
            ]
          },
          "region": {
            "anyOf": [
              {
                "type": "string",
                "description": "The region associated with the phone number."
              },
              {
                "type": "null"
              }
            ]
          },
          "dialing_code": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The international dialing code associated with the phone number."
              },
              {
                "type": "null"
              }
            ]
          },
          "sms_pumping": {
            "type": "object",
            "properties": {
              "risk_score": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "description": "The risk score returned by IPQS from 0 to 100."
              },
              "message": {
                "type": "string",
                "description": "Human-readable SMS pumping risk message returned by IPQS."
              },
              "velocity": {
                "type": "string",
                "description": "SMS pumping velocity classification returned by IPQS."
              }
            },
            "additionalProperties": true,
            "description": "SMS pumping risk details returned by IPQS."
          },
          "request_id": {
            "type": "string",
            "description": "The IPQS request identifier for support and tracing."
          }
        },
        "additionalProperties": true,
        "required": [
          "success",
          "message",
          "valid"
        ],
        "description": "Phone validation result returned by IPQualityScore."
      }
    }
  ]
}
