{"openapi":"3.1.0","info":{"title":"Level (BYOK) API","version":"0.1.0","description":"Level (BYOK) lets an AI assistant read your own Level data through the Level API with a key you supply (Level API key (create a read-only key in Level security settings)). Read-only: 11 tools (list_devices, get_device, list_groups, get_group, list_tags, list_alerts, get_alert, list_updates, get_update, list_automations, list_activities). 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-level.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-level/docs"},"termsOfService":"https://connectorbay.com/byok-level/terms"},"servers":[{"url":"https://byok-level.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-level/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_devices":{"post":{"operationId":"list_devices","summary":"List managed devices with hostname, role, platform, group, tags, online state, hardware model, last seen time and securi","description":"List managed devices with hostname, role, platform, group, tags, online state, hardware model, last seen time and security score. Filter by group, tag, hostname or serial number. Use for \"Which devices are offline in Level\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices directly in this group id ('null' for devices with no group).","title":"Group Id"},"ancestor_group_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices in this group or any of its subgroups.","title":"Ancestor Group Id"},"tag_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices with this tag id.","title":"Tag Id"},"hostname":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices with this hostname.","title":"Hostname"},"serial_number":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices with this serial number.","title":"Serial Number"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last item of the previous page.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the id of the first item of the current page.","title":"Ending Before"}},"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 in detail: identity, hardware, online state and, on request, operating system, CPUs, memory, disks, netwo","description":"Get one device in detail: identity, hardware, online state and, on request, operating system, CPUs, memory, disks, network interfaces, motherboard and security details. Use for \"Show the details of Level device Z2lk\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Level device id from list_devices.","maxLength":200,"title":"Id","type":"string"},"include_operating_system":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include operating system details.","title":"Include Operating System"},"include_cpus":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include CPU details.","title":"Include Cpus"},"include_memory":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include memory modules.","title":"Include Memory"},"include_disks":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include disks and partitions.","title":"Include Disks"},"include_network_interfaces":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include network interfaces.","title":"Include Network Interfaces"},"include_motherboard":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include motherboard details.","title":"Include Motherboard"},"include_security":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include security details.","title":"Include Security"}},"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_groups":{"post":{"operationId":"list_groups","summary":"List device groups with parent, child ids, name and device counts. Pass a parent id to see only its subgroups. Use for \"","description":"List device groups with parent, child ids, name and device counts. Pass a parent id to see only its subgroups. Use for \"How are my Level devices grouped\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"parent_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only groups under this parent group id.","title":"Parent Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last item of the previous page.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the id of the first item of the current page.","title":"Ending Before"}},"title":"list_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/get_group":{"post":{"operationId":"get_group","summary":"Get one device group with its parent, children and device counts. Use for \"Show Level group Z2lk\".","description":"Get one device group with its parent, children and device counts. Use for \"Show Level group Z2lk\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Level group id from list_groups.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_groupArguments","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 device tags with the number of devices carrying each; filter to the tags of one device. Use for \"Which tags do I us","description":"List device tags with the number of devices carrying each; filter to the tags of one device. Use for \"Which tags do I use in Level\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only tags on this device id.","title":"Device Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last item of the previous page.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the id of the first item of the current page.","title":"Ending Before"}},"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_alerts":{"post":{"operationId":"list_alerts","summary":"List monitoring alerts with device, name, message, severity (information to emergency), resolved state and times. Filter","description":"List monitoring alerts with device, name, message, severity (information to emergency), resolved state and times. Filter by device or by active or resolved. Use for \"Which Level alerts are active right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts on this device id.","title":"Device Id"},"status":{"anyOf":[{"enum":["active","resolved"],"type":"string"},{"type":"null"}],"default":null,"description":"Only active or only resolved alerts.","title":"Status"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last item of the previous page.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the id of the first item of the current page.","title":"Ending Before"}},"title":"list_alertsArguments","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_alert":{"post":{"operationId":"get_alert","summary":"Get one alert with device, message, severity and times. Use for \"Show Level alert Z2lk\".","description":"Get one alert with device, message, severity and times. Use for \"Show Level alert Z2lk\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Level alert id from list_alerts.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_alertArguments","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_updates":{"post":{"operationId":"list_updates","summary":"List operating system and software patch updates with device, name, category, version, size, KB ids, availability and in","description":"List operating system and software patch updates with device, name, category, version, size, KB ids, availability and install time. Filter by device, available or installed, or category. Use for \"Which patches are available but not installed in Level\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only updates for this device id.","title":"Device Id"},"status":{"anyOf":[{"enum":["available","installed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only available or only installed updates.","title":"Status"},"category":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only updates in this category.","title":"Category"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last item of the previous page.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the id of the first item of the current page.","title":"Ending Before"}},"title":"list_updatesArguments","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_update":{"post":{"operationId":"get_update","summary":"Get one patch update with device, version, size, KB ids and install state. Use for \"Show Level update Z2lk\".","description":"Get one patch update with device, version, size, KB ids and install state. Use for \"Show Level update Z2lk\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Level update id from list_updates.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_updateArguments","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_automations":{"post":{"operationId":"list_automations","summary":"List the active (non-archived) automations with id, name and the group they belong to. Use for \"Which automations are se","description":"List the active (non-archived) automations with id, name and the group they belong to. Use for \"Which automations are set up in Level\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last item of the previous page.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the id of the first item of the current page.","title":"Ending Before"}},"title":"list_automationsArguments","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_activities":{"post":{"operationId":"list_activities","summary":"List the activity log (who or what did what, to which target, and when), filtered by category, source type, a related id","description":"List the activity log (who or what did what, to which target, and when), filtered by category, source type, a related id or a date range. Use for \"What changed in Level recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"anyOf":[{"enum":["automation","automation_configuration","automation_run","script","script_run","device","tag","group","monitor_policy","remote_access","team","access"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this activity category.","title":"Category"},"source_type":{"anyOf":[{"enum":["user","api_key","device","automation","automation_trigger"],"type":"string"},{"type":"null"}],"default":null,"description":"Only activities caused by this kind of source.","title":"Source Type"},"involving_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only activities involving this object id.","title":"Involving Id"},"date_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only activities from this date and time on (ISO 8601).","title":"Date From"},"date_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only activities up to this date and time (ISO 8601).","title":"Date To"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last item of the previous page.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the id of the first item of the current page.","title":"Ending Before"}},"title":"list_activitiesArguments","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}}}}