{"openapi":"3.1.0","info":{"title":"Seam (BYOK) API","version":"0.1.0","description":"Seam (BYOK) lets an AI assistant read your own Seam data through the Seam API with a key you supply (Seam API key (seam_...)). Read-only: 11 tools (get_workspace, list_devices, get_device, list_locks, list_thermostats, list_connected_accounts, list_spaces, list_noise_sensors, list_access_control_systems, list_events, list_device_providers). 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-seam.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-seam/docs"},"termsOfService":"https://connectorbay.com/byok-seam/terms"},"servers":[{"url":"https://byok-seam.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-seam/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_workspace":{"post":{"operationId":"get_workspace","summary":"Show the Seam workspace the key belongs to: name, company, sandbox flag and suspension state. Use for \"Which Seam worksp","description":"Show the Seam workspace the key belongs to: name, company, sandbox flag and suspension state. Use for \"Which Seam workspace is my API key for, and is it a sandbox\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_workspaceArguments","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 in the workspace (locks, thermostats, noise sensors, cameras) with type, online state, lock state and b","description":"List the devices in the workspace (locks, thermostats, noise sensors, cameras) with type, online state, lock state and battery level. Use for \"Which of my smart devices are online\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"manufacturer":{"anyOf":[{"enum":["august","kwikset","nuki","salto","schlage","yale","wyze","tedee","ttlock","igloohome","kisi","ecobee","nest","tado","sensi","honeywell_resideo","minut","noiseaware","smartthings","aqara","ultraloq","lockly"],"type":"string"},{"type":"null"}],"default":null,"description":"Only devices of this manufacturer.","title":"Manufacturer"},"connected_account_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this connected account (a UUID from list_connected_accounts).","title":"Connected Account Id"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free text matched against device names.","title":"Search"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (1 to 500).","title":"Limit"},"page_cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's pagination.next_page_cursor to fetch the next page.","title":"Page 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 or by name, with its capabilities, online state, lock state, battery and any errors or warnings. Us","description":"Get one device by id or by name, with its capabilities, online state, lock state, battery and any errors or warnings. Use for \"What is the state of the device named Front Door\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"UUID of the device (from list_devices). Give this or name.","title":"Device Id"},"name":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Exact name of the device. Give this or device_id.","title":"Name"}},"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_locks":{"post":{"operationId":"list_locks","summary":"List only the smart locks, with online state, locked state and battery level. Use for \"Are all my smart locks locked rig","description":"List only the smart locks, with online state, locked state and battery level. Use for \"Are all my smart locks locked right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"manufacturer":{"anyOf":[{"enum":["august","kwikset","nuki","salto","schlage","yale","wyze","tedee","ttlock","igloohome","kisi","aqara","ultraloq","lockly"],"type":"string"},{"type":"null"}],"default":null,"description":"Only locks of this manufacturer.","title":"Manufacturer"},"connected_account_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this connected account (a UUID from list_connected_accounts).","title":"Connected Account Id"}},"title":"list_locksArguments","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_thermostats":{"post":{"operationId":"list_thermostats","summary":"List thermostats with current temperature, humidity and whether heating or cooling is running. Use for \"What is the temp","description":"List thermostats with current temperature, humidity and whether heating or cooling is running. Use for \"What is the temperature at each of my thermostats\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"manufacturer":{"anyOf":[{"enum":["ecobee","honeywell_resideo","nest","sensi","smartthings","tado"],"type":"string"},{"type":"null"}],"default":null,"description":"Only thermostats of this manufacturer.","title":"Manufacturer"},"connected_account_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this connected account (a UUID from list_connected_accounts).","title":"Connected Account Id"}},"title":"list_thermostatsArguments","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_connected_accounts":{"post":{"operationId":"list_connected_accounts","summary":"List the third-party accounts (lock or thermostat vendor logins) linked to the workspace, with any connection errors. Us","description":"List the third-party accounts (lock or thermostat vendor logins) linked to the workspace, with any connection errors. Use for \"Which vendor accounts are connected to Seam and do any have errors\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free text matched against account names.","title":"Search"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (1 to 500).","title":"Limit"},"page_cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's pagination.next_page_cursor to fetch the next page.","title":"Page Cursor"}},"title":"list_connected_accountsArguments","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_spaces":{"post":{"operationId":"list_spaces","summary":"List spaces (rooms, units or buildings) that group devices, with device counts. Use for \"What spaces are set up and how ","description":"List spaces (rooms, units or buildings) that group devices, with device counts. Use for \"What spaces are set up and how many devices does each have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free text matched against space names.","title":"Search"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum number of items to return (1 to 500).","title":"Limit"},"page_cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's pagination.next_page_cursor to fetch the next page.","title":"Page Cursor"}},"title":"list_spacesArguments","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_noise_sensors":{"post":{"operationId":"list_noise_sensors","summary":"List noise sensors with online state and the current noise level in decibels. Use for \"How loud is it at my noise sensor","description":"List noise sensors with online state and the current noise level in decibels. Use for \"How loud is it at my noise sensors\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"connected_account_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this connected account (a UUID from list_connected_accounts).","title":"Connected Account Id"}},"title":"list_noise_sensorsArguments","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_access_control_systems":{"post":{"operationId":"list_access_control_systems","summary":"List access control systems (door entry platforms) linked to the workspace with user and group counts. Use for \"Which ac","description":"List access control systems (door entry platforms) linked to the workspace with user and group counts. Use for \"Which access control systems are connected\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"connected_account_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this connected account (a UUID from list_connected_accounts).","title":"Connected Account Id"}},"title":"list_access_control_systemsArguments","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 recent events such as device.connected, device.disconnected, device.low_battery or lock.locked, filtered by type, d","description":"List recent events such as device.connected, device.disconnected, device.low_battery or lock.locked, filtered by type, device or time. Use for \"Have any devices gone offline or reported low battery recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_type":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only this event type, for example device.disconnected, device.low_battery, device.connected or lock.unlocked.","title":"Event Type"},"device_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only events of this device UUID.","title":"Device Id"},"since":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only events after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Since"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Maximum number of events to return (1 to 500).","title":"Limit"}},"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_providers":{"post":{"operationId":"list_device_providers","summary":"List the device brands Seam can connect to, optionally by category such as thermostats or consumer_smartlocks. Use for \"","description":"List the device brands Seam can connect to, optionally by category such as thermostats or consumer_smartlocks. Use for \"Which lock brands does Seam support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"provider_category":{"anyOf":[{"enum":["stable","consumer_smartlocks","thermostats","noise_sensors","access_control_systems","cameras"],"type":"string"},{"type":"null"}],"default":null,"description":"Only providers of this category.","title":"Provider Category"}},"title":"list_device_providersArguments","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}}}}