Tester Exchange
by testerexchange.com · remote · no sign-in to list tools · v1.0.0 · published by com.testerexchange
Get 12 testers for 14 days for Google Play closed testing, with verified daily use on real phones.
19 tools: 17 change things and 2 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things17Claude Code: ask: see these tools
- Only reads2Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http tester-exchange https://vvrlxzbngxfxddywidoq.supabase.co/functions/v1/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "buy_credits_links" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "buy_credits_links" says "link": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
19 tools
Changes things 17Claude Code: ask
aboutWhat Tester Exchange is, how credits work, and every available action.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it What Tester Exchange is, how credits work, and every available action.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
add_appList an Android app that is in Google Play closed testing.No findings
Why it is in this group
- The name "add_app" says "add": a word for a change.
Description, as the server wrote it List an Android app that is in Google Play closed testing. The closed track must be published with the opt-in link enabled. (needs a token)
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
add_testersAdd tester slots to a live campaign (15 credits each).No findings
Why it is in this group
- The name "add_testers" says "add": a word for a change.
Description, as the server wrote it Add tester slots to a live campaign (15 credits each). (needs a token)
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
buy_credits_linksCheckout links for credit packs.1 finding
Why it is in this group
- The name "buy_credits_links" says "link": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "buy_credits_links" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "buy_credits_links" says "link": a word for a change.
Description, as the server wrote it Checkout links for credit packs. A human must complete the payment. (needs a token)
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
campaign_reportTesters, daily active testers, feedback and the data needed to answer Play Console's production-access questions.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Testers, daily active testers, feedback and the data needed to answer Play Console's production-access questions. (needs a token)
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
join_swap_circlePut one of the user's apps in the free swap circle.No findings
Why it is in this group
- The description's first verb is "put": a word for a change.
Description, as the server wrote it Put one of the user's apps in the free swap circle. Needs the Tester Exchange app on the user's phone (a linked phone). (needs a token)
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
join_testJoin another developer's test as a tester.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Join another developer's test as a tester. Returns the opt-in steps the human must do on their phone. (needs a token)
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
leave_swap_circleLeave the swap circle while it is still filling.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Leave the swap circle while it is still filling. (needs a token)
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
my_accountThe user's credit balance, invite link, phones linked and open tests.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The user's credit balance, invite link, phones linked and open tests. (needs a token)
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
my_appsThe user's apps and the live status of each testing campaign (active testers, waiting installs, open slots).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The user's apps and the live status of each testing campaign (active testers, waiting installs, open slots). (needs a token)
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
my_swap_circleThe user's swap circle: status, how many developers are in, and the apps.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The user's swap circle: status, how many developers are in, and the apps. (needs a token)
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
my_testsTests the user is doing as a tester, with verified days and credits earned.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Tests the user is doing as a tester, with verified days and credits earned. (needs a token)
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
platform_statsLive platform numbers: members, apps testing, open tester slots, verified tester-days.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Live platform numbers: members, apps testing, open tester slots, verified tester-days.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
pricingHow credits are earned and spent, and credit pack prices.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it How credits are earned and spent, and credit pack prices.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
set_campaign_statusPause, resume or close a campaign.No findings
Why it is in this group
- The name "set_campaign_status" says "set": a word for a change.
Description, as the server wrote it Pause, resume or close a campaign. Closing refunds unused credits. (needs a token)
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
start_campaignStart recruiting testers for one of the user's apps.No findings
Why it is in this group
- The name "start_campaign" says "start": a word for a change.
Description, as the server wrote it Start recruiting testers for one of the user's apps. Costs testers × 15 credits, held in escrow; unused credits are refunded. (needs a token)
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
Only reads 2Claude Code: allow
list_open_testsAndroid apps currently looking for closed-testing testers.No findings
Why it is in this group
- The name "list_open_tests" says "list": a word for reading.
Description, as the server wrote it Android apps currently looking for closed-testing testers. With a token, only tests the user can join.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
swap_circle_statusHow full the next free swap circle is.No findings
Why it is in this group
- The name "swap_circle_status" says "status": a word for reading.
Description, as the server wrote it How full the next free swap circle is. 13 developers join; when it is full, everyone tests everyone else's app for 14 days, free.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http tester-exchange https://vvrlxzbngxfxddywidoq.supabase.co/functions/v1/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__tester-exchange__list_open_tests",
"mcp__tester-exchange__swap_circle_status"
],
"ask": [
"mcp__tester-exchange__about",
"mcp__tester-exchange__platform_stats",
"mcp__tester-exchange__pricing",
"mcp__tester-exchange__my_account",
"mcp__tester-exchange__my_apps",
"mcp__tester-exchange__add_app",
"mcp__tester-exchange__start_campaign",
"mcp__tester-exchange__campaign_report",
"mcp__tester-exchange__add_testers",
"mcp__tester-exchange__set_campaign_status",
"mcp__tester-exchange__join_test",
"mcp__tester-exchange__my_tests",
"mcp__tester-exchange__share_kit",
"mcp__tester-exchange__buy_credits_links",
"mcp__tester-exchange__join_swap_circle",
"mcp__tester-exchange__my_swap_circle",
"mcp__tester-exchange__leave_swap_circle"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as tester-exchange. Review it before you use it.