Skip to main content
Glama
concavegit
by concavegit

get_beta_feedback_screenshot

Retrieve beta feedback screenshots from App Store Connect to analyze tester submissions and improve app quality during development.

Instructions

Get detailed information about a specific beta feedback screenshot submission. By default, downloads and returns the screenshot image.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
feedbackIdYesThe ID of the beta feedback screenshot submission
includeBuildsNoInclude build information in response (optional)
includeTestersNoInclude tester information in response (optional)
downloadScreenshotNoDownload and return the screenshot as an image (default: true)

Implementation Reference

  • Core handler function that retrieves a specific beta feedback screenshot submission from App Store Connect API. Fetches metadata, optionally includes related data, and downloads the screenshot image as base64 for MCP content response.
    async getBetaFeedbackScreenshot(args: { feedbackId: string; includeBuilds?: boolean; includeTesters?: boolean; downloadScreenshot?: boolean; }): Promise<BetaFeedbackScreenshotSubmissionResponse | any> { const { feedbackId, includeBuilds = false, includeTesters = false, downloadScreenshot = true } = args; if (!feedbackId) { throw new Error('feedbackId is required'); } const params: Record<string, any> = {}; // Add includes if requested const includes: string[] = []; if (includeBuilds) includes.push('build'); if (includeTesters) includes.push('tester'); if (includes.length > 0) { params.include = includes.join(','); } // Add field selections params['fields[betaFeedbackScreenshotSubmissions]'] = 'createdDate,comment,email,deviceModel,osVersion,locale,timeZone,architecture,connectionType,pairedAppleWatch,appUptimeInMilliseconds,diskBytesAvailable,diskBytesTotal,batteryPercentage,screenWidthInPoints,screenHeightInPoints,appPlatform,devicePlatform,deviceFamily,buildBundleId,screenshots,build,tester'; const response = await this.client.get<BetaFeedbackScreenshotSubmissionResponse>( `/betaFeedbackScreenshotSubmissions/${feedbackId}`, params ); // If downloadScreenshot is true, download and include the screenshot as base64 const screenshots = response.data.attributes?.screenshots; if (downloadScreenshot && screenshots && screenshots.length > 0) { try { const screenshot = screenshots[0]; console.error(`Downloading screenshot from: ${screenshot.url.substring(0, 100)}...`); const axios = (await import('axios')).default; const imageResponse = await axios.get(screenshot.url, { responseType: 'arraybuffer', timeout: 10000, // 10 second timeout maxContentLength: 5 * 1024 * 1024, // 5MB max headers: { 'User-Agent': 'App-Store-Connect-MCP-Server/1.0' } }); // Convert to base64 const base64Data = Buffer.from(imageResponse.data).toString('base64'); const mimeType = imageResponse.headers['content-type'] || 'image/jpeg'; // Return response with both data and image content return { toolResult: response, content: [ { type: "text", text: `Beta feedback screenshot (${screenshot.width}x${screenshot.height}) - ${response.data.attributes.comment || 'No comment'}` }, { type: "image", data: base64Data, mimeType: mimeType } ] }; } catch (error: any) { // If download fails, just return the normal response console.error('Failed to download screenshot:', error.message); return response; } } return response; }
  • JSON Schema definition for the tool's input parameters, including feedbackId (required), optional includes for builds/testers, and screenshot download flag.
    name: "get_beta_feedback_screenshot", description: "Get detailed information about a specific beta feedback screenshot submission. By default, downloads and returns the screenshot image.", inputSchema: { type: "object", properties: { feedbackId: { type: "string", description: "The ID of the beta feedback screenshot submission" }, includeBuilds: { type: "boolean", description: "Include build information in response (optional)", default: false }, includeTesters: { type: "boolean", description: "Include tester information in response (optional)", default: false }, downloadScreenshot: { type: "boolean", description: "Download and return the screenshot as an image (default: true)", default: true } }, required: ["feedbackId"] } },
  • src/index.ts:1338-1345 (registration)
    Tool call dispatching/registration in the MCP server request handler switch statement. Calls the beta handler and handles special image content response.
    case "get_beta_feedback_screenshot": const result = await this.betaHandlers.getBetaFeedbackScreenshot(args as any); // If the result already contains content (image), return it directly if (result.content) { return result; } // Otherwise format as text return formatResponse(result);
  • TypeScript interface defining the expected response structure from the App Store Connect API for beta feedback screenshot submissions.
    export interface BetaFeedbackScreenshotSubmissionResponse { data: BetaFeedbackScreenshotSubmission; included?: Array<{ id: string; type: string; attributes?: any; }>; links?: { self: string; }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/concavegit/app-store-connect-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server