Privacy-safe synthetic financial data for LatAm fintech, AI agents, testing and ML.
One address for any MCP client. Your key stays in your Odel vault.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
| Access to | Read | Change |
|---|---|---|
| Full api access | Not stated: full_api_access | |
From the sign-in at console-backend.apify.com, as the endpoint publishes it. You approve it there.
Odel could not list its tools without signing in.
Privacy-safe synthetic financial data for Latin American fintech — available through Python, CLI, REST, Apify Actor, and Model Context Protocol (MCP) for AI agents.
Generador de datos sintéticos de comportamiento de ahorro financiero, calibrado con las distribuciones estadísticas de 506,311 registros reales de una app de ahorro LatAm (2015–2024): 305,808 transacciones, 108,570 metas de ahorro y 91,933 usuarios de México, Colombia, Argentina, Perú, Chile y más.
El output es 100% sintético: ningún registro deriva de un usuario real, solo de distribuciones agregadas. Sin PII y sin riesgo de reidentificación.
LatAm Synth is available to AI agents as an MCP tool through two independent paths:
active_yardstick/latam-synth Actor as a callable MCP tool over Streamable HTTP. Nothing to install.latam-synth-mcp, shipped in this repository, runs the generator in-process without calling Apify. For local MCP clients and containerised catalog checks.Both paths return the same tables with the same referential integrity, because both are thin adapters over the same SyntheticGenerator.
latam-synth-mcp (extra [mcp], SDK mcp>=2,<3)active_yardstick/latam-synthio.github.jmendozapuche/latam-fintech-synthetic-dataserver.jsonhttps://mcp.apify.com?tools=active_yardstick/latam-synth
The tools parameter restricts the Apify MCP Server to the LatAm Synth Actor, making it directly discoverable and callable by compatible AI agents.
{
"mcpServers": {
"latam-synth": {
"url": "https://mcp.apify.com?tools=active_yardstick/latam-synth"
}
}
}
On first connection, a compatible MCP client can open the Apify OAuth flow so the user can authorize access without placing an API token directly in the configuration.
{
"mcpServers": {
"latam-synth": {
"url": "https://mcp.apify.com?tools=active_yardstick/latam-synth",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}
Replace <APIFY_TOKEN> with an Apify API token.
An MCP-compatible agent can invoke LatAm Synth to generate:
Typical agent use cases include:
LatAm Synth currently exposes its functionality through MCP Tools. It does not currently expose MCP Resources or Prompts.
The remote path does not require an MCP transport server inside this repository: Apify hosts it. The local path does ship one (src/latam_synth/mcp_server.py), for clients that prefer to run the generator themselves — no token, no network, no per-run cost.
The architecture is:
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 provides the hosted MCP server and authentication layer. The LatAm Synth Actor provides the executable tool functionality and structured input/output.
pip install -e ".[mcp]"
latam-synth-mcp # entry point
python -m latam_synth.mcp_server # equivalent
Configuration for a local MCP client (Claude Desktop / Claude Code):
{
"mcpServers": {
"latam-synth": {
"command": "latam-synth-mcp"
}
}
}
Exposed tools:
| Tool | What it does |
|---|---|
generate_latam_financial_data | Generates users + goals + transactions. Args: users (1-200), seed, countries, start_date, end_date. |
describe_latam_synth_dataset | Returns schema, goal categories, available countries and the privacy policy. No arguments. |
Both are annotated read_only and idempotent: nothing is written and the same
seed returns the same dataset. The 200-user cap per call keeps responses small
enough for an agent context — for larger volumes use the CLI or the Actor.
Deployment detail, Docker image and Glama configuration: docs/mcp_local.md.
pip install -e .
latam-synth generate --users 5000 --seed 42 --format csv --out ./output
Solo México y Colombia, formato parquet:
latam-synth generate --users 10000 --countries Mexico Colombia --format parquet
from latam_synth import SyntheticGenerator, GeneratorConfig
data = SyntheticGenerator(
GeneratorConfig(n_users=1000, seed=42)
).generate()
data["transactions"].head()
La calibración fue verificada contra datos reales. Ver:
docs/validation_report.txt
El generador incorpora:
LatAm Synth is also available as a hosted Apify Actor:
active_yardstick/latam-synth
Actor page:
https://apify.com/active_yardstick/latam-synth
The Actor can be called directly from Apify, through the Apify API, or exposed to AI clients through the Apify MCP Server.
Example input:
{
"users": 1000,
"seed": 42,
"countries": ["Mexico", "Colombia"],
"format": "csv",
"push_to_dataset": true,
"start_date": "2023-01-01",
"end_date": "2024-12-31"
}
The seed parameter makes generation reproducible. The same seed and configuration produce the same synthetic output.
Every run writes output to two places.
users.csv — one row per synthetic usergoals.csv — savings goals linked to userstransactions.csv — deposit/withdrawal transactions linked to goalsOUTPUT — always present; JSON summary of the run, including parameters, row counts and downloadable keysformat: json was selected, OUTPUT_DATA contains all three tables in a single JSON file instead of the three CSV filesBy default (push_to_dataset: true), all transactions are also pushed to the run's Dataset.
This allows you to:
To disable this for very large runs where only the key-value-store files are needed, set:
{
"push_to_dataset": false
}
The run log prints exact file names and row counts at the end of execution.
Install the API dependencies:
pip install -e ".[api]"
uvicorn latam_synth.api:app --port 8000
Generate JSON with the three tables:
curl -s -X POST http://localhost:8000/generate \
-H "Content-Type: application/json" \
-d '{"users": 100, "seed": 42, "countries": ["Mexico", "Colombia"]}' | jq .meta
Example metadata response:
{
"users": 100,
"goals": 121,
"transactions": 453
}
Download transaction CSV directly:
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
Health check:
curl http://localhost:8000/health
{
"status": "ok",
"version": "0.2.0"
}
Local REST API limits:
The generated datasets are designed for development, testing, demos, experimentation and education without requiring production PII.
Key properties:
pip install -e ".[dev]"
pytest
This repository includes server.json for MCP registry discovery.
Current server identity:
io.github.jmendozapuche/latam-fintech-synthetic-data
The registered remote MCP endpoint is:
https://mcp.apify.com?tools=active_yardstick/latam-synth
[created_at, deadline]