Skip to main content
Glama
dan1d

dolar-mcp

get_all_currencies

Retrieve all foreign currency exchange rates against the Argentine Peso, including EUR, BRL, UYU, CLP, and more.

Instructions

Get all foreign currency exchange rates vs ARS (EUR, BRL, UYU, CLP, etc.).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The actual handler function that executes the tool logic. Calls the DolarApi client's GET /v1/cotizaciones endpoint to fetch all foreign currency exchange rates vs ARS.
    export async function getAllCurrencies(client: DolarApiClient): Promise<unknown> {
      return client.get<CurrencyRate[]>("/v1/cotizaciones");
    }
  • Schema definitions for tool parameters. get_all_currencies has no input params (empty object {}), so no specific schema is defined for it.
    export interface GetDollarParams {
      type: string;
    }
    
    export interface GetCurrencyParams {
      currency: string;
    }
    
    export interface ConvertParams {
      amount: number;
      from: string;
      to?: string;
      use_buy?: boolean;
    }
    
    export interface GetSpreadParams {
      type_a: string;
      type_b: string;
    }
  • MCP server registration of the 'get_all_currencies' tool. Defines its description, empty input schema, and the async handler that calls tools.get_all_currencies().
    server.tool(
      "get_all_currencies",
      "Get all foreign currency exchange rates vs ARS (EUR, BRL, UYU, CLP, etc.).",
      {},
      async () => {
        try {
          const result = await tools.get_all_currencies();
          return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
        } catch (error) {
          const message = error instanceof Error ? error.message : String(error);
          return { content: [{ type: "text", text: message }], isError: true };
        }
      },
    );
  • The createDolarTools() function that wires the getAllCurrencies action to the 'get_all_currencies' tool name by passing a client instance.
    export function createDolarTools() {
      const client = new DolarApiClient();
    
      return {
        tools: {
          get_all_dollars: () => getAllDollars(client),
          get_dollar: (params: GetDollarParams) => getDollar(client, params),
          get_all_currencies: () => getAllCurrencies(client),
          get_currency: (params: GetCurrencyParams) => getCurrency(client, params),
          convert: (params: ConvertParams) => convert(client, params),
          get_spread: (params: GetSpreadParams) => getSpread(client, params),
        },
      };
    }
  • The DolarApiClient class used by the handler to make HTTP GET requests to https://dolarapi.com/v1/cotizaciones.
    const BASE_URL = "https://dolarapi.com";
    
    export class DolarApiClient {
      async get<T = unknown>(path: string): Promise<T> {
        const res = await fetch(`${BASE_URL}${path}`, {
          method: "GET",
          headers: { "Content-Type": "application/json" },
          signal: AbortSignal.timeout(15000),
        });
        if (!res.ok) {
          const body = await res.text();
          throw new Error(`GET ${path} failed (${res.status}): ${body}`);
        }
        return res.json() as Promise<T>;
      }
    }
Behavior2/5

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

No annotations are present, and the description is minimal—it only states the basic function. It does not disclose any behavioral traits such as data freshness, rate limits, or return format. Given the lack of annotations, the description should provide more 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 a single, concise sentence that immediately conveys the tool's purpose. No extraneous information; it is front-loaded and efficient.

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 parameterless tool, the description adequately covers the purpose and expected output (foreign exchange rates vs ARS). Although no output schema exists, the description hints at the result set. It does not explicitly state the return structure, but given the simplicity, it is nearly complete.

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, and the schema coverage is 100% (trivially). According to guidelines, baseline is 4. The description appropriately adds no parameter-specific info since none exist.

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 tool's purpose: retrieving all foreign currency exchange rates relative to ARS, with examples of currencies (EUR, BRL, UYU, CLP, etc.). It distinguishes itself from sibling tools like get_currency (single currency) and get_all_dollars (dollar-specific rates).

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives (e.g., get_currency, get_all_dollars). No explicit context or when-not-to-use instructions are given.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dan1d/dolar-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server