Skip to main content
Glama
jmendozapuche

latam-fintech-synthetic-data

latam-synth

Безопасные с точки зрения приватности синтетические финансовые данные для латиноамериканских финтех-приложений — доступны через Python, CLI, REST, Apify Actor и Model Context Protocol (MCP) для ИИ-агентов.

Генератор синтетических данных о поведении финансовых сбережений, калиброванный по статистическим распределениям 506 311 реальных записей приложения сбережений LatAm (2015–2024): 305 808 транзакций, 108 570 сберегательных целей и 91 933 пользователя из Мексики, Колумбии, Аргентины, Перу, Чили и других стран.

Результат на 100% синтетический: ни одна запись не происходит от реального пользователя, только от агрегированных распределений. Без PII и без риска реидентификации.


Model Context Protocol (MCP)

LatAm Synth доступен ИИ-агентам как MCP-инструмент через два независимых пути:

  • Удалённо (хостинг): Apify MCP Server предоставляет Actor active_yardstick/latam-synth как вызываемый MCP-инструмент через Streamable HTTP. Ничего устанавливать не нужно.

  • Локально (stdio): latam-synth-mcp, поставляемый в этом репозитории, запускает генератор в собственном процессе без обращения к Apify. Для локальных MCP-клиентов и проверок каталога в контейнерах.

Оба пути возвращают одни и те же таблицы с одинаковой ссылочной целостностью, поскольку оба являются тонкими адаптерами поверх одного и того же SyntheticGenerator.

Детали MCP

  • Возможность MCP: Tools

  • Транспорт: Streamable HTTP (удалённо) / stdio (локально)

  • Хостируемый MCP-сервер: Apify MCP Server

  • Локальный MCP-сервер: latam-synth-mcp (extra [mcp], SDK mcp>=2,<3)

  • Actor, доступный как инструмент: active_yardstick/latam-synth

  • Аутентификация: Apify OAuth или Bearer token

  • Официальное имя в MCP Registry: io.github.jmendozapuche/latam-fintech-synthetic-data

  • Метаданные реестра: server.json

  • Apify Actor: https://apify.com/active_yardstick/latam-synth

Конечная точка MCP

https://mcp.apify.com?tools=active_yardstick/latam-synth

Параметр tools ограничивает Apify MCP Server только Actor LatAm Synth, делая его напрямую обнаруживаемым и вызываемым совместимыми ИИ-агентами.

Пример конфигурации MCP — OAuth

{
  "mcpServers": {
    "latam-synth": {
      "url": "https://mcp.apify.com?tools=active_yardstick/latam-synth"
    }
  }
}

При первом подключении совместимый MCP-клиент может открыть поток OAuth Apify, чтобы пользователь мог авторизовать доступ, не помещая API-токен напрямую в конфигурацию.

Пример конфигурации MCP — Bearer token

{
  "mcpServers": {
    "latam-synth": {
      "url": "https://mcp.apify.com?tools=active_yardstick/latam-synth",
      "headers": {
        "Authorization": "Bearer <APIFY_TOKEN>"
      }
    }
  }
}

Замените <APIFY_TOKEN> на API-токен Apify.

Что ИИ-агенты могут делать с LatAm Synth

MCP-совместимый агент может вызывать LatAm Synth для генерации:

  • синтетических финансовых пользователей

  • связанных сберегательных целей

  • транзакций пополнения и снятия

  • латиноамериканских наборов данных с фильтром по странам

  • воспроизводимых наборов данных с использованием случайного зерна

  • реалистичных тестовых данных fintech без раскрытия персональной информации

Типичные сценарии использования агента включают:

  • оценку финансовых ИИ-агентов

  • создание тестовых фикстур по требованию

  • создание синтетических наборов данных для демо и POC

  • тестирование рекомендательных или сберегательных ассистентов

  • запуск экспериментов с ML и пайплайнами данных

LatAm Synth в настоящее время предоставляет свою функциональность через MCP Tools. Сейчас он не предоставляет MCP Resources или Prompts.

Как реализован MCP

Удалённый путь не требует MCP-транспортного сервера внутри этого репозитория: его хостирует Apify. Локальный путь включает такой сервер (src/latam_synth/mcp_server.py) для клиентов, которые предпочитают запускать генератор самостоятельно — без токена, без сети, без затрат на каждый запуск.

Архитектура такова:

MCP-compatible AI client
        |
        |  Streamable HTTP
        v
Apify MCP Server
        |
        |  exposes Actor as MCP Tool
        v
active_yardstick/latam-synth
        |
        v
Synthetic users + goals + transactions

Apify предоставляет хостируемый MCP-сервер и уровень аутентификации. Actor LatAm Synth обеспечивает исполняемую функциональность инструмента и структурированный ввод/вывод.

Локальный MCP-сервер (stdio)

pip install -e ".[mcp]"
latam-synth-mcp                    # entry point
python -m latam_synth.mcp_server   # equivalent

Конфигурация для локального MCP-клиента (Claude Desktop / Claude Code):

{
  "mcpServers": {
    "latam-synth": {
      "command": "latam-synth-mcp"
    }
  }
}

Доступные инструменты:

Инструмент

Что делает

generate_latam_financial_data

Генерирует пользователей + цели + транзакции. Аргументы: users (1-200), seed, countries, start_date, end_date.

describe_latam_synth_dataset

Возвращает схему, категории целей, доступные страны и политику конфиденциальности. Без аргументов.

Оба инструмента аннотированы как read_only и idempotent: ничего не записывается, и одно и то же зерно возвращает один и тот же набор данных. Ограничение в 200 пользователей на вызов сохраняет ответы достаточно малыми для контекста агента — для больших объёмов используйте CLI или Actor.

Детали развёртывания, Docker-образ и конфигурация Glama: docs/mcp_local.md.


Related MCP server: Faker MCP Server

Для чего это нужно

  • Тестирование и QA в финтехе: реалистичные фикстуры для платёжных пайплайнов, бюджетных приложений и механизмов целей.

  • Демо и POC: дашборды с правдоподобными данными LatAm, которые можно публично показывать.

  • Обучение ML: стартовые данные для моделей оттока, рекомендаций и сегментации с реальными паттернами, такими как сезонность, уровень отказов и категории целей.

  • ИИ-агенты: генерация синтетических финансовых наборов данных по требованию через MCP.

  • Образование: неограниченные наборы данных для курсов по data science с реальной бизнес-логикой.


Быстрое использование

CLI

pip install -e .
latam-synth generate --users 5000 --seed 42 --format csv --out ./output

Только Мексика и Колумбия, формат parquet:

latam-synth generate --users 10000 --countries Mexico Colombia --format parquet

Python

from latam_synth import SyntheticGenerator, GeneratorConfig

data = SyntheticGenerator(
    GeneratorConfig(n_users=1000, seed=42)
).generate()

data["transactions"].head()

Что делает этот генератор достоверным

Калибровка была проверена на реальных данных. См.:

docs/validation_report.txt

Генератор включает:

  • логнормальные распределения сумм по типу транзакции

  • реальную месячную сезонность

  • январский пик после новогодних обещаний и декабрьский спад

  • 8 категорий целей с собственными суммами и горизонтами

  • наблюдаемые показатели достижения и отказа

  • 73.8% просроченных целей

  • эффект uplift от совместных целей

  • коррелированные пользовательские скоринг-баллы

  • гауссову копулу с ρ=0.89 для связи дисциплины и достижения

  • согласованные временные траектории по каждой цели

  • ссылочную целостность между пользователями, целями и транзакциями


Apify Actor

LatAm Synth также доступен как хостируемый Apify Actor:

active_yardstick/latam-synth

Страница Actor:

https://apify.com/active_yardstick/latam-synth

Actor можно вызывать напрямую из Apify, через Apify API или предоставлять ИИ-клиентам через Apify MCP Server.

Пример ввода:

{
  "users": 1000,
  "seed": 42,
  "countries": ["Mexico", "Colombia"],
  "format": "csv",
  "push_to_dataset": true,
  "start_date": "2023-01-01",
  "end_date": "2024-12-31"
}

Параметр seed делает генерацию воспроизводимой. Одно и то же зерно и конфигурация дают один и тот же синтетический результат.


Где найти результат (Apify)

Каждый запуск записывает результат в два места.

Key-value store — все три таблицы

  1. Откройте запуск в Apify Console и нажмите вкладку Storage.

  2. Нажмите Key-value store.

  3. Скачайте созданные файлы:

    • users.csv — одна строка на каждого синтетического пользователя

    • goals.csv — сберегательные цели, связанные с пользователями

    • transactions.csv — транзакции пополнения/снятия, связанные с целями

    • OUTPUT — присутствует всегда; JSON-сводка запуска, включая параметры, количество строк и ключи для скачивания

    • если выбран format: json, OUTPUT_DATA содержит все три таблицы в одном JSON-файле вместо трёх CSV-файлов

  4. Нажмите значок загрузки рядом с каждым ключом, чтобы сохранить файл.

Dataset — транзакции

По умолчанию (push_to_dataset: true) все транзакции также помещаются в Dataset запуска.

Это позволяет вам:

  • экспортировать в JSON, CSV или Excel прямо из вкладки Dataset

  • подключать встроенные интеграции Apify к выходным данным Dataset

  • потреблять транзакции программно

Чтобы отключить это для очень больших запусков, где нужны только файлы key-value store, установите:

{
  "push_to_dataset": false
}

Журнал запуска выводит точные имена файлов и количество строк в конце выполнения.


Локальный REST API

Установите зависимости API:

pip install -e ".[api]"
uvicorn latam_synth.api:app --port 8000

Сгенерируйте JSON с тремя таблицами:

curl -s -X POST http://localhost:8000/generate \
  -H "Content-Type: application/json" \
  -d '{"users": 100, "seed": 42, "countries": ["Mexico", "Colombia"]}' | jq .meta

Пример ответа с метаданными:

{
  "users": 100,
  "goals": 121,
  "transactions": 453
}

Скачайте CSV с транзакциями напрямую:

curl -s -X POST http://localhost:8000/generate \
  -H "Content-Type: application/json" \
  -H "Accept: text/csv" \
  -d '{"users": 500, "seed": 7}' \
  -o transactions.csv

Проверка работоспособности:

curl http://localhost:8000/health
{
  "status": "ok",
  "version": "0.2.0"
}

Ограничения локального REST API:

  • Ограничение скорости: 10 запросов/мин на IP

  • Максимум: 50 000 пользователей на запрос


Конфиденциальность

Сгенерированные наборы данных предназначены для разработки, тестирования, демо, экспериментов и образования и не требуют реальных PII из продакшена.

Ключевые свойства:

  • 100% синтетические записи

  • ни одна строка не скопирована у реального пользователя

  • имена, email, ID и другие прямые PII не воспроизводятся из калибровочного набора данных

  • генерация основана на агрегированных статистических распределениях

  • синтетические таблицы сохраняют реалистичные взаимосвязи между пользователями, целями и транзакциями


Разработка

pip install -e ".[dev]"
pytest

Метаданные MCP registry

Этот репозиторий включает server.json для обнаружения в MCP registry.

Текущий идентификатор сервера:

io.github.jmendozapuche/latam-fintech-synthetic-data

Зарегистрированная удалённая конечная точка MCP:

https://mcp.apify.com?tools=active_yardstick/latam-synth

История изменений

v0.2

  • смесь логнормальных распределений (KS=0.032)

  • привязка к круглым значениям (69.5% на сетке)

  • согласованные временные траектории по каждой цели

  • 100% транзакций в окне [created_at, deadline]

  • FastAPI API

  • Apify Actor

  • предоставление MCP через хостируемый Apify MCP Server

Available Tools

2 tools
describe_latam_synth_datasetA
Read-onlyIdempotent
Inspect

Describe the schema and calibration of the LatAm Synth dataset.

Use this tool to inspect which tables, columns, goal categories and
countries are available before generating data. It performs no generation
and takes no arguments.

Returns:
    Table columns, relationships, goal categories, available countries
    and the privacy policy of the generated data.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds behavioral context by stating 'performs no generation' and specifying the return items including the privacy policy, which goes beyond what annotations alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized, with the purpose front-loaded in the first sentence, usage guidance in the second, and a structured 'Returns' block for the output. Every sentence adds value and there is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description is complete. It clearly states what the tool does, when to use it, and what it returns, including a notable privacy policy detail. Nothing essential is missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description redundantly states 'takes no arguments', but this reinforces the fact that no input is needed, which is helpful for an agent. No parameter documentation is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Describe' and a specific resource 'schema and calibration of the LatAm Synth dataset'. It explicitly distinguishes itself from the sibling generate_latam_financial_data by saying 'It performs no generation', making the purpose immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use the tool: 'before generating data' to inspect available tables, columns, goal categories, and countries. It also states exclusions: 'It performs no generation' and 'takes no arguments'. This provides clear context and indirectly points to the generation sibling as the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_latam_financial_dataA
Read-onlyIdempotent
Inspect

Generate privacy-safe synthetic financial data for Latin America.

Use this tool when you need synthetic financial users, savings goals and
transactions for Latin American fintech testing, QA, demos,
machine-learning experiments, data pipelines or agent evaluation. The output
is fully synthetic: it is sampled from aggregate distributions and contains
no personally identifiable information and no real records.

Args:
    users: Number of synthetic users to generate. Use 1 to 200.
    seed: Random seed for reproducible datasets. The same seed and
        parameters always return the same dataset.
    countries: Optional list of Latin American countries to include,
        for example ["Colombia", "Mexico"].
    start_date: Optional ISO start date of the generated period,
        for example "2023-01-01".
    end_date: Optional ISO end date of the generated period,
        for example "2024-12-31".

Returns:
    Synthetic users, linked savings goals, linked transactions,
    and dataset row counts.
ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
usersNo
end_dateNo
countriesNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond the annotations: it states the output is 'fully synthetic', 'sampled from aggregate distributions', contains 'no personally identifiable information and no real records', and that 'the same seed and parameters always return the same dataset.' This goes far beyond the readOnlyHint and idempotentHint annotations by explaining what the data actually is and how reproducibility works.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a summary sentence, a usage paragraph, a structured Args list, and a Returns note. It is slightly verbose in the usage paragraph (listing many use cases) but every sentence contributes value, and the most important information (what it does, key constraints) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (five optional parameters, one sibling tool, output schema available), the description is complete. It explains the purpose, when to use it, all parameters with examples, the synthetic nature, and the return shape. There are no obvious gaps that would prevent an agent from invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully carries the burden of explaining all five parameters. It provides detailed meaning and usage for each: users range '1 to 200', seed guarantees reproducibility, countries gives an example list, and both date parameters specify ISO format with examples. This is exemplary compensation for the absence of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear statement of what the tool does: 'Generate privacy-safe synthetic financial data for Latin America.' It then specifies the exact resources produced (financial users, savings goals, transactions), which distinguishes it from the sibling describe_latam_synth_dataset that describes rather than generates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use this tool when you need synthetic financial users, savings goals and transactions for Latin American fintech testing, QA, demos...' This provides clear context, but it does not mention any alternative tool or describe situations where it should NOT be used, so it falls just short of full marks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.0
    • First observeddescribe_latam_synth_dataset
    • First observedgenerate_latam_financial_data

TDQS

A4.6/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: one generates synthetic data, the other describes the dataset schema. No overlap or ambiguity exists.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (generate_..., describe_...). The slight difference in noun phrasing ('financial_data' vs 'synth_dataset') is minor and does not break the pattern.

Tool Count3/5

Only 2 tools is on the thin side. For a data generation server, a generate and describe tool is minimal but arguably sufficient for the core workflow. Still, it barely meets the borderline threshold.

Completeness4/5

The tool surface covers the main lifecycle: generating data and understanding the schema/config. No obvious missing operations for the stated purpose, though there is no tool for exporting or managing datasets, which might be a minor gap.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Hosted MCP endpoint that returns realistic fake data for prototyping agents. Paste one URL into Claude Code, Cursor, or Claude Desktop — 12 pre-built tools covering users, products, orders, events, email, and knowledge base search. No signup, no config, no auth. Built for developers who want to prototype agent workflows before wiring up a real backend.
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    MCP server providing verified Latin American data via x402 micropayments. 4 MCP tools: vera_rates (central bank rates CO/MX/BR/CL/PE), vera_sanctions (OFAC+SARLAFT+CNBV+COAF+UAF screening, EU AI Act Art.13), vera_entity (RUES/CNPJ/RFC enrichment), vera_context (AI market intelligence). $0.02–$0.10 USDC per call.
    4
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to manage personal finances for Brazilian users through MCP tools, including categorizing transactions, reconciling debts, checking cash-flow projections, and adjusting budgets, with integration to Open Finance Brasil via Pluggy.
    2
    -