Skip to content
Back to geo.qa

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."
    }
  }
}