{"openapi":"3.1.0","info":{"title":"NRF Cloud (BYOK) API","version":"0.1.0","description":"NRF Cloud (BYOK) lets an AI assistant read your own NRF Cloud data through the NRF Cloud API with a key you supply (nRF Cloud API key (Account section of nrfcloud.com)). Read-only: 10 tools (list_devices, get_device, list_device_tags, list_firmware, list_fota_jobs, get_fota_job, list_fota_executions_for_device, get_pending_fota_execution, list_bulk_operations, get_bulk_operation). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-nrfcloud.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-nrfcloud/docs"},"termsOfService":"https://connectorbay.com/byok-nrfcloud/terms"},"servers":[{"url":"https://byok-nrfcloud.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-nrfcloud/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 the devices of the account with id, name, tags, type, sub type, firmware support and creation and update times. Pag","description":"List the devices of the account with id, name, tags, type, sub type, firmware support and creation and update times. Paged. Use for \"Which devices are registered in my nRF Cloud account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 100, default 10).","title":"Page Limit"},"page_next_token":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: pass the pageNextToken of the previous answer to get the next page.","title":"Page Next Token"},"device_name_fuzzy":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices whose name loosely matches this text.","title":"Device Name Fuzzy"}},"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's metadata: id, name, tags, type, firmware versions and timestamps. Its reported state is not returned. U","description":"Get one device's metadata: id, name, tags, type, firmware versions and timestamps. Its reported state is not returned. Use for \"What firmware is nRF Cloud device nrf-352656100123456 running\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"nRF Cloud device id, as returned by list_devices (often nrf- followed by the IMEI or a UUID).","maxLength":80,"title":"Device Id","type":"string"}},"required":["device_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_tags":{"post":{"operationId":"list_device_tags","summary":"List all device tags (device groups) of the account. Paged. Use for \"Which device groups exist in my nRF Cloud account\".","description":"List all device tags (device groups) of the account. Paged. Use for \"Which device groups exist in my nRF Cloud account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_limit":{"description":"How many tags to return (1 to 100).","maximum":100,"minimum":1,"title":"Page Limit","type":"integer"},"page_next_token":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: pass the pageNextToken of the previous answer to get the next page.","title":"Page Next Token"}},"required":["page_limit"],"title":"list_device_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_firmware":{"post":{"operationId":"list_firmware","summary":"List firmware bundles uploaded to the account (or Nordic's modem firmware when modem_only is true) with type, version, s","description":"List firmware bundles uploaded to the account (or Nordic's modem firmware when modem_only is true) with type, version, size and update time. Paged. Use for \"Which firmware bundles have I uploaded to nRF Cloud\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 100, default 10).","title":"Page Limit"},"page_next_token":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: pass the pageNextToken of the previous answer to get the next page.","title":"Page Next Token"},"modem_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to list the standard modem firmware instead of your own bundles.","title":"Modem Only"}},"title":"list_firmwareArguments","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_fota_jobs":{"post":{"operationId":"list_fota_jobs","summary":"List firmware-over-the-air update jobs with status, targets, execution statistics and firmware type and version. Paged. ","description":"List firmware-over-the-air update jobs with status, targets, execution statistics and firmware type and version. Paged. Use for \"Which firmware update jobs are running in nRF Cloud\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 100, default 10).","title":"Page Limit"},"page_next_token":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: pass the pageNextToken of the previous answer to get the next page.","title":"Page Next Token"}},"title":"list_fota_jobsArguments","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_fota_job":{"post":{"operationId":"get_fota_job","summary":"Get one firmware update job: status, targets, per-state execution counts and firmware details. Use for \"How far along is","description":"Get one firmware update job: status, targets, per-state execution counts and firmware details. Use for \"How far along is nRF Cloud firmware update job 5f3e9c1a-1c2b-4d5e-8f70-123456789abc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job_id":{"description":"FOTA job id (a UUID) as returned by list_fota_jobs.","maxLength":80,"title":"Job Id","type":"string"}},"required":["job_id"],"title":"get_fota_jobArguments","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_fota_executions_for_device":{"post":{"operationId":"list_fota_executions_for_device","summary":"List the firmware update executions of one device with job, status and firmware type and version. Paged. Use for \"What f","description":"List the firmware update executions of one device with job, status and firmware type and version. Paged. Use for \"What firmware updates were attempted on nRF Cloud device nrf-352656100123456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"nRF Cloud device id, as returned by list_devices (often nrf- followed by the IMEI or a UUID).","maxLength":80,"title":"Device Id","type":"string"},"page_limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 100, default 10).","title":"Page Limit"},"page_next_token":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: pass the pageNextToken of the previous answer to get the next page.","title":"Page Next Token"}},"required":["device_id"],"title":"list_fota_executions_for_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/get_pending_fota_execution":{"post":{"operationId":"get_pending_fota_execution","summary":"Get a device's oldest pending (queued or in progress) firmware update execution, optionally for one firmware type. Use f","description":"Get a device's oldest pending (queued or in progress) firmware update execution, optionally for one firmware type. Use for \"Is there a firmware update waiting for nRF Cloud device nrf-352656100123456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"nRF Cloud device id, as returned by list_devices (often nrf- followed by the IMEI or a UUID).","maxLength":80,"title":"Device Id","type":"string"},"firmware_type":{"anyOf":[{"enum":["APP","MODEM","BOOT","SOFTDEVICE","BOOTLOADER","MDM_FULL","SMP","CUSTOM"],"type":"string"},{"type":"null"}],"default":null,"description":"Only executions of this firmware type.","title":"Firmware Type"}},"required":["device_id"],"title":"get_pending_fota_executionArguments","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_bulk_operations":{"post":{"operationId":"list_bulk_operations","summary":"List device onboarding and key or certificate registration operations with status and times. Paged. Use for \"Did my last","description":"List device onboarding and key or certificate registration operations with status and times. Paged. Use for \"Did my last nRF Cloud device onboarding batch succeed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["IN_PROGRESS","FAILED","SUCCEEDED"],"type":"string"},{"type":"null"}],"default":null,"description":"Only operations in this state.","title":"Status"},"page_limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 100, default 10).","title":"Page Limit"},"page_next_token":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: pass the pageNextToken of the previous answer to get the next page.","title":"Page Next Token"}},"title":"list_bulk_operationsArguments","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_bulk_operation":{"post":{"operationId":"get_bulk_operation","summary":"Get one onboarding or registration operation: endpoint, status and request and completion times. Use for \"What is the st","description":"Get one onboarding or registration operation: endpoint, status and request and completion times. Use for \"What is the status of nRF Cloud bulk operation 01EZZJVDQJPWT7V4FWNVDHNMM5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"bulk_ops_request_id":{"description":"Bulk operation id as returned by list_bulk_operations.","maxLength":80,"title":"Bulk Ops Request Id","type":"string"}},"required":["bulk_ops_request_id"],"title":"get_bulk_operationArguments","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}}}}