MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

Public MCP server for Latin America country, visa, residency and live macro data — connect Claude, ChatGPT, Cursor to verified Tolatam content in one URL.

Created 5/16/2026
Updated about 3 hours ago
Repository documentation and setup instructions

Tolatam MCP Server

One URL. 17 tools. Verified Latin America data inside Claude, ChatGPT, Cursor, Windsurf, Continue, Zed and every other MCP-aware client.

MCP Status Auth Rate limit Transport

POST https://tolatam.com/mcp

Public. Free. No API key. No account. No rate-limit headers in your face. A single endpoint that exposes the same English content powering tolatam.com — country profiles, visa records, in-depth guides, blog posts, country comparisons, city data, and live macro indicators for Uruguay, Argentina, Panama, Mexico, Colombia and Brazil — to any AI assistant that speaks the Model Context Protocol.


Why this exists

Telling an LLM "go search the web for the Uruguay tax holiday" returns whatever a search algorithm thinks is relevant: outdated blog posts, contradictory forum threads, marketing pages from law firms, and a token bill that makes your CFO cry. The model wastes context reading HTML, has no idea which source is authoritative, and confidently hallucinates citations that do not exist.

MCP solves this. Instead of scraping, the model calls a typed tool, gets back deterministic JSON, and knows exactly where the data came from. Tolatam exposes its entire content database as 17 such tools — visa rules, city cost indices, INDEC inflation, BCU exchange rates, full-text search across guides and country sections — and the AI assistant just uses them.

You plug in one URL. Your AI gets:

  • Six country profiles with quantitative metrics and detailed sections (overview, visa, banking, housing, taxes, healthcare, safety, cost of living).
  • Structured visa registry — minimum income, processing time, duration, citizenship eligibility, whether it leads to permanent residency.
  • In-depth guides — 2026 Argentina residency, digital-nomad visas across LatAm, expat tax calendar, how to open a bank account.
  • Country comparisons — Uruguay vs Argentina, Mexico vs Colombia, best for digital nomads / retirees / families / budget travellers.
  • City data for every covered country — cost index, climate, average temperature, safety, English level, population.
  • Live macro data — latest USD/UYU rate from Banco Central del Uruguay, monthly Argentina CPI from INDEC with 12-month history, Uruguay reference grocery basket.
  • Full-text search across guides, blog posts, country sections, comparisons and visa records, with ranked snippets.

Every payload is source-cited. Every tool result is JSON. Zero hallucinations on the data layer — the model can only return what the tools return.


30-second setup

Claude Desktop

Settings → Developer → Edit Config, paste, save, restart:

{
    "mcpServers": {
        "tolatam": {
            "url": "https://tolatam.com/mcp"
        }
    }
}

Claude Code

claude mcp add --transport http tolatam https://tolatam.com/mcp

The tools are immediately available in every project.

Cursor

~/.cursor/mcp.json:

{
    "mcpServers": {
        "tolatam": { "url": "https://tolatam.com/mcp" }
    }
}

ChatGPT (custom GPT)

GPT builder → ActionsAdd toolMCP server → paste https://tolatam.com/mcp.

Windsurf, Continue, Zed, Cline, …

Any client that supports remote MCP servers over Streamable HTTP works the same way: one URL, no auth.


Try it without any client

The server is plain JSON-RPC 2.0 over HTTP. curl is enough to prove it:

curl -X POST https://tolatam.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "search_content",
      "arguments": { "query": "tax holiday", "limit": 5 }
    }
  }'

The result.content[0].text field holds the ranked search hits as a JSON string. Pick one and follow up with get_blog_post, get_guide, get_country_section, get_comparison or get_visa to retrieve the full payload.

List every available tool:

curl -X POST https://tolatam.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

What you can ask once it is connected

Real prompts that work end-to-end against the live server:

  • "Compare visa requirements for digital nomads in Uruguay, Argentina and Mexico, and tell me which leads to permanent residency fastest."
  • "What is the latest monthly inflation in Argentina according to INDEC, and how does it compare to the last twelve months?"
  • "Build me a $2,000 / month budget for living in Montevideo, broken down by housing, food, transport and healthcare."
  • "Which Latin American country has the best combination of low cost of living and an easy visa for a retiree on $1,500 / month?"
  • "Summarise the Uruguay Tax Holiday 2.0 — who qualifies, what changed, and what should I file with DGI in the first year?"
  • "List every visa in your database that requires no minimum income and leads to permanent residency."
  • "What is the current USD / UYU rate, and what are reference prices for a basic grocery basket in Uruguay?"
  • "Walk me step-by-step through the Argentina residency process for 2026."

The answers come from the same data set that drives the production site, so anything the public site reflects, the MCP server reflects within the same publish cycle.


Tool reference

| Tool | Purpose | | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | list_countries | All 6 covered countries with quantitative metrics — monthly cost (USD), visa difficulty, healthcare score, safety score, English level, minimum budget — plus available sections each. | | get_country_section | Full prose content for one section of one country: overview, visa, banking, cost-of-living, healthcare, housing, safety, taxes. Sections vary by country. | | list_visas / get_visa | Filterable visa registry (country, purpose, citizenship group) and per-record detail: minimum income, processing time, duration, residency path, highlights. | | list_guides / get_guide | In-depth long-form guides (residency, digital nomad, tax calendar, banking) — metadata index plus full content by slug. | | list_blog_posts / get_blog_post | Article-format pieces, currently led by the Uruguay Tax Holiday 2.0 analysis with the 11-year foreign-income exemption rules. | | list_comparisons / get_comparison | Pre-written multi-country comparisons (Uruguay vs Argentina, Mexico vs Colombia, best for digital nomads / retirees / families / budget travellers). | | compare_countries | Numeric side-by-side of any two countries with computed deltas in cost, healthcare and safety scores. | | get_cities | Curated city list per country: cost index, climate, average temperature, safety, English level, population, highlights. | | get_cost_of_living | Structured cost-of-living JSON in USD (housing 1BR/2BR/3BR, food, transport, utilities, healthcare, entertainment). | | get_fx_rates | Latest USD / UYU rate from Banco Central del Uruguay. | | get_argentina_inflation | Latest monthly and annual CPI variation from INDEC plus a 12-month history. | | get_uruguay_prices | Reference basket of common groceries in UYU collected from public sources. | | search_content | Full-text substring search across guides, blog posts, country sections, comparisons and visa records, with ranked snippets. |

Inputs are validated with Zod — bad input gives a useful JSON-RPC error, not a 500. Outputs always include a sources array or fetchedAt field where applicable, so the model can cite responsibly.

Country and section coverage

| Country | Sections available | Visa registry | Cities | Live macro | | --------- | --------------------------------------------------------------------------- | ------------- | ------ | -------------------------- | | Uruguay | overview, visa, banking, cost-of-living, healthcare, housing, safety, taxes | ✅ | ✅ | ✅ FX, reference prices | | Argentina | overview, visa | ✅ | ✅ | ✅ INDEC monthly inflation | | Mexico | overview, visa, banking, cost-of-living, healthcare, housing, safety, taxes | ✅ | ✅ | — | | Colombia | overview, visa | ✅ | ✅ | — | | Panama | overview, visa | ✅ | ✅ | — | | Brazil | overview, visa | ✅ | ✅ | — |


Protocol details

  • Transport: Streamable HTTP (MCP-Protocol-Version: 2025-03-26), stateless. Every POST is a self-contained JSON-RPC request.
  • Methods: POST (call), GET (probe), OPTIONS (CORS preflight), DELETE (transport teardown). All four share the same path.
  • Response format: plain JSON (enableJsonResponse: true). No SSE required — the client does not have to keep a stream open.
  • Auth: none.
  • CORS: open (Access-Control-Allow-Origin: *). Usable from any browser origin, including local Claude/Cursor clients running on file://.
  • Rate limit: 60 requests / minute / IP, in-memory token bucket. Soft — the limit exists to stop accidental infinite loops, not to gate usage. Limit info is returned in X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset headers. On exhaustion the server returns HTTP 429 with JSON-RPC error code -32000 and a Retry-After header.
  • Server name / version: advertised as tolatam@1.0.0 in MCP initialize responses.
  • Per-request instances: every HTTP request builds a fresh McpServer and transport, so there is no cross-request state leakage and the server scales horizontally with zero coordination.

Privacy

The server runs as part of the same SvelteKit application that serves tolatam.com. It does not log query content, does not store conversation transcripts, does not require an API key, does not set cookies, does not fingerprint. The only thing it remembers about your client is an IP bucket inside the rate limiter, evicted after one minute.

There is nothing to leak because there is nothing to keep.


Data freshness

| Surface | Cadence | Source | | --------------------------------------- | ----------------------------- | ------------------------------------------------------- | | Visa rules | reviewed monthly | official immigration agencies, primary legal documents | | Country prose (banking, taxes, housing) | reviewed monthly | editorial team, government and bank publications | | Argentina inflation | refreshed within 1–2 days | INDEC IPC automated fetcher | | Uruguay USD/UYU FX rate | refreshed daily | Banco Central del Uruguay | | Uruguay reference prices | refreshed bi-weekly or better | curated public sources |

Every payload includes an updated, fetchedAt or lastReviewed field where appropriate so the calling model can disclose recency in its answer.


FAQ

Do I need an API key or account? No. Public, free, no auth. Commercial use is allowed. The only constraint is the soft 60 rpm-per-IP rate limit.

Which clients can connect? Any MCP-compliant client over Streamable HTTP: Claude Desktop, Claude Code, ChatGPT custom GPTs, Cursor, Windsurf, Continue, Zed, Cline, and every other tool that has shipped MCP client support since the protocol stabilised in 2025.

Why not just let the model search the web? Web search returns whatever an algorithm decides is relevant — often outdated, often contradictory, always expensive in tokens. MCP gives the model a small, typed, deterministic surface. The model knows what tools exist, what each one returns, and where the data came from. Answers become faster, cheaper and citable.

Which languages does the MCP server return? English only. LLMs translate downstream with high fidelity, so this keeps the tool surface small and avoids triplicating output. The human-facing site at tolatam.com is fully available in Russian, English and Spanish.

Is the data accurate? Same data as the public site. Visa rules and country prose are reviewed monthly. Live indicators (INDEC inflation, BCU FX, Uruguay prices) are refreshed by automated jobs within days of publication at the source. Every payload includes sources.

Can I self-host? Yes. The implementation lives in the tolatam SvelteKit codebase under src/lib/server/mcp/ and src/routes/mcp/. The endpoint is part of the main app on adapter-node — no separate process, no extra infrastructure required.

What happens when a tool result is missing? The tool returns isError: true with a human-readable message, for example "No content for argentina/banking. Call list_countries to see availableSections.". The model picks a different section or a comparable country.


Links


License

The endpoint is free for personal and commercial use, subject only to the soft rate limit. The README in this repository is published under CC0 1.0 — copy, fork, reword, translate.


Built and maintained by the team behind Tolatam. If you ship something cool on top of the server, tell us.

Quick Setup
Installation guide for this server

Installation Command (package not published)

git clone https://github.com/orby-tech/tolatam-mcp
Manual Installation: Please check the README for detailed setup instructions and any additional dependencies required.

Cursor configuration (mcp.json)

{ "mcpServers": { "orby-tech-tolatam-mcp": { "command": "git", "args": [ "clone", "https://github.com/orby-tech/tolatam-mcp" ] } } }