# DatoQA (dev.workers.bhazarstudio.datoqa/datoqa): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/dev.workers.bhazarstudio.datoqa%2Fdatoqa/versions/latest)
- Connected to: https://datoqa.bhazarstudio.workers.dev/mcp
- Homepage: https://datoqa.bhazarstudio.workers.dev/docs/start/
- Scoring rules: v2
- Tools: 28
- Average: 61.2 / 100 (Cloudy)
- Near-identical pairs: 0

This page shows how DatoQA (dev.workers.bhazarstudio.datoqa/datoqa)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Minor: 28 tools. Above 25, models start to tell tools apart less well.

## Tools

- `search_recalls`: 47 / 100
  - Major: Arguments without a description: query, limit, scope, gtin, from, to, offset.
  - Minor: String arguments with no constraint or example: gtin.
  - Minor: No `required` list, so every argument is optional.
- `get_exchange_rates`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `get_evidence`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_record`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_weather`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
- `list_interest_rate_series`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `list_countries`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `list_economic_indicators`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `list_historical_indicators`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `list_us_economic_indicators`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `list_weather_locations`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `convert_currency_batch`: 58 / 100
  - Major: Arguments without a description: rows, rows[].id, rows[].date, rows[].currency, rows[].amount, rounding, target_currency.
  - Minor: String arguments with no constraint or example: rows[].date.
- `get_economic_indicators`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
- `convert_file`: 59 / 100
  - Major: Arguments without a description: purchase_id, recovery_key, inputs, inputs[].format, inputs[].data_base64, output_format, options, options.document_mode, options.table_mode, options.delimiter, options.null_token, options.sheet, options.max_width, options.max_height, options.quality, options.background, options.dpi, options.pages, options.pdf_mode, options.table_index, options.accept_table_sha256, options.ocr, options.ocr_language, options.field_regions, options.field_regions[].name, options.field_regions[].page_number, options.field_regions[].bbox_pixels.
  - Minor: String arguments with no constraint or example: options.document_mode, options.table_mode.
  - Minor: The meaning of the boolean argument options.ocr is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: purchase_id. Name the tool or the place that returns it, or models look it up first.
- `get_historical_indicators`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_us_economic_indicators`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
- `list_exchange_rate_history`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
- `validate_table`: 61 / 100
  - Major: Arguments without a description: format, columns, columns[].name, columns[].type, columns[].required, columns[].nullable, columns[].trim, columns[].uppercase, columns[].decimal_separator, columns[].date_format, columns[].allowed_values, csv, rows, delimiter, null_token, unique_by.
  - Minor: The meaning of the boolean argument columns[].required is unclear.
  - Minor: The meaning of the boolean argument columns[].nullable is unclear.
  - Minor: The meaning of the boolean argument columns[].trim is unclear.
  - Minor: The meaning of the boolean argument columns[].uppercase is unclear.
- `get_interest_rates`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_earthquakes`: 64 / 100
  - Minor: No `required` list, so every argument is optional.
- `get_exchange_rate_history`: 65 / 100
  - Major: Says nothing about when to use it, or when not to.
- `reconcile_tables`: 65 / 100
  - Major: Arguments without a description: mode, left, left.table, left.table.format, left.table.columns, left.table.columns[].name, left.table.columns[].type, left.table.columns[].required, left.table.columns[].nullable, left.table.columns[].trim, left.table.columns[].uppercase, left.table.columns[].decimal_separator, left.table.columns[].date_format, left.table.columns[].allowed_values, left.table.csv, left.table.rows, left.table.delimiter, left.table.null_token, left.table.unique_by, left.mapping, left.mapping.keys, left.mapping.amount, left.mapping.currency, left.mapping.quantity, left.mapping.unit, left.mapping.date, right, right.table, right.table.format, right.table.columns, right.table.columns[].name, right.table.columns[].type, right.table.columns[].required, right.table.columns[].nullable, right.table.columns[].trim, right.table.columns[].uppercase, right.table.columns[].decimal_separator, right.table.columns[].date_format, right.table.columns[].allowed_values, right.table.csv, right.table.rows, right.table.delimiter, right.table.null_token, right.table.unique_by, right.mapping, right.mapping.keys, right.mapping.amount, right.mapping.currency, right.mapping.quantity, right.mapping.unit, right.mapping.date, fields, fields[].left, fields[].right, amount_basis, amount_tolerance, quantity_tolerance, target_currency, rounding.
  - Minor: The meaning of the boolean argument left.table.columns[].required is unclear.
  - Minor: The meaning of the boolean argument left.table.columns[].nullable is unclear.
  - Minor: The meaning of the boolean argument left.table.columns[].trim is unclear.
  - Minor: The meaning of the boolean argument left.table.columns[].uppercase is unclear.
  - Minor: The meaning of the boolean argument right.table.columns[].required is unclear.
  - Minor: The meaning of the boolean argument right.table.columns[].nullable is unclear.
  - Minor: The meaning of the boolean argument right.table.columns[].trim is unclear.
  - Minor: The meaning of the boolean argument right.table.columns[].uppercase is unclear.
- `list_holiday_regions`: 67 / 100
- `get_public_holidays`: 70 / 100
- `list_sources`: 70 / 100
  - Minor: No `required` list, so every argument is optional.
- `get_indicators`: 72 / 100
  - Minor: The description mentions none of its 3 or more arguments.
- `list_topics`: 77 / 100
- `catalog`: 80 / 100
  - Minor: No `required` list, so every argument is optional.

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
