Skip to main content

Real-world data your AI agents can prove.

Ask about any place on Earth and get what was actually observed there, with a receipt anyone can check. Verifying is free and needs no account. Built on the open emem protocol.

Trafalgar Square · 51.5080, -0.1280read 7 min ago

How busy is Trafalgar Square right now?

about usual

49 things, counted from the camera’s own frame
36× person10× car3× truck
what was checked
  • cryptographic hashsha256 of the payload's canonical bytes equals payload_sha256
  • source identitythe key this receipt names is geo.qa's published signing key
    kid geoqa-2026-06 · geoqa
  • cryptographiced25519 over the payload's canonical bytes, under the key above
  • bindingthe envelope's outer schema label equals the schema inside the signed payload
  • bindingthe signed payload is the kind the caller expected (not asked: pass expect_schema to pin the kind)
  • record lookup (not a proof)a leaf for this cid exists in geoqa-transparency-v1
    geoqa-transparency-v1 · 0 independent witnesses
    no independent party has co-signed this log's head yet, so a different history shown to someone else would go undetected
    check it yourself: GET /verify/log/proof/8f4b9f1291cfb775937a37471712678ab2404aec23866abae8b4604b78e1cdcc -- fold the audit path to the signed root yourself

Signed 2026-09-18 16:37 UTC. Checked by this page 2026-09-18 16:44 UTC.

what this does not establish
  • that the observation is accurate: the signature proves these bytes came from geo.qa unchanged, not that the sensor or the model got the world right
  • that any sentence written about this payload is true: text around a receipt is not signed by it unless it is inside payload
A live reading, painted from the camera’s own frame and signed. No key, no account. See London, live · Check this receipt yourself
request
# No key. No account. A live London camera frame.
curl -X POST https://geo.qa/api/v1/object-detection \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://s3-eu-west-1.amazonaws.com/jamcams.tfl.gov.uk/00001.06508.jpg",
    "prompts": ["car", "person", "bicycle"]
  }'
response
{
  "detections": [
    {
      "label": "car",
      "confidence": 0.967,
      "bbox": [37.4, 120.0, 83.2, 140.6],
      "bbox_normalized": [0.106, 0.417, 0.236, 0.488],
      "area": 938.95
    }
  ],
  "total_objects": 14,
  "model": "fasterrcnn_mobilenet_v3_large_fpn (cpu_detect@3)",
  "processing_time_ms": 1005
}

Objects in any image, no key and no account. You name the classes when you call it, and a class the detector on duty has no head for comes back in refused_prompts — named, with the reason — rather than as an empty list you would read as 'nothing there'.

No key needed to verify
Public cameras + major satellites
Open protocol

Why it exists

Models guess about places. This one checks.

Put an agent in production and sooner or later it answers a question about somewhere it has never seen. Fluently, and wrong. geo.qa gives it the observations instead.

One address per place

Every point on Earth maps to a stable cell about ten metres across. Every observation, from any sensor, files against it. Two agents asking about the same ground get the same address, not two descriptions of it.

Observed, not generated

Satellites, your own cameras, drones and ground sensors all write into one record. An answer is the observations that support it. When there are none, it says so rather than guessing.

A receipt with every answer

Each fact is signed and logged. You can check any receipt yourself, offline, against the open protocol. You pay to ask. Checking is free, always.

the cell lattice≈10 m per cell

The API

16 routes. Eleven need no key.

This is the whole published surface. Everything below is in the OpenAPI spec, and it speaks MCP, so an agent can pick it up without an integration.

Perceive

Send an image, a satellite tile or a live feed and get structured objects back.

  • GET/api/worlds/londonno key

    A whole place at once: what London's cameras see now, the trend, and the receipt under each count.

  • POST/api/v1/object-detectionno key

    Open-vocabulary detection + segmentation masks on any image. You name the classes at call time.

  • POST/api/mcp · analyze_scenekey

    A written description of what is actually in the frame.

  • POST/api/tool/camera-stream/detectionskey

    Detections 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/analyzekey

    Land use and land cover at a point, from Sentinel-2, Landsat or Sentinel-1.

  • POST/api/tool/satellite/lulc/bboxkey

    The same over a bounding box, as fractional coverage per class.

  • POST/api/tool/satellite/lulc/polygonkey

    The same, clipped to an arbitrary polygon: a field, a concession, a district.

Prove

Every answer carries a signed receipt. These nine routes check one — including the signature on the agent card itself — and none of them need a key, so an auditor or a customer can confirm an answer without an account.

  • POST/api/world-model/verifyno key

    One door for any token or receipt: a fact, a bundle, a card, a bare content id. No key.

  • GET/api/world-model/verify/by-cid/{cid}no key

    Verify a receipt by its content id and get the full per-step verdict. The path the London page and the tools point at.

  • POST/api/world-model/verify/receiptno key

    Re-check one signed receipt. ed25519, offline-checkable, no account.

  • POST/api/world-model/verify/batchno key

    Up to 256 receipts in one call. Over that it refuses rather than truncating.

  • GET/api/world-model/verify/log/sthno key

    The signed head of the transparency log. Every inclusion proof resolves to it.

  • GET/api/world-model/verify/log/proof/{cid}no key

    RFC 6962 inclusion proof: this fact is in the log, at this position.

  • GET/api/world-model/verify/log/consistencyno key

    Consistency proof between two tree sizes: entries were only ever appended.

  • POST/api/world-model/verify/agent-cardno key

    Check the signature on our agent card — the document an agent reads before it trusts anything else here. Detached JWS over RFC 8785; the key is at /.well-known/jwks.json.

  • GET/api/world-model/media/receipt/{sha256}no key

    Hash a file you were handed and ask whether geo.qa holds a signed custody record for those exact bytes. Proves the file has not changed since we received it — not that what it shows is true.

Pricing

Priced per answer.

One number to compare. Real-world data costs more than a web fetch because a satellite pass is not a page load, and the price says so plainly.

You pay per answer. A detection, a land-cover read or a recall each count as one. Anything that returns signed data is an answer.

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.

Free
Free
no card
Answers
1,000 / month
Storage
500 MB

For exploring the Earth memory

Start free
Pro
₹7,999
per month · ≈ $99
Answers
30,000 / month
Storage
50 GB

For one person putting an agent into production

Start Pro
Max
₹49,999
per month · ≈ $599
Answers
250,000 / month
Storage
500 GB

For a team watching many places at once

Start Max
Enterprise
Talk to us
your terms
Answers
Unmetered
Storage
Unlimited

For a deployment that has to run inside your boundary

Talk to sales

Team seats and annual billing are on the full pricing page. Prices in USD, billed through Razorpay.

Give your model a memory.

Let it cite what was seen instead of guessing what is likely.

geo.qa · the managed deployment of the emem protocol