{"openapi":"3.1.0","info":{"title":"Notehub (BYOK) API","version":"0.1.0","description":"Notehub (BYOK) lets an AI assistant read your own Notehub data through the Notehub API with a key you supply (personal access token). Read-only: 12 tools (list_projects, get_project, list_devices, get_device, get_device_latest_events, list_events, list_device_sessions, get_device_health_log, list_fleets, list_products, list_alerts, list_monitors). The BYOK key travels with each request, is used...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-notehub.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-notehub/docs"},"termsOfService":"https://connectorbay.com/byok-notehub/terms"},"servers":[{"url":"https://byok-notehub.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-notehub/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_projects":{"post":{"operationId":"list_projects","summary":"List the Notehub projects the token can access with UID, label, role and creation date (contact details are not returned","description":"List the Notehub projects the token can access with UID, label, role and creation date (contact details are not returned). Use for \"Which Notehub projects do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_projectsArguments","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_project":{"post":{"operationId":"get_project","summary":"Get one Notehub project: label, UID, role and creation date. Use for \"Show my Notehub project app:0000\".","description":"Get one Notehub project: label, UID, role and creation date. Use for \"Show my Notehub project app:0000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"}},"required":["project_uid"],"title":"get_projectArguments","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 the devices of a project with serial number, product, last activity, firmware, battery voltage, temperature and coa","description":"List the devices of a project with serial number, product, last activity, firmware, battery voltage, temperature and coarse location name. Page with page_num while has_more is true. Use for \"Which Notehub devices have been active recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"},"page_size":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records per page (1 to 10000).","title":"Page Size"},"page_num":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Num"},"fleet_uid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices in this fleet UID.","title":"Fleet Uid"},"tag":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices with this tag.","title":"Tag"}},"required":["project_uid"],"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: serial number, product, firmware versions, voltage, temperature, last activity and coarse location name.","description":"Get one device: serial number, product, firmware versions, voltage, temperature, last activity and coarse location name. Use for \"Show details of Notehub device dev:864475040000000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"},"device_uid":{"description":"Device UID (starts with 'dev:'); list_devices returns it.","maxLength":200,"title":"Device Uid","type":"string"}},"required":["project_uid","device_uid"],"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/get_device_latest_events":{"post":{"operationId":"get_device_latest_events","summary":"Get the most recent event per notefile for one device, including each event body. Use for \"What was the latest data from","description":"Get the most recent event per notefile for one device, including each event body. Use for \"What was the latest data from Notehub device dev:864475040000000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"},"device_uid":{"description":"Device UID (starts with 'dev:'); list_devices returns it.","maxLength":200,"title":"Device Uid","type":"string"}},"required":["project_uid","device_uid"],"title":"get_device_latest_eventsArguments","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_events":{"post":{"operationId":"list_events","summary":"List events (notes and system events) of a project, optionally for one device or notefile and a time window. Page with p","description":"List events (notes and system events) of a project, optionally for one device or notefile and a time window. Page with page_num while has_more is true. Use for \"Show the latest Notehub events for my project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"},"page_size":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records per page (1 to 10000).","title":"Page Size"},"page_num":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Num"},"start_date":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records at or after this Unix time in seconds.","title":"Start Date"},"end_date":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records at or before this Unix time in seconds.","title":"End Date"},"device_uid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only events from this device UID.","title":"Device Uid"},"files":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only events from these notefiles, comma-separated, for example 'data.qo'.","title":"Files"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Order by time: asc or desc.","title":"Sort Order"},"sort_by":{"anyOf":[{"enum":["captured","modified"],"type":"string"},{"type":"null"}],"default":"captured","description":"Field to sort by.","title":"Sort By"}},"required":["project_uid"],"title":"list_eventsArguments","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_sessions":{"post":{"operationId":"list_device_sessions","summary":"List connection sessions of one device with start, end, signal strength, event counts and power data. Use for \"How did t","description":"List connection sessions of one device with start, end, signal strength, event counts and power data. Use for \"How did the Notehub device connect in the last sessions\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"},"device_uid":{"description":"Device UID (starts with 'dev:'); list_devices returns it.","maxLength":200,"title":"Device Uid","type":"string"},"page_size":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records per page (1 to 10000).","title":"Page Size"},"page_num":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Num"},"start_date":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records at or after this Unix time in seconds.","title":"Start Date"},"end_date":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records at or before this Unix time in seconds.","title":"End Date"}},"required":["project_uid","device_uid"],"title":"list_device_sessionsArguments","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_health_log":{"post":{"operationId":"get_device_health_log","summary":"Get the health log of one device (boot, power and connection notes, alert flag) for a time window. Use for \"Why did Note","description":"Get the health log of one device (boot, power and connection notes, alert flag) for a time window. Use for \"Why did Notehub device dev:864475040000000 restart\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"},"device_uid":{"description":"Device UID (starts with 'dev:'); list_devices returns it.","maxLength":200,"title":"Device Uid","type":"string"},"start_date":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records at or after this Unix time in seconds.","title":"Start Date"},"end_date":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records at or before this Unix time in seconds.","title":"End Date"}},"required":["project_uid","device_uid"],"title":"get_device_health_logArguments","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_fleets":{"post":{"operationId":"list_fleets","summary":"List the fleets of a project with UID, label, smart rule and watchdog minutes. Use for \"What fleets does my Notehub proj","description":"List the fleets of a project with UID, label, smart rule and watchdog minutes. Use for \"What fleets does my Notehub project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"}},"required":["project_uid"],"title":"list_fleetsArguments","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_products":{"post":{"operationId":"list_products","summary":"List the products defined in a project with UID, label and provisioning defaults. Use for \"Which products are defined in","description":"List the products defined in a project with UID, label and provisioning defaults. Use for \"Which products are defined in my Notehub project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"}},"required":["project_uid"],"title":"list_productsArguments","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 alerts raised by the project's monitors with monitor name, device, value, source and whether resolved. Use for \"Are","description":"List alerts raised by the project's monitors with monitor name, device, value, source and whether resolved. Use for \"Are there any unresolved Notehub alerts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"},"page_size":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records per page (1 to 10000).","title":"Page Size"},"page_num":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Num"},"monitor_uid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this monitor UID.","title":"Monitor Uid"}},"required":["project_uid"],"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/list_monitors":{"post":{"operationId":"list_monitors","summary":"List the project's alert monitors with name, source type, condition, threshold and whether disabled. Use for \"Which moni","description":"List the project's alert monitors with name, source type, condition, threshold and whether disabled. Use for \"Which monitors are configured in my Notehub project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_uid":{"description":"Notehub project UID (starts with 'app:'); list_projects returns it.","maxLength":200,"title":"Project Uid","type":"string"}},"required":["project_uid"],"title":"list_monitorsArguments","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}}}}