{"openapi":"3.1.0","info":{"title":"Kolide Device Trust (BYOK) API","version":"0.1.0","description":"Kolide Device Trust (BYOK) lets an AI assistant read your own Kolide Device Trust data through the Kolide Device Trust API with a key you supply (Device Trust API key). Read-only: 9 tools (whoami, list_devices, get_device, list_device_open_issues, list_issues, list_checks, list_device_groups, list_person_groups, list_audit_logs). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-kolide.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-kolide/docs"},"termsOfService":"https://connectorbay.com/byok-kolide/terms"},"servers":[{"url":"https://byok-kolide.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-kolide/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/whoami":{"post":{"operationId":"whoami","summary":"Show the organization the API key belongs to (id and name). Use for \"Which Kolide organization is my API key for\".","description":"Show the organization the API key belongs to (id and name). Use for \"Which Kolide organization is my API key for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"whoamiArguments","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_devices":{"post":{"operationId":"list_devices","summary":"List enrolled devices with operating system, model, type, authentication state, last seen time and block date. Serial nu","description":"List enrolled devices with operating system, model, type, authentication state, last seen time and block date. Serial numbers are not returned. Use for \"Which of our devices have not been seen for a month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter such as name~laptop or id:123; ':' is an exact match, '~' a partial match, clauses join with AND or OR. Only the fields documented for this list are searchable.","title":"Query"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 100, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the pagination.next_cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"title":"list_devicesArguments","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_device":{"post":{"operationId":"get_device","summary":"Get one device by id: operating system, model, authentication state, last seen and block date. Use for \"Show Kolide devi","description":"Get one device by id: operating system, model, authentication state, last seen and block date. Use for \"Show Kolide device 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Device id.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_deviceArguments","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_device_open_issues":{"post":{"operationId":"list_device_open_issues","summary":"List the open issues (failed checks) of one device. Use for \"What is wrong on Kolide device 1\".","description":"List the open issues (failed checks) of one device. Use for \"What is wrong on Kolide device 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"Device id.","maxLength":200,"title":"Device Id","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter such as name~laptop or id:123; ':' is an exact match, '~' a partial match, clauses join with AND or OR. Only the fields documented for this list are searchable.","title":"Query"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 100, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the pagination.next_cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"required":["device_id"],"title":"list_device_open_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_issues":{"post":{"operationId":"list_issues","summary":"List issues (failed device checks) across all devices with title, detection and resolution time, exemption flag and the ","description":"List issues (failed device checks) across all devices with title, detection and resolution time, exemption flag and the date they start blocking the device. Use for \"Which unresolved Kolide issues will block devices soon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter such as name~laptop or id:123; ':' is an exact match, '~' a partial match, clauses join with AND or OR. Only the fields documented for this list are searchable.","title":"Query"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 100, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the pagination.next_cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"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_checks":{"post":{"operationId":"list_checks","summary":"List device checks (the rules devices are measured against) with platforms, topics, share of passing devices, whether bl","description":"List device checks (the rules devices are measured against) with platforms, topics, share of passing devices, whether blocking is on and the grace period. Use for \"Which Kolide checks have the lowest pass rate\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter such as name~laptop or id:123; ':' is an exact match, '~' a partial match, clauses join with AND or OR. Only the fields documented for this list are searchable.","title":"Query"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 100, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the pagination.next_cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"title":"list_checksArguments","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_device_groups":{"post":{"operationId":"list_device_groups","summary":"List device groups with description and member count. Use for \"Which Kolide device groups do we have\".","description":"List device groups with description and member count. Use for \"Which Kolide device groups do we have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter such as name~laptop or id:123; ':' is an exact match, '~' a partial match, clauses join with AND or OR. Only the fields documented for this list are searchable.","title":"Query"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 100, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the pagination.next_cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"title":"list_device_groupsArguments","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_person_groups":{"post":{"operationId":"list_person_groups","summary":"List person groups (sets of people used for authentication rules) by id and name. Use for \"Which Kolide person groups ex","description":"List person groups (sets of people used for authentication rules) by id and name. Use for \"Which Kolide person groups exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter such as name~laptop or id:123; ':' is an exact match, '~' a partial match, clauses join with AND or OR. Only the fields documented for this list are searchable.","title":"Query"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 100, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the pagination.next_cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"title":"list_person_groupsArguments","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_audit_logs":{"post":{"operationId":"list_audit_logs","summary":"List audit log entries of the Device Trust admin console: time, who or what acted (name and type) and a description of t","description":"List audit log entries of the Device Trust admin console: time, who or what acted (name and type) and a description of the action. Use for \"What changed in our Kolide settings recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter such as name~laptop or id:123; ':' is an exact match, '~' a partial match, clauses join with AND or OR. Only the fields documented for this list are searchable.","title":"Query"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 100, default 25).","title":"Per Page"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the pagination.next_cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"title":"list_audit_logsArguments","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}}}}