{
  "service": "neutrino",
  "displayName": "Neutrino API",
  "categories": [
    "Data",
    "Location",
    "Security"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "NEUTRINO_API_KEY",
      "description": "Neutrino API key sent with the API-Key header. View your API key in the Neutrino API dashboard: https://www.neutrinoapi.com/account/dashboard/.",
      "extraFields": [
        {
          "key": "userId",
          "label": "User ID",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "NEUTRINO_USER_ID",
          "description": "Neutrino User ID paired with the API key and sent with the User-ID header. View it in the Neutrino API dashboard: https://www.neutrinoapi.com/account/dashboard/."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.neutrinoapi.com/",
  "actions": [
    {
      "id": "neutrino.check_ip_blocklist",
      "service": "neutrino",
      "name": "check_ip_blocklist",
      "description": "Check whether an IP address is listed on Neutrino security blocklists.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "minLength": 1,
            "description": "An IPv4 or IPv6 address. CIDR notation, port numbers, and comma-separated IPs are also accepted by Neutrino."
          },
          "vpn-lookup": {
            "type": "boolean",
            "description": "Whether to include public VPN provider IP addresses."
          }
        },
        "additionalProperties": false,
        "required": [
          "ip"
        ],
        "description": "Input parameters for Neutrino IP blocklist lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "The IP address that was checked."
          },
          "is-bot": {
            "type": "boolean",
            "description": "Whether the IP hosts a malicious bot or botnet member."
          },
          "is-exploit-bot": {
            "type": "boolean",
            "description": "Whether the IP is running exploit scanning software."
          },
          "is-malware": {
            "type": "boolean",
            "description": "Whether the IP is involved in distributing or running malware."
          },
          "is-spider": {
            "type": "boolean",
            "description": "Whether the IP is running a hostile web spider."
          },
          "is-dshield": {
            "type": "boolean",
            "description": "Whether DShield flagged the IP as a significant attack source."
          },
          "list-count": {
            "type": "integer",
            "description": "The number of blocklists the IP is listed on."
          },
          "is-proxy": {
            "type": "boolean",
            "description": "Whether the IP is an anonymous web proxy."
          },
          "is-hijacked": {
            "type": "boolean",
            "description": "Whether the IP is part of a hijacked netblock."
          },
          "is-tor": {
            "type": "boolean",
            "description": "Whether the IP is a Tor node or related service."
          },
          "is-spyware": {
            "type": "boolean",
            "description": "Whether the IP is involved in distributing or running spyware."
          },
          "is-spam-bot": {
            "type": "boolean",
            "description": "Whether the IP hosts spam bot software."
          },
          "is-listed": {
            "type": "boolean",
            "description": "Whether the IP is listed on any blocklist."
          },
          "is-vpn": {
            "type": "boolean",
            "description": "Whether the IP belongs to a public VPN provider."
          },
          "last-seen": {
            "type": "integer",
            "description": "The Unix time when this IP was last seen on any blocklist."
          },
          "blocklists": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A category."
            },
            "description": "Blocklist categories this IP is listed on."
          },
          "sensors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The permanent unique sensor ID."
                },
                "blocklist": {
                  "type": "string",
                  "description": "The primary blocklist category this sensor belongs to."
                },
                "description": {
                  "type": "string",
                  "description": "Details about the sensor source and malicious activity type."
                }
              },
              "additionalProperties": true,
              "description": "A Neutrino blocklist sensor entry."
            },
            "description": "Sensors that detected this IP."
          },
          "cidr": {
            "type": "string",
            "description": "The CIDR address for this listing when listed."
          }
        },
        "additionalProperties": true,
        "description": "IP blocklist payload returned by Neutrino."
      }
    },
    {
      "id": "neutrino.get_ip_info",
      "service": "neutrino",
      "name": "get_ip_info",
      "description": "Get Neutrino geolocation and reverse-DNS details for an IP address.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "minLength": 1,
            "description": "An IPv4 or IPv6 address. CIDR notation is also accepted by Neutrino."
          },
          "reverse-lookup": {
            "type": "boolean",
            "description": "Whether to run a reverse DNS PTR lookup."
          }
        },
        "additionalProperties": false,
        "required": [
          "ip"
        ],
        "description": "Input parameters for Neutrino IP info lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "The IPv4 or IPv6 address returned."
          },
          "valid": {
            "type": "boolean",
            "description": "Whether this is a valid IPv4 or IPv6 address."
          },
          "is-v6": {
            "type": "boolean",
            "description": "Whether this is an IPv6 address."
          },
          "is-v4-mapped": {
            "type": "boolean",
            "description": "Whether this is an IPv4-mapped IPv6 address."
          },
          "is-bogon": {
            "type": "boolean",
            "description": "Whether this is a bogon, private, local, or reserved IP address."
          },
          "country": {
            "type": "string",
            "description": "The full country name."
          },
          "country-code": {
            "type": "string",
            "description": "The ISO 2-letter country code."
          },
          "country-code3": {
            "type": "string",
            "description": "The ISO 3-letter country code."
          },
          "continent-code": {
            "type": "string",
            "description": "The ISO 2-letter continent code."
          },
          "currency-code": {
            "type": "string",
            "description": "The ISO 4217 currency code associated with the country."
          },
          "city": {
            "type": "string",
            "description": "The city name when detectable."
          },
          "region": {
            "type": "string",
            "description": "The region name when detectable."
          },
          "region-code": {
            "type": "string",
            "description": "The ISO 3166-2 region code when detectable."
          },
          "language-code": {
            "type": "string",
            "description": "The ISO 2-letter official language code for the country."
          },
          "longitude": {
            "type": "number",
            "description": "The location longitude."
          },
          "latitude": {
            "type": "number",
            "description": "The location latitude."
          },
          "hostname": {
            "type": "string",
            "description": "The full hostname when reverse lookup is enabled."
          },
          "host-domain": {
            "type": "string",
            "description": "The host domain when reverse lookup is enabled."
          },
          "timezone": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The IANA timezone ID, or an empty string if no valid timezone was detected."
              },
              "name": {
                "type": "string",
                "description": "The full timezone name."
              },
              "abbr": {
                "type": "string",
                "description": "The timezone abbreviation."
              },
              "date": {
                "type": "string",
                "description": "The current date in the timezone as YYYY-MM-DD."
              },
              "time": {
                "type": "string",
                "description": "The current time in the timezone."
              },
              "offset": {
                "type": "string",
                "description": "The UTC offset for the timezone in ISO 8601 format."
              }
            },
            "additionalProperties": true,
            "description": "Timezone details returned by Neutrino."
          }
        },
        "additionalProperties": true,
        "description": "IP geolocation payload returned by Neutrino."
      }
    },
    {
      "id": "neutrino.lookup_domain",
      "service": "neutrino",
      "name": "lookup_domain",
      "description": "Get Neutrino domain registration, DNS, mail, website, and blocklist details.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "host": {
            "type": "string",
            "minLength": 1,
            "description": "A domain name, hostname, FQDN, URL, HTML link, or email address."
          },
          "live": {
            "type": "boolean",
            "description": "Whether to perform live checks for domains Neutrino has not seen before."
          }
        },
        "additionalProperties": false,
        "required": [
          "host"
        ],
        "description": "Input parameters for Neutrino domain lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "The primary domain name excluding subdomains."
          },
          "valid": {
            "type": "boolean",
            "description": "Whether a valid registered domain with DNS NS records was found."
          },
          "fqdn": {
            "type": "string",
            "description": "The fully qualified domain name."
          },
          "is-subdomain": {
            "type": "boolean",
            "description": "Whether the FQDN is a subdomain of the primary domain."
          },
          "tld": {
            "type": "string",
            "description": "The top-level domain."
          },
          "tld-cc": {
            "type": "string",
            "description": "The associated ISO 2-letter country code for country-code TLDs."
          },
          "rank": {
            "type": "integer",
            "description": "The estimated global traffic rank, or 0 when outside the top one million."
          },
          "is-gov": {
            "type": "boolean",
            "description": "Whether this domain is under a government or military TLD."
          },
          "is-opennic": {
            "type": "boolean",
            "description": "Whether this domain is under an OpenNIC TLD."
          },
          "is-pending": {
            "type": "boolean",
            "description": "Whether this unseen domain is still being processed."
          },
          "is-adult": {
            "type": "boolean",
            "description": "Whether the domain hosts adult content."
          },
          "is-malicious": {
            "type": "boolean",
            "description": "Whether the domain is listed on at least one blocklist."
          },
          "blocklists": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A category."
            },
            "description": "Blocklist categories this domain is listed on."
          },
          "sensors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The permanent unique sensor ID."
                },
                "blocklist": {
                  "type": "string",
                  "description": "The primary blocklist category this sensor belongs to."
                },
                "description": {
                  "type": "string",
                  "description": "Details about the sensor source and malicious activity type."
                }
              },
              "additionalProperties": true,
              "description": "A Neutrino blocklist sensor entry."
            },
            "description": "Blocklist sensors that detected this domain."
          },
          "registered-date": {
            "type": "string",
            "description": "The ISO registration or first-seen date, or an empty string."
          },
          "age": {
            "type": "integer",
            "description": "The number of days since the domain was registered."
          },
          "registrar-name": {
            "type": "string",
            "description": "The domain registrar name."
          },
          "registrar-id": {
            "type": "integer",
            "description": "The IANA registrar ID, or 0 when unavailable."
          },
          "dns-provider": {
            "type": "string",
            "description": "The primary DNS provider domain."
          },
          "mail-provider": {
            "type": "string",
            "description": "The primary email provider domain, or an empty string."
          },
          "expiry-date": {
            "type": "string",
            "description": "The ISO expiry date, or an empty string."
          },
          "mail-status": {
            "type": "string",
            "description": "The domain mail configuration status."
          },
          "website-status": {
            "type": "string",
            "description": "The domain website configuration status."
          },
          "website-provider": {
            "type": "string",
            "description": "The primary website hosting provider domain, or an empty string."
          }
        },
        "additionalProperties": true,
        "description": "Domain intelligence payload returned by Neutrino."
      }
    },
    {
      "id": "neutrino.validate_email",
      "service": "neutrino",
      "name": "validate_email",
      "description": "Parse, validate, and clean an email address with Neutrino.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "minLength": 1,
            "description": "The email address to parse, validate, and clean."
          },
          "fix-typos": {
            "type": "boolean",
            "description": "Whether to automatically attempt to fix typos in the address."
          }
        },
        "additionalProperties": false,
        "required": [
          "email"
        ],
        "description": "Input parameters for Neutrino email validation."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "valid": {
            "type": "boolean",
            "description": "Whether the email has valid syntax, an active domain, correct DNS records, and operational MX servers."
          },
          "email": {
            "type": "string",
            "description": "The complete email address, corrected when typo fixing is enabled."
          },
          "domain": {
            "type": "string",
            "description": "The domain name of the email address."
          },
          "provider": {
            "type": "string",
            "description": "The domain name of the email hosting provider."
          },
          "mx-ip": {
            "type": "string",
            "description": "The first resolved IP address of the primary MX server, or an empty string."
          },
          "is-freemail": {
            "type": "boolean",
            "description": "Whether the address is from a free email provider."
          },
          "is-disposable": {
            "type": "boolean",
            "description": "Whether the address is from a disposable, temporary, or darknet email service."
          },
          "is-personal": {
            "type": "boolean",
            "description": "Whether the address likely belongs to a person."
          },
          "typos-fixed": {
            "type": "boolean",
            "description": "Whether any typos were fixed."
          },
          "syntax-error": {
            "type": "boolean",
            "description": "Whether the address has RFC syntax errors."
          },
          "domain-error": {
            "type": "boolean",
            "description": "Whether the address has domain name or DNS errors."
          },
          "domain-status": {
            "type": "string",
            "description": "The email domain status returned by Neutrino."
          }
        },
        "additionalProperties": true,
        "description": "Email validation result returned by Neutrino."
      }
    },
    {
      "id": "neutrino.validate_phone",
      "service": "neutrino",
      "name": "validate_phone",
      "description": "Parse, validate, format, and locate a phone number with Neutrino.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "minLength": 1,
            "description": "The phone number in international or local format."
          },
          "country-code": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "An ISO 3166-1 alpha-2 country code."
          },
          "ip": {
            "type": "string",
            "description": "A user IP address used to infer the country for local numbers."
          }
        },
        "additionalProperties": false,
        "required": [
          "number"
        ],
        "description": "Input parameters for Neutrino phone validation."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "valid": {
            "type": "boolean",
            "description": "Whether this is a valid phone number."
          },
          "type": {
            "type": "string",
            "description": "The number type based on the number prefix."
          },
          "international-calling-code": {
            "type": "string",
            "description": "The international calling code."
          },
          "international-number": {
            "type": "string",
            "description": "The number represented in E.164 format."
          },
          "local-number": {
            "type": "string",
            "description": "The number represented in local dialing format."
          },
          "location": {
            "type": "string",
            "description": "The phone number location."
          },
          "country": {
            "type": "string",
            "description": "The phone number country."
          },
          "country-code": {
            "type": "string",
            "description": "The phone number country as an ISO 2-letter country code."
          },
          "country-code3": {
            "type": "string",
            "description": "The phone number country as an ISO 3-letter country code."
          },
          "currency-code": {
            "type": "string",
            "description": "The ISO 4217 currency code associated with the country."
          },
          "is-mobile": {
            "type": "boolean",
            "description": "Whether this is a mobile number."
          },
          "prefix-network": {
            "type": "string",
            "description": "The network or carrier that owns the prefix when available."
          }
        },
        "additionalProperties": true,
        "description": "Phone validation result returned by Neutrino."
      }
    }
  ]
}
