testflight-mcp CLAUDE.md

testflight-mcp CLAUDE.md is an instructions file for coding agents from OrellBuehler/testflight-mcp. It costs 1,495 tokens per session, scanned A, original, MIT.

A set of Claude Code instructions for a local MCP server that reads App Store Connect, Apple's app-publishing service. Its tools focus on TestFlight beta feedback, including screenshots, crash reports, and crash logs.

In plain words
What is it for?
Retrieving TestFlight feedback and related app, build, tester, analytics, sales, provisioning, and App Store metadata, as well as building, testing, linting, and type-checking the project.
Why use it?
It gives a coding agent repository-specific commands, conventions, and limits for working with this server and its read-only app data.

Instructions file

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/orellbuehler/testflight-mcp/claude-md
Clone the repo
git clone --depth 1 https://github.com/OrellBuehler/testflight-mcp

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for testflight-mcp CLAUDE.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/orellbuehler/testflight-mcp/claude-md.svg)](https://agentmods.dev/instructions/orellbuehler/testflight-mcp/claude-md)
Your own site
<a href="https://agentmods.dev/instructions/orellbuehler/testflight-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/orellbuehler/testflight-mcp/claude-md.svg" alt="Measured on agentmods" height="20"></a>
Per session 1,495 This file is loaded in full into every session.
When invoked 1,495 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.01495 $0.01495
Opus 5 $0.00747 $0.00747
Sonnet 5 $0.00299 $0.00299
Haiku 4.5 $0.00150 $0.00150

Measured 4d ago against content hash e72bec5be352, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

testflight-mcp CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

CLAUDE.md · 96 lines

How it starts

The opening of the file, as written. The whole thing — 96 lines — stays where its author put it; the contents beside it link to each section on GitHub.

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

What this is

A STDIO MCP server that exposes the official App Store Connect API as read-only tools for AI agents, centered on TestFlight beta feedback retrieval (screenshot feedback, crash feedback, crash logs) and surrounding context (apps, builds, testers/groups, analytics & sales reports, provisioning, App Store metadata). Published to npm as @orellbuehler/testflight-mcp and run via npx; the compiled dist/index.js is the bin entry. See README.md for the tool catalog and env-var reference.

Commands

npm run build         # tsc -p tsconfig.build.json -> dist/
npm test              # vitest run (all tests)
npm run test:watch    # vitest watch
npm run lint          # eslint src
npm run typecheck     # tsc --noEmit
npm run format        # prettier --write .
npm run format:check  # prettier --check . (what CI runs)

Run a single test file or pattern:

npx vitest run src/__tests__/feedback.test.ts
npx vitest run -t "get_crash_log"

CI (.github/workflows/ci.yml) runs format:check, lint, typecheck, and test + build on Node 20 and 22 — all must pass. Run them locally before committing.

Architecture

Request flow: index.ts reads config, builds the server via server.ts:createServer(client, vendorNumber), and connects it over stdio. Each tool calls the App Store Connect REST client.

  • src/index.ts — entry point. Stdio transport only (single-account).
  • src/config.ts — reads env at import time and exits the process if ASC_KEY_ID, ASC_ISSUER_ID or a private key (ASC_PRIVATE_KEY / ASC_PRIVATE_KEY_PATH) is missing. Exports config and client.
  • src/asc/jwt.tscreateTokenProvider(auth): returns a cached ES256 JWT signer (via jose) for App Store Connect. Tokens are valid 20 min (Apple's max) and cached with a 60 s buffer. The .p8 key is loaded lazily on first use (inline or from a file path).
  • src/asc/client.tsAppStoreConnectClient, a thin fetch wrapper over https://api.appstoreconnect.apple.com/v1. get/getAll (cursor pagination via links.next), getJson (raw body + optional extra headers, for the non-JSON:API metrics/diagnostics endpoints), post, downloadText/downloadBinary (presigned asset URLs — no auth header), downloadGzipText (analytics segments), getGzippedReport (gzipped sales/finance CSV). Throws on non-2xx with the response body in the message.
  • src/asc/format.ts — shared helpers: ok/err (MCP content envelopes; ok passes strings through unquoted), imageResult, and JSON:API helpers singleRef, manyRefs, findIncluded, flattenResource, shapeResource (lift attributes to top level + resolve named relationships from included).
  • src/tools/*.ts — each exports a register*Tools(server, client) function that server.ts calls: feedback, apps, testflight (build beta state, "What to Test", TestFlight usage metrics), testers, analytics (also takes the default vendor number), provisioning, metadata (App Store versions + review pipeline), diagnostics (perf/power metrics, diagnostic signatures and logs), ci (Xcode Cloud).

Read the full file on GitHub · 96 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 96 lines · 1,495 tokens per session scan A e72bec5be352

Subscribe to this mod's changes

testflight-mcp CLAUDE.md is an instructions file published in the GitHub repository OrellBuehler/testflight-mcp (0 stars, last pushed 2d ago), licensed MIT. It adds 1,495 tokens to every session, about $0.0075 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.