# Mostly Right (md.mostlyright/datasets): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/md.mostlyright%2Fdatasets/versions/latest)
- Connected to: https://mostlyright.md/api/mcp
- Homepage: https://mostlyright.md/
- Scoring rules: v2
- Tools: 81
- Average: 57.3 / 100 (Cloudy)
- Near-identical pairs: 1

This page shows how Mostly Right (md.mostlyright/datasets)'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

- Major: 81 tools. Above 40, models choose less accurately.
- Minor: The server's instructions are 6238 characters. Claude Code reads only the first 2,048 by default (Codex 0.154.0 reads them whole). Put what the server is for first.

## Tools

- `get_access_instructions`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: dataset_slug.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `build_table_search`: 41 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: table_id, table_version_id, search_revision_id.
  - Minor: Required identifiers whose description does not say where the value comes from: table_id, table_version_id. Name the tool or the place that returns it, or models look it up first.
- `list_recipes`: 41 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: table_id, current_only, cursor, limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument current_only is unclear.
- `get_dataset`: 44 / 100
  - Major: Arguments without a description: slug.
  - Minor: Says nothing about what it returns.
- `cancel_search_job`: 46 / 100
  - Major: Arguments without a description: job_id.
  - Minor: Required identifiers whose description does not say where the value comes from: job_id. Name the tool or the place that returns it, or models look it up first.
- `control_stream_subscription`: 46 / 100
  - Major: Arguments without a description: subscription_id, action, expected_version.
  - Minor: Required identifiers whose description does not say where the value comes from: subscription_id. Name the tool or the place that returns it, or models look it up first.
- `create_stream_registry`: 46 / 100
  - Major: Arguments without a description: document_digests.
- `run_events`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: run_id, from_seq, max_events, wait_seconds.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id. Name the tool or the place that returns it, or models look it up first.
- `start_source_inspection`: 46 / 100
  - Major: Arguments without a description: dataset_id, question, archive_members, source, source.name, source.url, source.rights_claim, source.rights_claim.claimed_basis, source.rights_claim.claim_evidence_digest, source.rights_claim.claim_note.
  - Minor: The meaning of the boolean argument archive_members is unclear.
- `connect_dataset`: 47 / 100
  - Major: Arguments without a description: dataset_slug.
  - Minor: Says nothing about what it returns.
- `list_source_credentials`: 48 / 100
  - Major: Arguments without a description: dataset_id, connection_offset.
  - Minor: No `required` list, so every argument is optional.
- `start_stream`: 48 / 100
  - Major: Arguments without a description: kind, connector_document_digest, registry_id, secret_name, members, seconds, kind, connector_document_digest, registry_id, secret_name, members, until, until.events, until.bytes, until.seconds, kind, connector_document_digest, registry_id, secret_name, members, series_id, volume_policy, volume_policy.max_bytes, volume_policy.max_duration_seconds, no_data_timeout_seconds.
  - Minor: String arguments with no constraint or example: kind, kind, kind.
- `search`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: query.
- `write_note`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: run_id, dataset_id, heading, markdown, cell_id, phase, checkpoint_seq, revision_of, blocks.
- `fetch`: 51 / 100
  - Major: Arguments without a description: id.
- `get_source_probe`: 51 / 100
  - Major: Arguments without a description: session_id, probe_id, wait_seconds.
  - Minor: Required identifiers whose description does not say where the value comes from: session_id, probe_id. Name the tool or the place that returns it, or models look it up first.
- `list_my_datasets`: 51 / 100
  - Major: Arguments without a description: limit.
  - Minor: No `required` list, so every argument is optional.
- `list_notes`: 51 / 100
  - Major: Arguments without a description: run_id, dataset_id, cell_id, include_superseded, limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument include_superseded is unclear.
- `normalize_reader_options`: 51 / 100
  - Major: Arguments without a description: family_id, family_version, decode_options.
  - Minor: Required identifiers whose description does not say where the value comes from: family_id. Name the tool or the place that returns it, or models look it up first.
- `replay_run`: 51 / 100
  - Major: Arguments without a description: recipe_id, recipe_digest, sources_from_run.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: recipe_id. Name the tool or the place that returns it, or models look it up first.
- `run_artifacts`: 51 / 100
  - Major: Arguments without a description: run_id.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id. Name the tool or the place that returns it, or models look it up first.
- `search_datasets`: 51 / 100
  - Major: Arguments without a description: query, topic, limit, cursor.
  - Minor: No `required` list, so every argument is optional.
- `activate_table_search`: 54 / 100
  - Major: Arguments without a description: table_id, table_version_id, search_revision_id, generation_id, action, expected_active_revision_id, expected_active_generation_id, idempotency_key.
  - Minor: Required identifiers whose description does not say where the value comes from: table_id, table_version_id, search_revision_id, generation_id, expected_active_revision_id, expected_active_generation_id. Name the tool or the place that returns it, or models look it up first.
- `configure_table_search`: 54 / 100
  - Major: Arguments without a description: table_id, table_version_id, expected_revision, spec, semantic_evaluation, idempotency_key.
  - Minor: Required identifiers whose description does not say where the value comes from: table_id, table_version_id. Name the tool or the place that returns it, or models look it up first.
- `forecast_recipe`: 54 / 100
  - Major: Arguments without a description: recipe_id, recipe_digest, mode.
  - Minor: Required identifiers whose description does not say where the value comes from: recipe_id. Name the tool or the place that returns it, or models look it up first.
- `list_table_parts`: 54 / 100
  - Major: Arguments without a description: table_id, table_version_id, cursor, limit.
  - Minor: Required identifiers whose description does not say where the value comes from: table_id. Name the tool or the place that returns it, or models look it up first.
- `register_stream_document`: 54 / 100
  - Major: Arguments without a description: document_name, document, idempotency_key.
- `test_recipe`: 54 / 100
  - Major: Arguments without a description: recipe_id, recipe_digest, max_pages_per_source, max_upstream_rows.
  - Minor: Required identifiers whose description does not say where the value comes from: recipe_id. Name the tool or the place that returns it, or models look it up first.
- `verify_run`: 54 / 100
  - Major: Arguments without a description: run_id, deep.
  - Minor: The meaning of the boolean argument deep is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id. Name the tool or the place that returns it, or models look it up first.
- `approve_full_run`: 56 / 100
  - Major: Arguments without a description: run_id, expected_version.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id. Name the tool or the place that returns it, or models look it up first.
- `archive_table`: 56 / 100
  - Major: Arguments without a description: table_id.
- `cancel_run`: 56 / 100
  - Major: Arguments without a description: run_id, expected_version.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id. Name the tool or the place that returns it, or models look it up first.
- `get_my_dataset`: 56 / 100
  - Major: Arguments without a description: dataset_id.
  - Minor: Required identifiers whose description does not say where the value comes from: dataset_id. Name the tool or the place that returns it, or models look it up first.
- `get_source_inspection`: 56 / 100
  - Major: Arguments without a description: session_id, probe_id, wait_seconds.
  - Minor: Required identifiers whose description does not say where the value comes from: session_id, probe_id. Name the tool or the place that returns it, or models look it up first.
- `get_table`: 56 / 100
  - Major: Arguments without a description: table_id.
- `get_table_schema`: 56 / 100
  - Major: Arguments without a description: table_id.
- `inspect_table_search`: 56 / 100
  - Major: Arguments without a description: operation, table_id, table_version_id, search_revision_id, recipe, spec, query, pointer, offset, expected_snapshot_digest.
- `promote_table`: 56 / 100
  - Major: Arguments without a description: table_id, confirm, cadence.
  - Minor: The meaning of the boolean argument confirm is unclear.
- `refresh_table`: 56 / 100
  - Major: Arguments without a description: table_id, expected_version.
  - Minor: Required identifiers whose description does not say where the value comes from: table_id. Name the tool or the place that returns it, or models look it up first.
- `rename_table`: 56 / 100
  - Major: Arguments without a description: table_id, name.
  - Minor: Required identifiers whose description does not say where the value comes from: table_id. Name the tool or the place that returns it, or models look it up first.
- `get_stream`: 58 / 100
  - Major: Arguments without a description: kind, id, pointer, offset, expected_snapshot_digest, kind, connector_document_digest, members, pointer, offset, expected_snapshot_digest.
  - Minor: String arguments with no constraint or example: kind.
- `compare_runs`: 59 / 100
  - Major: Arguments without a description: run_id, other_run_id.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id, other_run_id. Name the tool or the place that returns it, or models look it up first.
- `confirm_run`: 59 / 100
  - Major: Arguments without a description: run_id, expected_version.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id. Name the tool or the place that returns it, or models look it up first.
- `diagnose_table`: 59 / 100
  - Major: Arguments without a description: table_id.
- `explain_recipe`: 59 / 100
  - Major: Arguments without a description: recipe.
- `get_run_attempts`: 59 / 100
  - Major: Arguments without a description: run_id, pointer, offset, expected_snapshot_digest.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id. Name the tool or the place that returns it, or models look it up first.
- `get_search_evaluation`: 59 / 100
  - Major: Arguments without a description: table_id, table_version_id, search_revision_id, cases_revision_id, pointer, offset, expected_snapshot_digest.
  - Minor: Required identifiers whose description does not say where the value comes from: table_id. Name the tool or the place that returns it, or models look it up first.
- `list_dataset_events`: 59 / 100
  - Major: Arguments without a description: dataset_id, before_cursor, limit.
  - Minor: Required identifiers whose description does not say where the value comes from: dataset_id. Name the tool or the place that returns it, or models look it up first.
- `register_recipe`: 59 / 100
  - Major: Arguments without a description: recipe.
- `search_table`: 59 / 100
  - Major: Arguments without a description: table_id, query, settled, plan, cursor, like, mode, page_size, count, columns.
  - Minor: The meaning of the boolean argument settled is unclear.
  - Minor: The meaning of the boolean argument count is unclear.
- `suggest_enrichments`: 59 / 100
  - Major: Arguments without a description: run_id, max_rows, wait_seconds.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id. Name the tool or the place that returns it, or models look it up first.
- `archive_dataset`: 61 / 100
  - Major: Arguments without a description: dataset_id, confirm.
  - Minor: The meaning of the boolean argument confirm is unclear.
- `get_recipe_readiness`: 61 / 100
  - Major: Arguments without a description: recipe_id, table_id, current_only, cursor, limit, pointer, offset, expected_snapshot_digest.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument current_only is unclear.
- `get_search_job`: 61 / 100
  - Major: Arguments without a description: job_id, pointer, offset, expected_snapshot_digest.
  - Minor: Required identifiers whose description does not say where the value comes from: job_id. Name the tool or the place that returns it, or models look it up first.
- `list_runs`: 61 / 100
  - Major: Arguments without a description: dataset_id, status, mode, limit.
  - Minor: No `required` list, so every argument is optional.
- `list_tables`: 61 / 100
  - Major: Arguments without a description: dataset_slug.
- `set_dataset_visibility`: 61 / 100
  - Major: Arguments without a description: dataset_id, visibility, reset_link.
  - Minor: The meaning of the boolean argument reset_link is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: dataset_id. Name the tool or the place that returns it, or models look it up first.
- `add_search_cases`: 64 / 100
  - Major: Arguments without a description: table_id, table_version_id, search_revision_id, cases, cases[].case_id, cases[].kind, cases[].query, cases[].top_k, cases[].required_locators, cases[].forbidden_locators, idempotency_key.
- `configure_table_view`: 64 / 100
  - Major: Arguments without a description: dataset_id, table_id, table_version_id, expected_revision, dry_run, config, config.version, config.template, config.fields, config.fields.title, config.fields.image, config.fields.description, config.fields.subtitle, config.fields.address, config.fields.category, config.fields.rating, config.fields.reviewCount, config.fields.price, config.fields.currency, config.fields.start, config.fields.end, config.fields.organization, config.fields.location, config.fields.author, config.fields.published, config.fields.url, config.fields.salaryMin, config.fields.salaryMax, config.fields.employmentType, config.fields.seniority, config.fields.stockStatus, config.fields.latitude, config.fields.longitude, config.facts, config.imageStyle.
  - Minor: The meaning of the boolean argument dry_run is unclear.
- `generate_cover`: 64 / 100
  - Major: Arguments without a description: dataset_id, subject, idempotency_key, replace.
  - Minor: The meaning of the boolean argument replace is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: dataset_id. Name the tool or the place that returns it, or models look it up first.
- `get_artifact_download`: 64 / 100
  - Major: Arguments without a description: run_id, artifact_id.
- `get_download_instructions`: 64 / 100
  - Major: Arguments without a description: table_id.
- `get_recipe`: 64 / 100
  - Major: Arguments without a description: recipe_id, pointer, offset.
- `list_connected_datasets`: 64 / 100
- `probe_source`: 64 / 100
  - Major: Arguments without a description: dataset_id, question_id, source_id, kind, limit, offset, columns, scan_rows, expression.
  - Minor: Required identifiers whose description does not say where the value comes from: dataset_id, question_id, source_id. Name the tool or the place that returns it, or models look it up first.
- `query_run`: 64 / 100
  - Major: Arguments without a description: run_id, sql, query_id, max_rows, wait_seconds.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id. Name the tool or the place that returns it, or models look it up first.
- `query_table`: 64 / 100
  - Minor: The description is long (623 words). It helps selection but costs steps and tokens.
  - Major: Arguments without a description: table_id, columns, filters, filters[].column, filters[].operator, filters[].value, order_by, order_by[].column, order_by[].direction, aggregates, aggregates[].function, aggregates[].column, aggregates[].as, group_by, limit, offset, cursor, search, search.text, search.columns, search.spec_digest, search.engine, search.settled, search.plan, search.cursor, search.count, search.mode, search.generation_digest.
  - Minor: String arguments with no constraint or example: search.engine.
  - Minor: The meaning of the boolean argument search.settled is unclear.
- `resync_table`: 64 / 100
  - Major: Arguments without a description: table_id, expected_version, request_id, reuse_saved_answers, discard_snapshot_history.
  - Minor: The meaning of the boolean argument reuse_saved_answers is unclear.
  - Minor: The meaning of the boolean argument discard_snapshot_history is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: table_id. Name the tool or the place that returns it, or models look it up first.
- `sample_rows`: 64 / 100
  - Major: Arguments without a description: table_id, limit.
- `demote_table`: 66 / 100
  - Major: Arguments without a description: table_id, expected_version.
  - Minor: Required identifiers whose description does not say where the value comes from: table_id. Name the tool or the place that returns it, or models look it up first.
- `get_run`: 66 / 100
  - Major: Arguments without a description: run_id.
  - Major: The name is made of generic words only.
  - Minor: Required identifiers whose description does not say where the value comes from: run_id. Name the tool or the place that returns it, or models look it up first.
- `propose_revision`: 66 / 100
  - Major: Arguments without a description: recipe, sources_from_run.
- `reschedule_table`: 66 / 100
  - Major: Arguments without a description: table_id, cron, interval_seconds, timezone, rationale, lock, expected_version.
  - Minor: The meaning of the boolean argument lock is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: table_id. Name the tool or the place that returns it, or models look it up first.
- `start_run`: 66 / 100
  - Major: Arguments without a description: recipe_id, recipe_digest, mode, retry_of_run_id, max_rows, max_source_bytes, window, window.start, window.end, resource_class, reuse_saved_answers, discard_snapshot_history, resume_capture_run_id.
  - Minor: The meaning of the boolean argument reuse_saved_answers is unclear.
  - Minor: The meaning of the boolean argument discard_snapshot_history is unclear.
- `update_dataset`: 66 / 100
  - Minor: The description is long (504 words). It helps selection but costs steps and tokens.
  - Major: Arguments without a description: dataset_id, sync_only, expected_version, name, description, category_id, main_table_id.
  - Minor: The meaning of the boolean argument sync_only is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: dataset_id. Name the tool or the place that returns it, or models look it up first.
- `create_dataset`: 69 / 100
  - Major: Arguments without a description: name, description, separate.
  - Minor: The meaning of the boolean argument separate is unclear.
- `list_column_values`: 69 / 100
  - Major: Arguments without a description: table_id, column, prefix, limit, table_version_id, search_revision_id, wait_seconds.
- `preview_table_search`: 69 / 100
  - Major: Arguments without a description: table_id, table_version_id, search_revision_id, query, plan, limit, columns, wait_seconds.
- `sample_table`: 69 / 100
  - Major: Arguments without a description: table_id, table_version_id, search_revision_id, limit, columns, wait_seconds.
- `catalog_search`: 72 / 100
  - Minor: The description is long (413 words). It helps selection but costs steps and tokens.
  - Major: Arguments without a description: question, limit, format.
- `list_models`: 74 / 100

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)
