MCP server
Mostly Right Official
md.mostlyright/datasets
Checked 25 Oct 2026, 20:29 UTC · Connected to it and listed its tools
Search, sample and query open reproducible datasets published as immutable Parquet with schemas.
Working at last checkVerified publisher: mostlyright.mdAbout 37,996 tokens per request once connected80 tools
https://mostlyright.md/api/mcp
At a glance
- Type
- MCP server
- Publisher
- mostlyright.md (verified by the MCP Registry)
- Status
- Working at last check
- Tools
- 80
- Token cost
- About 37,996 tokens per request
- Sets up in
- Claude Code, Claude Desktop, Codex, Gemini CLI, Cursor, VS Code, Antigravity, ChatGPT, OpenAI API, Grok
- Last checked
- 25 Oct 2026, 20:29 UTC
Connect it to your agent
Opens the app, which shows the server and asks you to confirm. For other apps, copy the setup below.
Claude Code
claude mcp add --transport http datasets https://mostlyright.md/api/mcp
Claude Desktop
Settings → Connectors → Add custom connector, and paste the URL.
Codex (config.toml)
[mcp_servers.datasets] url = "https://mostlyright.md/api/mcp"
Gemini CLI
{"mcpServers":{"datasets":{"httpUrl":"https://mostlyright.md/api/mcp"}}}
Cursor
{"mcpServers":{"datasets":{"url":"https://mostlyright.md/api/mcp"}}}
VS Code
{"servers":{"datasets":{"type":"http","url":"https://mostlyright.md/api/mcp"}}}
Antigravity
agy mcp add datasets https://mostlyright.md/api/mcp
ChatGPT
Settings → Apps & Connectors → Advanced settings: turn on Developer mode, then Create a connector and paste the URL. Which plans can do this varies.
OpenAI API (Responses tools)
{"type":"mcp","server_label":"datasets","server_url":"https://mostlyright.md/api/mcp","require_approval":"always"}
Grok (xAI API tools)
{"type":"mcp","server_label":"datasets","server_url":"https://mostlyright.md/api/mcp"}
Tools
activate_table_search~716 tokens
Changes serving search for an exact table version to a qualified generation. action is activate or rollback. expected_active_revision_id and expected_active_generation_id are the observed active coordinates, each null only when absent; stale observations are refused. Returns the activation receipt.add_search_cases~853 tokens
Declares a new draft revision that carries the base revision's spec and its evaluation cases with cases added: the base is search_revision_id, or the version's selected draft when omitted, and must still be the selected draft (a stale one is refused SEARCH_REVISION_CONFLICT; re-read inspect_table_seapprove_full_run~405 tokens
Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never need this tool for their inspection checkpoint. Call it ONLY once the legacy preview has sealed a table you have checked and the user has saarchive_dataset~359 tokens
Retires a whole dataset: every reader loses access, its public page and unlisted link are withdrawn, and its name is free for a new dataset. Nothing it built is deleted, but ONLY Mostly Right support can restore it. The same act as the settings page's delete and `mr-data dataset archive`; the servicarchive_table~284 tokens
Retires one table from its dataset: it leaves the dataset's table list and frees its name for a new table. The versions it built are not deleted. The service confirms the archive with the table's current stored name itself, so you never send one. Example: {"table_id": "…"}. A live table is refused —build_table_search~407 tokens
Starts search preparation for one exact sealed table_version_id and optional search_revision_id. It may use embedding providers and workspace resources; the browser asks the person to approve it. Returns job_id and status. Queued/running is not ready and successful preparation is not activation. Nexcancel_run~222 tokens
Stops a run that is queued, held at the confirmation gate, or running. A run cancelled at the gate never ran. Example: {"run_id": "…"}. Returns the run receipt with status cancelled. A run that already finished cannot be cancelled and says so — read get_run rather than retrying.cancel_search_job~219 tokens
Requests cancellation of the exact job_id, which may belong to a teammate. The browser asks the person to approve it. Returns the job's observed state; a request is not proof that all workers have stopped. Next: get_search_job until it reports a terminal state. Do not start replacement work while thcatalog_search~694 tokens
Search a sealed snapshot of public data sources for feeds that might answer a question — the first move when you need a source and do not already know one. Example: {"question": "county unemployment rate monthly", "limit": 10, "format": "csv"}. READ THIS BEFORE YOU TRUST A RESULT. The snapshot indexcompare_runs~463 tokens
Reads two runs and says what changed between them: status, mode, rows, bytes, truncated, covered_window, table_version_id, outcome, failure code and stage, created and completed times, and each declared check whose result moved. Use it to tell whether a revision or a refresh delivered more, less orconfigure_table_search~534 tokens
Saves a draft search configuration for one immutable table_version_id. expected_revision is the selected draft id reported by inspect_table_search, or null when none; a stale head is refused. spec omitted uses the sealed recipe's spec. semantic_evaluation contains actual resolved evaluation cases. Rconfirm_run~287 tokens
Authorizes a held run and starts it. The numbers are the ones already stored on the run — you cannot restate them, which is the point: what is authorized is the server's own projection. Example: {"run_id": "…", "expected_version": 3}. Pass expected_version from the get_run that showed you the projecconnect_dataset~248 tokens
Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"dataset_slug": "kden-metar-hourly"}. Idempotent: connecting an already-connected dataset succeeds and reports already_connected. Requires tcontrol_stream_subscription~315 tokens
Requests pause, resume or stop of one subscription using the bounded quiescence CAS API. First get_stream kind quiescence and use its version as expected_version; the browser reads and binds this version during approval. There is no fallback to the legacy unfenced actions. Returns the new bounded stcreate_dataset~502 tokens
Creates an empty dataset in your workspace and returns its ids. A dataset is the container a recipe binds to; it exists before it has a description, a recipe or a single row, which is the point — the page opens on it and fills in. The name leads with the subject a searcher would type and then the plcreate_stream_registry~214 tokens
Registers a content-addressed set of admitted document_digests (bare SHA-256). A rotating series registry includes both its series and connector digests. Returns stream_connector_registry_id. Identical sets converge; starts no recorder and changes no existing subscription. Next: start_stream with thdemote_table~338 tokens
Withdraws a table's live pointer and detaches its refresh schedule: readers stop being served it and it stops refreshing. Nothing built is deleted, and promote_table later revives the same table. A live table must be demoted before archive_table will retire it. Example: {"table_id": "…", "expected_vdiagnose_table~416 tokens
Reads one table's current promotion pointers and latest recorded failure. When that failure names a run, it also reads that run and its declared recipe sources, so the diagnosis still works when a failed run never sealed a version. Example: {"table_id": "…"}. Returns {table, latest_failure, failed_rexplain_recipe~354 tokens
Checks a recipe document without registering, writing or running anything — the same evaluator that admits refreshes, plus the fast-path features the harness's `recipe explain` reports. Example: {"recipe": { …the whole recipe document… }}. Returns {refresh_ready, first_blocker, action_plan, rebuild,fetch~238 tokens
The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No account needed. Example: {"id": "kden-metar-hourly"} — the `id` is a slug from search, and a canonical dataset URL works too. Returns {id, tiforecast_recipe~318 tokens
Says what one full or refresh run of a registered recipe would ask of its sources, before anything is started: per-source request ceilings, runtime at the ceiling, platform spend, and the projected bytes and cost. Warnings name what would slow or block the run. Example: {"recipe_id": "…", "recipe_digenerate_cover~672 tokens
Generates the dataset's branded 1200×630 cover and attaches it: the page, the Community tile and the share card all wear it. Every dataset gets exactly one, generated once its description is written. Call it only for a dataset that has no cover (get_my_dataset says has_cover). A dataset that alreadyget_access_instructions~196 tokens
What this server does anonymously, what needs an account, the two API key classes and what each unlocks, the OAuth option, the signup URL, and the numbered steps from 'no account' to 'querying rows'. Optionally pass {"dataset_slug": "kden-metar-hourly"} to get the link to that dataset's page, whichget_artifact_download~407 tokens
Mints a short-lived signed URL for one sealed artifact. Fetch it yourself with a plain GET and no headers; it expires. Example: {"run_id": "…", "artifact_id": "…"}. Returns {url, expires_at, media_type, digest, size_bytes, kind}. Cite the digest. Artifact ids come from run_artifacts. Do not use thisget_dataset~291 tokens
One dataset's overview: title, summary, topics, publisher, publication and update dates, canonical page URL, star and table counts, and every table with its id, title, license, immutable version_id, column count, column names and the capabilities the publisher enabled. Here and everywhere in this toget_download_instructions~359 tokens
The exact URL, HTTP method and header for downloading one table's current immutable Parquet snapshot, plus whether the publisher enabled it. Example: {"table_id": "0f2f6bfa-4a63-4f75-9a0b-1a7d9c5b2e10"}. Bytes are never streamed through MCP: this returns the request to make yourself. Downloading neeget_my_dataset~312 tokens
One workspace dataset in build terms: name, description, status, each table with its build state, promotion state and live version, the latest run, and any run held waiting for a confirmation. Example: {"dataset_id": "…"}. Returns {dataset_id, name, description, category_id (its primary category, orget_recipe~454 tokens
Reads the actual immutable registered recipe, including sources, SQL and checks. Use list_recipes for current table revisions, or recipe_id from get_run for the exact executed revision. Returns {recipe_id, recipe_digest, dataset_id, table_id, pointer, value, complete: true} when the selected JSON vaget_recipe_readiness~614 tokens
Reads the full workspace recipe-readiness inventory, including per-source classification, next actions, predecessor/materialization/differential readiness and blockers. Defaults to all revisions, as the CLI does; current_only and table_id narrow it. recipe_id filters each upstream page locally; contget_run~613 tokens
One run's current state: status, mode, the clamps it ran under, rows delivered and whether a clamp truncated them, how many pages a many-page source reached, the table and table version it sealed, the failure code and stage when it failed, and the version number a confirm or cancel should send. Provget_run_attempts~408 tokens
Reads the durable attempt ledger for run_id: each attempt's end, inferred loss cause and current source acquisition counts, including source pages and whether counting began at the first tick. Returns progress for the latest attempt plus the ledger. Progress is attempt-scoped, not coverage of the enget_search_evaluation~782 tokens
Reports the measurement of one revision's evaluation cases on one sealed version: status no_cases, not_required (no semantic columns, so no measurement is needed to activate), cases_not_measured (these cases differ from the ones the built revision carries), not_built, building, build_failed, build_cget_search_job~380 tokens
Reads one search preparation job by job_id. Returns its status, coordinates, progress and failure evidence. It does not restart work or activate a generation. queued, dispatched, running and deferred are incomplete; a failed or cancelled job is not ready. Next: inspect_table_search after success befget_source_inspection~274 tokens
Reads one source inspection by session_id and probe_id, waiting up to wait_seconds (default $MAX_WAIT_SECONDS) for a queued inspection to settle. Returns bounded evidence with status queued, complete, truncated or failed. A worker can take a few minutes to start, so while it is queued, call again wiget_source_probe~387 tokens
Reads one probe_source probe, waiting up to wait_seconds (default 20) for a queued probe to settle. Returns session_id, probe_id, probe_kind, state, source_id, failure_code, untrusted_provider_content. state is queued or claimed while it runs, then succeeded, failed, expired or cancelled. A succeedeget_stream~609 tokens
Reads kind document, probe, capture, subscription or bounded subscription quiescence by id. kind recordings instead takes connector_document_digest and optional exact members. Returns the stored resource, or binding/retention evidence. Quiescence returns version from ETag for fenced control_stream_sget_table~343 tokens
One table as the builder sees it: whether it is promoted, which version is live, the refresh schedule and what the platform has learned about its rhythm, when it last refreshed and why it last failed. Example: {"table_id": "…"}. Returns {table_id, dataset_id, promotion_status, live_version_id, schedget_table_schema~360 tokens
One public table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whether anonymous sampling, keyed querying and Parquet download are enabled, and, when the publisher declared text search, capabilities.sinspect_table_search~722 tokens
Inspects search over a table's own rows, not web search. operation is status, inspect, propose, validate, explain or estimate. Supply table_id and optional exact table_version_id/search_revision_id, or a draft recipe for declared-only inspection (never status). explain of a table needs query. Returnlist_column_values~791 tokens
The most frequent non-null values of one declared column of a sealed table version, each with the number of rows holding it, most frequent first. prefix keeps the values whose text starts with it, ignoring case. Use it to choose filterable columns, check a value dictionary or write a plan's predicatlist_connected_datasets~182 tokens
The public datasets the authenticated workspace has used so far. Takes no arguments. query_table is not limited to this list: a key reads any public dataset (connecting it on first use) and the workspace's own tables; an OAuth connection reads any public dataset it has datasets:use for, or connect_dlist_dataset_events~532 tokens
The dataset's own durable log, newest first: created, renamed or re-described, a recipe registered, each run queued, held, started, progressing and finished, a cover attached, a table's state changing, a table renamed or archived, a stream's state moving, a note written and each activity line. list_list_models~418 tokens
Lists the small models this deployment serves to recipes, by task: classify (label each row of a text column with yes/no or choice questions), extract (pull named, verbatim-grounded fields out of page or document text) and match (link the same entity across tables; planned until it is served). Returlist_my_datasets~186 tokens
Every dataset this workspace owns, most recently updated first — not the public catalog. Use it to find the dataset_id for a dataset you or a colleague created earlier. Example: {"limit": 25}. Returns {workspace_id, datasets: [{dataset_id, cloud_dataset_id, name, description, updated_at, dashboard_ulist_notes~504 tokens
Lists the cells of a run's or a dataset's decision record, newest first: the heading, the body, the phase, any typed blocks (source, decision, clarification) and whether a later revision superseded it. Read it before writing a note, so a decision already recorded is revised rather than repeated, andlist_recipes~344 tokens
Lists immutable recipe coordinates in this workspace, optionally for one table_id from get_my_dataset. current_only defaults to true; false includes older revisions. Returns {recipes: [{recipe_id, recipe_digest, dataset_id, table_id, is_current}], next_cursor}. Follow next_cursor until null, even folist_runs~388 tokens
The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {"dataset_id": "…", "status": "failed", "limit": 20}. Returns {runs: [{run_id, status, mode, dataset_id, table_id, created_at, completed_at, failure_code}], count, complete}. complete false mlist_source_credentials~354 tokens
Lists named secret metadata and saved workspace connections without secret values. Pass dataset_id to check dataset grants. Follow connections.next_offset with connection_offset to read another bounded page. Returns credentials, connections (status, safe items, grants_status), and a structured sourclist_table_parts~592 tokens
Lists the parts (parquet files) one table version is made of: each part's index, part_id (its content digest), artifact_id, the run that sealed it, its row count, its size, its partition, and the lowest and highest value it holds per field (lower_bounds, upper_bounds, keyed by field name). This is wlist_tables~164 tokens
The tables in one dataset, without the full column schemas — the cheap call when you only need table ids and titles. Example: {"dataset_slug": "kden-metar-hourly"}. Returns {dataset_slug, tables: [{id, slug, title, license, version_id, capabilities}]}. Use get_dataset instead when you also want colunormalize_reader_options~353 tokens
Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode bytes. Returns family_id, family_version, decode_options and decode_options_json for the recipe. Also returns reader_capabilities: available witpreview_table_search~936 tokens
Runs one query (words, planned under the revision's spec as explain plans them) or one explicit table-search-plan.v2 plan as a SCAN of the sealed version: the plan's predicates and order as filters, its text as a case-insensitive substring match over the keyword columns, unranked. It works on a drafprobe_source~803 tokens
Queues one bounded probe of a source start_source_inspection prepared, and returns its coordinates. It reads the SOURCE, before anything is built; the sample_rows tool reads a published table instead. Four kinds: source_inspect (the columns and their inferred types; no cell values), sample_rows (uppromote_table~349 tokens
Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {"table_id": "…", "confirm": true}. It refuses without confirm: true. Only call it when the person you are working for has said to. Check the data with querpropose_revision~465 tokens
Registers a proposed revision and returns its immutable recipe coordinates plus a review link. It then starts EXACTLY ONE run: a replay of the named successful run's retained inputs, which reads no upstream source and never becomes live. Nothing else runs — it confirms no run, promotes no table andquery_run~589 tokens
Runs one read-only SQL statement over the parquet a run sealed, available as the relation run_table (not the recipe table name), and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT after a successful run: count the rows, look at the range, find the nulls. Example: "run_id": "…", "sql":query_table~1475 tokens
A bounded, structured query over one table's current version. NO SQL: send columns, filters, order_by, aggregates, group_by and limit as JSON. Example: {"table_id": "0f2f...", "columns": ["observed_at", "air_temp_f"], "filters": [{"column": "air_temp_f", "operator": "gte", "value": 80}], "order_by":refresh_table~428 tokens
Runs the refresh the table's schedule would run, now: forward from where its last successful run reached, under its own recipe and the ordinary size and spend gates. It never rereads every source; a table whose recipe cannot refresh incrementally answers incremental_unavailable, and resync_table isregister_recipe~386 tokens
Registers the JSON recipe that says where the data comes from, how it is shaped and what must be true of it. The server canonicalizes the document and computes its digest — you cannot and must not state one. Identical bytes register once: a repeat returns the same ids. Example: {"recipe": { …the whoregister_stream_document~300 tokens
Registers an inline connector or rotating-series document under document_name (a .json name). Send the canonical document object, never credential values; a named secret is enrolled in workspace settings. Returns stream_connector_document_id and server-derived document_digest; use that bare digest arename_table~358 tokens
Changes one table's name within its dataset. Nothing is rebuilt, re-served or republished, and the table keeps its id, versions and schedule; every reader of the dataset sees the new name. The old name is released, so another table may take it, and a later recipe revision must name the table by itsreplay_run~361 tokens
Runs a registered recipe revision against the retained raw inputs of a named successful run of the same table. No upstream acquisition is performed. Replay must be enabled and the inputs must still be retained. Returns {run_id, status, mode, version, dashboard_url}. Replay never becomes live and doereschedule_table~678 tokens
Sets a live table's refresh schedule, or replaces the one it has, without starting a run or fetching anything. A table that went live on its first run has NO schedule yet (get_table shows schedule null, the chat shows "No refresh schedule"): this is the tool that gives it one. When the table's recipresync_table~553 tokens
Rereads every source of a live table as one progressive full run of its current recipe, the deliberate escape hatch when a source cannot advance incrementally (refresh_table answered incremental_unavailable, or the person asked to rebuild from the sources). It costs a full build. Example: {"table_idrun_artifacts~231 tokens
The files a run sealed: the parquet, the column profile, the receipt, the preview. Works on a running, succeeded or failed run — a failed run's partial output is listed too. Example: {"run_id": "…"}. Returns {artifacts: [{artifact_id, kind, size_bytes, digest, media_type}], more}. Bytes are never strun_events~346 tokens
Opens the run's event stream, collects up to max_events, and returns as soon as the run reaches a terminal event or wait_seconds elapses — whichever comes first. This is how you watch a build without polling. Example: {"run_id": "…", "from_seq": 0, "max_events": 50, "wait_seconds": 5}. Returns {evensample_rows~358 tokens
The publisher's materialized preview of a public table — real rows, no account, no query cost. Private workspace tables are not available here; use query_run on a successful build instead. To sample a source before anything is built, use probe_source (kind sample_rows). 20 rows by default, 100 at mosample_table~804 tokens
Reads up to limit rows (default $DEFAULT_SEARCH_READ_ROWS, at most $MAX_SEARCH_SAMPLE_ROWS) of one sealed table version, projected to columns (default: every declared column, up to 64). Use it before writing a search spec or a plan, to see real values; it needs no SQL and no run id. Its rows carry nsearch~197 tokens
Search every public dataset on Mostly Right and return up to 20 matches as {results: [{id, title, url}]}, where `id` is the dataset slug and `url` its canonical page. No account needed. Example: {"query": "hourly airport weather observations"}. Pass a result's `id` straight to fetch for the full datsearch_datasets~290 tokens
Full-text search over every public dataset on Mostly Right. No account needed. Example: {"query": "hourly airport weather observations", "limit": 10}. Returns {datasets: [{id, slug, title, summary, topics, publisher, published_at, canonical_url}], next_cursor}. publisher is the ACCOUNT that publishesearch_table~851 tokens
Ranked search over one public table's rows, the same search its dataset page runs: words, prefixes, typos and spelling correction, served from the table's search package. NOT a catalogue search (search_datasets finds datasets) and not SQL. Example: {"table_id": "0f2f...", "query": "blade runner 1982set_dataset_visibility~506 tokens
Changes who can read a dataset: private (this workspace only), link (anyone holding an unlisted address, which this returns) or public (listed on Mostly Right for anyone). The same change as Share on the dataset's page and `mr-data dataset publish`, with the same checks and audit record. Owner or Adstart_run~1016 tokens
Runs a registered recipe. THIS IS THE TOOL THAT DOES THE REAL WORK: it reads the sources and can run for a long time. Start builds in full mode: full runs use one progressive acquisition with an inspection checkpoint after about five minutes and continue automatically. The checkpoint is not an approstart_source_inspection~532 tokens
Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Supply rights_claim.claim_note with the actual rights evidence or operator assertion; the service hashes its trimmed UTF-8 bytes and returns rights_claim with the real digest. Alternatively supply an alreadstart_stream~986 tokens
Starts kind probe (bounded observation, no sealed capture), capture (bounded retained evidence; until states stop conditions), or subscription (durable recording). Supply admitted connector_document_digest, registry_id and exact members; a subscription can instead name series_id, never both. secret_suggest_enrichments~467 tokens
Reads the run's columns, then a bounded sample of its text columns (up to max_rows rows, default 50, each value cut to its first few thousand characters; metered like query_run, the column read is not charged) and names, column by column, a deterministic derivation (cast text to its type, parse machtest_recipe~428 tokens
Starts a recipe preflight: a bounded rehearsal of a full run that fetches at most max_pages_per_source pages of each listing (default 1, max 5) and max_upstream_rows rows of each per-row source (default 25), runs the transform and the checks a slice can answer, and reports. Sources that present a paupdate_dataset~861 tokens
A changed nonblank description generates a factual dataset name and topic tags, except a name or tags someone chose in an earlier update, which stay. The name given at create_dataset is a working title and does not count as chosen. Send name with the description to keep a title you want; it then staverify_run~460 tokens
Checks the table one succeeded run sealed against its own manifest. Without deep it reads the manifest, checks it hashes to the digest it was sealed with and names this run's table version, and checks every part the run sealed is among the parts the run lists; no part is fetched. With deep: true itwrite_note~605 tokens
Appends one cell to a run's or a dataset's decision record — why a source was chosen, what a check found, what you changed and why. The record is append-only and is what a reader sees beside the data. Write one for every decision worth explaining. Example: {"run_id": "…", "heading": "Dropped the 201
Browse
Related MCP servers
- Noon Barbari Backtesting
Crypto backtesting tools: real backtests with robustness verdicts, daily signals and market data. - GERDA German Election Data
Read-only German federal election results for municipalities, with harmonized geography. - Arcgis Abbotsford
City of Abbotsford GIS — Abbotsford, BC (Canada) open geospatial data (ArcGIS). - Plumbline — a trust layer for LLM answers
Every figure re-checked against SQL-computed facts; unsupported questions refused with the reason. - AgentNative: Public Data, Government Datasets, Federal Statistics & Official Records
Normalized official data with provenance, aggregations, insights, free samples and agent access. - Cms Open Payments
CMS Open Payments, with annual dataset discovery through the official DKAN API. - LocationLists
US business location data: search, sample, count, query rows or buy CSVs (Stripe or x402 USDC). - Open Economics
Discover, resolve, and query official Brazilian economic data with semantic search and provenance.
Badge for your README
[](https://aptlynx.net/servers/md.mostlyright/datasets)
Listing text is written by the maker; AptLynx lists tools and does not vouch for them. Find another tool · Browse by topic · For agents