@keystrokehq/neutrino 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/README.md +1 -1
  2. package/dist/action.cjs.map +1 -1
  3. package/dist/action.mjs.map +1 -1
  4. package/dist/actions/add-watermark-to-image.cjs +5 -5
  5. package/dist/actions/add-watermark-to-image.cjs.map +1 -1
  6. package/dist/actions/add-watermark-to-image.d.cts +44 -3
  7. package/dist/actions/add-watermark-to-image.d.cts.map +1 -1
  8. package/dist/actions/add-watermark-to-image.d.mts +44 -3
  9. package/dist/actions/add-watermark-to-image.d.mts.map +1 -1
  10. package/dist/actions/add-watermark-to-image.mjs +5 -5
  11. package/dist/actions/add-watermark-to-image.mjs.map +1 -1
  12. package/dist/actions/bad-word-filter.cjs +4 -4
  13. package/dist/actions/bad-word-filter.cjs.map +1 -1
  14. package/dist/actions/bad-word-filter.d.cts +23 -3
  15. package/dist/actions/bad-word-filter.d.cts.map +1 -1
  16. package/dist/actions/bad-word-filter.d.mts +23 -3
  17. package/dist/actions/bad-word-filter.d.mts.map +1 -1
  18. package/dist/actions/bad-word-filter.mjs +4 -4
  19. package/dist/actions/bad-word-filter.mjs.map +1 -1
  20. package/dist/actions/bin-lookup.cjs +23 -23
  21. package/dist/actions/bin-lookup.cjs.map +1 -1
  22. package/dist/actions/bin-lookup.d.cts +38 -3
  23. package/dist/actions/bin-lookup.d.cts.map +1 -1
  24. package/dist/actions/bin-lookup.d.mts +38 -3
  25. package/dist/actions/bin-lookup.d.mts.map +1 -1
  26. package/dist/actions/bin-lookup.mjs +23 -23
  27. package/dist/actions/bin-lookup.mjs.map +1 -1
  28. package/dist/actions/check-ip-blocklist.cjs +20 -20
  29. package/dist/actions/check-ip-blocklist.cjs.map +1 -1
  30. package/dist/actions/check-ip-blocklist.d.cts +32 -3
  31. package/dist/actions/check-ip-blocklist.d.cts.map +1 -1
  32. package/dist/actions/check-ip-blocklist.d.mts +32 -3
  33. package/dist/actions/check-ip-blocklist.d.mts.map +1 -1
  34. package/dist/actions/check-ip-blocklist.mjs +20 -20
  35. package/dist/actions/check-ip-blocklist.mjs.map +1 -1
  36. package/dist/actions/convert.cjs +11 -11
  37. package/dist/actions/convert.cjs.map +1 -1
  38. package/dist/actions/convert.d.cts +25 -3
  39. package/dist/actions/convert.d.cts.map +1 -1
  40. package/dist/actions/convert.d.mts +25 -3
  41. package/dist/actions/convert.d.mts.map +1 -1
  42. package/dist/actions/convert.mjs +11 -11
  43. package/dist/actions/convert.mjs.map +1 -1
  44. package/dist/actions/email-validate.cjs +11 -11
  45. package/dist/actions/email-validate.cjs.map +1 -1
  46. package/dist/actions/email-validate.d.cts +22 -3
  47. package/dist/actions/email-validate.d.cts.map +1 -1
  48. package/dist/actions/email-validate.d.mts +22 -3
  49. package/dist/actions/email-validate.d.mts.map +1 -1
  50. package/dist/actions/email-validate.mjs +11 -11
  51. package/dist/actions/email-validate.mjs.map +1 -1
  52. package/dist/actions/email-verify.cjs +17 -17
  53. package/dist/actions/email-verify.cjs.map +1 -1
  54. package/dist/actions/email-verify.d.cts +29 -3
  55. package/dist/actions/email-verify.d.cts.map +1 -1
  56. package/dist/actions/email-verify.d.mts +29 -3
  57. package/dist/actions/email-verify.d.mts.map +1 -1
  58. package/dist/actions/email-verify.mjs +17 -17
  59. package/dist/actions/email-verify.mjs.map +1 -1
  60. package/dist/actions/geocode-address.cjs +5 -5
  61. package/dist/actions/geocode-address.cjs.map +1 -1
  62. package/dist/actions/geocode-address.d.cts +39 -3
  63. package/dist/actions/geocode-address.d.cts.map +1 -1
  64. package/dist/actions/geocode-address.d.mts +39 -3
  65. package/dist/actions/geocode-address.d.mts.map +1 -1
  66. package/dist/actions/geocode-address.mjs +5 -5
  67. package/dist/actions/geocode-address.mjs.map +1 -1
  68. package/dist/actions/geocode-reverse.cjs +5 -5
  69. package/dist/actions/geocode-reverse.cjs.map +1 -1
  70. package/dist/actions/geocode-reverse.d.cts +57 -3
  71. package/dist/actions/geocode-reverse.d.cts.map +1 -1
  72. package/dist/actions/geocode-reverse.d.mts +57 -3
  73. package/dist/actions/geocode-reverse.d.mts.map +1 -1
  74. package/dist/actions/geocode-reverse.mjs +5 -5
  75. package/dist/actions/geocode-reverse.mjs.map +1 -1
  76. package/dist/actions/hlr-lookup.cjs +26 -26
  77. package/dist/actions/hlr-lookup.cjs.map +1 -1
  78. package/dist/actions/hlr-lookup.d.cts +37 -3
  79. package/dist/actions/hlr-lookup.d.cts.map +1 -1
  80. package/dist/actions/hlr-lookup.d.mts +37 -3
  81. package/dist/actions/hlr-lookup.d.mts.map +1 -1
  82. package/dist/actions/hlr-lookup.mjs +26 -26
  83. package/dist/actions/hlr-lookup.mjs.map +1 -1
  84. package/dist/actions/host-reputation.cjs +12 -12
  85. package/dist/actions/host-reputation.cjs.map +1 -1
  86. package/dist/actions/host-reputation.d.cts +24 -3
  87. package/dist/actions/host-reputation.d.cts.map +1 -1
  88. package/dist/actions/host-reputation.d.mts +24 -3
  89. package/dist/actions/host-reputation.d.mts.map +1 -1
  90. package/dist/actions/host-reputation.mjs +12 -12
  91. package/dist/actions/host-reputation.mjs.map +1 -1
  92. package/dist/actions/html-clean.cjs +1 -1
  93. package/dist/actions/html-clean.cjs.map +1 -1
  94. package/dist/actions/html-clean.d.cts +17 -3
  95. package/dist/actions/html-clean.d.cts.map +1 -1
  96. package/dist/actions/html-clean.d.mts +17 -3
  97. package/dist/actions/html-clean.d.mts.map +1 -1
  98. package/dist/actions/html-clean.mjs +1 -1
  99. package/dist/actions/html-clean.mjs.map +1 -1
  100. package/dist/actions/html-render.cjs +3 -3
  101. package/dist/actions/html-render.cjs.map +1 -1
  102. package/dist/actions/html-render.d.cts +62 -3
  103. package/dist/actions/html-render.d.cts.map +1 -1
  104. package/dist/actions/html-render.d.mts +62 -3
  105. package/dist/actions/html-render.d.mts.map +1 -1
  106. package/dist/actions/html-render.mjs +3 -3
  107. package/dist/actions/html-render.mjs.map +1 -1
  108. package/dist/actions/image-resize.cjs +5 -5
  109. package/dist/actions/image-resize.cjs.map +1 -1
  110. package/dist/actions/image-resize.d.cts +32 -3
  111. package/dist/actions/image-resize.d.cts.map +1 -1
  112. package/dist/actions/image-resize.d.mts +32 -3
  113. package/dist/actions/image-resize.d.mts.map +1 -1
  114. package/dist/actions/image-resize.mjs +5 -5
  115. package/dist/actions/image-resize.mjs.map +1 -1
  116. package/dist/actions/ip-info.cjs +2 -2
  117. package/dist/actions/ip-info.cjs.map +1 -1
  118. package/dist/actions/ip-info.d.cts +36 -3
  119. package/dist/actions/ip-info.d.cts.map +1 -1
  120. package/dist/actions/ip-info.d.mts +36 -3
  121. package/dist/actions/ip-info.d.mts.map +1 -1
  122. package/dist/actions/ip-info.mjs +2 -2
  123. package/dist/actions/ip-info.mjs.map +1 -1
  124. package/dist/actions/ip-probe.cjs +3 -3
  125. package/dist/actions/ip-probe.cjs.map +1 -1
  126. package/dist/actions/ip-probe.d.cts +47 -3
  127. package/dist/actions/ip-probe.d.cts.map +1 -1
  128. package/dist/actions/ip-probe.d.mts +47 -3
  129. package/dist/actions/ip-probe.d.mts.map +1 -1
  130. package/dist/actions/ip-probe.mjs +3 -3
  131. package/dist/actions/ip-probe.mjs.map +1 -1
  132. package/dist/actions/lookup-domain.cjs +27 -27
  133. package/dist/actions/lookup-domain.cjs.map +1 -1
  134. package/dist/actions/lookup-domain.d.cts +38 -3
  135. package/dist/actions/lookup-domain.d.cts.map +1 -1
  136. package/dist/actions/lookup-domain.d.mts +38 -3
  137. package/dist/actions/lookup-domain.d.mts.map +1 -1
  138. package/dist/actions/lookup-domain.mjs +27 -27
  139. package/dist/actions/lookup-domain.mjs.map +1 -1
  140. package/dist/actions/phone-validate.cjs +13 -13
  141. package/dist/actions/phone-validate.cjs.map +1 -1
  142. package/dist/actions/phone-validate.d.cts +24 -3
  143. package/dist/actions/phone-validate.d.cts.map +1 -1
  144. package/dist/actions/phone-validate.d.mts +24 -3
  145. package/dist/actions/phone-validate.d.mts.map +1 -1
  146. package/dist/actions/phone-validate.mjs +13 -13
  147. package/dist/actions/phone-validate.mjs.map +1 -1
  148. package/dist/actions/qr-code.cjs +1 -1
  149. package/dist/actions/qr-code.cjs.map +1 -1
  150. package/dist/actions/qr-code.d.cts +22 -3
  151. package/dist/actions/qr-code.d.cts.map +1 -1
  152. package/dist/actions/qr-code.d.mts +22 -3
  153. package/dist/actions/qr-code.d.mts.map +1 -1
  154. package/dist/actions/qr-code.mjs +1 -1
  155. package/dist/actions/qr-code.mjs.map +1 -1
  156. package/dist/actions/run-browser-bot.cjs +7 -7
  157. package/dist/actions/run-browser-bot.cjs.map +1 -1
  158. package/dist/actions/run-browser-bot.d.cts +60 -3
  159. package/dist/actions/run-browser-bot.d.cts.map +1 -1
  160. package/dist/actions/run-browser-bot.d.mts +60 -3
  161. package/dist/actions/run-browser-bot.d.mts.map +1 -1
  162. package/dist/actions/run-browser-bot.mjs +7 -7
  163. package/dist/actions/run-browser-bot.mjs.map +1 -1
  164. package/dist/actions/sms-verify.cjs +4 -4
  165. package/dist/actions/sms-verify.cjs.map +1 -1
  166. package/dist/actions/sms-verify.d.cts +25 -3
  167. package/dist/actions/sms-verify.d.cts.map +1 -1
  168. package/dist/actions/sms-verify.d.mts +25 -3
  169. package/dist/actions/sms-verify.d.mts.map +1 -1
  170. package/dist/actions/sms-verify.mjs +4 -4
  171. package/dist/actions/sms-verify.mjs.map +1 -1
  172. package/dist/actions/ua-lookup.cjs +2 -2
  173. package/dist/actions/ua-lookup.cjs.map +1 -1
  174. package/dist/actions/ua-lookup.d.cts +37 -3
  175. package/dist/actions/ua-lookup.d.cts.map +1 -1
  176. package/dist/actions/ua-lookup.d.mts +37 -3
  177. package/dist/actions/ua-lookup.d.mts.map +1 -1
  178. package/dist/actions/ua-lookup.mjs +2 -2
  179. package/dist/actions/ua-lookup.mjs.map +1 -1
  180. package/dist/actions/url-info.cjs +17 -17
  181. package/dist/actions/url-info.cjs.map +1 -1
  182. package/dist/actions/url-info.d.cts +37 -3
  183. package/dist/actions/url-info.d.cts.map +1 -1
  184. package/dist/actions/url-info.d.mts +37 -3
  185. package/dist/actions/url-info.d.mts.map +1 -1
  186. package/dist/actions/url-info.mjs +17 -17
  187. package/dist/actions/url-info.mjs.map +1 -1
  188. package/dist/actions/verify-security-code.cjs +1 -1
  189. package/dist/actions/verify-security-code.cjs.map +1 -1
  190. package/dist/actions/verify-security-code.d.cts +11 -3
  191. package/dist/actions/verify-security-code.d.cts.map +1 -1
  192. package/dist/actions/verify-security-code.d.mts +11 -3
  193. package/dist/actions/verify-security-code.d.mts.map +1 -1
  194. package/dist/actions/verify-security-code.mjs +1 -1
  195. package/dist/actions/verify-security-code.mjs.map +1 -1
  196. package/dist/catalog.cjs +14 -1
  197. package/dist/catalog.cjs.map +1 -1
  198. package/dist/catalog.d.cts +13 -0
  199. package/dist/catalog.d.mts +13 -0
  200. package/dist/catalog.mjs +14 -1
  201. package/dist/catalog.mjs.map +1 -1
  202. package/dist/execute.cjs +1 -1
  203. package/dist/execute.cjs.map +1 -1
  204. package/dist/execute.mjs +1 -1
  205. package/dist/execute.mjs.map +1 -1
  206. package/package.json +2 -2
@@ -10,30 +10,30 @@ const neutrinoBinLookup = action("NEUTRINO_BIN_LOOKUP", {
10
10
  "output-case": z.enum(["camelCase", "snake_case"]).default("camelCase").describe("Response field name casing style. Use 'camelCase' for JavaScript/JSON standard format or 'snake_case' for Python-friendly format.").optional()
11
11
  }),
12
12
  output: z.object({
13
- valid: z.boolean().describe("True if the BIN is valid"),
14
- issuer: z.string().describe("Card issuer name"),
15
- country: z.string().describe("Full country name of issuer"),
16
- "ip-city": z.string().describe("Customer IP's city (empty if not detectable or customer-ip not provided)"),
17
- "card-type": z.string().describe("Card type (DEBIT, CREDIT, CHARGE CARD)"),
18
- "ip-region": z.string().describe("Customer IP's region (empty if not detectable or customer-ip not provided)"),
19
- "bin-number": z.string().describe("The provided BIN number"),
20
- "card-brand": z.string().describe("Card brand (e.g., VISA, MASTERCARD)"),
21
- "ip-country": z.string().describe("Customer IP's country name (empty if customer-ip not provided)"),
22
- "is-prepaid": z.boolean().describe("True if this is a prepaid card"),
23
- "country-code": z.string().describe("ISO 2-letter country code of issuer"),
24
- "issuer-phone": z.string().describe("Issuer phone number (empty string if not available)"),
25
- "card-category": z.string().describe("Card category (CLASSIC, BUSINESS, CORPORATE, PLATINUM, PREPAID, DANKORT, etc.)"),
26
- "country-code3": z.string().describe("ISO 3-letter country code of issuer"),
27
- "currency-code": z.string().describe("ISO 4217 currency code of issuer country"),
13
+ valid: z.boolean().describe("True if the BIN is valid").nullable(),
14
+ issuer: z.string().describe("Card issuer name").nullable(),
15
+ country: z.string().describe("Full country name of issuer").nullable(),
16
+ "ip-city": z.string().describe("Customer IP's city (empty if not detectable or customer-ip not provided)").nullable(),
17
+ "card-type": z.string().describe("Card type (DEBIT, CREDIT, CHARGE CARD)").nullable(),
18
+ "ip-region": z.string().describe("Customer IP's region (empty if not detectable or customer-ip not provided)").nullable(),
19
+ "bin-number": z.string().describe("The provided BIN number").nullable(),
20
+ "card-brand": z.string().describe("Card brand (e.g., VISA, MASTERCARD)").nullable(),
21
+ "ip-country": z.string().describe("Customer IP's country name (empty if customer-ip not provided)").nullable(),
22
+ "is-prepaid": z.boolean().describe("True if this is a prepaid card").nullable(),
23
+ "country-code": z.string().describe("ISO 2-letter country code of issuer").nullable(),
24
+ "issuer-phone": z.string().describe("Issuer phone number (empty string if not available)").nullable(),
25
+ "card-category": z.string().describe("Card category (CLASSIC, BUSINESS, CORPORATE, PLATINUM, PREPAID, DANKORT, etc.)").nullable(),
26
+ "country-code3": z.string().describe("ISO 3-letter country code of issuer").nullable(),
27
+ "currency-code": z.string().describe("ISO 4217 currency code of issuer country").nullable(),
28
28
  "ip-blocklists": z.array(z.unknown()).describe("List of blocklists that flagged the customer IP (empty list if none)"),
29
- "is-commercial": z.boolean().describe("True if this is a business/commercial card"),
30
- "is-reloadable": z.boolean().describe("True if this prepaid card is reloadable"),
31
- "ip-blocklisted": z.boolean().describe("True if customer IP is on any blocklists"),
32
- "ip-matches-bin": z.boolean().describe("True if customer IP country matches BIN country (false if customer-ip not provided)"),
33
- "issuer-website": z.string().describe("Issuer website URL (empty string if not available)"),
34
- "ip-country-code": z.string().describe("Customer IP's ISO 2-letter country code (empty if customer-ip not provided)"),
35
- "ip-country-code3": z.string().describe("Customer IP's ISO 3-letter country code (empty if customer-ip not provided)")
36
- })
29
+ "is-commercial": z.boolean().describe("True if this is a business/commercial card").nullable(),
30
+ "is-reloadable": z.boolean().describe("True if this prepaid card is reloadable").nullable(),
31
+ "ip-blocklisted": z.boolean().describe("True if customer IP is on any blocklists").nullable(),
32
+ "ip-matches-bin": z.boolean().describe("True if customer IP country matches BIN country (false if customer-ip not provided)").nullable(),
33
+ "issuer-website": z.string().describe("Issuer website URL (empty string if not available)").nullable(),
34
+ "ip-country-code": z.string().describe("Customer IP's ISO 2-letter country code (empty if customer-ip not provided)").nullable(),
35
+ "ip-country-code3": z.string().describe("Customer IP's ISO 3-letter country code (empty if customer-ip not provided)").nullable()
36
+ }).passthrough()
37
37
  });
38
38
  //#endregion
39
39
  export { neutrinoBinLookup };
@@ -1 +1 @@
1
- {"version":3,"file":"bin-lookup.mjs","names":[],"sources":["../../src/actions/bin-lookup.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const NeutrinoBinLookupInput: z.ZodTypeAny = z.object({\n \"bin-number\": z.string().describe(\"The BIN (Bank Identification Number) or IIN (Issuer Identification Number) - typically the first 6-8 digits of a credit/debit card number. Supports 6, 8, and 10-digit BINs.\"),\n \"customer-ip\": z.string().describe(\"Optional customer IP address (IPv4 or IPv6) for additional fraud detection. When provided, the response includes IP geolocation data and checks if the IP country matches the BIN issuer country.\").optional(),\n \"output-case\": z.enum([\"camelCase\", \"snake_case\"]).default(\"camelCase\").describe(\"Response field name casing style. Use 'camelCase' for JavaScript/JSON standard format or 'snake_case' for Python-friendly format.\").optional(),\n});\nexport const NeutrinoBinLookupOutput: z.ZodTypeAny = z.object({\n valid: z.boolean().describe(\"True if the BIN is valid\"),\n issuer: z.string().describe(\"Card issuer name\"),\n country: z.string().describe(\"Full country name of issuer\"),\n \"ip-city\": z.string().describe(\"Customer IP's city (empty if not detectable or customer-ip not provided)\"),\n \"card-type\": z.string().describe(\"Card type (DEBIT, CREDIT, CHARGE CARD)\"),\n \"ip-region\": z.string().describe(\"Customer IP's region (empty if not detectable or customer-ip not provided)\"),\n \"bin-number\": z.string().describe(\"The provided BIN number\"),\n \"card-brand\": z.string().describe(\"Card brand (e.g., VISA, MASTERCARD)\"),\n \"ip-country\": z.string().describe(\"Customer IP's country name (empty if customer-ip not provided)\"),\n \"is-prepaid\": z.boolean().describe(\"True if this is a prepaid card\"),\n \"country-code\": z.string().describe(\"ISO 2-letter country code of issuer\"),\n \"issuer-phone\": z.string().describe(\"Issuer phone number (empty string if not available)\"),\n \"card-category\": z.string().describe(\"Card category (CLASSIC, BUSINESS, CORPORATE, PLATINUM, PREPAID, DANKORT, etc.)\"),\n \"country-code3\": z.string().describe(\"ISO 3-letter country code of issuer\"),\n \"currency-code\": z.string().describe(\"ISO 4217 currency code of issuer country\"),\n \"ip-blocklists\": z.array(z.unknown()).describe(\"List of blocklists that flagged the customer IP (empty list if none)\"),\n \"is-commercial\": z.boolean().describe(\"True if this is a business/commercial card\"),\n \"is-reloadable\": z.boolean().describe(\"True if this prepaid card is reloadable\"),\n \"ip-blocklisted\": z.boolean().describe(\"True if customer IP is on any blocklists\"),\n \"ip-matches-bin\": z.boolean().describe(\"True if customer IP country matches BIN country (false if customer-ip not provided)\"),\n \"issuer-website\": z.string().describe(\"Issuer website URL (empty string if not available)\"),\n \"ip-country-code\": z.string().describe(\"Customer IP's ISO 2-letter country code (empty if customer-ip not provided)\"),\n \"ip-country-code3\": z.string().describe(\"Customer IP's ISO 3-letter country code (empty if customer-ip not provided)\"),\n});\n\nexport const neutrinoBinLookup = action(\"NEUTRINO_BIN_LOOKUP\", {\n slug: \"neutrino-bin-lookup\",\n name: \"BIN Lookup\",\n description: \"Perform a BIN (Bank Identification Number) lookup to retrieve comprehensive card issuer information. This tool identifies the card brand (VISA, MASTERCARD, AMEX, etc.), card type (debit/credit), issuer details, and issuer country from the first 6-8 digits of a card number. Optionally performs fraud detection by comparing the customer's IP geolocation with the card issuer country. Use cases: - Payment fraud detection and prevention - Card validation before processing transactions - Geographic risk assessment for e-commerce - Card type identification for routing payments The database contains ~2.5 million BIN records covering all major card issuers globally and is updated weekly.\",\n input: NeutrinoBinLookupInput,\n output: NeutrinoBinLookupOutput,\n});\n"],"mappings":";;AAmCA,MAAa,oBAAoB,OAAO,uBAAuB;CAC7D,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAnCkD,EAAE,OAAO;EAC3D,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,8KAA8K;EAChN,eAAe,EAAE,OAAO,CAAC,CAAC,SAAS,mMAAmM,CAAC,CAAC,SAAS;EACjP,eAAe,EAAE,KAAK,CAAC,aAAa,YAAY,CAAC,CAAC,CAAC,QAAQ,WAAW,CAAC,CAAC,SAAS,mIAAmI,CAAC,CAAC,SAAS;CACjO,CA+BS;CACP,QA/BmD,EAAE,OAAO;EAC5D,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,0BAA0B;EACtD,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,kBAAkB;EAC9C,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,6BAA6B;EAC1D,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,0EAA0E;EACzG,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,wCAAwC;EACzE,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,4EAA4E;EAC7G,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,yBAAyB;EAC3D,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,qCAAqC;EACvE,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,gEAAgE;EAClG,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,gCAAgC;EACnE,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS,qCAAqC;EACzE,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS,qDAAqD;EACzF,iBAAiB,EAAE,OAAO,CAAC,CAAC,SAAS,gFAAgF;EACrH,iBAAiB,EAAE,OAAO,CAAC,CAAC,SAAS,qCAAqC;EAC1E,iBAAiB,EAAE,OAAO,CAAC,CAAC,SAAS,0CAA0C;EAC/E,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,sEAAsE;EACrH,iBAAiB,EAAE,QAAQ,CAAC,CAAC,SAAS,4CAA4C;EAClF,iBAAiB,EAAE,QAAQ,CAAC,CAAC,SAAS,yCAAyC;EAC/E,kBAAkB,EAAE,QAAQ,CAAC,CAAC,SAAS,0CAA0C;EACjF,kBAAkB,EAAE,QAAQ,CAAC,CAAC,SAAS,qFAAqF;EAC5H,kBAAkB,EAAE,OAAO,CAAC,CAAC,SAAS,oDAAoD;EAC1F,mBAAmB,EAAE,OAAO,CAAC,CAAC,SAAS,6EAA6E;EACpH,oBAAoB,EAAE,OAAO,CAAC,CAAC,SAAS,6EAA6E;CACvH,CAOU;AACV,CAAC"}
1
+ {"version":3,"file":"bin-lookup.mjs","names":[],"sources":["../../src/actions/bin-lookup.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const NeutrinoBinLookupInput = z.object({\n \"bin-number\": z.string().describe(\"The BIN (Bank Identification Number) or IIN (Issuer Identification Number) - typically the first 6-8 digits of a credit/debit card number. Supports 6, 8, and 10-digit BINs.\"),\n \"customer-ip\": z.string().describe(\"Optional customer IP address (IPv4 or IPv6) for additional fraud detection. When provided, the response includes IP geolocation data and checks if the IP country matches the BIN issuer country.\").optional(),\n \"output-case\": z.enum([\"camelCase\", \"snake_case\"]).default(\"camelCase\").describe(\"Response field name casing style. Use 'camelCase' for JavaScript/JSON standard format or 'snake_case' for Python-friendly format.\").optional(),\n});\nexport const NeutrinoBinLookupOutput = z.object({\n valid: z.boolean().describe(\"True if the BIN is valid\").nullable(),\n issuer: z.string().describe(\"Card issuer name\").nullable(),\n country: z.string().describe(\"Full country name of issuer\").nullable(),\n \"ip-city\": z.string().describe(\"Customer IP's city (empty if not detectable or customer-ip not provided)\").nullable(),\n \"card-type\": z.string().describe(\"Card type (DEBIT, CREDIT, CHARGE CARD)\").nullable(),\n \"ip-region\": z.string().describe(\"Customer IP's region (empty if not detectable or customer-ip not provided)\").nullable(),\n \"bin-number\": z.string().describe(\"The provided BIN number\").nullable(),\n \"card-brand\": z.string().describe(\"Card brand (e.g., VISA, MASTERCARD)\").nullable(),\n \"ip-country\": z.string().describe(\"Customer IP's country name (empty if customer-ip not provided)\").nullable(),\n \"is-prepaid\": z.boolean().describe(\"True if this is a prepaid card\").nullable(),\n \"country-code\": z.string().describe(\"ISO 2-letter country code of issuer\").nullable(),\n \"issuer-phone\": z.string().describe(\"Issuer phone number (empty string if not available)\").nullable(),\n \"card-category\": z.string().describe(\"Card category (CLASSIC, BUSINESS, CORPORATE, PLATINUM, PREPAID, DANKORT, etc.)\").nullable(),\n \"country-code3\": z.string().describe(\"ISO 3-letter country code of issuer\").nullable(),\n \"currency-code\": z.string().describe(\"ISO 4217 currency code of issuer country\").nullable(),\n \"ip-blocklists\": z.array(z.unknown()).describe(\"List of blocklists that flagged the customer IP (empty list if none)\"),\n \"is-commercial\": z.boolean().describe(\"True if this is a business/commercial card\").nullable(),\n \"is-reloadable\": z.boolean().describe(\"True if this prepaid card is reloadable\").nullable(),\n \"ip-blocklisted\": z.boolean().describe(\"True if customer IP is on any blocklists\").nullable(),\n \"ip-matches-bin\": z.boolean().describe(\"True if customer IP country matches BIN country (false if customer-ip not provided)\").nullable(),\n \"issuer-website\": z.string().describe(\"Issuer website URL (empty string if not available)\").nullable(),\n \"ip-country-code\": z.string().describe(\"Customer IP's ISO 2-letter country code (empty if customer-ip not provided)\").nullable(),\n \"ip-country-code3\": z.string().describe(\"Customer IP's ISO 3-letter country code (empty if customer-ip not provided)\").nullable(),\n}).passthrough();\n\nexport const neutrinoBinLookup = action(\"NEUTRINO_BIN_LOOKUP\", {\n slug: \"neutrino-bin-lookup\",\n name: \"BIN Lookup\",\n description: \"Perform a BIN (Bank Identification Number) lookup to retrieve comprehensive card issuer information. This tool identifies the card brand (VISA, MASTERCARD, AMEX, etc.), card type (debit/credit), issuer details, and issuer country from the first 6-8 digits of a card number. Optionally performs fraud detection by comparing the customer's IP geolocation with the card issuer country. Use cases: - Payment fraud detection and prevention - Card validation before processing transactions - Geographic risk assessment for e-commerce - Card type identification for routing payments The database contains ~2.5 million BIN records covering all major card issuers globally and is updated weekly.\",\n input: NeutrinoBinLookupInput,\n output: NeutrinoBinLookupOutput,\n});\n"],"mappings":";;AAmCA,MAAa,oBAAoB,OAAO,uBAAuB;CAC7D,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAnCoC,EAAE,OAAO;EAC7C,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,8KAA8K;EAChN,eAAe,EAAE,OAAO,CAAC,CAAC,SAAS,mMAAmM,CAAC,CAAC,SAAS;EACjP,eAAe,EAAE,KAAK,CAAC,aAAa,YAAY,CAAC,CAAC,CAAC,QAAQ,WAAW,CAAC,CAAC,SAAS,mIAAmI,CAAC,CAAC,SAAS;CACjO,CA+BS;CACP,QA/BqC,EAAE,OAAO;EAC9C,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,0BAA0B,CAAC,CAAC,SAAS;EACjE,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,SAAS;EACzD,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,6BAA6B,CAAC,CAAC,SAAS;EACrE,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,0EAA0E,CAAC,CAAC,SAAS;EACpH,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,wCAAwC,CAAC,CAAC,SAAS;EACpF,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,4EAA4E,CAAC,CAAC,SAAS;EACxH,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,yBAAyB,CAAC,CAAC,SAAS;EACtE,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,qCAAqC,CAAC,CAAC,SAAS;EAClF,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,gEAAgE,CAAC,CAAC,SAAS;EAC7G,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,gCAAgC,CAAC,CAAC,SAAS;EAC9E,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS,qCAAqC,CAAC,CAAC,SAAS;EACpF,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS,qDAAqD,CAAC,CAAC,SAAS;EACpG,iBAAiB,EAAE,OAAO,CAAC,CAAC,SAAS,gFAAgF,CAAC,CAAC,SAAS;EAChI,iBAAiB,EAAE,OAAO,CAAC,CAAC,SAAS,qCAAqC,CAAC,CAAC,SAAS;EACrF,iBAAiB,EAAE,OAAO,CAAC,CAAC,SAAS,0CAA0C,CAAC,CAAC,SAAS;EAC1F,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,sEAAsE;EACrH,iBAAiB,EAAE,QAAQ,CAAC,CAAC,SAAS,4CAA4C,CAAC,CAAC,SAAS;EAC7F,iBAAiB,EAAE,QAAQ,CAAC,CAAC,SAAS,yCAAyC,CAAC,CAAC,SAAS;EAC1F,kBAAkB,EAAE,QAAQ,CAAC,CAAC,SAAS,0CAA0C,CAAC,CAAC,SAAS;EAC5F,kBAAkB,EAAE,QAAQ,CAAC,CAAC,SAAS,qFAAqF,CAAC,CAAC,SAAS;EACvI,kBAAkB,EAAE,OAAO,CAAC,CAAC,SAAS,oDAAoD,CAAC,CAAC,SAAS;EACrG,mBAAmB,EAAE,OAAO,CAAC,CAAC,SAAS,6EAA6E,CAAC,CAAC,SAAS;EAC/H,oBAAoB,EAAE,OAAO,CAAC,CAAC,SAAS,6EAA6E,CAAC,CAAC,SAAS;CAClI,CAAC,CAAC,CAAC,YAOO;AACV,CAAC"}
@@ -6,30 +6,30 @@ const NeutrinoCheckIpBlocklistInput = zod.z.object({
6
6
  "vpn-lookup": zod.z.boolean().default(false).describe("Include public VPN provider IP addresses. NOTE: For more advanced VPN detection including the ability to identify private and stealth VPNs use the IP Probe API").optional()
7
7
  }).describe("Request model for IP Blocklist check.");
8
8
  const NeutrinoCheckIpBlocklist_BlocklistSensorSchema = zod.z.object({
9
- id: zod.z.number().int().describe("Sensor ID"),
10
- blocklist: zod.z.string().describe("Blocklist category for this sensor"),
11
- description: zod.z.string().describe("Description of the sensor detection")
9
+ id: zod.z.number().int().describe("Sensor ID").nullable(),
10
+ blocklist: zod.z.string().describe("Blocklist category for this sensor").nullable(),
11
+ description: zod.z.string().describe("Description of the sensor detection").nullable()
12
12
  }).passthrough().describe("Information about a specific sensor that detected the IP.");
13
13
  const NeutrinoCheckIpBlocklistOutput = zod.z.object({
14
- ip: zod.z.string().describe("The IP address"),
15
- cidr: zod.z.string().describe("The CIDR address for this listing (only set if the IP is listed)"),
16
- "is-bot": zod.z.boolean().describe("IP is hosting a malicious bot or is part of a botnet. This is a broad category which includes brute-force crackers"),
17
- "is-tor": zod.z.boolean().describe("IP is a Tor node or running a Tor related service"),
18
- "is-vpn": zod.z.boolean().describe("IP belongs to a public VPN provider (only set if the 'vpn-lookup' option is enabled)"),
14
+ ip: zod.z.string().describe("The IP address").nullable(),
15
+ cidr: zod.z.string().describe("The CIDR address for this listing (only set if the IP is listed)").nullable(),
16
+ "is-bot": zod.z.boolean().describe("IP is hosting a malicious bot or is part of a botnet. This is a broad category which includes brute-force crackers").nullable(),
17
+ "is-tor": zod.z.boolean().describe("IP is a Tor node or running a Tor related service").nullable(),
18
+ "is-vpn": zod.z.boolean().describe("IP belongs to a public VPN provider (only set if the 'vpn-lookup' option is enabled)").nullable(),
19
19
  sensors: zod.z.array(NeutrinoCheckIpBlocklist_BlocklistSensorSchema).describe("An array of objects containing details on which specific sensors detected the IP"),
20
- "is-proxy": zod.z.boolean().describe("IP has been detected as an anonymous web proxy or anonymous HTTP proxy"),
21
- "is-listed": zod.z.boolean().describe("Is this IP on a blocklist"),
22
- "is-spider": zod.z.boolean().describe("IP is running a hostile web spider (deprecated but kept for backwards compatibility instead use UA/IP lookups for spider detection)"),
23
- "last-seen": zod.z.number().int().describe("The unix time when this IP was last seen on any blocklist. IPs are automatically removed after 7 days therefor this value will never be older than 7 days"),
20
+ "is-proxy": zod.z.boolean().describe("IP has been detected as an anonymous web proxy or anonymous HTTP proxy").nullable(),
21
+ "is-listed": zod.z.boolean().describe("Is this IP on a blocklist").nullable(),
22
+ "is-spider": zod.z.boolean().describe("IP is running a hostile web spider (deprecated but kept for backwards compatibility instead use UA/IP lookups for spider detection)").nullable(),
23
+ "last-seen": zod.z.number().int().describe("The unix time when this IP was last seen on any blocklist. IPs are automatically removed after 7 days therefor this value will never be older than 7 days").nullable(),
24
24
  blocklists: zod.z.array(zod.z.string()).describe("An array of strings indicating which blocklist categories this IP is listed on. Current possible values are: tor, proxy, vpn, bot, spam-bot, exploit-bot, hijacked, malware, spyware, spider, dshield"),
25
- "is-dshield": zod.z.boolean().describe("IP has been flagged as a significant attack source by DShield (dshield.org)"),
26
- "is-malware": zod.z.boolean().describe("IP is involved in distributing or is running malware"),
27
- "is-spyware": zod.z.boolean().describe("IP is involved in distributing or is running spyware"),
28
- "list-count": zod.z.number().int().describe("The number of blocklists the IP is listed on"),
29
- "is-hijacked": zod.z.boolean().describe("IP is part of a hijacked netblock or a netblock controlled by a criminal organization"),
30
- "is-spam-bot": zod.z.boolean().describe("IP address is hosting a spam bot, comment spamming or any other spamming type software"),
31
- "is-exploit-bot": zod.z.boolean().describe("IP is hosting an exploit finding bot or is running exploit scanning software")
32
- }).describe("Response model for IP Blocklist check.");
25
+ "is-dshield": zod.z.boolean().describe("IP has been flagged as a significant attack source by DShield (dshield.org)").nullable(),
26
+ "is-malware": zod.z.boolean().describe("IP is involved in distributing or is running malware").nullable(),
27
+ "is-spyware": zod.z.boolean().describe("IP is involved in distributing or is running spyware").nullable(),
28
+ "list-count": zod.z.number().int().describe("The number of blocklists the IP is listed on").nullable(),
29
+ "is-hijacked": zod.z.boolean().describe("IP is part of a hijacked netblock or a netblock controlled by a criminal organization").nullable(),
30
+ "is-spam-bot": zod.z.boolean().describe("IP address is hosting a spam bot, comment spamming or any other spamming type software").nullable(),
31
+ "is-exploit-bot": zod.z.boolean().describe("IP is hosting an exploit finding bot or is running exploit scanning software").nullable()
32
+ }).passthrough().describe("Response model for IP Blocklist check.");
33
33
  const neutrinoCheckIpBlocklist = require_action.action("NEUTRINO_CHECK_IP_BLOCKLIST", {
34
34
  slug: "neutrino-check-ip-blocklist",
35
35
  name: "IP Blocklist",
@@ -1 +1 @@
1
- {"version":3,"file":"check-ip-blocklist.cjs","names":["z","action"],"sources":["../../src/actions/check-ip-blocklist.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const NeutrinoCheckIpBlocklistInput: z.ZodTypeAny = z.object({\n ip: z.string().describe(\"An IPv4 or IPv6 address. Accepts standard IP notation (with or without port number), CIDR notation and IPv6 compressed notation. If multiple IPs are passed using comma-separated values the first non-bogon address on the list will be checked\"),\n \"vpn-lookup\": z.boolean().default(false).describe(\"Include public VPN provider IP addresses. NOTE: For more advanced VPN detection including the ability to identify private and stealth VPNs use the IP Probe API\").optional(),\n}).describe(\"Request model for IP Blocklist check.\");\nconst NeutrinoCheckIpBlocklist_BlocklistSensorSchema: z.ZodTypeAny = z.object({\n id: z.number().int().describe(\"Sensor ID\"),\n blocklist: z.string().describe(\"Blocklist category for this sensor\"),\n description: z.string().describe(\"Description of the sensor detection\"),\n}).passthrough().describe(\"Information about a specific sensor that detected the IP.\");\nexport const NeutrinoCheckIpBlocklistOutput: z.ZodTypeAny = z.object({\n ip: z.string().describe(\"The IP address\"),\n cidr: z.string().describe(\"The CIDR address for this listing (only set if the IP is listed)\"),\n \"is-bot\": z.boolean().describe(\"IP is hosting a malicious bot or is part of a botnet. This is a broad category which includes brute-force crackers\"),\n \"is-tor\": z.boolean().describe(\"IP is a Tor node or running a Tor related service\"),\n \"is-vpn\": z.boolean().describe(\"IP belongs to a public VPN provider (only set if the 'vpn-lookup' option is enabled)\"),\n sensors: z.array(NeutrinoCheckIpBlocklist_BlocklistSensorSchema).describe(\"An array of objects containing details on which specific sensors detected the IP\"),\n \"is-proxy\": z.boolean().describe(\"IP has been detected as an anonymous web proxy or anonymous HTTP proxy\"),\n \"is-listed\": z.boolean().describe(\"Is this IP on a blocklist\"),\n \"is-spider\": z.boolean().describe(\"IP is running a hostile web spider (deprecated but kept for backwards compatibility instead use UA/IP lookups for spider detection)\"),\n \"last-seen\": z.number().int().describe(\"The unix time when this IP was last seen on any blocklist. IPs are automatically removed after 7 days therefor this value will never be older than 7 days\"),\n blocklists: z.array(z.string()).describe(\"An array of strings indicating which blocklist categories this IP is listed on. Current possible values are: tor, proxy, vpn, bot, spam-bot, exploit-bot, hijacked, malware, spyware, spider, dshield\"),\n \"is-dshield\": z.boolean().describe(\"IP has been flagged as a significant attack source by DShield (dshield.org)\"),\n \"is-malware\": z.boolean().describe(\"IP is involved in distributing or is running malware\"),\n \"is-spyware\": z.boolean().describe(\"IP is involved in distributing or is running spyware\"),\n \"list-count\": z.number().int().describe(\"The number of blocklists the IP is listed on\"),\n \"is-hijacked\": z.boolean().describe(\"IP is part of a hijacked netblock or a netblock controlled by a criminal organization\"),\n \"is-spam-bot\": z.boolean().describe(\"IP address is hosting a spam bot, comment spamming or any other spamming type software\"),\n \"is-exploit-bot\": z.boolean().describe(\"IP is hosting an exploit finding bot or is running exploit scanning software\"),\n}).describe(\"Response model for IP Blocklist check.\");\n\nexport const neutrinoCheckIpBlocklist = action(\"NEUTRINO_CHECK_IP_BLOCKLIST\", {\n slug: \"neutrino-check-ip-blocklist\",\n name: \"IP Blocklist\",\n description: \"Check if an IP address is on a blocklist. Detect IPs associated with malware, anonymous proxies, TOR exit nodes, botnets, spam sources and malicious servers. Use when you need to verify if an IP address is known to be malicious or part of a threat network.\",\n input: NeutrinoCheckIpBlocklistInput,\n output: NeutrinoCheckIpBlocklistOutput,\n});\n"],"mappings":";;;AAIA,MAAa,gCAA8CA,IAAAA,EAAE,OAAO;CAClE,IAAIA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,kPAAkP;CAC1Q,cAAcA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,iKAAiK,CAAC,CAAC,SAAS;AAChO,CAAC,CAAC,CAAC,SAAS,uCAAuC;AACnD,MAAM,iDAA+DA,IAAAA,EAAE,OAAO;CAC5E,IAAIA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,WAAW;CACzC,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,oCAAoC;CACnE,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,qCAAqC;AACxE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,2DAA2D;AACrF,MAAa,iCAA+CA,IAAAA,EAAE,OAAO;CACnE,IAAIA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,gBAAgB;CACxC,MAAMA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,kEAAkE;CAC5F,UAAUA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,oHAAoH;CACnJ,UAAUA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,mDAAmD;CAClF,UAAUA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,sFAAsF;CACrH,SAASA,IAAAA,EAAE,MAAM,8CAA8C,CAAC,CAAC,SAAS,kFAAkF;CAC5J,YAAYA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,wEAAwE;CACzG,aAAaA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,2BAA2B;CAC7D,aAAaA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,qIAAqI;CACvK,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,2JAA2J;CAClM,YAAYA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,uMAAuM;CAChP,cAAcA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,6EAA6E;CAChH,cAAcA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,sDAAsD;CACzF,cAAcA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,sDAAsD;CACzF,cAAcA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,8CAA8C;CACtF,eAAeA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,uFAAuF;CAC3H,eAAeA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,wFAAwF;CAC5H,kBAAkBA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,8EAA8E;AACvH,CAAC,CAAC,CAAC,SAAS,wCAAwC;AAEpD,MAAa,2BAA2BC,eAAAA,OAAO,+BAA+B;CAC5E,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAAO;CACP,QAAQ;AACV,CAAC"}
1
+ {"version":3,"file":"check-ip-blocklist.cjs","names":["z","action"],"sources":["../../src/actions/check-ip-blocklist.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const NeutrinoCheckIpBlocklistInput = z.object({\n ip: z.string().describe(\"An IPv4 or IPv6 address. Accepts standard IP notation (with or without port number), CIDR notation and IPv6 compressed notation. If multiple IPs are passed using comma-separated values the first non-bogon address on the list will be checked\"),\n \"vpn-lookup\": z.boolean().default(false).describe(\"Include public VPN provider IP addresses. NOTE: For more advanced VPN detection including the ability to identify private and stealth VPNs use the IP Probe API\").optional(),\n}).describe(\"Request model for IP Blocklist check.\");\nconst NeutrinoCheckIpBlocklist_BlocklistSensorSchema = z.object({\n id: z.number().int().describe(\"Sensor ID\").nullable(),\n blocklist: z.string().describe(\"Blocklist category for this sensor\").nullable(),\n description: z.string().describe(\"Description of the sensor detection\").nullable(),\n}).passthrough().describe(\"Information about a specific sensor that detected the IP.\");\nexport const NeutrinoCheckIpBlocklistOutput = z.object({\n ip: z.string().describe(\"The IP address\").nullable(),\n cidr: z.string().describe(\"The CIDR address for this listing (only set if the IP is listed)\").nullable(),\n \"is-bot\": z.boolean().describe(\"IP is hosting a malicious bot or is part of a botnet. This is a broad category which includes brute-force crackers\").nullable(),\n \"is-tor\": z.boolean().describe(\"IP is a Tor node or running a Tor related service\").nullable(),\n \"is-vpn\": z.boolean().describe(\"IP belongs to a public VPN provider (only set if the 'vpn-lookup' option is enabled)\").nullable(),\n sensors: z.array(NeutrinoCheckIpBlocklist_BlocklistSensorSchema).describe(\"An array of objects containing details on which specific sensors detected the IP\"),\n \"is-proxy\": z.boolean().describe(\"IP has been detected as an anonymous web proxy or anonymous HTTP proxy\").nullable(),\n \"is-listed\": z.boolean().describe(\"Is this IP on a blocklist\").nullable(),\n \"is-spider\": z.boolean().describe(\"IP is running a hostile web spider (deprecated but kept for backwards compatibility instead use UA/IP lookups for spider detection)\").nullable(),\n \"last-seen\": z.number().int().describe(\"The unix time when this IP was last seen on any blocklist. IPs are automatically removed after 7 days therefor this value will never be older than 7 days\").nullable(),\n blocklists: z.array(z.string()).describe(\"An array of strings indicating which blocklist categories this IP is listed on. Current possible values are: tor, proxy, vpn, bot, spam-bot, exploit-bot, hijacked, malware, spyware, spider, dshield\"),\n \"is-dshield\": z.boolean().describe(\"IP has been flagged as a significant attack source by DShield (dshield.org)\").nullable(),\n \"is-malware\": z.boolean().describe(\"IP is involved in distributing or is running malware\").nullable(),\n \"is-spyware\": z.boolean().describe(\"IP is involved in distributing or is running spyware\").nullable(),\n \"list-count\": z.number().int().describe(\"The number of blocklists the IP is listed on\").nullable(),\n \"is-hijacked\": z.boolean().describe(\"IP is part of a hijacked netblock or a netblock controlled by a criminal organization\").nullable(),\n \"is-spam-bot\": z.boolean().describe(\"IP address is hosting a spam bot, comment spamming or any other spamming type software\").nullable(),\n \"is-exploit-bot\": z.boolean().describe(\"IP is hosting an exploit finding bot or is running exploit scanning software\").nullable(),\n}).passthrough().describe(\"Response model for IP Blocklist check.\");\n\nexport const neutrinoCheckIpBlocklist = action(\"NEUTRINO_CHECK_IP_BLOCKLIST\", {\n slug: \"neutrino-check-ip-blocklist\",\n name: \"IP Blocklist\",\n description: \"Check if an IP address is on a blocklist. Detect IPs associated with malware, anonymous proxies, TOR exit nodes, botnets, spam sources and malicious servers. Use when you need to verify if an IP address is known to be malicious or part of a threat network.\",\n input: NeutrinoCheckIpBlocklistInput,\n output: NeutrinoCheckIpBlocklistOutput,\n});\n"],"mappings":";;;AAIA,MAAa,gCAAgCA,IAAAA,EAAE,OAAO;CACpD,IAAIA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,kPAAkP;CAC1Q,cAAcA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,iKAAiK,CAAC,CAAC,SAAS;AAChO,CAAC,CAAC,CAAC,SAAS,uCAAuC;AACnD,MAAM,iDAAiDA,IAAAA,EAAE,OAAO;CAC9D,IAAIA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,SAAS;CACpD,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,oCAAoC,CAAC,CAAC,SAAS;CAC9E,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,qCAAqC,CAAC,CAAC,SAAS;AACnF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,2DAA2D;AACrF,MAAa,iCAAiCA,IAAAA,EAAE,OAAO;CACrD,IAAIA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS;CACnD,MAAMA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,kEAAkE,CAAC,CAAC,SAAS;CACvG,UAAUA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,oHAAoH,CAAC,CAAC,SAAS;CAC9J,UAAUA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,mDAAmD,CAAC,CAAC,SAAS;CAC7F,UAAUA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,sFAAsF,CAAC,CAAC,SAAS;CAChI,SAASA,IAAAA,EAAE,MAAM,8CAA8C,CAAC,CAAC,SAAS,kFAAkF;CAC5J,YAAYA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,wEAAwE,CAAC,CAAC,SAAS;CACpH,aAAaA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,2BAA2B,CAAC,CAAC,SAAS;CACxE,aAAaA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,qIAAqI,CAAC,CAAC,SAAS;CAClL,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,2JAA2J,CAAC,CAAC,SAAS;CAC7M,YAAYA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,uMAAuM;CAChP,cAAcA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,6EAA6E,CAAC,CAAC,SAAS;CAC3H,cAAcA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,sDAAsD,CAAC,CAAC,SAAS;CACpG,cAAcA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,sDAAsD,CAAC,CAAC,SAAS;CACpG,cAAcA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,8CAA8C,CAAC,CAAC,SAAS;CACjG,eAAeA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,uFAAuF,CAAC,CAAC,SAAS;CACtI,eAAeA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,wFAAwF,CAAC,CAAC,SAAS;CACvI,kBAAkBA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,8EAA8E,CAAC,CAAC,SAAS;AAClI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,wCAAwC;AAElE,MAAa,2BAA2BC,eAAAA,OAAO,+BAA+B;CAC5E,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAAO;CACP,QAAQ;AACV,CAAC"}
@@ -1,9 +1,38 @@
1
1
  import { z } from "zod";
2
2
 
3
3
  //#region src/actions/check-ip-blocklist.d.ts
4
- declare const NeutrinoCheckIpBlocklistInput: z.ZodTypeAny;
5
- declare const NeutrinoCheckIpBlocklistOutput: z.ZodTypeAny;
6
- declare const neutrinoCheckIpBlocklist: import("@keystrokehq/action").WorkflowActionDefinition<unknown, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
4
+ declare const NeutrinoCheckIpBlocklistInput: z.ZodObject<{
5
+ ip: z.ZodString;
6
+ "vpn-lookup": z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
7
+ }, z.core.$strip>;
8
+ declare const NeutrinoCheckIpBlocklistOutput: z.ZodObject<{
9
+ ip: z.ZodNullable<z.ZodString>;
10
+ cidr: z.ZodNullable<z.ZodString>;
11
+ "is-bot": z.ZodNullable<z.ZodBoolean>;
12
+ "is-tor": z.ZodNullable<z.ZodBoolean>;
13
+ "is-vpn": z.ZodNullable<z.ZodBoolean>;
14
+ sensors: z.ZodArray<z.ZodObject<{
15
+ id: z.ZodNullable<z.ZodNumber>;
16
+ blocklist: z.ZodNullable<z.ZodString>;
17
+ description: z.ZodNullable<z.ZodString>;
18
+ }, z.core.$loose>>;
19
+ "is-proxy": z.ZodNullable<z.ZodBoolean>;
20
+ "is-listed": z.ZodNullable<z.ZodBoolean>;
21
+ "is-spider": z.ZodNullable<z.ZodBoolean>;
22
+ "last-seen": z.ZodNullable<z.ZodNumber>;
23
+ blocklists: z.ZodArray<z.ZodString>;
24
+ "is-dshield": z.ZodNullable<z.ZodBoolean>;
25
+ "is-malware": z.ZodNullable<z.ZodBoolean>;
26
+ "is-spyware": z.ZodNullable<z.ZodBoolean>;
27
+ "list-count": z.ZodNullable<z.ZodNumber>;
28
+ "is-hijacked": z.ZodNullable<z.ZodBoolean>;
29
+ "is-spam-bot": z.ZodNullable<z.ZodBoolean>;
30
+ "is-exploit-bot": z.ZodNullable<z.ZodBoolean>;
31
+ }, z.core.$loose>;
32
+ declare const neutrinoCheckIpBlocklist: import("@keystrokehq/action").WorkflowActionDefinition<{
33
+ ip: string;
34
+ "vpn-lookup"?: boolean | undefined;
35
+ }, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
7
36
  //#endregion
8
37
  export { neutrinoCheckIpBlocklist };
9
38
  //# sourceMappingURL=check-ip-blocklist.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-ip-blocklist.d.cts","names":[],"sources":["../../src/actions/check-ip-blocklist.ts"],"mappings":";;;cAIa,6BAAA,EAA+B,CAAA,CAAE,UAGM;AAAA,cAMvC,8BAAA,EAAgC,CAAA,CAAE,UAmBM;AAAA,cAExC,wBAAA,gCAAwB,wBAAA,iDAAA,mBAAA,yCAAA,UAAA,4CAAA,UAAA"}
1
+ {"version":3,"file":"check-ip-blocklist.d.cts","names":[],"sources":["../../src/actions/check-ip-blocklist.ts"],"mappings":";;;cAIa,6BAAA,EAA6B,CAAA,CAAA,SAAA;;;;cAS7B,8BAAA,EAA8B,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;cAqB9B,wBAAA,gCAAwB,wBAAA"}
@@ -1,9 +1,38 @@
1
1
  import { z } from "zod";
2
2
 
3
3
  //#region src/actions/check-ip-blocklist.d.ts
4
- declare const NeutrinoCheckIpBlocklistInput: z.ZodTypeAny;
5
- declare const NeutrinoCheckIpBlocklistOutput: z.ZodTypeAny;
6
- declare const neutrinoCheckIpBlocklist: import("@keystrokehq/action").WorkflowActionDefinition<unknown, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
4
+ declare const NeutrinoCheckIpBlocklistInput: z.ZodObject<{
5
+ ip: z.ZodString;
6
+ "vpn-lookup": z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
7
+ }, z.core.$strip>;
8
+ declare const NeutrinoCheckIpBlocklistOutput: z.ZodObject<{
9
+ ip: z.ZodNullable<z.ZodString>;
10
+ cidr: z.ZodNullable<z.ZodString>;
11
+ "is-bot": z.ZodNullable<z.ZodBoolean>;
12
+ "is-tor": z.ZodNullable<z.ZodBoolean>;
13
+ "is-vpn": z.ZodNullable<z.ZodBoolean>;
14
+ sensors: z.ZodArray<z.ZodObject<{
15
+ id: z.ZodNullable<z.ZodNumber>;
16
+ blocklist: z.ZodNullable<z.ZodString>;
17
+ description: z.ZodNullable<z.ZodString>;
18
+ }, z.core.$loose>>;
19
+ "is-proxy": z.ZodNullable<z.ZodBoolean>;
20
+ "is-listed": z.ZodNullable<z.ZodBoolean>;
21
+ "is-spider": z.ZodNullable<z.ZodBoolean>;
22
+ "last-seen": z.ZodNullable<z.ZodNumber>;
23
+ blocklists: z.ZodArray<z.ZodString>;
24
+ "is-dshield": z.ZodNullable<z.ZodBoolean>;
25
+ "is-malware": z.ZodNullable<z.ZodBoolean>;
26
+ "is-spyware": z.ZodNullable<z.ZodBoolean>;
27
+ "list-count": z.ZodNullable<z.ZodNumber>;
28
+ "is-hijacked": z.ZodNullable<z.ZodBoolean>;
29
+ "is-spam-bot": z.ZodNullable<z.ZodBoolean>;
30
+ "is-exploit-bot": z.ZodNullable<z.ZodBoolean>;
31
+ }, z.core.$loose>;
32
+ declare const neutrinoCheckIpBlocklist: import("@keystrokehq/action").WorkflowActionDefinition<{
33
+ ip: string;
34
+ "vpn-lookup"?: boolean | undefined;
35
+ }, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
7
36
  //#endregion
8
37
  export { neutrinoCheckIpBlocklist };
9
38
  //# sourceMappingURL=check-ip-blocklist.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-ip-blocklist.d.mts","names":[],"sources":["../../src/actions/check-ip-blocklist.ts"],"mappings":";;;cAIa,6BAAA,EAA+B,CAAA,CAAE,UAGM;AAAA,cAMvC,8BAAA,EAAgC,CAAA,CAAE,UAmBM;AAAA,cAExC,wBAAA,gCAAwB,wBAAA,iDAAA,mBAAA,yCAAA,UAAA,4CAAA,UAAA"}
1
+ {"version":3,"file":"check-ip-blocklist.d.mts","names":[],"sources":["../../src/actions/check-ip-blocklist.ts"],"mappings":";;;cAIa,6BAAA,EAA6B,CAAA,CAAA,SAAA;;;;cAS7B,8BAAA,EAA8B,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;cAqB9B,wBAAA,gCAAwB,wBAAA"}
@@ -6,9 +6,9 @@ const NeutrinoCheckIpBlocklistInput = z.object({
6
6
  "vpn-lookup": z.boolean().default(false).describe("Include public VPN provider IP addresses. NOTE: For more advanced VPN detection including the ability to identify private and stealth VPNs use the IP Probe API").optional()
7
7
  }).describe("Request model for IP Blocklist check.");
8
8
  const NeutrinoCheckIpBlocklist_BlocklistSensorSchema = z.object({
9
- id: z.number().int().describe("Sensor ID"),
10
- blocklist: z.string().describe("Blocklist category for this sensor"),
11
- description: z.string().describe("Description of the sensor detection")
9
+ id: z.number().int().describe("Sensor ID").nullable(),
10
+ blocklist: z.string().describe("Blocklist category for this sensor").nullable(),
11
+ description: z.string().describe("Description of the sensor detection").nullable()
12
12
  }).passthrough().describe("Information about a specific sensor that detected the IP.");
13
13
  const neutrinoCheckIpBlocklist = action("NEUTRINO_CHECK_IP_BLOCKLIST", {
14
14
  slug: "neutrino-check-ip-blocklist",
@@ -16,25 +16,25 @@ const neutrinoCheckIpBlocklist = action("NEUTRINO_CHECK_IP_BLOCKLIST", {
16
16
  description: "Check if an IP address is on a blocklist. Detect IPs associated with malware, anonymous proxies, TOR exit nodes, botnets, spam sources and malicious servers. Use when you need to verify if an IP address is known to be malicious or part of a threat network.",
17
17
  input: NeutrinoCheckIpBlocklistInput,
18
18
  output: z.object({
19
- ip: z.string().describe("The IP address"),
20
- cidr: z.string().describe("The CIDR address for this listing (only set if the IP is listed)"),
21
- "is-bot": z.boolean().describe("IP is hosting a malicious bot or is part of a botnet. This is a broad category which includes brute-force crackers"),
22
- "is-tor": z.boolean().describe("IP is a Tor node or running a Tor related service"),
23
- "is-vpn": z.boolean().describe("IP belongs to a public VPN provider (only set if the 'vpn-lookup' option is enabled)"),
19
+ ip: z.string().describe("The IP address").nullable(),
20
+ cidr: z.string().describe("The CIDR address for this listing (only set if the IP is listed)").nullable(),
21
+ "is-bot": z.boolean().describe("IP is hosting a malicious bot or is part of a botnet. This is a broad category which includes brute-force crackers").nullable(),
22
+ "is-tor": z.boolean().describe("IP is a Tor node or running a Tor related service").nullable(),
23
+ "is-vpn": z.boolean().describe("IP belongs to a public VPN provider (only set if the 'vpn-lookup' option is enabled)").nullable(),
24
24
  sensors: z.array(NeutrinoCheckIpBlocklist_BlocklistSensorSchema).describe("An array of objects containing details on which specific sensors detected the IP"),
25
- "is-proxy": z.boolean().describe("IP has been detected as an anonymous web proxy or anonymous HTTP proxy"),
26
- "is-listed": z.boolean().describe("Is this IP on a blocklist"),
27
- "is-spider": z.boolean().describe("IP is running a hostile web spider (deprecated but kept for backwards compatibility instead use UA/IP lookups for spider detection)"),
28
- "last-seen": z.number().int().describe("The unix time when this IP was last seen on any blocklist. IPs are automatically removed after 7 days therefor this value will never be older than 7 days"),
25
+ "is-proxy": z.boolean().describe("IP has been detected as an anonymous web proxy or anonymous HTTP proxy").nullable(),
26
+ "is-listed": z.boolean().describe("Is this IP on a blocklist").nullable(),
27
+ "is-spider": z.boolean().describe("IP is running a hostile web spider (deprecated but kept for backwards compatibility instead use UA/IP lookups for spider detection)").nullable(),
28
+ "last-seen": z.number().int().describe("The unix time when this IP was last seen on any blocklist. IPs are automatically removed after 7 days therefor this value will never be older than 7 days").nullable(),
29
29
  blocklists: z.array(z.string()).describe("An array of strings indicating which blocklist categories this IP is listed on. Current possible values are: tor, proxy, vpn, bot, spam-bot, exploit-bot, hijacked, malware, spyware, spider, dshield"),
30
- "is-dshield": z.boolean().describe("IP has been flagged as a significant attack source by DShield (dshield.org)"),
31
- "is-malware": z.boolean().describe("IP is involved in distributing or is running malware"),
32
- "is-spyware": z.boolean().describe("IP is involved in distributing or is running spyware"),
33
- "list-count": z.number().int().describe("The number of blocklists the IP is listed on"),
34
- "is-hijacked": z.boolean().describe("IP is part of a hijacked netblock or a netblock controlled by a criminal organization"),
35
- "is-spam-bot": z.boolean().describe("IP address is hosting a spam bot, comment spamming or any other spamming type software"),
36
- "is-exploit-bot": z.boolean().describe("IP is hosting an exploit finding bot or is running exploit scanning software")
37
- }).describe("Response model for IP Blocklist check.")
30
+ "is-dshield": z.boolean().describe("IP has been flagged as a significant attack source by DShield (dshield.org)").nullable(),
31
+ "is-malware": z.boolean().describe("IP is involved in distributing or is running malware").nullable(),
32
+ "is-spyware": z.boolean().describe("IP is involved in distributing or is running spyware").nullable(),
33
+ "list-count": z.number().int().describe("The number of blocklists the IP is listed on").nullable(),
34
+ "is-hijacked": z.boolean().describe("IP is part of a hijacked netblock or a netblock controlled by a criminal organization").nullable(),
35
+ "is-spam-bot": z.boolean().describe("IP address is hosting a spam bot, comment spamming or any other spamming type software").nullable(),
36
+ "is-exploit-bot": z.boolean().describe("IP is hosting an exploit finding bot or is running exploit scanning software").nullable()
37
+ }).passthrough().describe("Response model for IP Blocklist check.")
38
38
  });
39
39
  //#endregion
40
40
  export { neutrinoCheckIpBlocklist };
@@ -1 +1 @@
1
- {"version":3,"file":"check-ip-blocklist.mjs","names":[],"sources":["../../src/actions/check-ip-blocklist.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const NeutrinoCheckIpBlocklistInput: z.ZodTypeAny = z.object({\n ip: z.string().describe(\"An IPv4 or IPv6 address. Accepts standard IP notation (with or without port number), CIDR notation and IPv6 compressed notation. If multiple IPs are passed using comma-separated values the first non-bogon address on the list will be checked\"),\n \"vpn-lookup\": z.boolean().default(false).describe(\"Include public VPN provider IP addresses. NOTE: For more advanced VPN detection including the ability to identify private and stealth VPNs use the IP Probe API\").optional(),\n}).describe(\"Request model for IP Blocklist check.\");\nconst NeutrinoCheckIpBlocklist_BlocklistSensorSchema: z.ZodTypeAny = z.object({\n id: z.number().int().describe(\"Sensor ID\"),\n blocklist: z.string().describe(\"Blocklist category for this sensor\"),\n description: z.string().describe(\"Description of the sensor detection\"),\n}).passthrough().describe(\"Information about a specific sensor that detected the IP.\");\nexport const NeutrinoCheckIpBlocklistOutput: z.ZodTypeAny = z.object({\n ip: z.string().describe(\"The IP address\"),\n cidr: z.string().describe(\"The CIDR address for this listing (only set if the IP is listed)\"),\n \"is-bot\": z.boolean().describe(\"IP is hosting a malicious bot or is part of a botnet. This is a broad category which includes brute-force crackers\"),\n \"is-tor\": z.boolean().describe(\"IP is a Tor node or running a Tor related service\"),\n \"is-vpn\": z.boolean().describe(\"IP belongs to a public VPN provider (only set if the 'vpn-lookup' option is enabled)\"),\n sensors: z.array(NeutrinoCheckIpBlocklist_BlocklistSensorSchema).describe(\"An array of objects containing details on which specific sensors detected the IP\"),\n \"is-proxy\": z.boolean().describe(\"IP has been detected as an anonymous web proxy or anonymous HTTP proxy\"),\n \"is-listed\": z.boolean().describe(\"Is this IP on a blocklist\"),\n \"is-spider\": z.boolean().describe(\"IP is running a hostile web spider (deprecated but kept for backwards compatibility instead use UA/IP lookups for spider detection)\"),\n \"last-seen\": z.number().int().describe(\"The unix time when this IP was last seen on any blocklist. IPs are automatically removed after 7 days therefor this value will never be older than 7 days\"),\n blocklists: z.array(z.string()).describe(\"An array of strings indicating which blocklist categories this IP is listed on. Current possible values are: tor, proxy, vpn, bot, spam-bot, exploit-bot, hijacked, malware, spyware, spider, dshield\"),\n \"is-dshield\": z.boolean().describe(\"IP has been flagged as a significant attack source by DShield (dshield.org)\"),\n \"is-malware\": z.boolean().describe(\"IP is involved in distributing or is running malware\"),\n \"is-spyware\": z.boolean().describe(\"IP is involved in distributing or is running spyware\"),\n \"list-count\": z.number().int().describe(\"The number of blocklists the IP is listed on\"),\n \"is-hijacked\": z.boolean().describe(\"IP is part of a hijacked netblock or a netblock controlled by a criminal organization\"),\n \"is-spam-bot\": z.boolean().describe(\"IP address is hosting a spam bot, comment spamming or any other spamming type software\"),\n \"is-exploit-bot\": z.boolean().describe(\"IP is hosting an exploit finding bot or is running exploit scanning software\"),\n}).describe(\"Response model for IP Blocklist check.\");\n\nexport const neutrinoCheckIpBlocklist = action(\"NEUTRINO_CHECK_IP_BLOCKLIST\", {\n slug: \"neutrino-check-ip-blocklist\",\n name: \"IP Blocklist\",\n description: \"Check if an IP address is on a blocklist. Detect IPs associated with malware, anonymous proxies, TOR exit nodes, botnets, spam sources and malicious servers. Use when you need to verify if an IP address is known to be malicious or part of a threat network.\",\n input: NeutrinoCheckIpBlocklistInput,\n output: NeutrinoCheckIpBlocklistOutput,\n});\n"],"mappings":";;;AAIA,MAAa,gCAA8C,EAAE,OAAO;CAClE,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,kPAAkP;CAC1Q,cAAc,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,iKAAiK,CAAC,CAAC,SAAS;AAChO,CAAC,CAAC,CAAC,SAAS,uCAAuC;AACnD,MAAM,iDAA+D,EAAE,OAAO;CAC5E,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,WAAW;CACzC,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,oCAAoC;CACnE,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,qCAAqC;AACxE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,2DAA2D;AAsBrF,MAAa,2BAA2B,OAAO,+BAA+B;CAC5E,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAAO;CACP,QA1B0D,EAAE,OAAO;EACnE,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,gBAAgB;EACxC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,kEAAkE;EAC5F,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS,oHAAoH;EACnJ,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS,mDAAmD;EAClF,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS,sFAAsF;EACrH,SAAS,EAAE,MAAM,8CAA8C,CAAC,CAAC,SAAS,kFAAkF;EAC5J,YAAY,EAAE,QAAQ,CAAC,CAAC,SAAS,wEAAwE;EACzG,aAAa,EAAE,QAAQ,CAAC,CAAC,SAAS,2BAA2B;EAC7D,aAAa,EAAE,QAAQ,CAAC,CAAC,SAAS,qIAAqI;EACvK,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,2JAA2J;EAClM,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,uMAAuM;EAChP,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,6EAA6E;EAChH,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,sDAAsD;EACzF,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,sDAAsD;EACzF,cAAc,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,8CAA8C;EACtF,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS,uFAAuF;EAC3H,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS,wFAAwF;EAC5H,kBAAkB,EAAE,QAAQ,CAAC,CAAC,SAAS,8EAA8E;CACvH,CAAC,CAAC,CAAC,SAAS,wCAOF;AACV,CAAC"}
1
+ {"version":3,"file":"check-ip-blocklist.mjs","names":[],"sources":["../../src/actions/check-ip-blocklist.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const NeutrinoCheckIpBlocklistInput = z.object({\n ip: z.string().describe(\"An IPv4 or IPv6 address. Accepts standard IP notation (with or without port number), CIDR notation and IPv6 compressed notation. If multiple IPs are passed using comma-separated values the first non-bogon address on the list will be checked\"),\n \"vpn-lookup\": z.boolean().default(false).describe(\"Include public VPN provider IP addresses. NOTE: For more advanced VPN detection including the ability to identify private and stealth VPNs use the IP Probe API\").optional(),\n}).describe(\"Request model for IP Blocklist check.\");\nconst NeutrinoCheckIpBlocklist_BlocklistSensorSchema = z.object({\n id: z.number().int().describe(\"Sensor ID\").nullable(),\n blocklist: z.string().describe(\"Blocklist category for this sensor\").nullable(),\n description: z.string().describe(\"Description of the sensor detection\").nullable(),\n}).passthrough().describe(\"Information about a specific sensor that detected the IP.\");\nexport const NeutrinoCheckIpBlocklistOutput = z.object({\n ip: z.string().describe(\"The IP address\").nullable(),\n cidr: z.string().describe(\"The CIDR address for this listing (only set if the IP is listed)\").nullable(),\n \"is-bot\": z.boolean().describe(\"IP is hosting a malicious bot or is part of a botnet. This is a broad category which includes brute-force crackers\").nullable(),\n \"is-tor\": z.boolean().describe(\"IP is a Tor node or running a Tor related service\").nullable(),\n \"is-vpn\": z.boolean().describe(\"IP belongs to a public VPN provider (only set if the 'vpn-lookup' option is enabled)\").nullable(),\n sensors: z.array(NeutrinoCheckIpBlocklist_BlocklistSensorSchema).describe(\"An array of objects containing details on which specific sensors detected the IP\"),\n \"is-proxy\": z.boolean().describe(\"IP has been detected as an anonymous web proxy or anonymous HTTP proxy\").nullable(),\n \"is-listed\": z.boolean().describe(\"Is this IP on a blocklist\").nullable(),\n \"is-spider\": z.boolean().describe(\"IP is running a hostile web spider (deprecated but kept for backwards compatibility instead use UA/IP lookups for spider detection)\").nullable(),\n \"last-seen\": z.number().int().describe(\"The unix time when this IP was last seen on any blocklist. IPs are automatically removed after 7 days therefor this value will never be older than 7 days\").nullable(),\n blocklists: z.array(z.string()).describe(\"An array of strings indicating which blocklist categories this IP is listed on. Current possible values are: tor, proxy, vpn, bot, spam-bot, exploit-bot, hijacked, malware, spyware, spider, dshield\"),\n \"is-dshield\": z.boolean().describe(\"IP has been flagged as a significant attack source by DShield (dshield.org)\").nullable(),\n \"is-malware\": z.boolean().describe(\"IP is involved in distributing or is running malware\").nullable(),\n \"is-spyware\": z.boolean().describe(\"IP is involved in distributing or is running spyware\").nullable(),\n \"list-count\": z.number().int().describe(\"The number of blocklists the IP is listed on\").nullable(),\n \"is-hijacked\": z.boolean().describe(\"IP is part of a hijacked netblock or a netblock controlled by a criminal organization\").nullable(),\n \"is-spam-bot\": z.boolean().describe(\"IP address is hosting a spam bot, comment spamming or any other spamming type software\").nullable(),\n \"is-exploit-bot\": z.boolean().describe(\"IP is hosting an exploit finding bot or is running exploit scanning software\").nullable(),\n}).passthrough().describe(\"Response model for IP Blocklist check.\");\n\nexport const neutrinoCheckIpBlocklist = action(\"NEUTRINO_CHECK_IP_BLOCKLIST\", {\n slug: \"neutrino-check-ip-blocklist\",\n name: \"IP Blocklist\",\n description: \"Check if an IP address is on a blocklist. Detect IPs associated with malware, anonymous proxies, TOR exit nodes, botnets, spam sources and malicious servers. Use when you need to verify if an IP address is known to be malicious or part of a threat network.\",\n input: NeutrinoCheckIpBlocklistInput,\n output: NeutrinoCheckIpBlocklistOutput,\n});\n"],"mappings":";;;AAIA,MAAa,gCAAgC,EAAE,OAAO;CACpD,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,kPAAkP;CAC1Q,cAAc,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,iKAAiK,CAAC,CAAC,SAAS;AAChO,CAAC,CAAC,CAAC,SAAS,uCAAuC;AACnD,MAAM,iDAAiD,EAAE,OAAO;CAC9D,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,SAAS;CACpD,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,oCAAoC,CAAC,CAAC,SAAS;CAC9E,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,qCAAqC,CAAC,CAAC,SAAS;AACnF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,2DAA2D;AAsBrF,MAAa,2BAA2B,OAAO,+BAA+B;CAC5E,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAAO;CACP,QA1B4C,EAAE,OAAO;EACrD,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS;EACnD,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,kEAAkE,CAAC,CAAC,SAAS;EACvG,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS,oHAAoH,CAAC,CAAC,SAAS;EAC9J,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS,mDAAmD,CAAC,CAAC,SAAS;EAC7F,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS,sFAAsF,CAAC,CAAC,SAAS;EAChI,SAAS,EAAE,MAAM,8CAA8C,CAAC,CAAC,SAAS,kFAAkF;EAC5J,YAAY,EAAE,QAAQ,CAAC,CAAC,SAAS,wEAAwE,CAAC,CAAC,SAAS;EACpH,aAAa,EAAE,QAAQ,CAAC,CAAC,SAAS,2BAA2B,CAAC,CAAC,SAAS;EACxE,aAAa,EAAE,QAAQ,CAAC,CAAC,SAAS,qIAAqI,CAAC,CAAC,SAAS;EAClL,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,2JAA2J,CAAC,CAAC,SAAS;EAC7M,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,uMAAuM;EAChP,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,6EAA6E,CAAC,CAAC,SAAS;EAC3H,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,sDAAsD,CAAC,CAAC,SAAS;EACpG,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,sDAAsD,CAAC,CAAC,SAAS;EACpG,cAAc,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,8CAA8C,CAAC,CAAC,SAAS;EACjG,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS,uFAAuF,CAAC,CAAC,SAAS;EACtI,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS,wFAAwF,CAAC,CAAC,SAAS;EACvI,kBAAkB,EAAE,QAAQ,CAAC,CAAC,SAAS,8EAA8E,CAAC,CAAC,SAAS;CAClI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,wCAOhB;AACV,CAAC"}
@@ -8,18 +8,18 @@ const NeutrinoConvertInput = zod.z.object({
8
8
  "historical-date": zod.z.string().describe("Optional date for historical exchange rates. Formats: YYYY-MM-DD, YYYY-MM, or YYYY. If not provided, uses current rates.").optional()
9
9
  }).describe("Request model for the Convert action.");
10
10
  const NeutrinoConvertOutput = zod.z.object({
11
- valid: zod.z.boolean().describe("Indicates whether the conversion was successful."),
12
- result: zod.z.string().describe("The converted value formatted as a string."),
13
- "to-name": zod.z.string().describe("The full name of the target unit or currency."),
14
- "to-type": zod.z.string().describe("The target unit or currency code."),
15
- "from-name": zod.z.string().describe("The full name of the source unit or currency."),
16
- "from-type": zod.z.string().describe("The source unit or currency code."),
17
- "to-symbol": zod.z.string().describe("The symbol for the target unit or currency."),
18
- "from-value": zod.z.string().describe("The original input value."),
19
- "from-symbol": zod.z.string().describe("The symbol for the source unit or currency."),
20
- "result-float": zod.z.number().describe("The converted value as a float number."),
11
+ valid: zod.z.boolean().describe("Indicates whether the conversion was successful.").nullable(),
12
+ result: zod.z.string().describe("The converted value formatted as a string.").nullable(),
13
+ "to-name": zod.z.string().describe("The full name of the target unit or currency.").nullable(),
14
+ "to-type": zod.z.string().describe("The target unit or currency code.").nullable(),
15
+ "from-name": zod.z.string().describe("The full name of the source unit or currency.").nullable(),
16
+ "from-type": zod.z.string().describe("The source unit or currency code.").nullable(),
17
+ "to-symbol": zod.z.string().describe("The symbol for the target unit or currency.").nullable(),
18
+ "from-value": zod.z.string().describe("The original input value.").nullable(),
19
+ "from-symbol": zod.z.string().describe("The symbol for the source unit or currency.").nullable(),
20
+ "result-float": zod.z.number().describe("The converted value as a float number.").nullable(),
21
21
  "historical-date": zod.z.string().default("").describe("The historical date used for the conversion (ISO format YYYY-MM-DD), empty string if current rates used.").nullable().optional()
22
- }).describe("Response model for the Convert action.");
22
+ }).passthrough().describe("Response model for the Convert action.");
23
23
  const neutrinoConvert = require_action.action("NEUTRINO_CONVERT", {
24
24
  slug: "neutrino-convert",
25
25
  name: "Convert Value",
@@ -1 +1 @@
1
- {"version":3,"file":"convert.cjs","names":["z","action"],"sources":["../../src/actions/convert.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const NeutrinoConvertInput: z.ZodTypeAny = z.object({\n \"to-type\": z.string().describe(\"The unit or currency code to convert to (e.g., 'EUR', 'm', 'gram').\"),\n \"from-type\": z.string().describe(\"The unit or currency code of the input value (e.g., 'USD', 'kg', 'mile').\"),\n \"from-value\": z.string().describe(\"The numeric value (as a string) to convert from.\"),\n \"historical-date\": z.string().describe(\"Optional date for historical exchange rates. Formats: YYYY-MM-DD, YYYY-MM, or YYYY. If not provided, uses current rates.\").optional(),\n}).describe(\"Request model for the Convert action.\");\nexport const NeutrinoConvertOutput: z.ZodTypeAny = z.object({\n valid: z.boolean().describe(\"Indicates whether the conversion was successful.\"),\n result: z.string().describe(\"The converted value formatted as a string.\"),\n \"to-name\": z.string().describe(\"The full name of the target unit or currency.\"),\n \"to-type\": z.string().describe(\"The target unit or currency code.\"),\n \"from-name\": z.string().describe(\"The full name of the source unit or currency.\"),\n \"from-type\": z.string().describe(\"The source unit or currency code.\"),\n \"to-symbol\": z.string().describe(\"The symbol for the target unit or currency.\"),\n \"from-value\": z.string().describe(\"The original input value.\"),\n \"from-symbol\": z.string().describe(\"The symbol for the source unit or currency.\"),\n \"result-float\": z.number().describe(\"The converted value as a float number.\"),\n \"historical-date\": z.string().default(\"\").describe(\"The historical date used for the conversion (ISO format YYYY-MM-DD), empty string if current rates used.\").nullable().optional(),\n}).describe(\"Response model for the Convert action.\");\n\nexport const neutrinoConvert = action(\"NEUTRINO_CONVERT\", {\n slug: \"neutrino-convert\",\n name: \"Convert Value\",\n description: \"Tool to perform unit and currency conversions. Use when you need to convert a value from one unit or currency to another. Example: convert 100 USD to EUR.\",\n input: NeutrinoConvertInput,\n output: NeutrinoConvertOutput,\n});\n"],"mappings":";;;AAIA,MAAa,uBAAqCA,IAAAA,EAAE,OAAO;CACzD,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,qEAAqE;CACpG,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,2EAA2E;CAC5G,cAAcA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,kDAAkD;CACpF,mBAAmBA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,0HAA0H,CAAC,CAAC,SAAS;AAC9K,CAAC,CAAC,CAAC,SAAS,uCAAuC;AACnD,MAAa,wBAAsCA,IAAAA,EAAE,OAAO;CAC1D,OAAOA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,kDAAkD;CAC9E,QAAQA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,4CAA4C;CACxE,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,+CAA+C;CAC9E,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,mCAAmC;CAClE,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,+CAA+C;CAChF,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,mCAAmC;CACpE,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,6CAA6C;CAC9E,cAAcA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,2BAA2B;CAC7D,eAAeA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,6CAA6C;CAChF,gBAAgBA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,wCAAwC;CAC5E,mBAAmBA,IAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,0GAA0G,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;AACrL,CAAC,CAAC,CAAC,SAAS,wCAAwC;AAEpD,MAAa,kBAAkBC,eAAAA,OAAO,oBAAoB;CACxD,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAAO;CACP,QAAQ;AACV,CAAC"}
1
+ {"version":3,"file":"convert.cjs","names":["z","action"],"sources":["../../src/actions/convert.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const NeutrinoConvertInput = z.object({\n \"to-type\": z.string().describe(\"The unit or currency code to convert to (e.g., 'EUR', 'm', 'gram').\"),\n \"from-type\": z.string().describe(\"The unit or currency code of the input value (e.g., 'USD', 'kg', 'mile').\"),\n \"from-value\": z.string().describe(\"The numeric value (as a string) to convert from.\"),\n \"historical-date\": z.string().describe(\"Optional date for historical exchange rates. Formats: YYYY-MM-DD, YYYY-MM, or YYYY. If not provided, uses current rates.\").optional(),\n}).describe(\"Request model for the Convert action.\");\nexport const NeutrinoConvertOutput = z.object({\n valid: z.boolean().describe(\"Indicates whether the conversion was successful.\").nullable(),\n result: z.string().describe(\"The converted value formatted as a string.\").nullable(),\n \"to-name\": z.string().describe(\"The full name of the target unit or currency.\").nullable(),\n \"to-type\": z.string().describe(\"The target unit or currency code.\").nullable(),\n \"from-name\": z.string().describe(\"The full name of the source unit or currency.\").nullable(),\n \"from-type\": z.string().describe(\"The source unit or currency code.\").nullable(),\n \"to-symbol\": z.string().describe(\"The symbol for the target unit or currency.\").nullable(),\n \"from-value\": z.string().describe(\"The original input value.\").nullable(),\n \"from-symbol\": z.string().describe(\"The symbol for the source unit or currency.\").nullable(),\n \"result-float\": z.number().describe(\"The converted value as a float number.\").nullable(),\n \"historical-date\": z.string().default(\"\").describe(\"The historical date used for the conversion (ISO format YYYY-MM-DD), empty string if current rates used.\").nullable().optional(),\n}).passthrough().describe(\"Response model for the Convert action.\");\n\nexport const neutrinoConvert = action(\"NEUTRINO_CONVERT\", {\n slug: \"neutrino-convert\",\n name: \"Convert Value\",\n description: \"Tool to perform unit and currency conversions. Use when you need to convert a value from one unit or currency to another. Example: convert 100 USD to EUR.\",\n input: NeutrinoConvertInput,\n output: NeutrinoConvertOutput,\n});\n"],"mappings":";;;AAIA,MAAa,uBAAuBA,IAAAA,EAAE,OAAO;CAC3C,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,qEAAqE;CACpG,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,2EAA2E;CAC5G,cAAcA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,kDAAkD;CACpF,mBAAmBA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,0HAA0H,CAAC,CAAC,SAAS;AAC9K,CAAC,CAAC,CAAC,SAAS,uCAAuC;AACnD,MAAa,wBAAwBA,IAAAA,EAAE,OAAO;CAC5C,OAAOA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,kDAAkD,CAAC,CAAC,SAAS;CACzF,QAAQA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,4CAA4C,CAAC,CAAC,SAAS;CACnF,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,+CAA+C,CAAC,CAAC,SAAS;CACzF,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,mCAAmC,CAAC,CAAC,SAAS;CAC7E,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,+CAA+C,CAAC,CAAC,SAAS;CAC3F,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,mCAAmC,CAAC,CAAC,SAAS;CAC/E,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,6CAA6C,CAAC,CAAC,SAAS;CACzF,cAAcA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,2BAA2B,CAAC,CAAC,SAAS;CACxE,eAAeA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,6CAA6C,CAAC,CAAC,SAAS;CAC3F,gBAAgBA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,wCAAwC,CAAC,CAAC,SAAS;CACvF,mBAAmBA,IAAAA,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,0GAA0G,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;AACrL,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,wCAAwC;AAElE,MAAa,kBAAkBC,eAAAA,OAAO,oBAAoB;CACxD,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAAO;CACP,QAAQ;AACV,CAAC"}
@@ -1,9 +1,31 @@
1
1
  import { z } from "zod";
2
2
 
3
3
  //#region src/actions/convert.d.ts
4
- declare const NeutrinoConvertInput: z.ZodTypeAny;
5
- declare const NeutrinoConvertOutput: z.ZodTypeAny;
6
- declare const neutrinoConvert: import("@keystrokehq/action").WorkflowActionDefinition<unknown, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
4
+ declare const NeutrinoConvertInput: z.ZodObject<{
5
+ "to-type": z.ZodString;
6
+ "from-type": z.ZodString;
7
+ "from-value": z.ZodString;
8
+ "historical-date": z.ZodOptional<z.ZodString>;
9
+ }, z.core.$strip>;
10
+ declare const NeutrinoConvertOutput: z.ZodObject<{
11
+ valid: z.ZodNullable<z.ZodBoolean>;
12
+ result: z.ZodNullable<z.ZodString>;
13
+ "to-name": z.ZodNullable<z.ZodString>;
14
+ "to-type": z.ZodNullable<z.ZodString>;
15
+ "from-name": z.ZodNullable<z.ZodString>;
16
+ "from-type": z.ZodNullable<z.ZodString>;
17
+ "to-symbol": z.ZodNullable<z.ZodString>;
18
+ "from-value": z.ZodNullable<z.ZodString>;
19
+ "from-symbol": z.ZodNullable<z.ZodString>;
20
+ "result-float": z.ZodNullable<z.ZodNumber>;
21
+ "historical-date": z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodString>>>;
22
+ }, z.core.$loose>;
23
+ declare const neutrinoConvert: import("@keystrokehq/action").WorkflowActionDefinition<{
24
+ "to-type": string;
25
+ "from-type": string;
26
+ "from-value": string;
27
+ "historical-date"?: string | undefined;
28
+ }, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
7
29
  //#endregion
8
30
  export { neutrinoConvert };
9
31
  //# sourceMappingURL=convert.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.cts","names":[],"sources":["../../src/actions/convert.ts"],"mappings":";;;cAIa,oBAAA,EAAsB,CAAA,CAAE,UAKe;AAAA,cACvC,qBAAA,EAAuB,CAAA,CAAE,UAYe;AAAA,cAExC,eAAA,gCAAe,wBAAA,iDAAA,mBAAA,yCAAA,UAAA,4CAAA,UAAA"}
1
+ {"version":3,"file":"convert.d.cts","names":[],"sources":["../../src/actions/convert.ts"],"mappings":";;;cAIa,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;cAMpB,qBAAA,EAAqB,CAAA,CAAA,SAAA;;;;;;;;;;;;;cAcrB,eAAA,gCAAe,wBAAA"}
@@ -1,9 +1,31 @@
1
1
  import { z } from "zod";
2
2
 
3
3
  //#region src/actions/convert.d.ts
4
- declare const NeutrinoConvertInput: z.ZodTypeAny;
5
- declare const NeutrinoConvertOutput: z.ZodTypeAny;
6
- declare const neutrinoConvert: import("@keystrokehq/action").WorkflowActionDefinition<unknown, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
4
+ declare const NeutrinoConvertInput: z.ZodObject<{
5
+ "to-type": z.ZodString;
6
+ "from-type": z.ZodString;
7
+ "from-value": z.ZodString;
8
+ "historical-date": z.ZodOptional<z.ZodString>;
9
+ }, z.core.$strip>;
10
+ declare const NeutrinoConvertOutput: z.ZodObject<{
11
+ valid: z.ZodNullable<z.ZodBoolean>;
12
+ result: z.ZodNullable<z.ZodString>;
13
+ "to-name": z.ZodNullable<z.ZodString>;
14
+ "to-type": z.ZodNullable<z.ZodString>;
15
+ "from-name": z.ZodNullable<z.ZodString>;
16
+ "from-type": z.ZodNullable<z.ZodString>;
17
+ "to-symbol": z.ZodNullable<z.ZodString>;
18
+ "from-value": z.ZodNullable<z.ZodString>;
19
+ "from-symbol": z.ZodNullable<z.ZodString>;
20
+ "result-float": z.ZodNullable<z.ZodNumber>;
21
+ "historical-date": z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodString>>>;
22
+ }, z.core.$loose>;
23
+ declare const neutrinoConvert: import("@keystrokehq/action").WorkflowActionDefinition<{
24
+ "to-type": string;
25
+ "from-type": string;
26
+ "from-value": string;
27
+ "historical-date"?: string | undefined;
28
+ }, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
7
29
  //#endregion
8
30
  export { neutrinoConvert };
9
31
  //# sourceMappingURL=convert.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.mts","names":[],"sources":["../../src/actions/convert.ts"],"mappings":";;;cAIa,oBAAA,EAAsB,CAAA,CAAE,UAKe;AAAA,cACvC,qBAAA,EAAuB,CAAA,CAAE,UAYe;AAAA,cAExC,eAAA,gCAAe,wBAAA,iDAAA,mBAAA,yCAAA,UAAA,4CAAA,UAAA"}
1
+ {"version":3,"file":"convert.d.mts","names":[],"sources":["../../src/actions/convert.ts"],"mappings":";;;cAIa,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;cAMpB,qBAAA,EAAqB,CAAA,CAAA,SAAA;;;;;;;;;;;;;cAcrB,eAAA,gCAAe,wBAAA"}
@@ -11,18 +11,18 @@ const neutrinoConvert = action("NEUTRINO_CONVERT", {
11
11
  "historical-date": z.string().describe("Optional date for historical exchange rates. Formats: YYYY-MM-DD, YYYY-MM, or YYYY. If not provided, uses current rates.").optional()
12
12
  }).describe("Request model for the Convert action."),
13
13
  output: z.object({
14
- valid: z.boolean().describe("Indicates whether the conversion was successful."),
15
- result: z.string().describe("The converted value formatted as a string."),
16
- "to-name": z.string().describe("The full name of the target unit or currency."),
17
- "to-type": z.string().describe("The target unit or currency code."),
18
- "from-name": z.string().describe("The full name of the source unit or currency."),
19
- "from-type": z.string().describe("The source unit or currency code."),
20
- "to-symbol": z.string().describe("The symbol for the target unit or currency."),
21
- "from-value": z.string().describe("The original input value."),
22
- "from-symbol": z.string().describe("The symbol for the source unit or currency."),
23
- "result-float": z.number().describe("The converted value as a float number."),
14
+ valid: z.boolean().describe("Indicates whether the conversion was successful.").nullable(),
15
+ result: z.string().describe("The converted value formatted as a string.").nullable(),
16
+ "to-name": z.string().describe("The full name of the target unit or currency.").nullable(),
17
+ "to-type": z.string().describe("The target unit or currency code.").nullable(),
18
+ "from-name": z.string().describe("The full name of the source unit or currency.").nullable(),
19
+ "from-type": z.string().describe("The source unit or currency code.").nullable(),
20
+ "to-symbol": z.string().describe("The symbol for the target unit or currency.").nullable(),
21
+ "from-value": z.string().describe("The original input value.").nullable(),
22
+ "from-symbol": z.string().describe("The symbol for the source unit or currency.").nullable(),
23
+ "result-float": z.number().describe("The converted value as a float number.").nullable(),
24
24
  "historical-date": z.string().default("").describe("The historical date used for the conversion (ISO format YYYY-MM-DD), empty string if current rates used.").nullable().optional()
25
- }).describe("Response model for the Convert action.")
25
+ }).passthrough().describe("Response model for the Convert action.")
26
26
  });
27
27
  //#endregion
28
28
  export { neutrinoConvert };
@@ -1 +1 @@
1
- {"version":3,"file":"convert.mjs","names":[],"sources":["../../src/actions/convert.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const NeutrinoConvertInput: z.ZodTypeAny = z.object({\n \"to-type\": z.string().describe(\"The unit or currency code to convert to (e.g., 'EUR', 'm', 'gram').\"),\n \"from-type\": z.string().describe(\"The unit or currency code of the input value (e.g., 'USD', 'kg', 'mile').\"),\n \"from-value\": z.string().describe(\"The numeric value (as a string) to convert from.\"),\n \"historical-date\": z.string().describe(\"Optional date for historical exchange rates. Formats: YYYY-MM-DD, YYYY-MM, or YYYY. If not provided, uses current rates.\").optional(),\n}).describe(\"Request model for the Convert action.\");\nexport const NeutrinoConvertOutput: z.ZodTypeAny = z.object({\n valid: z.boolean().describe(\"Indicates whether the conversion was successful.\"),\n result: z.string().describe(\"The converted value formatted as a string.\"),\n \"to-name\": z.string().describe(\"The full name of the target unit or currency.\"),\n \"to-type\": z.string().describe(\"The target unit or currency code.\"),\n \"from-name\": z.string().describe(\"The full name of the source unit or currency.\"),\n \"from-type\": z.string().describe(\"The source unit or currency code.\"),\n \"to-symbol\": z.string().describe(\"The symbol for the target unit or currency.\"),\n \"from-value\": z.string().describe(\"The original input value.\"),\n \"from-symbol\": z.string().describe(\"The symbol for the source unit or currency.\"),\n \"result-float\": z.number().describe(\"The converted value as a float number.\"),\n \"historical-date\": z.string().default(\"\").describe(\"The historical date used for the conversion (ISO format YYYY-MM-DD), empty string if current rates used.\").nullable().optional(),\n}).describe(\"Response model for the Convert action.\");\n\nexport const neutrinoConvert = action(\"NEUTRINO_CONVERT\", {\n slug: \"neutrino-convert\",\n name: \"Convert Value\",\n description: \"Tool to perform unit and currency conversions. Use when you need to convert a value from one unit or currency to another. Example: convert 100 USD to EUR.\",\n input: NeutrinoConvertInput,\n output: NeutrinoConvertOutput,\n});\n"],"mappings":";;AAwBA,MAAa,kBAAkB,OAAO,oBAAoB;CACxD,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAxBgD,EAAE,OAAO;EACzD,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,qEAAqE;EACpG,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,2EAA2E;EAC5G,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,kDAAkD;EACpF,mBAAmB,EAAE,OAAO,CAAC,CAAC,SAAS,0HAA0H,CAAC,CAAC,SAAS;CAC9K,CAAC,CAAC,CAAC,SAAS,uCAmBH;CACP,QAnBiD,EAAE,OAAO;EAC1D,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,kDAAkD;EAC9E,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,4CAA4C;EACxE,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,+CAA+C;EAC9E,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,mCAAmC;EAClE,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,+CAA+C;EAChF,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,mCAAmC;EACpE,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,6CAA6C;EAC9E,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,2BAA2B;EAC7D,eAAe,EAAE,OAAO,CAAC,CAAC,SAAS,6CAA6C;EAChF,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS,wCAAwC;EAC5E,mBAAmB,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,0GAA0G,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;CACrL,CAAC,CAAC,CAAC,SAAS,wCAOF;AACV,CAAC"}
1
+ {"version":3,"file":"convert.mjs","names":[],"sources":["../../src/actions/convert.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const NeutrinoConvertInput = z.object({\n \"to-type\": z.string().describe(\"The unit or currency code to convert to (e.g., 'EUR', 'm', 'gram').\"),\n \"from-type\": z.string().describe(\"The unit or currency code of the input value (e.g., 'USD', 'kg', 'mile').\"),\n \"from-value\": z.string().describe(\"The numeric value (as a string) to convert from.\"),\n \"historical-date\": z.string().describe(\"Optional date for historical exchange rates. Formats: YYYY-MM-DD, YYYY-MM, or YYYY. If not provided, uses current rates.\").optional(),\n}).describe(\"Request model for the Convert action.\");\nexport const NeutrinoConvertOutput = z.object({\n valid: z.boolean().describe(\"Indicates whether the conversion was successful.\").nullable(),\n result: z.string().describe(\"The converted value formatted as a string.\").nullable(),\n \"to-name\": z.string().describe(\"The full name of the target unit or currency.\").nullable(),\n \"to-type\": z.string().describe(\"The target unit or currency code.\").nullable(),\n \"from-name\": z.string().describe(\"The full name of the source unit or currency.\").nullable(),\n \"from-type\": z.string().describe(\"The source unit or currency code.\").nullable(),\n \"to-symbol\": z.string().describe(\"The symbol for the target unit or currency.\").nullable(),\n \"from-value\": z.string().describe(\"The original input value.\").nullable(),\n \"from-symbol\": z.string().describe(\"The symbol for the source unit or currency.\").nullable(),\n \"result-float\": z.number().describe(\"The converted value as a float number.\").nullable(),\n \"historical-date\": z.string().default(\"\").describe(\"The historical date used for the conversion (ISO format YYYY-MM-DD), empty string if current rates used.\").nullable().optional(),\n}).passthrough().describe(\"Response model for the Convert action.\");\n\nexport const neutrinoConvert = action(\"NEUTRINO_CONVERT\", {\n slug: \"neutrino-convert\",\n name: \"Convert Value\",\n description: \"Tool to perform unit and currency conversions. Use when you need to convert a value from one unit or currency to another. Example: convert 100 USD to EUR.\",\n input: NeutrinoConvertInput,\n output: NeutrinoConvertOutput,\n});\n"],"mappings":";;AAwBA,MAAa,kBAAkB,OAAO,oBAAoB;CACxD,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAxBkC,EAAE,OAAO;EAC3C,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,qEAAqE;EACpG,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,2EAA2E;EAC5G,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,kDAAkD;EACpF,mBAAmB,EAAE,OAAO,CAAC,CAAC,SAAS,0HAA0H,CAAC,CAAC,SAAS;CAC9K,CAAC,CAAC,CAAC,SAAS,uCAmBH;CACP,QAnBmC,EAAE,OAAO;EAC5C,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,kDAAkD,CAAC,CAAC,SAAS;EACzF,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,4CAA4C,CAAC,CAAC,SAAS;EACnF,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,+CAA+C,CAAC,CAAC,SAAS;EACzF,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,mCAAmC,CAAC,CAAC,SAAS;EAC7E,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,+CAA+C,CAAC,CAAC,SAAS;EAC3F,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,mCAAmC,CAAC,CAAC,SAAS;EAC/E,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,6CAA6C,CAAC,CAAC,SAAS;EACzF,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,2BAA2B,CAAC,CAAC,SAAS;EACxE,eAAe,EAAE,OAAO,CAAC,CAAC,SAAS,6CAA6C,CAAC,CAAC,SAAS;EAC3F,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS,wCAAwC,CAAC,CAAC,SAAS;EACvF,mBAAmB,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,0GAA0G,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;CACrL,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,wCAOhB;AACV,CAAC"}