retrieve_multiple_approvals
Fetch all approvals assigned to a specific approver user in a Storyblok space. Supports pagination to browse through large sets.
Instructions
Retrieves multiple approvals from a specified Storyblok space.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| approver | Yes | Approver user ID (required) | |
| page | No | Page number for pagination | |
| per_page | No | Number of items per page |
Implementation Reference
- src/tools/approvals.ts:20-42 (handler)Handler function for retrieve_multiple_approvals tool. Validates that approver ID is provided, builds query params, makes a GET request to /approvals/ with approver/page/per_page parameters, and returns the JSON response or an error.
async ({ approver, page, per_page }) => { try { if (!approver) { return { isError: true, content: [{ type: 'text' as const, text: 'Error: approver id is required' }], }; } const params: Record<string, string> = { approver: String(approver) }; if (page !== undefined) params.page = String(page); if (per_page !== undefined) params.per_page = String(per_page); const data = await apiGet('/approvals/', params); return createJsonResponse(data); } catch (error) { if (error instanceof APIError) { return createErrorResponse(error); } throw error; } } ); - src/tools/approvals.ts:15-19 (schema)Zod schema defining the input parameters for retrieve_multiple_approvals: approver (required number), page (optional number), per_page (optional number).
{ approver: z.number().describe('Approver user ID (required)'), page: z.number().optional().describe('Page number for pagination'), per_page: z.number().optional().describe('Number of items per page'), }, - src/tools/approvals.ts:11-42 (registration)Registration of retrieve_multiple_approvals tool via server.tool() with name, description, schema, and handler. The registerApprovals function is called from src/tools/index.ts line 58.
// Tool: retrieve_multiple_approvals server.tool( 'retrieve_multiple_approvals', 'Retrieves multiple approvals from a specified Storyblok space.', { approver: z.number().describe('Approver user ID (required)'), page: z.number().optional().describe('Page number for pagination'), per_page: z.number().optional().describe('Number of items per page'), }, async ({ approver, page, per_page }) => { try { if (!approver) { return { isError: true, content: [{ type: 'text' as const, text: 'Error: approver id is required' }], }; } const params: Record<string, string> = { approver: String(approver) }; if (page !== undefined) params.page = String(page); if (per_page !== undefined) params.per_page = String(per_page); const data = await apiGet('/approvals/', params); return createJsonResponse(data); } catch (error) { if (error instanceof APIError) { return createErrorResponse(error); } throw error; } } ); - src/tools/index.ts:58-58 (registration)Registration call in the aggregator file that registers all approvals tools (including retrieve_multiple_approvals) with the MCP server.
registerApprovals(server); - src/utils/api.ts:180-190 (helper)Helper utility that performs the GET request to /approvals/ with query params (approver, page, per_page). Uses the Storyblok Management API client.
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); }