{"$schema":"https://modelcontextprotocol.io/schemas/2025-06-18/server-descriptor.json","schema_version":"2025-06-18","server":{"name":"gridrock-bharata-strata","title":"Bhārata Strata — India locality intelligence as evaluable witnesses","description":"First-party Indian locality morphology intelligence over the MH-36 cube (264,583 cells): resolve a point to its locality, read its witnessed cube row, find morphological twins (R24 GUM-confidence-weighted metric), rank by YOUR weights, explain a twin pairing, attest the warrant behind a claim, and pool a feature over a region — all as evaluable witnesses with coverage honesty. The engine supplies no goodness or risk prior.","version":"1.0.0","instructions":"Bhārata Strata — India locality intelligence as evaluable witnesses (not facts). Every tool returns a witness envelope carrying its generation, coverage honesty, and uncertainty; refusals are typed and warranted. Start with resolve_locality (lat/lng → cell), then read_witnesses / find_twins / attest. The engine supplies no goodness or risk prior: rank_by_weights ranks by YOUR weights and shows the decomposition.","vendor":{"name":"GaliGaliSoftLabs","url":"https://gridrock.ai/about","contact":"hello@gridrock.ai"}},"transport":{"type":"streamable-http","endpoint":"https://api.gridrock.ai/mcp"},"discovery":{"mcp":"https://api.gridrock.ai/.well-known/mcp.json","gridrock_mcp":"https://api.gridrock.ai/.well-known/gridrock-mcp.json","llms_txt":"https://api.gridrock.ai/llms.txt"},"doctrine":{"primitive":"witness — a typed, versioned, source-attributed observation carrying provenance, identity, and uncertainty. An evaluable claim, not a bare fact.","coverage":"three-way honesty per feature: observed / witness-absent / present-but-uncertain. Missing is NEVER silently zero.","envelope":"every tool returns {ok, tool, generation, result, coverage, error}; a refusal is an evaluable ok:false with a typed error code, never a transport crash.","refusal_grammar":["R1 — no goodness/suitability/risk prior (see refused_tools)","R6 — schema-invalid input returns a typed envelope, not a protocol error","outside_coverage — a point in no MH-36 polygon is refused, never nearest-guessed","no_observed_witness — a region with zero observed cells is refused (missing≠zero)","false-precision — region pooling reports dispersion but NO standard error / CI (cells are spatially autocorrelated)"]},"tools":[{"name":"resolve_locality","description":"Resolve a (lat, lng) to the locality cell it falls in. MH-36 is tessellated into centroid-Voronoi cells, so the cell containing the point IS its nearest centroid; the engine resolves it by an exact coarse-H3 nearest-cell lookup over the cell centroids (method: coarse_h3_nearest_cell). Returns the locality identity (admin_code, cluster_id); refuses (outside_coverage) a point beyond MH-36 rather than snapping it to a far cell.","inputSchema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"additionalProperties":false}},{"name":"read_witnesses","description":"Read the full witnessed cube row for a locality cell, with three-way coverage honesty (observed / witness-absent / present-but-uncertain). Values are evaluable claims carrying their has_* flags, not bare facts. Optionally widen to the standalone/trajectory tier-stream pins (Q/U/V/W climate+morphology trajectory, ERA5/HRSL/Ookla), the cell-keyed grid-signal pins (POI / transit / road rollups), AND the monthly cloud-free Sentinel-2 cell-imagery selection (cell_imagery) via include_trajectory, replay a past generation via as_of (transaction-time: what the engine KNEW at that instant — not a back-cast snapshot), or — where a live fast-tier overlay has been published for the tier — attach the freshest CPCB AQI / IMERG / IMD / CHIRPS values via freshness='latest' (the §17.3 latest-pin overlay, returned as a separate per-tier-labelled block, never merged into the snapshot row; fail-soft to the snapshot where no overlay is published).","inputSchema":{"type":"object","properties":{"admin_code":{"type":"integer","description":"LGD admin code of the locality."},"cluster_id":{"type":"integer","description":"Voronoi cluster id within the admin."},"include_trajectory":{"type":"boolean","default":false,"description":"Also return the standalone/trajectory tier-stream pins (standalone_pins), the cell-keyed grid-signal pins (grid_signals: POI / transit / road rollups), and the monthly cloud-free Sentinel-2 selection (cell_imagery) for this cell, each labelled with its pin provenance + source_window_end_utc."},"as_of":{"type":"string","description":"ISO-8601 transaction-time instant; replay the cube generation canonical at that time. Refused before known history (never guessed)."},"freshness":{"type":"string","enum":["snapshot","latest"],"default":"snapshot","description":"snapshot (default) = the reconciled cube; latest = also attach the live fast-tier overlay WHERE PUBLISHED (§17.3 latest-pin; fail-soft to snapshot otherwise). Mutually exclusive with as_of."}},"required":["admin_code","cluster_id"],"additionalProperties":false}},{"name":"read_at","description":"Read a witnessed environmental signal — rainfall, aqi or temperature — at a (lat, lng) AND a specific real-world instant `at` (VALID-TIME: 'what was TRUE in the world at that moment'). This is the dual of read_witnesses' as_of (TRANSACTION-TIME: 'what the engine KNEW at that moment'); the two are deliberately separate operations (Pillar P2). The value is served from the sha-verified witness pin whose own natural observation window CONTAINS the instant. The engine refuses (it never interpolates and never back-casts) when `at` is before the witness chain's genesis (the refusal then carries the authoritative Q/U/V/W deep-history TREND — slope ± GUM SE + Mann–Kendall — for rainfall and temperature), after the latest observed pin, or inside a cadence gap. Coarse witness support is disclosed (IMERG ~11 km pixel for rainfall; CPCB IDW station count for aqi; IMD city-station IDW count for temperature) and a value is never zoomed below it.","inputSchema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"at":{"type":"string","description":"ISO-8601 valid-time instant — the real-world moment to read the signal at (e.g. 2026-06-15T08:00:00Z). Refused outside the observed witness window (R7)."},"signal":{"type":"string","enum":["rainfall","aqi","temperature","weather_google","rainfall_imd"],"description":"the witnessed signal: rainfall (GPM-IMERG precip mm/hr), aqi (CPCB PM2.5/PM10/NO2/SO2/CO/O3), temperature (IMD city-station air temperature °C, IDW), weather_google (Google Weather realtime co-witness to IMD — temperature_c, rainfall_mm_24h, humidity_pct, wind_speed_kmph, sampled at the same IMD station points, never averaged), or rainfall_imd (IMD 24h accumulated ground rainfall mm, IDW — the fresh ground complement to the lagged IMERG satellite rate)."}},"required":["lat","lng","at","signal"],"additionalProperties":false}},{"name":"find_twins","description":"Find the morphological twins of a locality cell (R24 GUM-confidence-weighted index). Returns top-K twins with similarities and the anchor's mean_confidence.","inputSchema":{"type":"object","properties":{"admin_code":{"type":"integer","description":"LGD admin code of the locality."},"cluster_id":{"type":"integer","description":"Voronoi cluster id within the admin."}},"required":["admin_code","cluster_id"],"additionalProperties":false}},{"name":"rank_by_weights","description":"Rank cells by the CALLER's weighted combination of cube morphology columns (z-scored across the cube), returning per-column contribution decomposition. The engine supplies NO goodness/suitability prior — you provide the weights, it shows its work.","inputSchema":{"type":"object","properties":{"weights":{"type":"object","description":"Map of cube column name → numeric weight.","additionalProperties":{"type":"number"}},"k":{"type":"integer","minimum":1,"maximum":500,"default":50},"admin_codes":{"type":"array","items":{"type":"integer"}},"min_witnesses":{"type":"integer","minimum":0,"default":0}},"required":["weights"],"additionalProperties":false}},{"name":"explain","description":"Explain why two cells are twins: per-numeric-feature decomposition of the R24 distance. Reads the AUTHORITATIVE similarity from the index (never reconstructs it) and the feature weights live; recorded twin pairs only.","inputSchema":{"type":"object","properties":{"a_admin":{"type":"integer"},"a_cluster":{"type":"integer"},"b_admin":{"type":"integer"},"b_cluster":{"type":"integer"}},"required":["a_admin","a_cluster","b_admin","b_cluster"],"additionalProperties":false}},{"name":"attest","description":"Expose the WARRANT behind a claim — 'by what warrant do you say this?'. For a cell: re-computed shard sha256 + ANCESTRY lineage. For an artefact: sha-verify + falsifier verdict. Fail-closed: proves provenance, never fabricates it.","inputSchema":{"type":"object","properties":{"subject":{"type":"string","enum":["cell","artefact"]},"admin_code":{"type":"integer"},"cluster_id":{"type":"integer"},"product":{"type":"string"},"payload_name":{"type":"string"},"scope":{"type":"string","default":"mh36"},"as_of":{"type":"string","description":"ISO-8601 transaction-time; attest the generation canonical at that instant (cell subject only)."}},"required":["subject"],"additionalProperties":false}},{"name":"aggregate_region","description":"Pool a morphology feature over a region into ONE confidence-weighted claim, with three-way coverage. Reports a descriptive dispersion but NO standard-error / confidence-interval (cells are spatially autocorrelated — that would be false precision). Refuses a region with zero observed witnesses (missing is not zero).","inputSchema":{"type":"object","properties":{"feature":{"type":"string","description":"A v2-vector feature name."},"admin_codes":{"type":"array","items":{"type":"integer"}}},"required":["feature"],"additionalProperties":false}},{"name":"route","description":"Route between two (lat,lng) points on the road network. Returns the FREE-FLOW shortest-path distance (km, ±σ) + duration, AND a stability-certified k-band of near-equal alternatives (never a single brittle arrow — v8 §68.4). Reachability is three-way honest: a genuinely disconnected pair returns reachable:false (disconnected), NEVER ∞ or 0. Free-flow ONLY — traffic/congestion is the separate Ola witness, never computed or averaged in here (D9). The engine supplies NO 'best route for purpose X' (R1) — it returns the geometric/temporal facts.","inputSchema":{"type":"object","properties":{"a_lat":{"type":"number","minimum":-90,"maximum":90},"a_lng":{"type":"number","minimum":-180,"maximum":180},"b_lat":{"type":"number","minimum":-90,"maximum":90},"b_lng":{"type":"number","minimum":-180,"maximum":180}},"required":["a_lat","a_lng","b_lat","b_lng"],"additionalProperties":false}},{"name":"reach","description":"The reachable-cell catchment (isochrone) from a (lat,lng) within a free-flow time budget (minutes), over the cube cell centroids. Returns the stable reachable set (cells + travel time), monotone in the budget; unreachable candidates are typed, never silently dropped or zeroed (R3).","inputSchema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"budget_minutes":{"type":"number","minimum":0.5,"maximum":180}},"required":["lat","lng","budget_minutes"],"additionalProperties":false}},{"name":"relate","description":"The RCC-8 topological relation between two locality cells (Region Connection Calculus base-8: DC/EC/PO/TPP/NTPP/…), read from the rcc8_lattice_v0 witness — the P4 pillar served. Within a materialised admin a non-adjacent pair is DC by the Voronoi construction; an unmaterialised admin or cross-admin pair is REFUSED (never guessed).","inputSchema":{"type":"object","properties":{"a_admin":{"type":"integer"},"a_cluster":{"type":"integer"},"b_admin":{"type":"integer"},"b_cluster":{"type":"integer"}},"required":["a_admin","a_cluster","b_admin","b_cluster"],"additionalProperties":false}},{"name":"visibility","description":"Curvature-corrected line-of-sight between an observer and a target over the 30 m DEM + building-height surface. Returns visible true/false. Support-gated: a point outside the 30 m raster footprint, or a sight-line crossing DEM nodata, is REFUSED (outside_support) — never silently 'visible'. Field-determined physics (D9).","inputSchema":{"type":"object","properties":{"observer_lat":{"type":"number","minimum":-90,"maximum":90},"observer_lng":{"type":"number","minimum":-180,"maximum":180},"target_lat":{"type":"number","minimum":-90,"maximum":90},"target_lng":{"type":"number","minimum":-180,"maximum":180},"observer_height_m":{"type":"number","minimum":0,"maximum":500},"target_height_m":{"type":"number","minimum":0,"maximum":500}},"required":["observer_lat","observer_lng","target_lat","target_lng"],"additionalProperties":false}},{"name":"anchor","description":"The MEASURED relation from a (lat,lng) to nearby landmark objects: geodesic d_F (m) + bearing + the place's identity, nearest-first within a radius. Visual prominence is a Σ-function (isolation/height); 'fame' is a declared-not-realised witness (null) — never fabricated from geometry (R1).","inputSchema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"radius_m":{"type":"number","minimum":1,"maximum":5000,"default":500},"k":{"type":"integer","minimum":1,"maximum":50,"default":5}},"required":["lat","lng"],"additionalProperties":false}}],"refused_tools":[{"name":"score_site","refusal":"R1","reason":"The engine supplies NO goodness / suitability prior. Use rank_by_weights with YOUR explicit weights — it ranks by your criterion and returns the per-column contribution decomposition (shows its work), never an opaque 'site score'."},{"name":"assess_risk","refusal":"R1","reason":"The engine supplies NO risk prior. It exposes evaluable morphology witnesses with uncertainty + coverage honesty; turning those into a risk verdict is the caller's model, not the substrate's."},{"name":"flow","refusal":"R3/Σ","reason":"Behavioural OD / mobility flow (who moved a→b) is EXCLUDED-from-Σ — not a function of (d_F, τ_S, μ). It is admissible ONLY as an acquired directed-measurement witness (device pings; Stage C), never computed from geometry. Use the cube's network features for connectivity; flow needs a witness."},{"name":"traffic_eta","refusal":"D9","reason":"Traffic / congestion ETA is the exogenous Ola witness-read, never computed and never averaged into a route. `route` returns FREE-FLOW duration only; the congestion state is a separate witness."},{"name":"best_route","refusal":"R1","reason":"The engine supplies NO 'best route for purpose X' prior. `route` returns the free-flow distance/duration + the stability-certified band; YOU apply your criterion to those facts."}],"generation":{"namespace":"bs:cube:0852c73eef54"}}