{"openapi":"3.1.0","info":{"title":"Detectify (BYOK) API","version":"0.1.0","description":"Detectify (BYOK) lets an AI assistant read your own Detectify data through the Detectify API with a key you supply (Detectify API v3 key). Read-only: 7 tools (list_ip_addresses, list_technologies, list_ports, list_breaches, list_domain_monitoring_settings, list_connectors, get_connector). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached;...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-detectify.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-detectify/docs"},"termsOfService":"https://connectorbay.com/byok-detectify/terms"},"servers":[{"url":"https://byok-detectify.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-detectify/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/list_ip_addresses":{"post":{"operationId":"list_ip_addresses","summary":"List IP addresses discovered on your attack surface with the domain, first-seen and disappeared times, ASN and country. ","description":"List IP addresses discovered on your attack surface with the domain, first-seen and disappeared times, ASN and country. Filter by when they appeared or vanished. Use for \"Which new IP addresses appeared on our attack surface this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next of the previous answer, to continue from the next page.","title":"Cursor"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 1000).","title":"Limit"},"first_seen_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items first seen after this ISO 8601 time (exclusive), for example 2026-01-01T00:00:00Z.","title":"First Seen After"},"first_seen_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items first seen before this ISO 8601 time (exclusive).","title":"First Seen Before"},"disappeared_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items that disappeared after this ISO 8601 time (exclusive).","title":"Disappeared After"},"disappeared_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items that disappeared before this ISO 8601 time (exclusive).","title":"Disappeared Before"}},"title":"list_ip_addressesArguments","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_technologies":{"post":{"operationId":"list_technologies","summary":"List web technologies (server software, frameworks, with versions and categories) detected on your attack surface. Use f","description":"List web technologies (server software, frameworks, with versions and categories) detected on your attack surface. Use for \"Which nginx versions does Detectify see on our domains\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next of the previous answer, to continue from the next page.","title":"Cursor"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 1000).","title":"Limit"},"first_seen_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items first seen after this ISO 8601 time (exclusive), for example 2026-01-01T00:00:00Z.","title":"First Seen After"},"first_seen_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items first seen before this ISO 8601 time (exclusive).","title":"First Seen Before"},"disappeared_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items that disappeared after this ISO 8601 time (exclusive).","title":"Disappeared After"},"disappeared_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items that disappeared before this ISO 8601 time (exclusive).","title":"Disappeared Before"}},"title":"list_technologiesArguments","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_ports":{"post":{"operationId":"list_ports","summary":"List ports found on your attack surface with the IP address, domain and open/closed status; filter by status or port num","description":"List ports found on your attack surface with the IP address, domain and open/closed status; filter by status or port numbers. Use for \"Which ports are open on our attack surface besides 80 and 443\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next of the previous answer, to continue from the next page.","title":"Cursor"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 1000).","title":"Limit"},"status":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated statuses to keep, for example 'OPEN' or 'OPEN,CLOSED'.","title":"Status"},"port":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated port numbers to keep, for example '22,3389'.","title":"Port"},"first_seen_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items first seen after this ISO 8601 time (exclusive), for example 2026-01-01T00:00:00Z.","title":"First Seen After"},"first_seen_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items first seen before this ISO 8601 time (exclusive).","title":"First Seen Before"},"disappeared_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items that disappeared after this ISO 8601 time (exclusive).","title":"Disappeared After"},"disappeared_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items that disappeared before this ISO 8601 time (exclusive).","title":"Disappeared Before"}},"title":"list_portsArguments","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_breaches":{"post":{"operationId":"list_breaches","summary":"List policy breaches detected on your assets with policy name, severity, status and timing. Use for \"Which policy breach","description":"List policy breaches detected on your assets with policy name, severity, status and timing. Use for \"Which policy breaches are new on our assets\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next of the previous answer, to continue from the next page.","title":"Cursor"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 1000).","title":"Limit"},"status_updated_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only breaches whose status changed after this ISO 8601 time.","title":"Status Updated After"},"status_updated_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only breaches whose status changed before this ISO 8601 time.","title":"Status Updated Before"},"first_seen_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items first seen after this ISO 8601 time (exclusive), for example 2026-01-01T00:00:00Z.","title":"First Seen After"},"first_seen_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items first seen before this ISO 8601 time (exclusive).","title":"First Seen Before"},"disappeared_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items that disappeared after this ISO 8601 time (exclusive).","title":"Disappeared After"},"disappeared_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items that disappeared before this ISO 8601 time (exclusive).","title":"Disappeared Before"}},"title":"list_breachesArguments","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_domain_monitoring_settings":{"post":{"operationId":"list_domain_monitoring_settings","summary":"List the surface monitoring settings of each monitored domain asset (which scans are enabled, port scanning options, inh","description":"List the surface monitoring settings of each monitored domain asset (which scans are enabled, port scanning options, inheritance from the root domain). Use for \"Is subdomain takeover monitoring enabled on our domains\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next of the previous answer, to continue from the next page.","title":"Cursor"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 1000).","title":"Limit"},"team_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Limit results to one team; optional when the key belongs to a single team.","title":"Team Id"}},"title":"list_domain_monitoring_settingsArguments","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_connectors":{"post":{"operationId":"list_connectors","summary":"List cloud and DNS connectors that feed asset discovery (provider, last run status and time); credentials are never retu","description":"List cloud and DNS connectors that feed asset discovery (provider, last run status and time); credentials are never returned. Use for \"Did the Detectify cloud connectors run successfully\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from pagination.next of the previous answer, to continue from the next page.","title":"Cursor"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return per page (1 to 1000).","title":"Limit"}},"title":"list_connectorsArguments","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_connector":{"post":{"operationId":"get_connector","summary":"Get one discovery connector by id with provider and last run status. Use for \"What is the status of Detectify connector ","description":"Get one discovery connector by id with provider and last run status. Use for \"What is the status of Detectify connector rgg44cb5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Connector id as returned by list_connectors.","maxLength":64,"title":"Id","type":"string"}},"required":["id"],"title":"get_connectorArguments","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}}}}