Mostly Right
md.mostlyright/datasetsSearch, sample and query open reproducible datasets published as immutable Parquet with schemas.
Score: 100/100
Handshake verified by our own probe.
Tools · 82
Ranked search over every public dataset on Mostly Right: titles, summaries, readmes, table titles and column names, most relevant first. No account needed. Example: {"query": "hourly airport weather o…
One dataset's overview: title, summary, topics, publisher, publication and update dates, canonical page URL, star and table counts, and up to 50 tables with their id, title, license, immutable version…
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, main_table, …
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 que…
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…
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…
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'. …
Search every public dataset on Mostly Right and return up to 20 matches, most relevant first, as {results: [{id, title, url, snippet, matching_table, why}]}, where `id` is the dataset slug, `url` its …
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-met…
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…
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 (searc…
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 r…
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 worksp…
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"}. Id…
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 …
Save ordered sections, table display titles and descriptions, collapsed sections and a separate default opening table. Read get_my_dataset for dataset_layout and its revision; use expected_revision 0 …
Saves one versioned contextual view for this table after its first successful build. Inspect its intent, actual schema and a bounded sample first. Prefer table for wide numeric/comparison data or when…
main_table_id names the table the dataset page leads with: the Data tab opens on it and the other tables keep their configured sections, or are listed as helpers when no layout is configured. Use conf…
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. …
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 …
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 …
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…
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…
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…
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, rec…
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 {recip…
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 sta…
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: {"rec…
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 by…
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 (defau…
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 up…
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…
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 inspe…
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…
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 chec…
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 alread…
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…
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 …
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…
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 declar…
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…
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 …
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, ign…
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, i…
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": "…"}. …
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_typ…
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.…
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…
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 lowe…
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…
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 c…
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 nul…
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 li…
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 t…
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_unava…
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 curr…
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 nam…
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.…
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 fai…
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 bounde…
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…
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…
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, de…
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 i…
Reads one source inspection by session_id and probe_id, waiting up to wait_seconds (default 20) for a queued inspection to settle. Returns bounded evidence with status queued, complete, truncated or f…
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.…
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…
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…
Reads the full workspace recipe-readiness inventory, including per-source classification, next actions, predecessor/materialization/differential readiness and blockers. Defaults to all revisions, as t…
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, o…
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 omi…
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. Retu…
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 coord…
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 …
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 (thes…
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 st…
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 sto…
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 setti…
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. Identica…
Starts kind probe (bounded observation, no sealed capture), capture (bounded retained evidence; until states stop conditions), or subscription (durable recording). Supply admitted connector_document_d…
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 resou…
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 vers…
Resources · 7
What works anonymously, what needs an account, what building needs, the key classes, and the steps to get one.
mostlyright://access
The whole build loop with the exact tool names: sources, recipe, register, sample, events, query, notes, full run, promotion. Read this before writing a recipe. About 58 KiB.
mostlyright://build-guide
Every member of the recipe document, every bound, and the refusals each one carries. The authority for what register_recipe accepts. About 127 KiB — read it once per session, not per recipe.
mostlyright://recipe-reference
How a source uses a workspace's saved connection instead of a named secret: the connection object, what it owns, and what the recipe still supplies.
mostlyright://recipe-connections
One complete recipe per kind of source — a single file, a dated archive, a paged API, a per-row lookup, a listing of pages and more — with the members each shape needs. Read the pattern matching your …
mostlyright://source-patterns
An index of six recipe documents that registered and ran, each with what it demonstrates. Read one instead of starting from an empty file.
mostlyright://recipes/examples
The short machine-readable index of this deployment's public surfaces.
https://mostlyright.md/llms.txt
Prompts · 3
Inspect one dataset end to end: tables, schemas, a real sample, and what it would take to query it.
Search the catalog for data that could answer a question, and report honestly if nothing fits.
Brief the user, then write, register, run and inspect a recipe that answers one question. The first succeeded run goes live on its own; the spend, the full build and the cadence are the user's to sett…
How to use
Claude Desktop or claude.ai: add a custom connector (Customize → Connectors; on Team and Enterprise plans an owner adds it under Organization settings → Connectors) with this server URL: https://mostlyright.md/api/mcp
Cursor or Cline: add to your MCP config:
{
"mcpServers": {
"mostly_right": {
"url": "https://mostlyright.md/api/mcp",
"transport": "streamable-http"
}
}
}