{"openapi":"3.1.0","info":{"title":"Box Admin (BYOK) API","version":"0.1.0","description":"Box Admin (BYOK) lets an AI assistant read your own Box Admin data through the Box Admin API with a key you supply (developer token or OAuth access token of an admin or co-admin (developer tokens expire quickly)). Read-only: 10 tools (list_groups, get_group, list_group_members, list_webhooks, list_terms_of_services, list_storage_policies, list_storage_policy_assignments, list_folder_workflows,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-box-admin.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-box-admin/docs"},"termsOfService":"https://connectorbay.com/byok-box-admin/terms"},"servers":[{"url":"https://byok-box-admin.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-box-admin/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_groups":{"post":{"operationId":"list_groups","summary":"List the enterprise's groups with name, type, provenance and visibility settings. Needs an admin or co-admin token. Page","description":"List the enterprise's groups with name, type, provenance and visibility settings. Needs an admin or co-admin token. Page with limit and offset. Use for \"Which groups exist in our Box account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only groups whose name starts with this text.","title":"Filter Term"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many entries to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Start position for paging, from 0.","title":"Offset"}},"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 group by id with name, type, provenance, description and visibility settings. Use for \"What is Box group g-1\".","description":"Get one group by id with name, type, provenance, description and visibility settings. Use for \"What is Box group g-1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_id":{"description":"Group id from list_groups.","maxLength":200,"title":"Group Id","type":"string"}},"required":["group_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_group_members":{"post":{"operationId":"list_group_members","summary":"List the members of a group with membership id, role and the member's id and display name (no email). Page with limit an","description":"List the members of a group with membership id, role and the member's id and display name (no email). Page with limit and offset. Use for \"Who is in Box group g-1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_id":{"description":"Group id from list_groups.","maxLength":200,"title":"Group Id","type":"string"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many entries to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Start position for paging, from 0.","title":"Offset"}},"required":["group_id"],"title":"list_group_membersArguments","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_webhooks":{"post":{"operationId":"list_webhooks","summary":"List the webhooks the app can see with id and the target (file or folder) each one watches. Needs the manage webhooks sc","description":"List the webhooks the app can see with id and the target (file or folder) each one watches. Needs the manage webhooks scope. Use for \"Which Box webhooks are set up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many entries to return (1 to 1000).","title":"Limit"},"marker":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging marker: the next_marker value of the previous answer (omit for the first page).","title":"Marker"}},"title":"list_webhooksArguments","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_terms_of_services":{"post":{"operationId":"list_terms_of_services","summary":"List the terms of service the enterprise configured, with type, status (enabled or disabled) and dates. The terms text i","description":"List the terms of service the enterprise configured, with type, status (enabled or disabled) and dates. The terms text is not returned. Use for \"Which terms of service are configured in our Box account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tos_type":{"anyOf":[{"enum":["external","managed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only terms of this type.","title":"Tos Type"}},"title":"list_terms_of_servicesArguments","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_storage_policies":{"post":{"operationId":"list_storage_policies","summary":"List the storage zones policies of the enterprise (id and name). Needs a Box Zones enterprise. Use for \"Which storage po","description":"List the storage zones policies of the enterprise (id and name). Needs a Box Zones enterprise. Use for \"Which storage policies does our Box account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many entries to return (1 to 1000).","title":"Limit"},"marker":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging marker: the next_marker value of the previous answer (omit for the first page).","title":"Marker"}},"title":"list_storage_policiesArguments","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_storage_policy_assignments":{"post":{"operationId":"list_storage_policy_assignments","summary":"List which storage policy applies to a user or to the whole enterprise. Use for \"Which storage policy applies to Box ent","description":"List which storage policy applies to a user or to the whole enterprise. Use for \"Which storage policy applies to Box enterprise 123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"resolved_for_type":{"description":"Whether the id below is a 'user' or an 'enterprise'.","enum":["user","enterprise"],"title":"Resolved For Type","type":"string"},"resolved_for_id":{"description":"The user id or enterprise id to resolve the policy for.","maxLength":40,"title":"Resolved For Id","type":"string"},"marker":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging marker: the next_marker value of the previous answer (omit for the first page).","title":"Marker"}},"required":["resolved_for_type","resolved_for_id"],"title":"list_storage_policy_assignmentsArguments","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_folder_workflows":{"post":{"operationId":"list_folder_workflows","summary":"List the Box Relay workflows configured on a folder with name, description and enabled flag. Use for \"Which workflows ru","description":"List the Box Relay workflows configured on a folder with name, description and enabled flag. Use for \"Which workflows run on Box folder 0\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"folder_id":{"description":"Folder id whose workflows to list.","maxLength":40,"title":"Folder Id","type":"string"},"trigger_type":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only workflows with this trigger type, for example WORKFLOW_MANUAL_START.","title":"Trigger Type"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many entries to return (1 to 1000).","title":"Limit"},"marker":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging marker: the next_marker value of the previous answer (omit for the first page).","title":"Marker"}},"required":["folder_id"],"title":"list_folder_workflowsArguments","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_slack_mappings":{"post":{"operationId":"list_slack_mappings","summary":"List Box folders mapped to Slack channels by the Box for Slack integration (needs an enterprise admin token). Use for \"W","description":"List Box folders mapped to Slack channels by the Box for Slack integration (needs an enterprise admin token). Use for \"Which Box folders are linked to Slack channels\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"partner_item_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only mappings for this Slack channel id.","title":"Partner Item Id"},"box_item_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only mappings for this Box folder id.","title":"Box Item Id"},"is_manually_created":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for manual mappings only, false for automatic ones.","title":"Is Manually Created"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many entries to return (1 to 1000).","title":"Limit"},"marker":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging marker: the next_marker value of the previous answer (omit for the first page).","title":"Marker"}},"title":"list_slack_mappingsArguments","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_pins":{"post":{"operationId":"list_device_pins","summary":"List the device pins of the enterprise (Box Drive and Box Sync devices pinned by users) with owner id and product name. ","description":"List the device pins of the enterprise (Box Drive and Box Sync devices pinned by users) with owner id and product name. Use for \"Which devices are pinned in our Box enterprise\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"enterprise_id":{"description":"Your Box enterprise id (shown in the admin console).","maxLength":200,"title":"Enterprise Id","type":"string"},"marker":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging marker: the next_marker value of the previous answer (omit for the first page).","title":"Marker"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many entries to return (1 to 1000).","title":"Limit"},"direction":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":"ASC","description":"Sort direction.","title":"Direction"}},"required":["enterprise_id"],"title":"list_device_pinsArguments","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}}}}