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], SDKmcp>=2,<3)Actor, доступный как инструмент:
active_yardstick/latam-synthАутентификация: Apify OAuth или Bearer token
Официальное имя в MCP Registry:
io.github.jmendozapuche/latam-fintech-synthetic-dataМетаданные реестра:
server.jsonApify 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 + transactionsApify предоставляет хостируемый 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"
}
}
}Доступные инструменты:
Инструмент | Что делает |
| Генерирует пользователей + цели + транзакции. Аргументы: |
| Возвращает схему, категории целей, доступные страны и политику конфиденциальности. Без аргументов. |
Оба инструмента аннотированы как 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 parquetPython
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-synthActor можно вызывать напрямую из 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 — все три таблицы
Откройте запуск в Apify Console и нажмите вкладку Storage.
Нажмите Key-value store.
Скачайте созданные файлы:
users.csv— одна строка на каждого синтетического пользователяgoals.csv— сберегательные цели, связанные с пользователямиtransactions.csv— транзакции пополнения/снятия, связанные с целямиOUTPUT— присутствует всегда; JSON-сводка запуска, включая параметры, количество строк и ключи для скачиванияесли выбран
format: json,OUTPUT_DATAсодержит все три таблицы в одном JSON-файле вместо трёх CSV-файлов
Нажмите значок загрузки рядом с каждым ключом, чтобы сохранить файл.
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 toolsdescribe_latam_synth_datasetARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_dataARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| users | No | ||
| end_date | No | ||
| countries | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v1.0.0- First observed
describe_latam_synth_dataset - First observed
generate_latam_financial_data
TDQS
Scored across 2 tools
The two tools have completely distinct purposes: one generates synthetic data, the other describes the dataset schema. No overlap or ambiguity exists.
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.
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.
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
Related MCP Connectors
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.
Verified LATAM data for AI agents: sanctions, entity, rates, KYB. Pay via x402.
17 data tools in one MCP server, run on Apify: Google Shopping, Flights, Hotels, News, Images, Videos, Ads Transparency, Jobs and Trends; YouTube transcripts; AI visibility checks; Google Maps leads; App Store and Google Play reviews. Pay per result. Sign in with Apify (OAuth) or an API token.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceHosted 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
- FlicenseNot gradedqualityDmaintenanceGenerates realistic, context-aware synthetic data for AI agents to populate databases, mock APIs, and create test scenarios without exposing real PII.5 npm3-
- FlicenseAqualityBmaintenanceMCP 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-
- FlicenseNot gradedqualityBmaintenanceEnables 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-