{"openapi":"3.1.0","info":{"title":"LeakIX (BYOK) API","version":"0.1.0","description":"LeakIX (BYOK) lets an AI assistant read your own LeakIX data through the LeakIX API with a key you supply (LeakIX API key). Read-only: 5 tools (search_services, search_leaks, list_subdomains, list_plugins, get_plugin). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to leakix.net. Unofficial connector by Unify...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-leakix.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-leakix/docs"},"termsOfService":"https://connectorbay.com/byok-leakix/terms"},"servers":[{"url":"https://byok-leakix.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-leakix/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/search_services":{"post":{"operationId":"search_services","summary":"Search LeakIX indexed internet services (scope service) with a LeakIX query. Returns events with IP, host, port, protoco","description":"Search LeakIX indexed internet services (scope service) with a LeakIX query. Returns events with IP, host, port, protocol, HTTP status and title, TLS certificate summary, detected software, geography and network. Limited to about 1 request per second. Use for \"Which exposed nginx services does LeakIX list for example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"description":"Query in LeakIX syntax with + (must match) and - (must not match) terms and field filters, for example '+plugin:GitConfigPlugin +country:France'. Common fields: ip, host, port, plugin, time, http.title, http.status, country.","maxLength":500,"title":"Q","type":"string"},"scope":{"anyOf":[{"const":"service","type":"string"},{"type":"null"}],"default":"service","description":"Search scope; this tool always uses 'service'.","title":"Scope"},"page":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number to start at, beginning with 0.","title":"Page"}},"required":["q"],"title":"search_servicesArguments","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/search_leaks":{"post":{"operationId":"search_leaks","summary":"Search LeakIX leak and misconfiguration findings (scope leak), such as exposed .git, .env, databases or admin panels, wi","description":"Search LeakIX leak and misconfiguration findings (scope leak), such as exposed .git, .env, databases or admin panels, with severity, stage and type. Leak contents and credentials are not returned. Limited to about 1 request per second. Use for \"Which exposed git configs or open databases does LeakIX report for example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"description":"Query in LeakIX syntax with + (must match) and - (must not match) terms and field filters, for example '+plugin:GitConfigPlugin +country:France'. Common fields: ip, host, port, plugin, time, http.title, http.status, country. Add +plugin:GitConfigPlugin to look for exposed .git configs.","maxLength":500,"title":"Q","type":"string"},"scope":{"anyOf":[{"const":"leak","type":"string"},{"type":"null"}],"default":"leak","description":"Search scope; this tool always uses 'leak'.","title":"Scope"},"page":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number to start at, beginning with 0.","title":"Page"}},"required":["q"],"title":"search_leaksArguments","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_subdomains":{"post":{"operationId":"list_subdomains","summary":"List known subdomains of a domain with the number of distinct IPs and last-seen time. Registered and paid plans get more","description":"List known subdomains of a domain with the number of distinct IPs and last-seen time. Registered and paid plans get more results. Use for \"What subdomains does LeakIX know for example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Registered domain name, for example 'example.com'.","maxLength":253,"title":"Domain","type":"string"}},"required":["domain"],"title":"list_subdomainsArguments","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_plugins":{"post":{"operationId":"list_plugins","summary":"List LeakIX detection plugins with description and the number of events each produced in the last hour, day and week. Us","description":"List LeakIX detection plugins with description and the number of events each produced in the last hour, day and week. Use for \"Which LeakIX detection plugins are most active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_pluginsArguments","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_plugin":{"post":{"operationId":"get_plugin","summary":"Get one detection plugin's name and description. Use for \"What does the LeakIX plugin ElasticSearchOpenPlugin check\".","description":"Get one detection plugin's name and description. Use for \"What does the LeakIX plugin ElasticSearchOpenPlugin check\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Plugin name from list_plugins, for example 'ElasticSearchOpenPlugin'.","maxLength":100,"title":"Name","type":"string"}},"required":["name"],"title":"get_pluginArguments","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}}}}