{"openapi":"3.1.0","info":{"title":"SimpleMDM (BYOK) API","version":"0.1.0","description":"SimpleMDM (BYOK) lets an AI assistant read your own SimpleMDM data through the SimpleMDM API with a key you supply (SimpleMDM API key (read-only permissions are enough)). Read-only: 9 tools (get_account, list_devices, get_device, list_device_installed_apps, list_apps, list_assignment_groups, list_profiles, list_dep_servers, list_logs). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-simplemdm.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-simplemdm/docs"},"termsOfService":"https://connectorbay.com/byok-simplemdm/terms"},"servers":[{"url":"https://byok-simplemdm.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-simplemdm/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/get_account":{"post":{"operationId":"get_account","summary":"Show the SimpleMDM account: name, app store country and (manual billing plans only) licenses total and available. Use fo","description":"Show the SimpleMDM account: name, app store country and (manual billing plans only) licenses total and available. Use for \"Which SimpleMDM account is my key for and how many licenses are free\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_accountArguments","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 name, status, last seen time, OS version, model, serial number, storage, battery, supervision","description":"List enrolled devices with name, status, last seen time, OS version, model, serial number, storage, battery, supervision and passcode compliance. Device secrets are never returned. Use for \"Which devices in my MDM have not checked in recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices matching this name, UDID, serial number, IMEI, MAC address or phone number.","title":"Search"},"include_awaiting_enrollment":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also list devices still in the awaiting_enrollment state.","title":"Include Awaiting Enrollment"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100, default 10).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last object of the previous page. Leave out for the first page.","title":"Starting After"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc (default) or desc.","title":"Direction"}},"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 with OS version, model, serial number, storage, battery, supervision, encryption and compliance fla","description":"Get one device by id with OS version, model, serial number, storage, battery, supervision, encryption and compliance flags. Device secrets are never returned. Use for \"Show details of SimpleMDM device 121\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"Device id from list_devices.","title":"Device Id","type":"integer"}},"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_installed_apps":{"post":{"operationId":"list_device_installed_apps","summary":"List the apps installed on one device with name, bundle identifier, version, size and whether they are managed. Use for ","description":"List the apps installed on one device with name, bundle identifier, version, size and whether they are managed. Use for \"What apps are installed on SimpleMDM device 121\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"Device id from list_devices.","title":"Device Id","type":"integer"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100, default 10).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last object of the previous page. Leave out for the first page.","title":"Starting After"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc (default) or desc.","title":"Direction"}},"required":["device_id"],"title":"list_device_installed_appsArguments","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_apps":{"post":{"operationId":"list_apps","summary":"List the app catalog with name, bundle identifier, app type, platform and processing status. Use for \"Which apps are in ","description":"List the app catalog with name, bundle identifier, app type, platform and processing status. Use for \"Which apps are in my SimpleMDM app catalog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_shared":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include assigned apps from the shared catalog.","title":"Include Shared"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100, default 10).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last object of the previous page. Leave out for the first page.","title":"Starting After"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc (default) or desc.","title":"Direction"}},"title":"list_appsArguments","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_assignment_groups":{"post":{"operationId":"list_assignment_groups","summary":"List assignment groups (which apps go to which devices) with name, type, auto-deploy flag and their app, device group an","description":"List assignment groups (which apps go to which devices) with name, type, auto-deploy flag and their app, device group and device ids. Use for \"Which assignment groups deploy apps in my MDM\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100, default 10).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last object of the previous page. Leave out for the first page.","title":"Starting After"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc (default) or desc.","title":"Direction"}},"title":"list_assignment_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_profiles":{"post":{"operationId":"list_profiles","summary":"List configuration profiles with name, profile identifier, device count and group count. Use for \"Which configuration pr","description":"List configuration profiles with name, profile identifier, device count and group count. Use for \"Which configuration profiles are defined in SimpleMDM\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only profiles whose name or type matches this text.","title":"Search"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100, default 10).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last object of the previous page. Leave out for the first page.","title":"Starting After"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc (default) or desc.","title":"Direction"}},"title":"list_profilesArguments","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_dep_servers":{"post":{"operationId":"list_dep_servers","summary":"List Apple Business Manager automated enrollment servers with organization name, token expiry and last sync time. Use fo","description":"List Apple Business Manager automated enrollment servers with organization name, token expiry and last sync time. Use for \"When does my Apple Business Manager token for SimpleMDM expire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100, default 10).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last object of the previous page. Leave out for the first page.","title":"Starting After"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc (default) or desc.","title":"Direction"}},"title":"list_dep_serversArguments","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_logs":{"post":{"operationId":"list_logs","summary":"List logged events of devices and admin actions with namespace, event type, level, source and time, optionally for one d","description":"List logged events of devices and admin actions with namespace, event type, level, source and time, optionally for one device serial number. Use for \"What did admins and devices do in SimpleMDM recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"serial_number":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only logs of the device with this serial number.","title":"Serial Number"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100, default 10).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last object of the previous page. Leave out for the first page.","title":"Starting After"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc (default) or desc.","title":"Direction"}},"title":"list_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}}}}