how it works

A library your agent can call

threefold collects how apps look, rank and advertise in each market, keeps the history, and describes every endpoint so an agent can find the right one, read its terms and call it. It also checks whether your app is ready for the market you are heading to.

Who it is for

People who ship apps into new language markets, and the agents that do the work with them.

App builders

Indie developers and small teams taking a consumer app from one market to the next. Ask what the top apps there do differently, then check your own project before you ship.

Their agents

Claude Code, Codex, Cursor, Gemini CLI and chat apps call threefold as tools. Every endpoint says what it covers, what it costs and where its data comes from, so the agent does not have to guess.

Agencies and teams

Studios doing client work and product teams entering a market together: briefs per client, saved collections of evidence, watches on competitors, and reports to hand over.

From library to agent

Every callable endpoint is described once, in a registry. Agents discover it, read its terms, then call it.

Library, tools, agent Sources such as the App Store, Google Play, store reviews, ad libraries and creator platforms feed the threefold library. The endpoint registry describes the library as tools. Agents reach the tools over MCP, the CLI and SDKs, or REST, and get typed answers with cost and provenance. SOURCES App Store charts and listings Google Play listings Store reviews Ad libraries (Paid) Creator platforms (Organic) scheduled pulls, history kept Library listings, charts, reviews, ads, posts per market and language variant shared by every workspace REGISTRY Tools inputs and schema coverage and limits provenance cost class and price discover, describe, call YOUR AGENT MCP CLI and SDKs REST typed answers, cost on every response
Tool titles and output schemas, the OpenAPI document and llms.txt are generated from the registry, the typed clients from the OpenAPI document, and tests check that routes, tools and registry agree.
1

The four tools

threefold provides four tools over MCP: app, market, check, and workspace (or discover REST endpoints via GET /api/discover).

2

Evidence & criteria

threefold returns evidence, benchmarks, and criteria; your agent grades your material and cites the links.

3

Digest with links

Answers arrive as concise markdown digests with numbers, citations, inline previews and links to inspect on threefold.eco.

What an answer looks like

One question, one tool call, and a typed answer the agent can reason over.

How do the top health and fitness apps in Germany compare with Japan?
market(market: "jp", genre: "health-fitness", vs: "de")
threefold's text digest

Comparison between de and jp: 1 shared app (Strava), 9 target-only, 9 local-only. Localized screenshots and Japanese copy required in JP.

shared: charting in both markets. notCrossed: charting at home, but unavailable or not localised in the target. localOnly: charting only in the target. Every app carries localisation signals: copy language, declared language support, localised title and screenshots.

Example
{
  "from": [
    {
      "rank": 1,
      "id": "6738774428",
      "title": "move2pay",
      "developer": "SVAX GmbH",
      "rating": 4.61332,
      "ratingCount": 2837,
      "market": "de",
      "signals": {
        "available": true,
        "descriptionLanguage": "de",
        "copyInMarketLanguage": true,
        "supportsMarketLanguage": true,
        "titleLocalised": false,
        "screenshotsLocalised": true,
        "score": 3,
        "maxScore": 3
      }
    },
    {
      "rank": 2,
      "id": "1406830270",
      "title": "Meine AOK",
      "developer": "AOK Bundesverband",
      "rating": 4.53796,
      "ratingCount": 101598,
      "market": "de",
      "signals": {
        "available": true,
        "descriptionLanguage": "de",
        "copyInMarketLanguage": true,
        "supportsMarketLanguage": true,
        "titleLocalised": false,
        "screenshotsLocalised": false,
        "score": 2,
        "maxScore": 3
      }
    }
  ],
  "to": [
    {
      "rank": 1,
      "id": "1619362440",
      "title": "リナイト: 起床、睡眠、アラーム、瞑想",
      "developer": "Munice",
      "rating": 4.05651,
      "ratingCount": 9078,
      "market": "jp",
      "signals": {
        "available": true,
        "descriptionLanguage": "ja",
        "copyInMarketLanguage": true,
        "supportsMarketLanguage": true,
        "titleLocalised": true,
        "screenshotsLocalised": true,
        "score": 3,
        "maxScore": 3
      }
    },
    {
      "rank": 2,
      "id": "1109651121",
      "title": "Pep Up - 健康年齢・医療費がわかる健康管理アプリ",
      "developer": "JMDC Inc.",
      "rating": 4.33859,
      "ratingCount": 95745,
      "market": "jp",
      "signals": {
        "available": true,
        "descriptionLanguage": "ja",
        "copyInMarketLanguage": true,
        "supportsMarketLanguage": true,
        "titleLocalised": null,
        "screenshotsLocalised": null,
        "score": 2,
        "maxScore": 3
      }
    }
  ],
  "shared": [
    {
      "id": "426826309",
      "title": "Strava: ランニング、ライド、ハイキング",
      "fromRank": 4,
      "toRank": 7
    }
  ],
  "notCrossed": [
    {
      "id": "6738774428",
      "title": "move2pay",
      "developer": "SVAX GmbH",
      "rating": 5,
      "ratingCount": 2,
      "market": "jp",
      "signals": {
        "available": false
      },
      "fromRank": 1
    }
  ],
  "localOnly": [
    {
      "id": "1619362440",
      "title": "リナイト: 起床、睡眠、アラーム、瞑想",
      "developer": "Munice",
      "rating": 4.05651,
      "ratingCount": 9078,
      "market": "jp",
      "signals": {
        "available": true,
        "descriptionLanguage": "ja",
        "copyInMarketLanguage": true,
        "supportsMarketLanguage": true,
        "titleLocalised": true,
        "screenshotsLocalised": true,
        "score": 3,
        "maxScore": 3
      },
      "toRank": 1
    }
  ],
  "library": {
    "from": {
      "market": "de",
      "locale": "de-DE",
      "variantName": "German (Germany)",
      "channels": [
        "YouTube",
        "Instagram",
        "TikTok"
      ],
      "monetisation": {
        "label": "western_subscription",
        "summary": "Top-tier spend. High English proficiency does not mean buyers accept English."
      }
    },
    "to": {
      "market": "jp",
      "locale": "ja-JP",
      "variantName": "Japanese (Japan)",
      "channels": [
        "LINE",
        "X",
        "TikTok"
      ],
      "monetisation": {
        "label": "high_value_payers",
        "summary": "Highest-value payers. US subscription prices are a poor default."
      }
    }
  },
  "store": "ios"
}

A real market comparison answer from the App Store snapshot in the threefold repository (data/snapshot.json, generated 27 October 2026), trimmed to two apps per side and without icon URLs. The full answer lists the top 10 in each market.

Data sources and freshness

Brand data (store listings, charts, reviews) needs no supplier keys. Paid and Organic come only from the platforms' own official programmes, and each is waiting on an approval or a credential that has not been issued yet; until it is, those answers are live links to each platform, filtered by country.

10
markets
6
niches
360
apps in the first snapshot
3,600
storefront listings

From data/snapshot.json: GB, US, ES, MX, AR, BR, DE, FR, JP and KR; games, education, health and fitness, finance, productivity and lifestyle; the top 10 free apps per niche in each market, and every charting app's listing in every market. Generated 27 October 2026 from Apple's public chart and lookup endpoints. Live ingest adds Google Play, store reviews and listing history on top. The landing's footer and GET /api/meta show when each source was last collected (how fresh the data is).

PillarSourceStatusDefault refresh
BrandApp Store charts and listings (Apple's public RSS and lookup endpoints)No key neededWeekly
BrandGoogle Play listings and chartsNo key neededWeekly
BrandStore reviews, App Store and Google PlayNo key neededWeekly
PaidMeta Ad Library (official API; ads delivered in the EU and UK)Waiting on Meta accessDaily
PaidTikTok Commercial Content API (official; EU, UK and Switzerland)Waiting on TikTok approvalWeekly
PaidGoogle Ads Transparency Center (public BigQuery dataset; EEA and Turkey)Waiting on cloud accessWeekly
PaidOther markets: US, Mexico, Argentina, Brazil, Japan, KoreaLinks onlyNot collected
OrganicYouTube (official Data API)Waiting on credentialsWeekly
OrganicInstagram brand accounts (official Graph API, apps' own business accounts)Waiting on credentialsWeekly
OrganicTikTok, X, and creator posts on InstagramLinks onlyNot collected
OrganicLINE, Kakao, WhatsApp, FacebookLinks onlyNot collected

Every pull appends history: listing changes (title, copy, screenshots, languages, price, icon), daily chart ranks, how long each ad has been seen running, and post views over time. Ads and posts are matched to apps and tagged with a language variant such as es-MX. Sources: docs/ingest.md and README.md; refresh intervals are the ingest planner's defaults.

Metering, in plain terms

Prices are in beta. See Pricing for plans and limits.

Four kinds of call

Free: discovery, the i18n rules catalogue, variant lint, managing watches and collections. Library reads: answers from data already collected. Fresh pulls: live supplier calls such as a live store search, kept to operators until they are priced; tracking an app follows your plan's limits instead. AI analyses: a model writes a brief or explains a difference, within your plan's monthly analyses.

Cost on every response

Every response says what it cost and what is left: X-Threefold-Cost-Micro-Usd and X-Threefold-Balance-Micro-Usd on HTTP, the same numbers in _meta on MCP. Retries with the same Idempotency-Key are not charged twice.

Caps your agent cannot talk past

Each workspace gets a monthly allowance, and each key can carry a monthly spend cap. When either runs out, the API answers 402 with a code that says which, and the threefold skills tell agents to stop and ask you rather than work around it.

Free ways to start

Keyless library reads up to a daily cap per IP address, with no account. Sandbox keys (tf_test_…) return fixture data, never call a supplier and are never charged, so you can wire threefold into tests and CI.

Privacy

Your code stays on your machine

The i18n readiness check runs locally. Source code is never uploaded. If you pass --upload, only the report is sent, so you can keep its history or share it. A remote MCP server cannot read your files, so the hosted tools serve the rules catalogue and stored reports instead.

Shared library, private work

The library (listings, charts, ads, posts) is one copy shared by everyone. What you track, your schedules, analyses and reports belong to your workspace, and who tracks an app is not visible to anyone else. Brand-name checks are never shared between workspaces: the name you are considering is confidential.

Credentials stored hashed

API keys, sign-in links, sessions and OAuth tokens are stored only as SHA-256 hashes. Sign-in is by emailed link; there are no passwords.

Creators' data kept small

For creator posts, threefold keeps handles, captions, links and public metrics only, clears raw payloads after 90 days, and erases and suppresses a person on request.

EU hosting

API and worker in the Netherlands, database in Frankfurt; the server refuses to start if its database or storage is configured outside the EU.

🇳🇱

Where it runs

The API and the ingest worker run on Railway in europe-west4 (Netherlands). Postgres is Supabase in eu-central-1 (Frankfurt).

🇪🇺

The region guard

With the EU data region on, the API and worker check their database hosts and object storage against an EU allowlist at start-up and exit if any is outside it. Each optional processor outside that boundary (payments, email, AI models, data suppliers) has to be accepted by name. The guard reads hostnames; it does not resolve where a host physically runs.

See it from your own agent

Connect the MCP server and ask a question about a market you are considering.