https://github.com/SueeiiiZhu/appstore-mcp
· scanned 2026-06-16 00:24 UTC (2 months, 2 weeks ago)
15 raw signals (0 security + 15 graph)
Last scanned 2 months, 2 weeks ago · v1 · 15 actionable findings from 1 signal source. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 143 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
test_decode_report_bytes_plain_text |
software | healthy | tests/test_parsers.py:18 |
test_decode_report_bytes_gzip |
software | healthy | tests/test_parsers.py:23 |
test_parse_tsv_basic |
software | healthy | tests/test_parsers.py:29 |
test_parse_tsv_empty |
software | healthy | tests/test_parsers.py:38 |
test_parse_tsv_header_only |
software | healthy | tests/test_parsers.py:42 |
test_parse_sales_report |
software | healthy | tests/test_parsers.py:46 |
test_parse_sales_report_csv_with_apple_headers |
software | healthy | tests/test_parsers.py:71 |
test_parse_sales_report_csv_with_transformed_headers |
software | healthy | tests/test_parsers.py:83 |
test_format_sales_report_rows_uses_transformed_headers |
software | healthy | tests/test_parsers.py:119 |
test_format_subscription_report_rows_uses_transformed_heade… |
software | healthy | tests/test_parsers.py:133 |
__init__ |
software | healthy | tests/test_report_source.py:17 |
fetch_gzipped_report |
software | healthy | tests/test_report_source.py:22 |
_write_gzip |
software | healthy | tests/test_report_source.py:27 |
test_get_sales_report_reads_local_file |
software | healthy | tests/test_report_source.py:32 |
test_get_sales_report_reads_local_csv_file |
software | healthy | tests/test_report_source.py:47 |
test_get_sales_report_auto_falls_back_to_api |
software | healthy | tests/test_report_source.py:80 |
test_get_sales_report_uses_separate_cache_keys_for_local_an… |
software | healthy | tests/test_report_source.py:95 |
test_get_subscription_report_reads_local_csv_file |
software | healthy | tests/test_report_source.py:113 |
test_get_subscription_report_formats_api_output_with_transf… |
software | healthy | tests/test_report_source.py:142 |
test_get_sales_report_local_requires_local_dir |
software | healthy | tests/test_report_source.py:169 |
test_list_local_reports_requires_local_dir |
software | healthy | tests/test_report_source.py:177 |
test_list_local_reports_filters_and_ignores_unsupported_fil… |
software | healthy | tests/test_report_source.py:184 |
test_list_local_reports_respects_prefix_and_limit |
software | healthy | tests/test_report_source.py:199 |
test_list_local_reports_matches_compact_csv_dates |
software | healthy | tests/test_report_source.py:220 |
test_resolve_sales_report_source_finds_compact_csv_sales_fi… |
software | healthy | tests/test_report_source.py:236 |
test_resolve_finance_report_source_finds_financial_director… |
software | healthy | tests/test_report_source.py:255 |
test_resolve_finance_report_source_finds_financial_extended… |
software | healthy | tests/test_report_source.py:266 |
test_resolve_sales_report_source_finds_subscription_event_d… |
software | healthy | tests/test_report_source.py:277 |
__init__ |
software | healthy | src/apple_mcp/client.py:14 |
to_user_message |
software | healthy | src/apple_mcp/client.py:20 |
_auth_header |
software | healthy | src/apple_mcp/client.py:40 |
fetch_json |
software | healthy | src/apple_mcp/client.py:44 |
fetch_gzipped_report |
software | healthy | src/apple_mcp/client.py:55 |
close |
software | dead | src/apple_mcp/client.py:66 |
_load_private_key |
software | healthy | src/apple_mcp/auth.py:11 |
generate_token |
software | healthy | src/apple_mcp/auth.py:19 |
clear_token_cache |
software | dead | src/apple_mcp/auth.py:51 |
get_rates_to_usd |
software | healthy | src/apple_mcp/exchange.py:15 |
convert_to_usd |
software | healthy | src/apple_mcp/exchange.py:47 |
decode_report_bytes |
software | healthy | src/apple_mcp/parsers.py:12 |
parse_tsv |
software | healthy | src/apple_mcp/parsers.py:21 |
_detect_delimiter |
software | healthy | src/apple_mcp/parsers.py:39 |
parse_gzipped_tsv |
software | dead | src/apple_mcp/parsers.py:47 |
_normalize_header |
software | healthy | src/apple_mcp/parsers.py:52 |
_build_normalized_column_map |
software | healthy | src/apple_mcp/parsers.py:56 |
_compact_header |
software | healthy | src/apple_mcp/parsers.py:60 |
_build_public_column_map |
software | healthy | src/apple_mcp/parsers.py:64 |
_map_row |
software | healthy | src/apple_mcp/parsers.py:252 |
parse_sales_report |
software | healthy | src/apple_mcp/parsers.py:275 |
parse_finance_report |
software | healthy | src/apple_mcp/parsers.py:288 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
README.md |
software | healthy | README.md |
CLAUDE.md |
software | healthy | CLAUDE.md |
.env.example |
software | healthy | .env.example |
pyproject.toml |
software | healthy | pyproject.toml |
test_parsers.py |
software | healthy | tests/test_parsers.py |
__init__.py |
software | healthy | tests/__init__.py |
test_report_source.py |
software | healthy | tests/test_report_source.py |
settings.local.json |
software | healthy | .claude/settings.local.json |
client.py |
software | healthy | src/apple_mcp/client.py |
__init__.py |
software | healthy | src/apple_mcp/__init__.py |
auth.py |
software | healthy | src/apple_mcp/auth.py |
exchange.py |
software | healthy | src/apple_mcp/exchange.py |
parsers.py |
software | healthy | src/apple_mcp/parsers.py |
report_source.py |
software | healthy | src/apple_mcp/report_source.py |
cache.py |
software | healthy | src/apple_mcp/cache.py |
server.py |
software | healthy | src/apple_mcp/server.py |
__main__.py |
software | healthy | src/apple_mcp/__main__.py |
__init__.py |
software | healthy | src/apple_mcp/tools/__init__.py |
sales.py |
software | healthy | src/apple_mcp/tools/sales.py |
revenue.py |
software | healthy | src/apple_mcp/tools/revenue.py |
subscriptions.py |
software | healthy | src/apple_mcp/tools/subscriptions.py |
finance.py |
software | healthy | src/apple_mcp/tools/finance.py |
reviews.py |
software | healthy | src/apple_mcp/tools/reviews.py |
installs.py |
software | healthy | src/apple_mcp/tools/installs.py |
CLAUDE.md |
quality | healthy | CLAUDE.md |
.claude/settings.local.json |
quality | healthy | .claude/settings.local.json |
| Label | Layer | Status | Path |
|---|---|---|---|
FakeClient |
software | healthy | tests/test_report_source.py:16 |
ApiError |
software | healthy | src/apple_mcp/client.py:13 |
ApiClient |
software | healthy | src/apple_mcp/client.py:33 |
ReportSourceError |
software | healthy | src/apple_mcp/report_source.py:75 |
ReportLocation |
software | healthy | src/apple_mcp/report_source.py:80 |
LocalReportQuery |
software | healthy | src/apple_mcp/report_source.py:89 |
ReportCache |
software | healthy | src/apple_mcp/cache.py:7 |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
.claude |
software | healthy | .claude |
src |
software | healthy | src |
apple_mcp |
software | healthy | src/apple_mcp |
tools |
software | healthy | src/apple_mcp/tools |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::CLAUDE.md |
security | healthy | CLAUDE.md |
auth::src/apple_mcp/auth.py |
security | healthy | src/apple_mcp/auth.py |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-48wyhqc5 |
software | healthy | /tmp/repobility-clone-48wyhqc5 |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | README.md |
This page is publicly accessible at:
https://repobility.com/scan/10f290b2-c7fb-496e-a604-f4fd23a2aa7b/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/10f290b2-c7fb-496e-a604-f4fd23a2aa7b/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.