Skip to content
Back to search
100
MCP live MCP 2025-11-25 streamable-http

Mostly Right

md.mostlyright/datasets

Search, sample and query open reproducible datasets published as immutable Parquet with schemas.

Watch this dependency Share evidence report
Uptime
100.0%
5 direct probes · 30d
Response
1423ms
last probe
Tools
82
callable
Resources
7
readable
Prompts
3
available
Score: 100/100
Handshake verified by our own probe.
pass Answers the MCP handshake 50/50
The handshake and the list calls succeeded on the primary URL.
pass Lists tools, resources or prompts 30/30
82 tools, 7 resources, 3 prompts returned.
pass 3 or more catalogue items 10/10
92 items in total; 3 or more earns these points.
pass Describes itself 10/10
96 characters; more than 30 earns these points.

Tools · 82

search_datasets

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…

get_dataset

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…

list_tables

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, …

get_table_schema

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…

sample_rows

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…

get_download_instructions

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…

get_access_instructions

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

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 …

fetch

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…

query_table

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…

search_table

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…

catalog_search

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…

list_connected_datasets

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…

connect_dataset

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…

create_dataset

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 …

configure_dataset_layout

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 …

configure_table_view

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…

update_dataset

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…

generate_cover

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. …

set_dataset_visibility

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 …

archive_dataset

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 …

list_my_datasets

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…

get_my_dataset

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…

list_dataset_events

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…

list_recipes

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…

get_recipe

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…

register_recipe

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…

explain_recipe

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…

forecast_recipe

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…

test_recipe

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…

propose_revision

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…

replay_run

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…

start_run

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…

confirm_run

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…

approve_full_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…

cancel_run

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…

get_run

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…

run_events

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 …

list_runs

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…

compare_runs

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…

query_run

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…

sample_table

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 …

list_column_values

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…

preview_table_search

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…

run_artifacts

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": "…"}. …

get_artifact_download

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…

write_note

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.…

list_notes

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…

list_table_parts

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…

verify_run

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…

promote_table

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…

reschedule_table

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…

demote_table

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…

refresh_table

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…

resync_table

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…

archive_table

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…

rename_table

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…

get_table

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.…

diagnose_table

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…

list_source_credentials

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…

list_models

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…

suggest_enrichments

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…

normalize_reader_options

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…

start_source_inspection

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…

get_source_inspection

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…

probe_source

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.…

get_source_probe

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…

get_run_attempts

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…

get_recipe_readiness

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…

inspect_table_search

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…

configure_table_search

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…

build_table_search

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…

activate_table_search

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…

get_search_job

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 …

get_search_evaluation

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…

add_search_cases

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…

cancel_search_job

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…

register_stream_document

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…

create_stream_registry

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…

start_stream

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…

get_stream

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…

control_stream_subscription

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

How to get full access

What works anonymously, what needs an account, what building needs, the key classes, and the steps to get one.

mostlyright://access
How to build a dataset

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
The recipe document

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
Saved connections in a recipe

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
Recipe patterns by source shape

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
Example recipes

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
llms.txt

The short machine-readable index of this deployment's public surfaces.

https://mostlyright.md/llms.txt

Prompts · 3

explore_dataset

Inspect one dataset end to end: tables, schemas, a real sample, and what it would take to query it.

find_dataset

Search the catalog for data that could answer a question, and report honestly if nothing fits.

build_dataset

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"
    }
  }
}