Power AI agents with real-world data they can prove.
The context API for the physical world. Every answer carries a signed receipt that anyone can check without a key, an account, or us — the managed deployment of the open emem protocol.
# No key. No account. Open-vocabulary — you name the classes.
curl -X POST https://geo.qa/api/v1/object-detection \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://example.com/street.jpg",
"prompts": ["car", "person", "building"]
}'{
"detections": [
{
"label": "person",
"confidence": 0.906,
"bbox_normalized": [0.467, 0.261, 0.533, 0.484],
"mask_polygon": [ … ],
"area": 6612
}
],
"total_objects": 1,
"model": "sam3",
"processing_time_ms": 1363
}Open-vocabulary segmentation on any image, no key. You name the classes at call time — no training, no fixed label set.
What you can call
Three verbs. Perceive, ground, prove.
The whole published surface, on one screen — every route below is in the OpenAPI spec. 5 of them need a key. 6 need nothing at all, so you can judge the output before you decide whether to trust us.
Perceive
Point a model at pixels — an image, a satellite tile, a live feed — and get structured objects back.
- POST
/api/v1/object-detectionno keyOpen-vocabulary detection + segmentation masks on any image. You name the classes at call time.
- POST
/api/mcp · analyze_scenekeyVision-language description of a scene — prose about what is actually in frame.
- POST
/api/tool/camera-stream/detectionskeyDetections across a live camera feed, not a single frame.
Ground
Turn a place into an answer. Every result resolves to a cell64 address, so two agents asking about the same ground get the same address rather than two descriptions of it.
- GET
/api/tool/satellite/lulc/analyzekeyLand use and land cover at a point, from Sentinel-2, Landsat or Sentinel-1.
- POST
/api/tool/satellite/lulc/bboxkeyThe same, over a bounding box — fractional coverage per class.
- POST
/api/tool/satellite/lulc/polygonkeyThe same, clipped to an arbitrary polygon: a field, a concession, a district.
Prove
The part nobody else ships. Every answer above carries a signed receipt, and checking one has never required our permission — these five endpoints take no key at all.
- POST
/api/world-model/verify/receiptno keyRe-check one signed receipt. ed25519, offline-checkable, no account.
- POST
/api/world-model/verify/batchno keyUp to 256 receipts in one call. Over that it refuses rather than truncating.
- GET
/api/world-model/verify/log/sthno keySigned tree head of the transparency log — the root everything else hangs from.
- GET
/api/world-model/verify/log/proof/{cid}no keyRFC 6962 inclusion proof: this fact is in the log, at this position.
- GET
/api/world-model/verify/log/consistencyno keyProof the log only ever appended — that we never rewrote history.
What it costs
One meter. You pay to ask, never to check.
The old table advertised six units on the free tier alone — calls a day, cells, cameras, monitoring loops, storage, model families — so choosing a plan meant guessing which one would bind first. One axis now, priced against what an answer actually costs to produce: real-world data is not web scraping, and a GPU pass over satellite imagery is not a page fetch.
One meter: an answer. A detection, a land-cover read, a recall — anything that returns signed data — costs one.
Checking costs nothing, on every tier. Verifying a receipt, pulling an inclusion proof or auditing the transparency log is free forever, because an answer you have to pay us to re-check was never proof.
- Answers
- 1,000 / month
- Storage
- 500 MB
- Live feeds
- 2 live cameras
Trying it, and small agents that ask occasionally.
Start free- Answers
- 30,000 / month
- Storage
- 50 GB
- Live feeds
- 20 live cameras
A product in production with one team behind it.
Choose Pro- Answers
- 250,000 / month
- Storage
- 500 GB
- Live feeds
- 100 live cameras
Continuous watch, training runs, and priority pipeline.
Choose Max- Answers
- Unmetered
- Storage
- Unlimited
- Live feeds
- Dedicated
Your own tenancy, your keys, your jurisdiction — on-prem or air-gapped.
ContactTeam seats and annual billing are on the full pricing page. Prices in USD, billed through Razorpay.
What it is
Ask a place. Prove the answer.
Put an AI agent into production and, sooner or later, it answers a question about a place it has never observed: fluently, and wrong. geo.qa is the fix. One call returns what was observed at a place, with a signed receipt anyone can check offline, no key and no account. When the ground cannot answer, it says so, instead of guessing.

How it works
From sensor to signed fact.
For the cameras, drones and ground sensors you run, the encoder sits at the edge of capture, so what leaves is a latent, not raw footage. For satellites, geo.qa builds on the signed embeddings of the open emem.dev ledger. A decoder resolves each latent onto one shared, addressable Earth memory.
Observe
Satellites, drones, vehicle cameras and fixed CCTV, all on the same ground.
→Encode → latent
For the sensors you run, a frame becomes a latent vector on-site, so raw footage never leaves. Satellite scenes arrive already encoded, as emem.dev embeddings.
→Decode → memory
The decoder resolves each latent onto the cell lattice: one shared Earth memory.
→File a fact
Filed with its band, its time and a signed receipt. Nothing is overwritten.
→Agent cites
Your model answers with the exact observations that support it, receipt attached.

Use it
An interface agents already speak.
One call shape, shared with the open emem.dev protocol. Every source writes into the same addressable record, and every answer comes back with the fact ids behind it, so the next agent in the chain can check the claim instead of taking it on trust.
# check the Nashik reading printed above. no key, no account. curl -s https://geo.qa/api/world-model/verify \ -H 'content-type: application/json' \ -d '{"token":"emem:fact:defi.zb4e6.fIsI.hujO:oqdnpskm73q53cnuo46ieyb5dvtxr4fey6qlffxtkjqbzqe7y5gq"}' # → { "matches": true, # "value_verbatim": "0.23483583750695602", # "signer": "777er3yih…" } # the metered tenant call, once you have a key curl -s \ "https://geo.qa/api/tool/satellite/lulc/analyze?lat=25.276&lon=55.296" \ -H "Authorization: Bearer $GEOQA_KEY"
Autonomous fleets
The vehicle’s cameras write to the memory; the car reads neighbouring cells to know what is round the corner before it sees it.
what is in the next cell right now?
Energy & infrastructure
Pads, lines and stations watched by every sensor at once. A page goes out only when independent witnesses agree.
did pressure at G-247 drop overnight?
Insurance & risk
Price and settle against what was observed, not what was claimed, and every fact arrives with its receipt.
was this parcel underwater on 04 May?
Defence & GEOINT
An owned, airgapped memory with full provenance: answers built to survive an audit, weeks later.
what changed at this site since Tuesday?
Own it
Take the rung you can reach.
emem is open, and checking it needs nobody’s permission. geo.qa runs it for you and adds the sensors you own. So access is a ladder rather than a gate, and the free rung is the one that matters: an answer you cannot check is worth nothing, so checking is free forever and never asks who you are.
What never leaves
what the wire carries, not what a contract promises
- ◇Raw imagery. Encoded at the edge of capture; only the latent vector moves on.
- ◇Your memory. A single tenant: your keys, your retention, your jurisdiction.
- ◇Your models. Trained and served inside your boundary. No calls home, no training on your data by us.
What you keep
what you can still show six months later
- ◇Provenance. Every answer carries a signed, verifiable receipt.
- ◇Audit. Replay any decision against the exact observations it used.
- ◇Interop. The same call shape as the open emem.dev protocol.
Where it sits
Under the models, on emem.
A model that generates a plausible world is not the same thing as a record of this one. geo.qa is the record: what was observed, when, by what, filed at an address, and signed. Everything below writes into it.
| # | Modality | What it writes into the memory | Cadence |
|---|---|---|---|
| 01 | Satellite opticalmultispectral surface | land cover, water, change, vegetation indices | daily–weekly |
| 02 | Satellite SARall-weather radar | structure, moisture, flood, motion, through cloud | 1–6 days |
| 03 | Thermal / IRheat signature | flares, fires, equipment activity, anomalies | sub-daily |
| 04 | Drone surveycentimetre detail | close-range inspection of a single asset | on tasking |
| 05 | Vehicle camerasstreet level | what is round the corner, lane by lane | continuous |
| 06 | Fixed CCTVthe perimeter | gate, yard, fence line, occupancy | continuous |
| 07 | Ground sensorsSCADA / IoT | pressure, flow, level, vibration | seconds |
| 08 | Weather fieldsenvironment | rain, wind, temperature, soil moisture | hourly |
| 09 | AIS / vesselmaritime tracks | who is where on the water, and when | minutes |
| 10 | Field reportssigned human notes | a person's observation, attributable | on event |
| 11 | Cadastral / GISthe record of record | parcels, assets, boundaries, ownership | on change |
| 12 | Acousticsound events | alarms, gunshots, machinery, leaks | continuous |
Give your model a memory.
Stop letting it guess about the world. Start letting it cite, and train on what it cites.
geo.qa · a vortx ground decoder · emem.dev open protocol