{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_86m9bpj8m9ge","handle":"mostly-right","url":"https://wellknown.network/agents/mostly-right","links":{"self":"https://wellknown.network/agents/mostly-right/record.json","html":"https://wellknown.network/agents/mostly-right","markdown":"https://wellknown.network/agents/mostly-right/record.md","api":"https://wellknown.network/api/v1/agents/mostly-right","status":"https://wellknown.network/api/v1/agents/mostly-right/status","claim":"https://wellknown.network/agents/mostly-right/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/mostly-right/claim.json","badge":"https://wellknown.network/agents/mostly-right/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/mostly-right/history","tools":"https://wellknown.network/api/v1/agents/mostly-right/tools"},"ard":{"identifier":"urn:air:mostlyright.md:server:mostly-right","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Mostly Right","summary":"Search, sample and query open reproducible datasets published as immutable Parquet with schemas.","description":"Search, sample and query open reproducible datasets published as immutable Parquet with schemas.","publisher":{"name":"md.mostlyright","url":null},"homepage":"https://mostlyright.md","repository":null,"version":"2.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mostlyright.md/api/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-10T11:27:20.568118Z","publishedAt":"2026-09-10T11:27:20.568118Z","registryName":"md.mostlyright/datasets"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"data.database","name":"Databases","confidence":1,"provenance":"derived"},{"slug":"security.secrets","name":"Secrets Management","confidence":0.569,"provenance":"derived"},{"slug":"automation.scheduling","name":"Scheduling & Cron","confidence":0.54,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"data.weather","name":"Weather","confidence":0.51,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"}],"categories":["automation","commerce","content","data","dev","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-10-10T14:25:57.672Z","lastProbedAt":"2026-10-10T14:25:57.672Z","statusComputedAt":"2026-10-10T14:27:22.232Z","reliability30d":{"probes":106,"successRate":1,"p50Ms":147,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":106,"ok":106,"authBoundaryOk":0,"serviceOk":106,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T14:25:57.672Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":515,"error":null,"detail":{"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"Lists named secret metadata and saved workspace connections without secret values. Pass dataset_id to check dataset grants. Follow connections.next_offset with "},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"toolCount":38,"toolsHash":"d56da0a0b38d4872d9fd79b839fb8e930984fba98ce246bdd80f1e6ae2e55b32","serverName":"mostlyright","capabilities":["tools","resources","prompts"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T07:24:49.099Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":138,"error":null,"detail":{"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"Lists named secret metadata and saved workspace connections without secret values. Pass dataset_id to check dataset grants. Follow connections.next_offset with "},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"toolCount":38,"toolsHash":"c000dbb8c86c65668cab004ab4f2fca26dbabc5de053431fe8b1fc66d7d0426a","serverName":"mostlyright","capabilities":["tools","resources","prompts"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T01:24:44.524Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":142,"error":null,"detail":{"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"Lists named secret metadata and saved workspace connections without secret values. Pass dataset_id to check dataset grants. Follow connections.next_offset with "},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"toolCount":38,"toolsHash":"c000dbb8c86c65668cab004ab4f2fca26dbabc5de053431fe8b1fc66d7d0426a","serverName":"mostlyright","capabilities":["tools","resources","prompts"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T19:26:44.650Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":167,"error":null,"detail":{"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"Lists named secret metadata and saved workspace connections without secret values. Pass dataset_id to check dataset grants. Follow connections.next_offset with "},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"toolCount":38,"toolsHash":"c000dbb8c86c65668cab004ab4f2fca26dbabc5de053431fe8b1fc66d7d0426a","serverName":"mostlyright","capabilities":["tools","resources","prompts"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T12:27:42.042Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":166,"error":null,"detail":{"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"Lists named secret metadata and saved workspace connections without secret values. Pass dataset_id to check dataset grants. Follow connections.next_offset with "},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"toolCount":38,"toolsHash":"21d3ddc0ae9702273cd760edaba03e3ef8ff7a47e32424b5794ca9f0521c38e4","serverName":"mostlyright","capabilities":["tools","resources","prompts"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T05:26:07.423Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":196,"error":null,"detail":{"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"Lists named secret metadata and saved workspace connections without secret values. Pass dataset_id to check dataset grants. Follow connections.next_offset with "},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"toolCount":38,"toolsHash":"21d3ddc0ae9702273cd760edaba03e3ef8ff7a47e32424b5794ca9f0521c38e4","serverName":"mostlyright","capabilities":["tools","resources","prompts"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T23:23:00.904Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":135,"error":null,"detail":{"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"Lists named secret metadata and saved workspace connections without secret values. Pass dataset_id to check dataset grants. Follow connections.next_offset with "},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"toolCount":38,"toolsHash":"21d3ddc0ae9702273cd760edaba03e3ef8ff7a47e32424b5794ca9f0521c38e4","serverName":"mostlyright","capabilities":["tools","resources","prompts"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T17:28:19.911Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":202,"error":null,"detail":{"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"The NAMES of the API keys and passwords this workspace has stored for its sources, with their status and when they were added. Never a value — no secret ever cr"},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"toolCount":38,"toolsHash":"2b6b5e86f66d1e0741915d48e8b9469a42674b1ae8d5490aee290f6319d919fd","serverName":"mostlyright","capabilities":["tools","resources","prompts"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T11:23:32.008Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":136,"error":null,"detail":{"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"The NAMES of the API keys and passwords this workspace has stored for its sources, with their status and when they were added. Never a value — no secret ever cr"},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"toolCount":38,"toolsHash":"2b6b5e86f66d1e0741915d48e8b9469a42674b1ae8d5490aee290f6319d919fd","serverName":"mostlyright","capabilities":["tools","resources","prompts"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T04:26:12.001Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":142,"error":null,"detail":{"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"The NAMES of the API keys and passwords this workspace has stored for its sources, with their status and when they were added. Never a value — no secret ever cr"},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"toolCount":38,"toolsHash":"2b6b5e86f66d1e0741915d48e8b9469a42674b1ae8d5490aee290f6319d919fd","serverName":"mostlyright","capabilities":["tools","resources","prompts"],"serverVersion":"2.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"search_datasets","description":"Full-text search over every public dataset on Mostly Right. No account needed. Example: {\"query\": \"hourly airport weather observations\", \"limit\": 10}. Returns {"},{"name":"get_dataset","description":"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,"},{"name":"list_tables","description":"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-hourl"},{"name":"get_table_schema","description":"One table's columns (name, type, and any published profile such as null counts, distinct counts or ranges), its immutable version_id, and its capabilities: whet"},{"name":"sample_rows","description":"The publisher's materialized preview of a table — real rows, no account, no query cost. 20 rows by default, 100 at most, and they are always the same rows: this"},{"name":"get_download_instructions","description":"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"},{"name":"get_access_instructions","description":"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 step"},{"name":"search","description":"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"},{"name":"fetch","description":"The full public document for one dataset as Markdown: summary, facts, access instructions, and every table with its columns, types, descriptions and units. No a"},{"name":"query_table","description":"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_"},{"name":"catalog_search","description":"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. Exam"},{"name":"list_connected_datasets","description":"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 (co"},{"name":"connect_dataset","description":"Connects one public dataset to the authenticated workspace so its tables become queryable and downloadable. This is the gate every keyed read passes. Example: {"},{"name":"create_dataset","description":"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"},{"name":"update_dataset","description":"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 g"},{"name":"list_my_datasets","description":"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 "},{"name":"get_my_dataset","description":"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 "},{"name":"register_recipe","description":"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 "},{"name":"propose_revision","description":"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 "},{"name":"replay_run","description":"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"},{"name":"start_run","description":"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 o"},{"name":"confirm_run","description":"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"},{"name":"approve_full_run","description":"Compatibility for an existing legacy full run paired with a bounded preview, in awaiting_sample_approval. New full builds use progressive acquisition and never "},{"name":"cancel_run","description":"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 "},{"name":"get_run","description":"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, th"},{"name":"run_events","description":"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"},{"name":"list_runs","description":"The workspace's own runs, newest first, optionally narrowed to one dataset, one status or one mode. Example: {\"dataset_id\": \"…\", \"status\": \"failed\", \"limit\": 20"},{"name":"query_run","description":"Runs one read-only SQL statement over the parquet a run sealed, and waits for the answer. THIS IS HOW YOU CHECK THE DATA IS RIGHT before promoting anything: cou"},{"name":"run_artifacts","description":"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 i"},{"name":"get_artifact_download","description":"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\": \""},{"name":"write_note","description":"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 an"},{"name":"promote_table","description":"Promotion makes the table's newest passing version the version everyone reads, and starts the recurring refresh that keeps it current. Example: {\"table_id\": \"…\""},{"name":"get_table","description":"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 i"},{"name":"diagnose_table","description":"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,"},{"name":"list_source_credentials","description":"Lists named secret metadata and saved workspace connections without secret values. Pass dataset_id to check dataset grants. Follow connections.next_offset with "},{"name":"normalize_reader_options","description":"Resolves the certified Reader family and version and returns default-filled canonical decode options. Validates options only; it does not acquire or decode byte"},{"name":"start_source_inspection","description":"Prepares an HTTPS source, opens a bounded research session and queues a source_inspect probe. Returns session_id, probe_id, source_id and limits; it does not wr"},{"name":"get_source_inspection","description":"Reads one source inspection by session_id and probe_id. Returns bounded evidence with status queued, complete, truncated or failed. A missing legacy endpoint is"}],"package":null,"toolSurface":{"id":"ts_bwmn55jsx2cv","endpointId":"ep_jwsdc2kvhz28","hash":"d56da0a0b38d4872d9fd79b839fb8e930984fba98ce246bdd80f1e6ae2e55b32","toolCount":38,"serverName":"mostlyright","serverVersion":"2.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-10T14:25:57.660Z","lastSeenAt":"2026-10-10T14:25:57.660Z","observations":1,"toolNames":["search_datasets","get_dataset","list_tables","get_table_schema","sample_rows","get_download_instructions","get_access_instructions","search","fetch","query_table","catalog_search","list_connected_datasets","connect_dataset","create_dataset","update_dataset","list_my_datasets","get_my_dataset","register_recipe","propose_revision","replay_run","start_run","confirm_run","approve_full_run","cancel_run","get_run","run_events","list_runs","query_run","run_artifacts","get_artifact_download","write_note","promote_table","get_table","diagnose_table","list_source_credentials","normalize_reader_options","start_source_inspection","get_source_inspection"],"distinctSurfaces":14},"endpointFacts":[{"id":"ep_jwsdc2kvhz28","url":"https://mostlyright.md/api/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T12:27:42.055Z","auth":{"observedAt":"2026-10-09T12:27:42.352Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://mostlyright.md/.well-known/oauth-protected-resource/api/mcp","resource":"https://mostlyright.md/api/mcp","authorizationServers":["https://mostlyright.md"],"scopesSupported":["catalog:read","datasets:read","datasets:use","datasets:build"]},"authorizationServer":{"url":"https://mostlyright.md/.well-known/oauth-authorization-server","issuer":"https://mostlyright.md","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-09T12:27:42.371Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"api.mostlyright.md","issuer":{"commonName":"WR3","organization":"Google Trust Services"},"validFrom":"2026-10-07T07:49:53.000Z","validTo":"2027-01-05T08:45:47.000Z","daysToExpiry":86,"sanCount":3,"fingerprint256":"48:69:B8:2A:B0:0E:66:6C:B2:1C:E0:ED:65:B4:B3:BA:76:4D:AA:45:94:79:44:D8:32:36:C8:F2:EA:0E:21:DA"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"md.mostlyright/datasets","url":"https://registry.modelcontextprotocol.io/v0/servers/md.mostlyright%2Fdatasets","firstSeenAt":"2026-09-11T08:22:51.768Z","fetchedAt":"2026-10-08T18:22:08.131Z","normalizedAt":"2026-10-08T18:22:08.131Z"}]},"firstSeenAt":"2026-09-11T08:22:51.768Z","updatedAt":"2026-10-10T14:28:11.310Z"}