{"openapi":"3.1.0","info":{"title":"Zulip Realm Config (BYOK) API","version":"0.1.0","description":"Zulip Realm Config (BYOK) lets an AI assistant read your own Zulip Realm Config data through the Zulip Realm Config API with a key you supply (Zulip account email (of the user or bot)). Read-only: 8 tools (list_profile_fields, list_allowed_domains, list_channel_folders, list_data_exports, get_user_group_members, get_user_group_subgroups, get_channel_id, list_user_channel_ids). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-zulip-realm-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-zulip-realm-config/docs"},"termsOfService":"https://connectorbay.com/byok-zulip-realm-config/terms"},"servers":[{"url":"https://byok-zulip-realm-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-zulip-realm-config/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_profile_fields":{"post":{"operationId":"list_profile_fields","summary":"List the organization's custom profile fields with name, hint, type code, display order and whether each is required or ","description":"List the organization's custom profile fields with name, hint, type code, display order and whether each is required or editable by users. Use for \"Which custom profile fields does our Zulip organization define\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Your Zulip Cloud organization subdomain: the part before .zulipchat.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org","type":"string"}},"required":["org"],"title":"list_profile_fieldsArguments","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_allowed_domains":{"post":{"operationId":"list_allowed_domains","summary":"List the email domains that may sign up to the organization, with whether subdomains are allowed. Use for \"Which email d","description":"List the email domains that may sign up to the organization, with whether subdomains are allowed. Use for \"Which email domains are allowed to join our Zulip organization\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Your Zulip Cloud organization subdomain: the part before .zulipchat.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org","type":"string"}},"required":["org"],"title":"list_allowed_domainsArguments","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_channel_folders":{"post":{"operationId":"list_channel_folders","summary":"List channel folders (groupings of channels) with name, description, order, creator, creation time and archived flag. Us","description":"List channel folders (groupings of channels) with name, description, order, creator, creation time and archived flag. Use for \"How are our Zulip channels grouped into folders\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Your Zulip Cloud organization subdomain: the part before .zulipchat.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org","type":"string"}},"required":["org"],"title":"list_channel_foldersArguments","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_data_exports":{"post":{"operationId":"list_data_exports","summary":"List the organization's data exports with type, time, creator user ID and whether each is pending, failed or deleted. Do","description":"List the organization's data exports with type, time, creator user ID and whether each is pending, failed or deleted. Download links are not returned. Use for \"When was our Zulip organization last exported\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Your Zulip Cloud organization subdomain: the part before .zulipchat.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org","type":"string"}},"required":["org"],"title":"list_data_exportsArguments","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_user_group_members":{"post":{"operationId":"get_user_group_members","summary":"List the user IDs and sub-group IDs that belong to a user group (direct members only if requested). Use for \"Who is in t","description":"List the user IDs and sub-group IDs that belong to a user group (direct members only if requested). Use for \"Who is in the Zulip user group with ID 12\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Your Zulip Cloud organization subdomain: the part before .zulipchat.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org","type":"string"},"user_group_id":{"description":"Numeric ID of the user group, from the user group list.","title":"User Group Id","type":"integer"},"direct_member_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return only direct members, not members of subgroups.","title":"Direct Member Only"}},"required":["org","user_group_id"],"title":"get_user_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/get_user_group_subgroups":{"post":{"operationId":"get_user_group_subgroups","summary":"List the IDs of the subgroups of a user group (direct subgroups only if requested). Use for \"Which subgroups does Zulip ","description":"List the IDs of the subgroups of a user group (direct subgroups only if requested). Use for \"Which subgroups does Zulip user group 12 contain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Your Zulip Cloud organization subdomain: the part before .zulipchat.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org","type":"string"},"user_group_id":{"description":"Numeric ID of the user group, from the user group list.","title":"User Group Id","type":"integer"},"direct_subgroup_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return only direct subgroups.","title":"Direct Subgroup Only"}},"required":["org","user_group_id"],"title":"get_user_group_subgroupsArguments","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_channel_id":{"post":{"operationId":"get_channel_id","summary":"Look up the numeric ID of a channel from its exact name. Use for \"What is the ID of the Zulip channel named general\".","description":"Look up the numeric ID of a channel from its exact name. Use for \"What is the ID of the Zulip channel named general\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Your Zulip Cloud organization subdomain: the part before .zulipchat.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org","type":"string"},"channel_name":{"description":"Exact name of the channel, for example 'general'.","maxLength":60,"title":"Channel Name","type":"string"}},"required":["org","channel_name"],"title":"get_channel_idArguments","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_user_channel_ids":{"post":{"operationId":"list_user_channel_ids","summary":"List the IDs of the channels a user is subscribed to. Use for \"Which channels is Zulip user 5 subscribed to\".","description":"List the IDs of the channels a user is subscribed to. Use for \"Which channels is Zulip user 5 subscribed to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Your Zulip Cloud organization subdomain: the part before .zulipchat.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org","type":"string"},"user_id":{"description":"Numeric user ID.","title":"User Id","type":"integer"}},"required":["org","user_id"],"title":"list_user_channel_idsArguments","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}}}}