{"openapi":"3.1.0","info":{"title":"Intruder (BYOK) API","version":"0.1.0","description":"Intruder (BYOK) lets an AI assistant read your own Intruder data through the Intruder API with a key you supply (Intruder access token). Read-only: 11 tools (check_api_health, list_issues, list_issue_occurrences, list_issue_targets, list_fixed_occurrences, list_targets, list_scans, get_scan, list_scan_schedules, list_tags, list_licenses). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-intruder.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-intruder/docs"},"termsOfService":"https://connectorbay.com/byok-intruder/terms"},"servers":[{"url":"https://byok-intruder.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-intruder/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/check_api_health":{"post":{"operationId":"check_api_health","summary":"Check that the Intruder API is running and show the email of the account the token belongs to. Use for \"Is my Intruder t","description":"Check that the Intruder API is running and show the email of the account the token belongs to. Use for \"Is my Intruder token valid and which account is it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"check_api_healthArguments","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/list_issues":{"post":{"operationId":"list_issues","summary":"List current security issues found by Intruder, with severity, CVSS score, exploit likelihood, snooze state and first-se","description":"List current security issues found by Intruder, with severity, CVSS score, exploit likelihood, snooze state and first-seen date. Filter by severity, tag, target or date. Use for \"What critical issues does Intruder currently report\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"severity":{"anyOf":[{"enum":["critical","high","medium","low"],"type":"string"},{"type":"null"}],"default":null,"description":"Only issues of this severity.","title":"Severity"},"exploit_likelihood":{"anyOf":[{"enum":["known","very_likely","likely","unlikely","rare","unknown"],"type":"string"},{"type":"null"}],"default":null,"description":"Only issues with this EPSS-based exploit likelihood.","title":"Exploit Likelihood"},"since":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only issues with new occurrences since this ISO 8601 time, for example 2026-01-15T10:30:00Z.","title":"Since"},"snoozed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list snoozed issues only, false to hide them.","title":"Snoozed"},"tag_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tag names; only items carrying one of these tags are returned.","title":"Tag Names"},"target_addresses":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated target addresses to filter by, for example 'example.com,203.0.113.5'.","title":"Target Addresses"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (default 25).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result to return, for paging (default 0).","title":"Offset"}},"title":"list_issuesArguments","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/list_issue_occurrences":{"post":{"operationId":"list_issue_occurrences","summary":"List where one issue occurs: affected target, port, protocol, age, CVEs and last scan time. Use for \"Which hosts are aff","description":"List where one issue occurs: affected target, port, protocol, age, CVEs and last scan time. Use for \"Which hosts are affected by Intruder issue 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"issue_id":{"description":"Numeric ID of the issue, as returned by list_issues.","minimum":1,"title":"Issue Id","type":"integer"},"since":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only occurrences first seen since this ISO 8601 time.","title":"Since"},"snoozed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for snoozed occurrences only, false to hide them.","title":"Snoozed"},"tag_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tag names; only items carrying one of these tags are returned.","title":"Tag Names"},"target_addresses":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated target addresses to filter by, for example 'example.com,203.0.113.5'.","title":"Target Addresses"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (default 25).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result to return, for paging (default 0).","title":"Offset"}},"required":["issue_id"],"title":"list_issue_occurrencesArguments","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/list_issue_targets":{"post":{"operationId":"list_issue_targets","summary":"List the targets affected by one issue. Use for \"Which targets does Intruder issue 1 affect\".","description":"List the targets affected by one issue. Use for \"Which targets does Intruder issue 1 affect\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"issue_id":{"description":"Numeric ID of the issue, as returned by list_issues.","minimum":1,"title":"Issue Id","type":"integer"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (default 25).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result to return, for paging (default 0).","title":"Offset"}},"required":["issue_id"],"title":"list_issue_targetsArguments","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/list_fixed_occurrences":{"post":{"operationId":"list_fixed_occurrences","summary":"List vulnerabilities that were found and later fixed, with remediation time, severity, host and port. Filter by fix date","description":"List vulnerabilities that were found and later fixed, with remediation time, severity, host and port. Filter by fix date. Use for \"What vulnerabilities did we fix in Intruder since January\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"severity":{"anyOf":[{"enum":["critical","high","medium","low"],"type":"string"},{"type":"null"}],"default":null,"description":"Only occurrences of this severity.","title":"Severity"},"remediated_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only occurrences fixed after this ISO 8601 time.","title":"Remediated After"},"remediated_before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only occurrences fixed before this ISO 8601 time.","title":"Remediated Before"},"tag_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tag names; only items carrying one of these tags are returned.","title":"Tag Names"},"target_addresses":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated target addresses to filter by, for example 'example.com,203.0.113.5'.","title":"Target Addresses"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (default 25).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result to return, for paging (default 0).","title":"Offset"}},"title":"list_fixed_occurrencesArguments","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/list_targets":{"post":{"operationId":"list_targets","summary":"List the targets Intruder scans, with type, status, last scan time, licence type, tags and WAF detection. Use for \"Which","description":"List the targets Intruder scans, with type, status, last scan time, licence type, tags and WAF detection. Use for \"Which of my Intruder targets are unresponsive\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only targets whose address or display address matches this text.","title":"Address"},"target_status":{"anyOf":[{"enum":["live","license_exceeded","unscanned","unresponsive","agent_uninstalled"],"type":"string"},{"type":"null"}],"default":null,"description":"Only targets in this state.","title":"Target Status"},"target_type":{"anyOf":[{"enum":["external","internal","cloud","container_image"],"type":"string"},{"type":"null"}],"default":null,"description":"Only targets of this type.","title":"Target Type"},"last_scanned_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only targets last scanned after this ISO 8601 time.","title":"Last Scanned After"},"last_scanned_before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only targets last scanned before this ISO 8601 time.","title":"Last Scanned Before"},"waf_interference":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only targets where a WAF is blocking scans.","title":"Waf Interference"},"tag_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tag names; only items carrying one of these tags are returned.","title":"Tag Names"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (default 25).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result to return, for paging (default 0).","title":"Offset"}},"title":"list_targetsArguments","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/list_scans":{"post":{"operationId":"list_scans","summary":"List Intruder scans with status, type, schedule period and creation time. Use for \"What Intruder scans are in progress\".","description":"List Intruder scans with status, type, schedule period and creation time. Use for \"What Intruder scans are in progress\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["in_progress","analysing_results","completed","cancelled","cancelled_no_active_targets","cancelled_no_valid_targets"],"type":"string"},{"type":"null"}],"default":null,"description":"Only scans with this status.","title":"Status"},"scan_type":{"anyOf":[{"enum":["advisory","assessment_schedule","cloud_security","cloudbot_new_target","container_image","new_service","rapid_remediation"],"type":"string"},{"type":"null"}],"default":null,"description":"Only scans of this type.","title":"Scan Type"},"schedule_period":{"anyOf":[{"enum":["daily","weekly","monthly","quarterly","one_off"],"type":"string"},{"type":"null"}],"default":null,"description":"Only scans with this schedule period.","title":"Schedule Period"},"tag_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tag names; only items carrying one of these tags are returned.","title":"Tag Names"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (default 25).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result to return, for paging (default 0).","title":"Offset"}},"title":"list_scansArguments","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_scan":{"post":{"operationId":"get_scan","summary":"Get one scan: name, status, type, targets, start and completion time, throttling and web-ports-only flags. Use for \"When","description":"Get one scan: name, status, type, targets, start and completion time, throttling and web-ports-only flags. Use for \"When did Intruder scan 1 complete\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric scan ID from list_scans.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_scanArguments","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/list_scan_schedules":{"post":{"operationId":"list_scan_schedules","summary":"List recurring scan schedules with period, next scan date, last scan result and the targets or tags they cover. Use for ","description":"List recurring scan schedules with period, next scan date, last scan result and the targets or tags they cover. Use for \"When is my next scheduled Intruder scan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"scan_all_targets":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only schedules that scan every target.","title":"Scan All Targets"},"tag_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tag names; only items carrying one of these tags are returned.","title":"Tag Names"}},"title":"list_scan_schedulesArguments","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/list_tags":{"post":{"operationId":"list_tags","summary":"List all tags defined in the Intruder account. Use for \"Which tags do I use in Intruder\".","description":"List all tags defined in the Intruder account. Use for \"Which tags do I use in Intruder\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (default 25).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result to return, for paging (default 0).","title":"Offset"}},"title":"list_tagsArguments","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/list_licenses":{"post":{"operationId":"list_licenses","summary":"Show total, consumed and available infrastructure and application licences. Use for \"How many Intruder licences do I hav","description":"Show total, consumed and available infrastructure and application licences. Use for \"How many Intruder licences do I have left\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (default 25).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index of the first result to return, for paging (default 0).","title":"Offset"}},"title":"list_licensesArguments","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}}}}