{"openapi":"3.1.0","info":{"title":"Neutrino API (BYOK) API","version":"0.1.0","description":"Neutrino API (BYOK) lets an AI assistant read your own Neutrino API data through the Neutrino API API with a key you supply (user ID and API key joined as USERID:APIKEY). Read-only: 9 tools (validate_email, verify_email, validate_phone, get_ip_info, probe_ip, check_ip_blocklist, check_host_reputation, lookup_domain, lookup_user_agent). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-neutrinoapi.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-neutrinoapi/docs"},"termsOfService":"https://connectorbay.com/byok-neutrinoapi/terms"},"servers":[{"url":"https://byok-neutrinoapi.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-neutrinoapi/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/validate_email":{"post":{"operationId":"validate_email","summary":"Check an email address for syntax, DNS and MX health, freemail, disposable and role-based flags. It does not test the ma","description":"Check an email address for syntax, DNS and MX health, freemail, disposable and role-based flags. It does not test the mailbox itself. Counts against the daily request quota. Use for \"Is jane@mailinator.com a disposable email address\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"email":{"description":"The email address to check.","maxLength":254,"title":"Email","type":"string"},"fix_typos":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to correct common domain typos before checking.","title":"Fix Typos"}},"required":["email"],"title":"validate_emailArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/verify_email":{"post":{"operationId":"verify_email","summary":"Check an email address and also test whether the mailbox exists through SMTP, including catch-all and deferred answers. ","description":"Check an email address and also test whether the mailbox exists through SMTP, including catch-all and deferred answers. Counts against the daily request quota. Use for \"Does the mailbox support@example.com actually exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"email":{"description":"The email address to verify.","maxLength":254,"title":"Email","type":"string"},"fix_typos":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to correct common domain typos before checking.","title":"Fix Typos"}},"required":["email"],"title":"verify_emailArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/validate_phone":{"post":{"operationId":"validate_phone","summary":"Check a phone number and return its type (mobile, fixed-line, voip, toll-free), country, E.164 form and prefix network. ","description":"Check a phone number and return its type (mobile, fixed-line, voip, toll-free), country, E.164 form and prefix network. Local numbers need a country code or an IP. Use for \"Is +14155550123 a valid mobile number and which country is it in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"number":{"description":"Phone number in international (E.164) or local format.","maxLength":32,"title":"Number","type":"string"},"country_code":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 2-letter country code to assume for local-format numbers, for example 'US'.","title":"Country Code"},"ip":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"A user's IP address; the number is assumed to belong to that IP's country.","title":"Ip"}},"required":["number"],"title":"validate_phoneArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_ip_info":{"post":{"operationId":"get_ip_info","summary":"Get location data for an IP address: country, region, city, coordinates, time zone, and whether it is a bogon (private o","description":"Get location data for an IP address: country, region, city, coordinates, time zone, and whether it is a bogon (private or reserved) address. Use for \"Which country and city is the IP address 8.8.8.8 in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ip":{"description":"IPv4 or IPv6 address (CIDR notation is also accepted), for example '185.220.101.1'.","maxLength":64,"title":"Ip","type":"string"},"reverse_lookup":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also do a reverse DNS (PTR) lookup; slower.","title":"Reverse Lookup"}},"required":["ip"],"title":"get_ip_infoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/probe_ip":{"post":{"operationId":"probe_ip","summary":"Profile an IP address: provider and its type (isp, hosting, vpn, proxy, university, government), VPN or proxy flags, and","description":"Profile an IP address: provider and its type (isp, hosting, vpn, proxy, university, government), VPN or proxy flags, and the autonomous system with age and domains. Use for \"Is 185.220.101.1 a VPN, proxy or hosting address, and who runs the network\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ip":{"description":"IPv4 or IPv6 address (CIDR notation is also accepted), for example '185.220.101.1'.","maxLength":64,"title":"Ip","type":"string"}},"required":["ip"],"title":"probe_ipArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/check_ip_blocklist":{"post":{"operationId":"check_ip_blocklist","summary":"Check whether an IP address is on real-time blocklists (Tor, proxy, bot, spam, exploit, malware, hijacked) and how many ","description":"Check whether an IP address is on real-time blocklists (Tor, proxy, bot, spam, exploit, malware, hijacked) and how many sensors saw it. Listings expire after 7 days. Use for \"Is the IP address 185.220.101.1 currently on any abuse blocklist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ip":{"description":"IPv4 or IPv6 address (CIDR notation is also accepted), for example '185.220.101.1'.","maxLength":64,"title":"Ip","type":"string"},"vpn_lookup":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also flag public VPN provider addresses.","title":"Vpn Lookup"}},"required":["ip"],"title":"check_ip_blocklistArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/check_host_reputation":{"post":{"operationId":"check_host_reputation","summary":"Check an IP address, domain, hostname or URL against DNS blocklists (DNSBL and URI blocklists) and list which ones flag ","description":"Check an IP address, domain, hostname or URL against DNS blocklists (DNSBL and URI blocklists) and list which ones flag it. Use for \"Is the domain example.com listed on any spam blocklists\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"host":{"description":"IP address, domain, FQDN or URL to check.","maxLength":300,"title":"Host","type":"string"},"list_rating":{"anyOf":[{"maximum":3,"minimum":1,"type":"integer"},{"type":"null"}],"default":3,"description":"Only check lists with this rating or better: 1 is best, 3 is lowest (default 3).","title":"List Rating"}},"required":["host"],"title":"check_host_reputationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/lookup_domain":{"post":{"operationId":"lookup_domain","summary":"Get domain intelligence: registration and expiry dates, age, registrar, traffic rank, blocklist categories (phishing, ma","description":"Get domain intelligence: registration and expiry dates, age, registrar, traffic rank, blocklist categories (phishing, malware, spam), and DNS, mail and website providers. Use for \"How old is the domain example.com and is it flagged for phishing or malware\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"host":{"description":"Domain name, hostname, FQDN, URL or email address to look up.","maxLength":300,"title":"Host","type":"string"},"live":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"False to skip live checks of unseen domains for a faster answer (default true).","title":"Live"}},"required":["host"],"title":"lookup_domainArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/lookup_user_agent":{"post":{"operationId":"lookup_user_agent","summary":"Parse a browser user-agent string (optionally with client hints) into browser, operating system, device brand and model,","description":"Parse a browser user-agent string (optionally with client hints) into browser, operating system, device brand and model, and bot or app flags. Use for \"What browser and device does this user-agent string describe\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ua":{"description":"The user-agent string to parse.","maxLength":1000,"title":"Ua","type":"string"},"device_model":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"A device model name or code to look up directly, or the client-hint model.","title":"Device Model"},"device_brand":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Device brand, used together with device_model for direct lookups.","title":"Device Brand"}},"required":["ua"],"title":"lookup_user_agentArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}