Ask a free-text question about a place
emem_askSingle-shot free-text answer about a real-world location, backed by signed satellite/elevation/water/built-up receipts. Forwards a place mention plus a question; runs the locate → recall → algorithm chain server-side; returns one packaged envelope.
When to use: Call when the question is about a specific place and the answer should carry its own evidence. Send the user's question verbatim as q plus a location as place (free text), cell (cell64), or lat+lng. One envelope comes back: answer, spatial_trace (the readings as primitives, each point indexing fact_cids), facts_summary, receipt and fact_cids at the ROOT, and caveats naming grid resolution and revisit cadence. Missing bands are materialised on demand. include: ["reasoning"] adds the ordered stages with their detail; include_image: true bundles a Sentinel-2 thumbnail. A question outside the corpus answers topic_routing.matched_topic: null with the inventory, so you can route elsewhere rather than guess.
Example arguments: {"q":"is this neighbourhood flood-prone for a flat purchase","place":"Ashok Nagar, Ranchi"}
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | User's natural-language question about the place (e.g. "is this neighbourhood flood-prone"). | |
| lat | No | WGS-84 latitude (paired with `lng`; alternative to `place` / `cell`). | |
| lng | No | WGS-84 longitude (paired with `lat`). | |
| cell | No | cell64 string (alternative to `place`, use when you have one from a prior emem_locate / emem_recall response). Provide this OR `place` OR `lat`+`lng`. | |
| model | No | Optional. Compose an EXTRA prose answer with a named model, returned as `model_answer` beside the deterministic `answer`. It does not replace it: `answer` is synthesised from the structured fields and never calls a model, so every number in it traces to a fact_cid, and asking for a model must not turn a checkable answer into an unchecked one. `model_answer` carries provenance.class = model_output. Name it by base_model (`nvidia/Cosmos3-Edge`), by family (`cosmos3_edge`, `gemma`), or by any fragment naming exactly one of them (`cosmos`); a fragment matching several is refused and names them; an unroutable name is refused with the list of routable ones, and a routable model whose service is not answering is refused as busy or down rather than silently substituted. Cosmos deliberates and typically takes 13-22 s. | |
| place | No | Free-text place name (e.g. "Mount Fuji", "Ashok Nagar, Ranchi"). REQUIRED unless `cell` or `lat`+`lng` is provided. Extract the noun phrase from the user's turn; the responder geocodes via OSM Nominatim. | |
| query | No | Alias for `q`. | |
| include | No | Opt-in heavy response sections. Default response is slim (~5 KB): answer + algorithm key + fact_cids + caveats. Name specific sections to include them. Ignored when verbose=true (which includes everything). | |
| verbose | No | When true, return the full envelope: per-algorithm formula strings, temporal_recipe blocks, per-fact band_metadata duplicates, and the long _explanation prose. Default (since 2026-05-05) is false so the response fits MCP's 25 KB cap; the signed receipt + fact CIDs + algorithm keys + algorithms_cid are always retained. Pass true to get the full body when debugging. | |
| question | No | Alias for `q`. | |
| include_image | No | Bundle a Sentinel-2 RGB scene URL for the resolved cell. Adds ~1-2 s on first call. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cell | No | The cell64 the question resolved to: emem's address for the place. | |
| _means | No | ||
| answer | No | The prose answer. The same text is in the content block, which also carries the full envelope. | |
| schema | Yes | ||
| question | No | The question as asked. | |
| spatial_trace | Yes | A spatial memory trace: what this responder has measured at this place, as primitives a model can reason over rather than a picture a person looks at. |