Skip to main content
Glama
eduair94

Cambio Uruguay MCP

cambio-uruguay-mcp

MIT License

A Model Context Protocol server that lets any AI assistant (Claude, ChatGPT, Cursor, Cline, …) search Uruguay: rentals ranked for a whole household, fair rent and neighbourhoods, property and used-car opportunities, used cars, product prices, and live exchange rates across every casa de cambio.

Read-only wrapper over the public cambio-uruguay.com API. No account, no API key, no scraping.

Quick start (local, stdio)

No install needed — run it with npx:

npx cambio-uruguay-mcp

Claude Desktop

Add to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "cambio-uruguay": {
      "command": "npx",
      "args": ["-y", "cambio-uruguay-mcp"]
    }
  }
}

Cursor

.cursor/mcp.json (or Settings → MCP):

{
  "mcpServers": {
    "cambio-uruguay": { "command": "npx", "args": ["-y", "cambio-uruguay-mcp"] }
  }
}

Cline / Continue / other stdio clients

Same shape: command npx, args ["-y", "cambio-uruguay-mcp"].

Related MCP server: AllRatesToday MCP Server

Hosted endpoint (remote, no install)

A public Streamable-HTTP endpoint is available for clients that support remote MCP servers:

https://mcp.cambio-uruguay.com/mcp
{
  "mcpServers": {
    "cambio-uruguay": { "url": "https://mcp.cambio-uruguay.com/mcp" }
  }
}

It is stateless and read-only.

Toolsets

29 read-only tools in five toolsets. The hosted endpoint serves all of them at /mcp, or one toolset per path so a client only loads what it needs:

Path

Toolset

What it covers

/mcp

all

everything below

/mcp/alquileres

rentals

~57,000 rental homes from 5 portals, household ranking, fair rent, neighbourhoods, opportunities

/mcp/autos

used cars

~19,000 used cars from 10 sources, opportunities, declared risks, model prices, market report

/mcp/productos

products

phones, desk chairs, 38 home categories, e-mobility, online-store signals, supermarket prices

/mcp/sitio

the whole site

search every page of cambio-uruguay.com (guides, tools, glossary, data pages), read a page, the site menu

/mcp/cambio

exchange rates

the original 7 tools

For stdio set MCP_TOOLSETS=alquileres,autos (default: all).

Rentals (alquileres)

Tool

Description

search_rentals

The whole rental directory with every filter: neighbourhoods, type, bedrooms, m², price in pesos, monthly total with common expenses, pets, parking, furnished, accepted guarantee (ANDA, Contaduría, insurer, deposit, BHU), amenities, owner-direct, portal, free text, near a point + radius, neighbourhood quality (few crime reports, few water cuts).

rank_rentals_for_household

The personalised one: scores every current home for a household of 1–8 people with incomes, remote days and up to 4 daily destinations each (work/study, days per week, travel mode). Budget share, what is left each month, distance per person and destination, reasons and warnings.

get_rental

One home: every advert that publishes it (price per portal), description, amenities, guarantee text, market comparison, similar homes, neighbourhood profile.

rental_market_stats

Median and typical range of rent, common expenses, monthly total and price per m², by department/neighbourhood/type/bedrooms; cheapest and priciest neighbourhoods.

estimate_fair_rent

Fair-rent estimate for a specific home from comparable adverts, and where an asking price sits.

compare_neighborhoods

Neighbourhoods side by side: prices, crime reports by type, water cuts, municipal complaints, nearby services, rank among the 62 of Montevideo.

find_property_opportunities

Homes asked below comparable adverts (rent or sale) with the evidence and cautions behind each gap.

geocode_uy_address

Address or intersection → coordinates (IDE Uruguay).

Used cars (autos)

Tool

Description

search_used_cars

Brand/model by plain name, year, km, price (US$), max L/100 km, fuel, gearbox, body, doors, colour, department, dealer or private, source, price drops, only opportunities, no declared risk, listed in the last N days.

find_car_opportunities

Cars asked below their fixed cohort (model + year + trim + engine + gearbox, comparable km), with the sample behind each gap.

get_car

One advert against its cohort, the ML price guide, declared risks quoted, similar cars.

car_model_prices

A model by year and version, the ML guide, the opportunities and cheapest adverts of the model.

car_declared_risks

Adverts whose seller declares debt, paperwork, crash, recovered theft, mechanical issues, foreign plates or heavy use, with the quote and the discount against clean cohorts.

car_market_report

Market report sections: overview, what each budget buys, depreciation per model, negotiation margin, dealer vs private, valuation effects.

Products (productos)

Tool

Description

search_products

One search over phones, desk chairs, 38 home categories and e-scooters/e-bikes: cheapest plausible offer with seller and link, typical new/used band, used savings.

plan_home_setup

What equipping an empty home costs (minimal/decent/complete), minus what the person already has; says when a total is partial.

check_online_store

Dated trust signals of an online store (domain age, Google, Trustpilot, Reddit mentions, policies, payments). Never a verdict.

supermarket_prices

Official SIPC prices per article and the cheapest supermarkets of a department by matched basket.

list_directories

Every directory of the site, its size and link.

Exchange rates (cambio)

Tool

Description

get_rates

Buy/sell for a currency across all houses: market average, best buy/sell house, lowest spread, per-house list.

best_house

The single best casa de cambio to buy (lowest sell) or sell (highest buy) a currency now.

convert

Convert an amount between currencies at the best market rates (foreign↔foreign routes through UYU).

list_houses

Every tracked exchange house with name, website, and departments served.

get_evolution

Historical series + stats (min/max/avg/current/change) for a house + currency over N months.

get_news

Latest Uruguayan dollar/economy headlines (Google News), de-duplicated, newest first.

daily_summary

AI market analysis (whole-market, or per-currency when currency is given). lang es | en | pt.

Rate convention: to buy a currency a house sells it to you (best = lowest sell); to sell it a house buys from you (best = highest buy). BCU and interbank quotes are excluded from market math.

Prompts

buscar-alquiler, evaluar-aviso-alquiler, comparar-barrios, buscar-auto-usado, evaluar-auto, equipar-casa and analizar-dolar-hoy: guided workflows (interview, chain the tools, short list with links). The server also sends instructions at initialisation with the domain rules, so answers stay good even without the skill.

Skill (Claude)

skills/buscador-uruguay/ is an Agent Skill that teaches the workflow and the Uruguayan domain rules, and falls back to the public HTTP API when no MCP is connected. Download the zip from cambio-uruguay.com/descargas/buscador-uruguay-skill.zip and upload it in Claude (Settings → Capabilities → Skills), or copy the folder to ~/.claude/skills/ for Claude Code. After editing it run npm run pack-skill (a test fails if the zip drifts).

Step-by-step for every client: cambio-uruguay.com/buscar-con-ia.

Configuration

Env var

Purpose

Default

MCP_TRANSPORT

stdio or http

stdio

MCP_HTTP_PORT

Port for the HTTP transport

8788

API_BASE_URL

Upstream rates API (toolset cambio)

https://api.cambio-uruguay.com

SITE_BASE_URL

Upstream site API for rentals, cars and products

https://cambio-uruguay.com

MCP_TOOLSETS

stdio only: comma list of toolsets (cambio, alquileres, autos, productos, sitio)

all

Development

npm install
npm test          # vitest — pure tool handlers
npm run build     # tsc → dist
npm run dev       # run from source (tsx)
npm run inspect   # MCP Inspector against the source server
npm run smoke     # every site-backed tool against production (network)
npm run pack-skill # rebuild the downloadable skill zip

License

MIT — part of the open-source cambio-uruguay project.

Available Tools

7 tools
best_houseBest exchange houseAInspect

The single best casa de cambio right now to buy or sell a currency. side='buy' means you buy the currency (best = lowest sell price); side='sell' means you sell it (best = highest buy price).

ParametersJSON Schema
NameRequiredDescriptionDefault
sideYes'buy' = you buy the currency; 'sell' = you sell it
currencyYesISO currency code, e.g. USD

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden, and it delivers non-obvious disclosure: the meaning of 'best' flips with side — lowest sell price when buying, highest buy price when selling. This prevents an agent from incorrectly assuming 'best' always means the lowest price. It also scopes the result temporally ('right now'), though it doesn't explicitly confirm read-only behavior or describe the result shape.

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?

Two sentences with zero redundancy. The purpose is front-loaded in the first sentence, and the clarifying side semantics follow immediately in the second. Every clause earns its place, and the key disambiguation is packed into minimal space.

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

Completeness4/5

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

For a 2-parameter lookup tool with fully documented schema parameters, the description covers the essential decision rule and temporal scope. The main gap is the absence of an output schema and no hint about what the result contains (house name, rate, timestamp). Given the tool's simplicity, this is close to complete but not fully so.

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?

Schema coverage is 100%, so both parameters are already documented, earning the baseline 3. The description adds genuine value beyond the schema by coupling each side value to its ranking rule (buy → lowest sell price; sell → highest buy price), which is the tool's core logic. Currency adds nothing beyond the schema's ISO note, but the side explanation justifies a 4.

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

Purpose4/5

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

The description states a specific purpose: return the single best exchange house for buying or selling a currency, with 'right now' scoping it to current market conditions. 'The single best' implicitly separates it from siblings like list_houses and get_rates, though it doesn't name them explicitly. It stops short of a 5 because differentiation from siblings is implied rather than stated.

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

Usage Guidelines3/5

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

The usage context is implied: use this when you want the one best casa de cambio for a given currency and side, rather than all houses or plain rates. The description gives no explicit when-to-use vs. when-not-to-use guidance and names no alternatives such as list_houses or get_rates. This meets the 'implied usage' level but nothing more.

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

convertConvert an amountAInspect

Convert an amount between currencies using the best available Uruguayan market rates. Foreign↔foreign routes through UYU (Uruguayan peso). Codes: USD, EUR, ARS, BRL, UYU, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget ISO code, e.g. UYU
fromYesSource ISO code, e.g. USD
amountYesAmount to convert

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden and does disclose the non-obvious UYU routing and 'best available market rates'. However, it does not mention the return shape, whether the conversion is indicative or executable, or any error/edge-case behavior.

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 brief, front-loaded with the core purpose, and every sentence adds useful information. There is no redundant or filler content.

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

Completeness4/5

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

For a simple three-parameter conversion tool, the core invocation details are covered by the schema and description. The main gap is the absence of an output schema or stated return format, but the tool's purpose and routing behavior are sufficiently clear 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 input schema already describes all three parameters, so the baseline is 3. The description adds value by listing example accepted currency codes (USD, EUR, ARS, BRL, UYU), helping the agent construct valid from/to arguments.

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

Purpose4/5

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

The description states a clear action and resource: 'Convert an amount between currencies' using Uruguayan market rates. It also gives a distinguishing behavioral detail (foreign↔foreign routes through UYU), though it does not explicitly contrast any sibling tool.

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

Usage Guidelines3/5

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

The description implies when to use the tool (currency conversion with Uruguayan rates) but does not explicitly state when to prefer it over siblings like get_rates, nor any exclusions or prerequisites. Usage context is present but not fully articulated.

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

daily_summaryAI market summaryAInspect

AI-generated analysis of the Uruguayan exchange market. Without a currency, a whole-market summary; with one, a per-currency analysis. lang is es | en | pt.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage (default es)
currencyNoOptional ISO code for a per-currency analysis, e.g. USD

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It states the output is 'AI-generated analysis,' implying synthesized narrative rather than raw data, and it exposes language options. It does not mention read-only semantics, data freshness, output format, or behavior when a requested currency has no data, so some behavioral gaps remain.

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 two concise sentences with the core scope front-loaded. The conditional usage is compressed into one clear clause, and the language note is minimal. There is no filler or redundant phrasing.

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

Completeness4/5

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

For a tool with two optional parameters and no output schema, the description captures the essential invocation modes and market scope. It does not specify the return format beyond 'analysis,' and 'daily' is implied by the name rather than described, so it is not fully exhaustive. Still, an agent can call it correctly without requiring additional information.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds the conditional semantics of the currency parameter ('without... with...') and restates the lang values, but the schema already conveys the optional per-currency behavior and language choices. The added value beyond the schema is minimal.

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

Purpose4/5

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

The description opens with 'AI-generated analysis of the Uruguayan exchange market,' clearly identifying the deliverable and market scope. It further differentiates the tool through its conditional behavior: whole-market without currency, per-currency with one. The verb is implicit rather than explicit, but the purpose is not likely to be confused with sibling rate or news tools.

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 explains how to switch between whole-market and per-currency modes: omit currency for a market summary, provide one for per-currency analysis. It also enumerates the allowed language values. However, it does not contrast this tool with siblings such as get_rates or get_evolution, leaving when to prefer raw rates or historical data to inference.

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

get_evolutionGet rate historyAInspect

Historical rate series and statistics (min/max/avg/current/change) for a given exchange house (origin) and currency over the last N months. Use list_houses for valid origin ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesExchange house id, e.g. brou, itau, prex
periodNoMonths of history (default 6)
currencyYesISO currency code, e.g. USD

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose what the tool returns (series plus min/max/avg/current/change) and the time-window scope. It does not mention response ordering, error behavior, or whether any side effects exist, though the tool appears to be a read-only query.

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 exactly two sentences with no filler. The main function is front-loaded, and the list_houses pointer is a useful, concise addition. Every sentence earns its place.

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

Completeness4/5

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

The description covers the core purpose, the key inputs, and the content of the returned result well enough for a simple history query. With no output schema, it would benefit from specifying the exact response structure or result ordering, but the omission of the period default is acceptable because the schema already documents it.

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 input schema already provides 100% coverage with descriptions for all three parameters. The description adds value by clarifying that origin refers to an exchange house and by pointing to list_houses for valid origin IDs. It also reinforces that period maps to 'last N months', supplementing rather than repeating the schema.

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

Purpose4/5

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

The description clearly identifies the tool's purpose: returning historical rate series and statistics for a given exchange house and currency over a time period. The phrase 'historical rate series and statistics (min/max/avg/current/change)' distinguishes it from a simple current-rate lookup, though it does not explicitly name sibling alternatives like get_rates.

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 provides clear context for when to use the tool: when historical rate data and summary statistics for a specific origin and currency are needed. It also gives a practical prerequisite by recommending list_houses for valid origin IDs. It does not, however, explicitly state when not to use this tool or compare it with siblings.

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

get_newsGet market newsAInspect

Latest Uruguayan dollar/economy headlines (Google News), de-duplicated and newest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax headlines (default 12)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It goes beyond a simple verb+object by revealing two useful behaviors: results are de-duplicated and sorted newest-first, and the source is Google News. It does not mention pagination, rate limits, or output format, but for a simple read-only news tool this is reasonably transparent.

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 a single, compact sentence that immediately communicates the source, scope, and ordering behavior. Every phrase carries meaning and there is no redundant or filler content.

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 simplicity—one optional parameter, no nested objects, no output schema—the description gives an agent enough context to call it correctly. It names the resource, the source, and the processing guarantees, which is complete for this use case.

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

Parameters3/5

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

The input schema has 100% description coverage for the only parameter, 'limit', including its default and maximum. The description adds no parameter-specific details, but none are needed because the schema already fully explains the parameter.

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 names a specific resource ('Uruguayan dollar/economy headlines'), a clear source ('Google News'), and key processing behavior ('de-duplicated and newest first'). This clearly distinguishes it from the sibling tools like get_rates or list_houses, which address different domains.

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

Usage Guidelines3/5

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

The phrase 'Latest ... headlines' implies the tool should be used when current market news is needed, and the scope is clearly Uruguayan. However, there is no explicit guidance about when not to use it or which sibling tool to choose instead, leaving the agent to infer selection from context.

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

get_ratesGet exchange ratesAInspect

Current buy/sell rates for a currency across Uruguayan exchange houses (casas de cambio): market average, best buy/sell house, lowest spread, and the full per-house list. Excludes BCU and interbank quotes. Currency is an ISO code like USD, EUR, ARS, BRL.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyYesISO currency code, e.g. USD, EUR, ARS, BRL

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by stating exactly what the tool returns and explicitly what it excludes (BCU and interbank quotes), giving a clear model of the tool's behavior. It does not mention error handling, side effects, or data freshness, but the query-like nature and detailed output list provide solid transparency.

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 compact and front-loaded, opening with the core deliverable and then adding currency format and exclusions in the second sentence. Every clause adds value, with no redundancy or filler.

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

Completeness4/5

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

For a one-parameter tool with no output schema and no annotations, the description is quite complete: it enumerates the included data items (average, best house, spread, full list) and states exclusions. Minor gaps like output format or behavior on unsupported currencies are acceptable given the low complexity and the level of detail already present.

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

Parameters3/5

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

Schema description coverage is 100%: the schema already documents the currency parameter as an ISO code with examples. The description repeats the same examples (USD, EUR, ARS, BRL) and adds no parameter-level meaning beyond what the schema provides, which meets the high-coverage baseline of 3.

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 clearly identifies the operation: retrieving current buy/sell rates for a currency across Uruguayan exchange houses, and enumerates the specific outputs (market average, best buy/sell house, lowest spread, full per-house list). It also distinguishes itself by explicitly excluding BCU and interbank quotes, making it easy to differentiate from sibling tools like best_house or convert.

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

Usage Guidelines3/5

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

The description implies when to use the tool by stating it provides current rates for a currency and lists what data is returned, but it does not explicitly mention sibling alternatives or provide when-to-use versus when-not-to-use guidance. The exclusion of BCU and interbank quotes gives some scope context, but not enough to route an agent away from potentially overlapping tools like best_house or daily_summary.

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

list_housesList exchange housesAInspect

All Uruguayan exchange houses (casas de cambio) tracked, with display name, website, and departments served.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It clearly signals a read-only listing operation and discloses the scope ('all ... tracked') and included fields. It does not mention ordering, pagination, or output format, but for a simple zero-parameter list this is acceptable.

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 entire description is one efficient, front-loaded sentence. It packs the geographic scope, the Spanish-language alias, and the returned fields into minimal space with no filler.

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

Completeness4/5

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

For a zero-parameter listing tool with no annotations or output schema, this description is nearly complete: it names the resource, scope, and return attributes. A minor gap is that 'departments served' is slightly ambiguous without clarifying that these are Uruguayan departments.

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 description does not need to explain parameter meaning. The baseline for zero parameters is 4, and the description adds useful context about what the returned data contains.

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 uses a specific verb ('list') and a precise resource ('all Uruguayan exchange houses'), and enumerates the returned attributes: display name, website, and departments served. This makes the tool's role clear and distinguishes it from sibling tools focused on rates, conversion, evolution, news, and summaries.

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

Usage Guidelines3/5

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

The intended use is implied: call this to get a directory of exchange houses and their basic contact/coverage information. However, there is no explicit guidance about when not to use it or how it relates to siblings such as get_rates or best_house.

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. 7 tool updatesv0.1.1
    • First observedbest_house
    • First observedconvert
    • First observeddaily_summary
    • First observedget_evolution
    • First observedget_news
    • First observedget_rates
    • First observedlist_houses

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation3/5

get_rates and best_house overlap because get_rates already provides the best buy/sell house and the full per-house list, making best_house a subset rather than a clearly distinct tool. The other tools are well separated by current rates, historical data, conversion, news, and summary.

Naming Consistency4/5

Most tool names follow a get_/list_ + noun snake_case pattern, but best_house, convert, and daily_summary deviate from that verb-prefix convention. The naming is still readable, consistent in casing, and easy to infer.

Tool Count5/5

Seven tools is well-scoped for a Uruguayan exchange-rate domain, covering rates, best house, conversion, house list, history, news, and summary. Each tool earns its place without excessive fragmentation.

Completeness4/5

Core workflows are covered: current rates, best house, conversion, exchange house reference data, historical series, news, and daily analysis. Minor gaps such as market-level historical averages or multi-currency batch rates would need workarounds, but they do not block the main use cases.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Real-time Argentine exchange rates for AI agents. Dollar blue, oficial, MEP, CCL, crypto rates plus currency conversion and spread calculator.
    6
    9 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for querying real-time Argentine economic data, including dollar exchange rates, inflation, country risk, foreign currencies, and more.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Real-time US-equity quotes, company fundamentals, earnings, analyst trends, and financial news via Finnhub. Supports STDIO and Streamable HTTP transports.
    368 npm
    1
    Apache 2.0