Python client and MCP server for Chile's SINIM municipal data (datos.sinim.gov.cl)
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"mcp-sinim","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# mcp-sinim **Pull Chilean municipal data from SINIM with a searchable catalog, tidy municipal panels, and the same package from Python or any MCP-compatible client.** An open-source project by Maykol Medrano. [](https://pypi.org/project/mcp-sinim/) [](https://www.python.org/downloads/) [](https://github.com/MaykolMedrano/mcp_sinim/actions/workflows/ci.yml) [](LICENSE) --- ## What You Can Do - Search roughly 480 SINIM variables by natural language instead of memorizing `id_dato` codes. - Pull one or many municipal indicators as tidy `pandas` panels in one call. - Discover available years and municipality codes directly from the live portal. - Use the same package in notebooks, scripts, or MCP clients. - Work with an offline catalog snapshot plus optional metadata caching. ## Installation ```bash pip install mcp-sinim ``` ## Python Example ```python from mcp_sinim import SINIMClient client = SINIMClient(corrmon=True) # 1) Find the right variable code hits = client.search("patentes municipales") print(hits[["code", "name"]].head(3).to_string(index=False)) # 4173 = Ingresos por Patentes Municipales de Beneficio Municipal # 1311 = Monto Patentes Municipales Pagadas # 13101 = Santiago, 13114 = Las Condes, 13123 = Providencia # 2) Pull a tidy panel for several years and municipalities df = client.get( ["4173", "1311"], years=[2022, 2023, 2024], municipios=["13101", "13114", "13123"], # Santiago, Las Condes, Providencia ) print(df.head(12).to_string(index=False)) # 3) Explore metadata when needed print(client.years()[-5:]) print(client.search_municipios("providencia")) print(client.…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.