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.
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.
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 ▴
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 recordedNothing 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 toagent-card.json
| Captured | Hash | |
|---|---|---|
| 2026-08-29 03:15:21 current | fa37a55b7f1e… |
view → |
Try it
Send a message to this agent live. Your prompt is proxied through Agenstry.
Endpoints
| Agent card | https://geo.qa/.well-known/agent-card.json |
| Provider | https://vortx.ai |
| Docs | https://geo.qa/llms.txt |
Skills · 3 declared · mapped to canonical taxonomy
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…
Land use and land cover for a bounding box or polygon, from satellite. Returns class labels with fractional coverage. Metered.
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…
Health · last 1 probes
Similar agents embedding-nearest
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.
Markdown / HTML snippets
[](https://agenstry.com/agents/geo.qa) [](https://agenstry.com/agents/geo.qa) [](https://agenstry.com/agents/geo.qa) [](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.
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."
}
}
}