notion_list_all_users
Retrieve all users from your Notion workspace with pagination support and format options for reading or data processing.
Instructions
List all users in the Notion workspace. Note: This function requires upgrading to the Notion Enterprise plan and using an Organization API key to avoid permission errors.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Specify the response format. 'json' returns the original data structure, 'markdown' returns a more readable format. Use 'markdown' when the user only needs to read the page and isn't planning to write or modify it. Use 'json' when the user needs to read the page with the intention of writing to or modifying it. | markdown |
| page_size | No | Number of users to retrieve (max 100) | |
| start_cursor | No | Pagination start cursor for listing users |
Implementation Reference
- src/client/index.ts:126-139 (handler)The main handler function in NotionClientWrapper that performs the actual API call to list all users from Notion's /users endpoint, handling optional pagination.async listAllUsers( start_cursor?: string, page_size?: number ): Promise<ListResponse> { const params = new URLSearchParams(); if (start_cursor) params.append("start_cursor", start_cursor); if (page_size) params.append("page_size", page_size.toString()); const response = await fetch(`${this.baseUrl}/users?${params.toString()}`, { method: "GET", headers: this.headers, }); return response.json(); }
- src/types/schemas.ts:162-180 (schema)Defines the MCP Tool object for notion_list_all_users, including name, description, and input schema for validation.export const listAllUsersTool: Tool = { name: "notion_list_all_users", description: "List all users in the Notion workspace. **Note:** This function requires upgrading to the Notion Enterprise plan and using an Organization API key to avoid permission errors.", inputSchema: { type: "object", properties: { start_cursor: { type: "string", description: "Pagination start cursor for listing users", }, page_size: { type: "number", description: "Number of users to retrieve (max 100)", }, format: formatParameter, }, }, };
- src/server/index.ts:138-146 (registration)Dispatches the tool call in the MCP server's CallToolRequest handler to the client wrapper's listAllUsers method.case "notion_list_all_users": { const args = request.params .arguments as unknown as args.ListAllUsersArgs; response = await notionClient.listAllUsers( args.start_cursor, args.page_size ); break; }
- src/server/index.ts:311-311 (registration)Includes the tool in the list of available tools returned by ListToolsRequest.schemas.listAllUsersTool,
- src/types/args.ts:51-55 (helper)TypeScript type for the arguments used in the server handler for type assertion.export interface ListAllUsersArgs { start_cursor?: string; page_size?: number; format?: "json" | "markdown"; }