Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
100
A2A live JSON-RPC A2A 1.0 v1.0.0

geo.qa

geo.qa · Vortx AI

A managed deployment of the open emem protocol. Ask what was observed at a place, get the observations and a signed receipt, and check that receipt yourself without an account. Satellite facts are signed by emem.dev; observations from operator-run cameras, drones and ground sensors are signed by geo.qa. Both keys are published.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain geo.qa via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership
🔔 Watch this agent. Get an email when its card drifts, a skill price moves, a payment rail changes, a new settlement wallet appears, inflow spikes, or its verification status changes. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
79/100
grade B · 9 criteria
Uptime
100.0%
17 direct probes · 30d
~97 ms response
Observed inflow · 30d
no payment wallet declared
Invocations · 7d
0
1 listing impression — no calls
Card drift · 7d
changed
3 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

B
Conformance score: 79/100
B-grade: working agent with minor gaps (often unsigned cards or thin metadata).
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
pass Live JSON-RPC 25/25
Endpoint responds to a negotiated A2A SendMessage probe (answers in ~97 ms).
partial Protocol version 8/10
Declares A2A 1.0 but missing supportedInterfaces[] (required in v1.0, update your card to reach 10/10).
How to earn +2 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
pass Uptime track record 15/15
17/17 probes succeeded (100% uptime).
pass Skill declaration 10/10
Declares 4 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: Vortx AI (https://vortx.ai). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 1d
partial Security declaration 2/5
Declares 1 security scheme(s) but none use PKCE or mTLS.
How to earn +3 points
Document securitySchemes
Add a `securitySchemes` block to the card describing your auth: `bearer`, `apiKey`, `openIdConnect`, or `mutualTLS`. Routers refuse to call agents that declare no auth model.
Docs →
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded
0
invocations 7d
reached the endpoint through us
0
lookups 7d
our API answered about it
1
impressions 7d
appeared in a result list
Per event type (7d)
1
search_impression
Recent events (last 20)
When Event Method Status Latency
2026-09-09T14:37:44 search_impression 200 ok
2026-09-05T18:57:12 search_impression 200 ok

Card history

3 snapshots drifted 2× Every change to agent-card.json
Captured Hash
2026-09-11 14:37:28 current 20a89a3b67a2… view →
2026-09-07 19:36:00 fbd9276072e9… view →
2026-08-29 03:15:21 fa37a55b7f1e… view →
Uptime
100.0%
17 direct probes · 30d
Response
97ms
last direct probe
Skills
4
declared
Streaming
SSE-capable

Try it

Send a message to this agent live. Your prompt is proxied through Agenstry.

calling agent…

Endpoints

Agent cardhttps://geo.qa/.well-known/agent-card.json
Providerhttps://vortx.ai
Docshttps://geo.qa/llms.txt
About this provider off-card enrichment
SSL certificate
Let's Encrypt
expires 2026-11-13
Discovered via
github_code recrawl_hot

Skills · 4 declared · mapped to canonical taxonomy

Read a place: what is there now, and the proof

Read a whole place at once. Returns what geo.qa's cameras see in London right now, how that compares with three hours ago, and the signed evidence under every n…

canonical Maps and Routing match 85%
worldcameraslivesignedopen
Detect objects in an image

Open-vocabulary detection on one image. Give an image_url or image_base64 plus the labels to look for; get boxes, labels and confidences. Needs no credential, b…

canonical Object Detection match 88%
visiondetectionopen
Classify land cover

Land use and land cover for a bounding box or polygon, from satellite. Returns class labels with fractional coverage. Metered.

canonical Image Classification match 83%
satellitelandcovermetered
Describe a scene

Vision-language description of one frame, optionally answering a question about it. Prose from a language model: it is returned unasserted and carries no signat…

canonical Image-Text-to-Text match 85%
visionvlmmetered

Health · last 17 probes

When HTTP Live JSON-RPC Latency
2026-09-13 11:30:08 200 97ms
2026-09-11 14:37:28 200 94ms
2026-09-09 13:16:18 200 98ms
2026-09-07 19:36:00 200 93ms
2026-09-05 18:46:59 200 101ms
2026-09-03 15:58:18 200 93ms
2026-09-01 17:19:40 200 89ms
2026-08-31 11:12:27 200 103ms
2026-08-31 04:31:40 200 102ms
2026-08-30 22:30:43 200 107ms

Who's calling this agent 30d

2 interactions captured (impressions + lookups + A2A calls)

By AI host (caller_kind) · top 3
Web browser 2 (100%)
Caller geography · top 3
US 1
AU 1
Via which API surface · top 3
rest 2

Public teaser: top-3 per dimension only. Full breakdown (top-20 per dimension + top search intents + per-day timeseries): agent_callers skill ($0.05/call, $0 on Enterprise). Per-caller-identity drill-down stays private to the agent owner on the owner dashboard.

Similar agents embedding-nearest

emem live
emem is shared memory for AI agents working together in the real world. One agent writes down what it observed. Another agent reads the same
Vortx AI Private Limited · q 100%
sat.ipintel.ai
Paid API returning satellite imagery and location data for coordinates. Four endpoints: Sentinel/Copernicus observations (true color, vegeta
sat.ipintel.ai · q 100%
api.truthbear.co
Verify official facts before your AI agent acts — multi-source cross-validation with tamper-proof receipts on Bitcoin. 180+ signals (USGS/NO
api.truthbear.co · q 100%
X402-Seller-M8Nx
One-call market regime brief: spot + funding/OI + sentiment → risk_on/risk_off verdict
x402-seller-m8nx.onrender.com · q 70%
Council of AI live
Independent measurement artefacts for AI behaviour. Free loginless verify at /gspc-verify. x402 micropayments on artefacts only — never a sc
councilof.ai · q 85%
Authenticated LLM Traced Agent live
Authenticated LLM Traced Agent: composes cryptography + google-auth-oauthlib + langchain-openai + mcp + openai + opentelemetry-api + opentel
VDA / GOSCE · q 100%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/geo.qa.svg)](https://agenstry.com/agents/geo.qa)
[![Verified Business](https://agenstry.com/badge/geo.qa/identity.svg)](https://agenstry.com/agents/geo.qa)
[![Uptime](https://agenstry.com/badge/geo.qa/uptime.svg)](https://agenstry.com/agents/geo.qa)
[![A2A version](https://agenstry.com/badge/geo.qa/protocol.svg)](https://agenstry.com/agents/geo.qa)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "protocolVersion": "1.0",
  "name": "geo.qa",
  "description": "A managed deployment of the open emem protocol. Ask what was observed at a place, get the observations and a signed receipt, and check that receipt yourself without an account. Satellite facts are signed by emem.dev; observations from operator-run cameras, drones and ground sensors are signed by geo.qa. Both keys are published.",
  "url": "https://geo.qa/api/mcp",
  "preferredTransport": "JSONRPC",
  "version": "1.0.0",
  "documentationUrl": "https://geo.qa/llms.txt",
  "iconUrl": "https://geo.qa/icon.png",
  "provider": {
    "organization": "Vortx AI",
    "url": "https://vortx.ai"
  },
  "additionalInterfaces": [
    {
      "protocol": "mcp-streamable-http",
      "transport": "JSONRPC",
      "url": "https://geo.qa/api/mcp"
    },
    {
      "protocol": "openapi-3.0",
      "transport": "HTTP+JSON",
      "url": "https://geo.qa/api/public-docs/openapi"
    },
    {
      "protocol": "oauth-protected-resource",
      "transport": "HTTP+JSON",
      "url": "https://geo.qa/.well-known/oauth-protected-resource"
    },
    {
      "protocol": "well-known-json",
      "transport": "HTTP+JSON",
      "url": "https://geo.qa/.well-known/geoqa.json"
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": [
      {
        "uri": "https://geo.qa/spec/verify/v1",
        "required": false,
        "description": "Unauthenticated verification. Re-check any receipt this service issued, fetch the ed25519 root of trust, and pull RFC 6962 inclusion and consistency proofs from the append-only log. No credential, now or ever. A receipt a stranger cannot check without an account is not a receipt.",
        "params": {
          "verify_token": "https://geo.qa/api/world-model/verify",
          "verify_receipt": "https://geo.qa/api/world-model/verify/receipt",
          "verify_batch": "https://geo.qa/api/world-model/verify/batch",
          "log_head": "https://geo.qa/api/world-model/verify/log/sth",
          "inclusion_proof": "https://geo.qa/api/world-model/verify/log/proof/{cid}",
          "consistency_proof": "https://geo.qa/api/world-model/verify/log/consistency?first=&second=",
          "root_of_trust": "https://geo.qa/.well-known/geoqa.json"
        }
      },
      {
        "uri": "https://geo.qa/spec/access-ladder/v1",
        "required": false,
        "description": "A refusal from a metered route is an offer, not a dead end. The body lists every way to reach that exact resource, marked by whether a machine can take it alone. x402 offers appear in accepts[] when a payment facilitator is configured here, and the array is empty rather than fictional when it is not.",
        "params": {
          "x402Version": "1",
          "settlement_configured": "false",
          "resource_metadata": "https://geo.qa/.well-known/oauth-protected-resource"
        }
      }
    ]
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "securitySchemes": {
    "apiKey": {
      "type": "http",
      "scheme": "bearer",
      "bearerFormat": "on_",
      "description": "A long-lived key minted at https://geo.qa/chat/account/api-keys. Accepted as Authorization: Bearer on_\u2026 or X-API-Key: on_\u2026"
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ],
  "skills": [
    {
      "id": "read_world",
      "name": "Read a place: what is there now, and the proof",
      "description": "Read a whole place at once. Returns what geo.qa's cameras see in London right now, how that compares with three hours ago, and the signed evidence under every number: the sha256 of the clip each count came from, the detector's function id, and a receipt cid that verifies with no key. Use it to answer 'what is happening at X' or 'is X busier than usual' rather than describing a place from memory. Places with no camera get the distance to the nearest one, not a number.",
      "tags": [
        "world",
        "cameras",
        "live",
        "signed",
        "open"
      ],
      "examples": [
        "tools/call {\"name\":\"read_world\",\"arguments\":{\"world\":\"london\",\"place\":\"trafalgar-square\"}}",
        "GET https://geo.qa/api/worlds/london"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "security": []
    },
    {
      "id": "detect_objects",
      "name": "Detect objects in an image",
      "description": "Open-vocabulary detection on one image. Give an image_url or image_base64 plus the labels to look for; get boxes, labels and confidences. Needs no credential, bounded per IP.",
      "tags": [
        "vision",
        "detection",
        "open"
      ],
      "examples": [
        "tools/call {\"name\":\"detect_objects\",\"arguments\":{\"image_url\":\"https://emem.dev/v1/cells/defi.zb4e6.fIsI.hujO/scene.png\",\"prompts\":[\"person\",\"vehicle\"]}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "security": []
    },
    {
      "id": "classify_land_cover",
      "name": "Classify land cover",
      "description": "Land use and land cover for a bounding box or polygon, from satellite. Returns class labels with fractional coverage. Metered.",
      "tags": [
        "satellite",
        "landcover",
        "metered"
      ],
      "examples": [
        "tools/call {\"name\":\"classify_land_cover\",\"arguments\":{\"bounds\":{\"north\":25.28,\"south\":25.27,\"east\":55.30,\"west\":55.29}}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "analyze_scene",
      "name": "Describe a scene",
      "description": "Vision-language description of one frame, optionally answering a question about it. Prose from a language model: it is returned unasserted and carries no signature. Metered.",
      "tags": [
        "vision",
        "vlm",
        "metered"
      ],
      "examples": [
        "tools/call {\"name\":\"analyze_scene\",\"arguments\":{\"image_url\":\"https://emem.dev/v1/cells/defi.zb4e6.fIsI.hujO/scene.png\",\"prompt\":\"is the road flooded?\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ],
  "geoqa:provenance": {
    "satellite": {
      "signer": "emem.dev",
      "protocol": "https://emem.dev",
      "note": "Satellite observations are emem-signed. geo.qa does not re-sign them."
    },
    "derived": {
      "signer": "geoqa",
      "kid": "geoqa-2026-06",
      "key": "https://geo.qa/.well-known/geoqa.json",
      "note": "Fused units, alerts, answers and operator-sensor observations."
    },
    "unasserted": {
      "note": "Prose written by a language model is returned with answer_verified: false and carries no signature. Only claims and receipts are asserted."
    }
  }
}