list_beta_groups
List beta tester groups for an app, returning group name, internal/external status, and feedback settings.
Instructions
List beta tester groups for an app. Returns group name, internal/external status, and feedback settings.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | App Store Connect app ID | |
| limit | No | Maximum number of groups to return (default: 50) |
Implementation Reference
- src/index.ts:76-86 (registration)Registration of the 'list_beta_groups' tool with the MCP server. Binds the schema and handler.
server.tool( "list_beta_groups", "List beta tester groups for an app. Returns group name, internal/external status, and feedback settings.", listGroupsSchema.shape, async (args) => { const result = await handleListGroups(client, args); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; } ); - src/tools/list-testers.ts:57-72 (handler)Handler function `handleListGroups` that processes the tool invocation, calls the API, and maps results.
export async function handleListGroups( client: AppStoreConnectClient, args: z.infer<typeof listGroupsSchema> ) { const groups = await listBetaGroups(client, args.app_id, { limit: args.limit, }); return groups.map((g) => ({ id: g.id, name: g.attributes.name, isInternalGroup: g.attributes.isInternalGroup, publicLinkEnabled: g.attributes.publicLinkEnabled, feedbackEnabled: g.attributes.feedbackEnabled, })); } - src/tools/list-testers.ts:47-55 (schema)Zod schema `listGroupsSchema` defining input validation (app_id required, limit optional).
export const listGroupsSchema = z.object({ app_id: z.string().describe("App Store Connect app ID"), limit: z .number() .min(1) .max(200) .optional() .describe("Maximum number of groups to return (default: 50)"), }); - src/api/testers.ts:36-53 (helper)API function `listBetaGroups` that makes the actual App Store Connect API request to /betaGroups.
export async function listBetaGroups( client: AppStoreConnectClient, appId: string, options?: { limit?: number } ): Promise<BetaGroup[]> { const params: Record<string, string> = { "filter[app]": appId, "fields[betaGroups]": "name,isInternalGroup,publicLinkEnabled,publicLinkLimit,publicLink,feedbackEnabled", limit: String(options?.limit ?? 50), }; const response = await client.requestAll<BetaGroup>( "/betaGroups", params ); return response.data; } - src/api/types.ts:73-86 (schema)Type definitions `BetaGroupAttributes` and `BetaGroup` used by the API response.
// Beta Groups export interface BetaGroupAttributes { name: string; isInternalGroup: boolean; publicLinkEnabled: boolean; publicLinkLimit: number | null; publicLink: string | null; feedbackEnabled: boolean; } export interface BetaGroup extends JsonApiResource { type: "betaGroups"; attributes: BetaGroupAttributes; }