Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
100
A2A live JSON-RPC A2A 1.2.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
64/100
grade C · 9 criteria
Uptime
accumulating
1/5 direct probes · 30d
~101 ms response
Observed inflow · 30d
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
1 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

C
Conformance score: 64/100
C-grade: usable but has clear conformance issues, review the breakdown below.
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 ~101 ms).
partial Protocol version 8/10
Declares A2A 1.2.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).
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
pass Skill declaration 10/10
Declares 3 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 0d
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

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

1 snapshot Every change to agent-card.json
Captured Hash
2026-08-29 03:15:21 current fa37a55b7f1e… view →
Uptime
accumulating
1 direct probes · 30d
Response
108ms
last direct probe
Skills
3
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
Discovered via
github_code

Skills · 3 declared · mapped to canonical taxonomy

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 1 probes

When HTTP Live JSON-RPC Latency
2026-08-29 03:15:21 200 108ms

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%
Council of AI — Measurement Agent live
Independent AI-governance MEASUREMENT body. Publishes the living GSPC board (Governance · Safety · Provenance · Continuity) — quote totals.p
CSOAI Ltd · q 100%
aeml-x402.zeabur.app
Pay-per-call signals for AI agents via x402 (USDC on Base, no API key). HEADLINE VALUE: (1) pre-joined CROSS-LINE CASCADE — one call surface
aeml-x402.zeabur.app · q 65%
api.veritylayer.dev
Fact-check a claim before your agent acts on, repeats, or ships it — verify a claim, is this true, catch hallucinations. Independent, fail-c
api.veritylayer.dev · q 45%
qart.uk live
The agent interface to qart.uk, which makes QR codes where the artwork IS the code — every image is decoded by a real QR detector before it
qart.uk · 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.2.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": "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."
    }
  }
}