How it works
The idea
The NASA Exoplanet Archive publishes one row per planet per paper (the Planetary Systems table) and marks one row as the default. It also publishes a composite table with one row per planet whose values are picked parameter by parameter, so a single row can combine a mass from one paper with a radius from another, or with a radius the archive calculated from a mass–radius relation. The archive itself calls that table “a more complete, though not necessarily self-consistent, set of parameters”. Default Flag computes every derived number from one self-consistent parameter set and shows the composite answer only as a labelled counterfactual.
Sanity Context endpoints
default-flag-data: dataset (GROQ) mode over theproductiondataset. Structured facts.defaultflag-kb: Knowledge Base mode (Knowledge BasekbhX0D4yDJok). Archive rules and explanations only; never planet values.
One endpoint per mode, because an endpoint with both a dataset and a Knowledge Base attached serves the dataset only. Tools are discovered at runtime with MCP tools/list; the trace under every answer lists them.
Knowledge Base conflict, before and after
The Knowledge Base reads one dataset source with two documents per planet: its default parameter set and its composite row. For Kepler-139 d they disagree: 4.658 M⊕ (M·sin i, Weiss et al. 2024, the default) against 2 M⊕ (Lammers & Winn 2025, composite).
Context did not raise this as an issue. The Knowledge Base Purpose states the rule (“the self-consistent single-source set governs; composite values are recorded only as explicitly labelled alternatives”), and the build applied it directly. The planet entries keep a “Default parameter sets (preferred for derived quantities)” table and a separate “Composite table (mixed-source alternatives)” table, and state that Kepler-139 d’s composite mass differs from its default.
What changed: before the dataset source, the Knowledge Base held only methodology and could not say anything about Kepler-139 d. Now, asked which mass to use, the agent answers 4.66 M⊕ from Weiss et al. 2024 and explains that the composite’s 2 M⊕ comes from another paper. The computed density does not change, by design: numbers come only from the dataset and deterministic code. See both rows side by side.


Schema
planet- name, slug, host → star, parameterSets[] → parameterSet, defaultParameterSet → parameterSet, compositeSnapshot {each value + its reference or "Calculated Value"}
parameterSet- one archive Planetary Systems row: planet, publication, defaultFlag, radiusEarth / massEarth / semiMajorAxisAu {value, errPlus, errMinus, limitFlag}, massKind, stellarSolution, snapshot
stellarSolution- the stellar values published with that row: star, publication, radiusSun, massSun, teffK
publication- citation, refname exactly as the archive gives it, bibcode, year, ADS URL
snapshot- raw file, table, SHA-256, rows, source URL, retrieval time
constant / threshold / hzLimit- reference values, each with a source citation, URL and location
derivedAnswer- question, parameterSet, quantity, inputs[] {field, value, set}, result {median, p16, p84}, codeVersion
Public GROQ, no token: first five planets and their default papers (project 0eu544dk, dataset production).
Snapshots
The app reads this snapshot from Sanity; it never queries the archive at answer time.
| File | Rows | Retrieved | SHA-256 |
|---|---|---|---|
| ingest/data/raw/nea-tables/nea-ps.csv | 40194 | 2026-10-03T16:52:21Z | bbb513419ed5d36078221641517730d8ca3b83e32006554aae640fc5fa35a711 |
| ingest/data/raw/nea-tables/nea-pscomppars.csv | 6375 | 2026-10-03T16:52:21Z | 75d9a617442b876babf088bbef3a7095e8c5725c70a363d082081faa9331503c |
Code computes, the model explains
- Density, insolation, equilibrium temperature and habitable-zone status come from deterministic code with 10,000 seeded Monte Carlo draws from split-normal errors.
- An output guard rejects any answer containing a number no tool returned this turn, an id that was not read, or an inexact quote; it retries once, then withholds the answer.
- Habitable-zone limits: Kopparapu et al. 2014 (runaway greenhouse, 1 M⊕, and maximum greenhouse), valid for 2600–7200 K; answers outside that range say so.