retrieve_multiple_collaborators
Get a paginated list of collaborators in a Storyblok space. Specify page and per_page parameters to control the results.
Instructions
Retrieves a paginated list of collaborators (users) in a specified Storyblok space.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| per_page | No | Items per page |
Implementation Reference
- src/tools/collaborators.ts:10-34 (registration)The registerCollaborators function registers all collaborator tools including 'retrieve_multiple_collaborators' on the MCP server.
export function registerCollaborators(server: McpServer): void { // Tool: retrieve_multiple_collaborators server.tool( 'retrieve_multiple_collaborators', 'Retrieves a paginated list of collaborators (users) in a specified Storyblok space.', { page: z.number().optional().default(1).describe('Page number'), per_page: z.number().optional().default(25).describe('Items per page'), }, async ({ page, per_page }) => { try { const params: Record<string, string> = { page: String(page ?? 1), per_page: String(per_page ?? 25), }; const data = await apiGet('/collaborators/', params); return createJsonResponse(data); } catch (error) { if (error instanceof APIError) { return createErrorResponse(error); } throw error; } } ); - src/tools/collaborators.ts:11-34 (handler)The 'retrieve_multiple_collaborators' tool handler function that accepts optional page/per_page params and calls apiGet('/collaborators/') to fetch a paginated list of collaborators.
// Tool: retrieve_multiple_collaborators server.tool( 'retrieve_multiple_collaborators', 'Retrieves a paginated list of collaborators (users) in a specified Storyblok space.', { page: z.number().optional().default(1).describe('Page number'), per_page: z.number().optional().default(25).describe('Items per page'), }, async ({ page, per_page }) => { try { const params: Record<string, string> = { page: String(page ?? 1), per_page: String(per_page ?? 25), }; const data = await apiGet('/collaborators/', params); return createJsonResponse(data); } catch (error) { if (error instanceof APIError) { return createErrorResponse(error); } throw error; } } ); - src/tools/collaborators.ts:15-18 (schema)Zod schema defining the input parameters: page (optional, default 1) and per_page (optional, default 25).
{ page: z.number().optional().default(1).describe('Page number'), per_page: z.number().optional().default(25).describe('Items per page'), }, - src/tools/index.ts:67-68 (registration)Where registerCollaborators is called to register the tool on the MCP server.
// User management registerCollaborators(server); - src/utils/api.ts:180-190 (helper)The apiGet helper function used by the handler to make GET requests to the Storyblok Management API.
export async function apiGet<T = unknown>( path: string, params: Record<string, string> = {} ): Promise<T> { const url = buildUrlWithParams(buildManagementUrl(path), params); const response = await fetch(url, { method: 'GET', headers: getManagementHeaders(), }); return handleResponse<T>(response, url); }