list-api-groups
Browse and filter API groups in the Xano workspace. Use pagination, search, and sorting options to organize and locate specific groups efficiently.
Instructions
Browse all API groups in the Xano workspace
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | Sort order | |
| page | No | Page number for pagination | |
| per_page | No | Number of items per page | |
| search | No | Search term to filter API groups | |
| sort | No | Field to sort by |
Implementation Reference
- src/index.ts:796-848 (handler)Handler function that fetches API groups from Xano workspace using makeXanoRequest, supports pagination/search/sort, formats results as markdown, returns as text content or error.async ({ page, per_page, search, sort, order }) => { console.error('[Tool] Executing list-api-groups'); try { // Build query parameters const queryParams = new URLSearchParams(); if (page !== undefined) queryParams.append("page", page.toString()); if (per_page !== undefined) queryParams.append("per_page", per_page.toString()); if (search) queryParams.append("search", search); if (sort) queryParams.append("sort", sort); if (order) queryParams.append("order", order); const queryString = queryParams.toString() ? `?${queryParams.toString()}` : ''; const response = await makeXanoRequest<{ items: XanoApiGroup[], curPage: number, nextPage?: number, prevPage?: number }>( `/workspace/${XANO_WORKSPACE}/apigroup${queryString}` ); const apiGroups = response.items; // Format API groups into a readable structure const formattedContent = `# Xano API Groups\n\n` + `Page ${response.curPage}${response.nextPage ? ` (Next: ${response.nextPage})` : ''}${response.prevPage ? ` (Prev: ${response.prevPage})` : ''}\n\n` + `${apiGroups.map(group => `## ${group.name}\n` + `**ID**: ${group.id}\n` + `**Description**: ${group.description || 'No description'}\n` + `**Created**: ${new Date(group.created_at).toLocaleString()}\n` + `**Updated**: ${new Date(group.updated_at).toLocaleString()}\n` + `${group.guid ? `**GUID**: ${group.guid}\n` : ''}` ).join('\n\n')}`; console.error(`[Tool] Successfully listed ${apiGroups.length} API groups`); return { content: [ { type: "text", text: formattedContent } ] }; } catch (error) { console.error(`[Error] Failed to list API groups: ${error instanceof Error ? error.message : String(error)}`); return { content: [ { type: "text", text: `Error listing API groups: ${error instanceof Error ? error.message : String(error)}` } ], isError: true }; } }
- src/index.ts:789-795 (schema)Zod input schema defining optional parameters: page, per_page, search, sort field, sort order for listing API groups.{ page: z.number().optional().describe("Page number for pagination"), per_page: z.number().optional().describe("Number of items per page"), search: z.string().optional().describe("Search term to filter API groups"), sort: z.enum(["created_at", "updated_at", "name"]).optional().describe("Field to sort by"), order: z.enum(["asc", "desc"]).optional().describe("Sort order") },
- src/index.ts:785-849 (registration)Tool registration via server.tool call, specifying name, description, input schema, and handler function.// List API Groups Tool server.tool( "list-api-groups", "Browse all API groups in the Xano workspace", { page: z.number().optional().describe("Page number for pagination"), per_page: z.number().optional().describe("Number of items per page"), search: z.string().optional().describe("Search term to filter API groups"), sort: z.enum(["created_at", "updated_at", "name"]).optional().describe("Field to sort by"), order: z.enum(["asc", "desc"]).optional().describe("Sort order") }, async ({ page, per_page, search, sort, order }) => { console.error('[Tool] Executing list-api-groups'); try { // Build query parameters const queryParams = new URLSearchParams(); if (page !== undefined) queryParams.append("page", page.toString()); if (per_page !== undefined) queryParams.append("per_page", per_page.toString()); if (search) queryParams.append("search", search); if (sort) queryParams.append("sort", sort); if (order) queryParams.append("order", order); const queryString = queryParams.toString() ? `?${queryParams.toString()}` : ''; const response = await makeXanoRequest<{ items: XanoApiGroup[], curPage: number, nextPage?: number, prevPage?: number }>( `/workspace/${XANO_WORKSPACE}/apigroup${queryString}` ); const apiGroups = response.items; // Format API groups into a readable structure const formattedContent = `# Xano API Groups\n\n` + `Page ${response.curPage}${response.nextPage ? ` (Next: ${response.nextPage})` : ''}${response.prevPage ? ` (Prev: ${response.prevPage})` : ''}\n\n` + `${apiGroups.map(group => `## ${group.name}\n` + `**ID**: ${group.id}\n` + `**Description**: ${group.description || 'No description'}\n` + `**Created**: ${new Date(group.created_at).toLocaleString()}\n` + `**Updated**: ${new Date(group.updated_at).toLocaleString()}\n` + `${group.guid ? `**GUID**: ${group.guid}\n` : ''}` ).join('\n\n')}`; console.error(`[Tool] Successfully listed ${apiGroups.length} API groups`); return { content: [ { type: "text", text: formattedContent } ] }; } catch (error) { console.error(`[Error] Failed to list API groups: ${error instanceof Error ? error.message : String(error)}`); return { content: [ { type: "text", text: `Error listing API groups: ${error instanceof Error ? error.message : String(error)}` } ], isError: true }; } } );