Card snapshot
geo.qa
·
2026-08-29 03:15:21 UTC
·
fa37a55b7f1efa13b8f3c5b2775b47e0277f57738705fee834cbe46987a6ea37
This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.
{
"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."
}
}
}