Skip to main content

Real-world data your AI agents can prove.

Name a place. Read what was seen. Check the receipt.

Free, no account. Built on the open emem protocol.

Trafalgar Square · 51.5080, -0.1280read 16 min ago

How busy is Trafalgar Square right now?

above this camera's median at 95% confidence

11 things, counted from the camera’s own frame
10× car1× person
A live reading, measured 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
}

Detect anything in any image. No key, no account. Name the classes at call time; one the detector has no head for comes back in refused_prompts, named and reasoned, never 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. This one checks.

Ship an agent and it will answer about somewhere it has never seen. Fluently, and wrong. Hand it the observations instead.

1

Name it

One stable cell, about ten metres, anywhere on Earth. Every sensor files against it, so two agents get one address rather than two descriptions.

2

Read it

Satellites, your cameras, drones and ground sensors write to one record. An answer is the observations behind it. When there are none, it says so.

3

Check it

Every fact signed and logged. Re-check any receipt offline, against the open protocol. You pay to ask; checking is free.

the cell lattice≈10 m per cell

The API

Thirty-one routes. Twenty-six 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 tile or a live feed. Get structured objects back.

  • GET/api/worlds/londonno key

    Read a whole city at once. What London's cameras see now, the trend, and the receipt under each count.

  • POST/api/v1/object-detectionno key

    Detect and segment anything in an image. Name the classes at call time.

  • POST/api/mcp · analyze_scenekey

    Describe what is actually in the frame.

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

    Track detections across a live feed, not one frame.

Ground

Turn a place into an answer. Every result resolves to one cell64, so two agents asking about the same ground get the same address.

  • GET/api/tool/satellite/lulc/analyzekey

    Read land cover at a point, from Sentinel-2, Landsat or Sentinel-1.

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

    Cover a bounding box, as a fraction per class.

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

    Clip to any polygon: a field, a concession, a district.

Measure

Send a photograph or a pin, get a number with its accuracy under it. All fifteen need no key, and each one refuses in a named way rather than guessing.

  • POST/api/produce/measureno key

    Measure produce against the EU marketing standard. Length, grade, colour stage, blemish — each with its own accuracy and a signed receipt.

  • GET/api/produce/card.pngno key

    Print the scale card. Lay it beside the fruit and the millimetres are measured, not typed.

  • GET/api/produce/selftestno key

    Score our measurement against geometry whose answer is exact. The accuracy claim, run live.

  • POST/api/redact/peopleno key

    Mosaic every person before the photograph is stored. Says plainly what it does not catch.

  • POST/api/stack/countno key

    Count the crate faces in a stack. Abstains with a reason rather than guessing a load.

  • POST/api/ppe/sprayingno key

    Read a spray photograph for respirator, gloves and coverall, keeping no face. Uncalibrated today, and says so.

  • POST/api/prescreenno key

    Rank candidate farms from their pins, before anyone drives out.

  • POST/api/water/distanceno key

    Find the nearest recurring surface water, for a spray buffer. A bracket, never an invented metre.

  • POST/api/crop/agreeno key

    Check whether a photograph could be of the field it claims.

  • POST/api/decideno key

    Rank candidates on typed features, renormalising over what is known. Refuses to price what nobody measured.

  • GET/api/partnerno key

    Read the measurement index: what each route does, needs, returns and refuses, in its own words.

  • GET/api/partner/distno key

    Stop calling us. The same measuring code as a pinnable wheel, to run where the photograph already is.

  • GET/api/verify/keyno key

    Read the key every receipt is signed with, and what each signature binds — and does not bind.

  • GET/api/partner/dist/{name}no key

    Download an artefact by name. X-SHA256 over the bytes actually sent, so the pin checks itself.

  • GET/api/probesno key

    Gate your deploy on ours. Every claim re-checked against the running code: holds, fails, or undetermined.

Prove

Check any answer. These nine routes need no key, so an auditor confirms a receipt without an account.

  • POST/api/world-model/verifyno key

    Verify any token or receipt through one door. Fact, bundle, card, bare content id. No key.

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

    Verify by content id and read the per-step verdict. The path the London page uses.

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

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

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

    Batch up to 256 receipts. Over that it refuses rather than truncating.

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

    Pin the signed log head. Every inclusion proof resolves to it.

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

    Prove inclusion, RFC 6962: this fact, this position.

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

    Prove consistency between two tree sizes: append-only, never rewritten.

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

    Check the agent card's signature before trusting anything else here. Detached JWS over RFC 8785; key at /.well-known/jwks.json.

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

    Hash a file and ask whether we hold custody of those exact bytes. Proves it has not changed since we received it, not that what it shows is true.

Pricing

Priced per answer.

Compare one number. Real-world data costs more than a web fetch, because a satellite pass is not a page load.

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