{
  "protocolVersion": "1.0",
  "name": "Vortx AI",
  "description": "Vortx AI Private Limited, a spatial AI lab, builds emem: shared, verifiable memory for AI agents. Devices keep their files; each observation becomes a small signed token (emem:fact: for a signed reading, emem:tree: for one piece of a file: nine token shapes and two addresses in all) that @emem decodes inside ChatGPT, Claude, Salesforce Agentforce, Dify or any MCP client, and that anyone can check offline. emem is free and Apache-2.0; geo.qa runs the same memory in a private tenancy; eudr.dev and propcheck.dev are in testing. The home page tells it in order: https://vortx.ai/#why (the problem, checked live), https://vortx.ai/#how (one device's file becomes a token and is checked in the browser), https://vortx.ai/#agents (a token survives 24 hops between two model families where the words do not; a standard two agents signed, checked four ways), https://vortx.ai/#start (connect an agent, encode a file). Nothing is for sale: the protocol is free and open source, and anyone can encode their own files (https://vortx.ai/#build); free office hours are in x-session, and agents never book or pay. The satellite plan has deliberately no date. Start at https://vortx.ai/llms.txt.",
  "url": "https://emem.dev/a2a/tasks",
  "preferredTransport": "JSONRPC",
  "supportedInterfaces": [
    { "protocolBinding": "JSONRPC", "protocolVersion": "1.0", "url": "https://emem.dev/a2a/tasks" }
  ],
  "provider": {
    "organization": "Vortx AI Private Limited",
    "url": "https://vortx.ai/"
  },
  "documentationUrl": "https://vortx.ai/agents.md",
  "iconUrl": "https://vortx.ai/assets/og-logo.png",
  "version": "2.2.0",
  "x-versionOf": "this card; emem's own version is in https://emem.dev/.well-known/agent-card.json",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": ["text/plain"],
  "defaultOutputModes": ["text/plain"],
  "skills": [
    {
      "id": "emem_recall",
      "name": "Recall signed facts about a place",
      "description": "emem's own skill, run at url: resolve a place to one cell (about 10 m) and read its signed facts (vegetation, water, heat, forest change and more). The answer lists facts oldest first, each with value_verbatim, sources[0].captured_at and memory_token: quote the newest value verbatim with its capture date and token. Reads need no key or account; every fact verifies offline (ed25519 signature, blake3 address). Also over MCP (emem_recall) and REST (POST https://emem.dev/v1/recall).",
      "tags": ["earth-observation", "verifiable", "mcp", "geospatial", "memory"],
      "examples": [
        "Recall the NDVI fact for Bengaluru and cite its emem:fact: token.",
        "Was this parcel cleared before we sourced from it? Check the forest record."
      ]
    },
    {
      "id": "emem_memory_create",
      "name": "Publish a device file's note",
      "description": "emem's own skill, run at url: publish the pointer.v1 note of a large file (a satellite scene, a robot log, a drone or camera video) that stays on the device that made it. Encode the note first, locally, with https://vortx.ai/tools/emem_point.py (or in the browser at https://vortx.ai/#connect, nothing uploaded): 4 MiB ranges, a blake3 hash per range, one Merkle root. The write is signed by the owner's ed25519 attester key, in their own namespace; its rows are then addressed as emem:tree:<cid26>#row=<i>. Ask your human first: a published note is public, and deleting it unpublishes rather than erases.",
      "tags": ["encode", "device", "satellite", "robotics", "pointer", "blake3", "merkle"],
      "examples": [
        "My user has a 2 GB downlinked scene; give them the commands to encode it and publish the note instead of the file.",
        "Resolve row 1 of emem:tree:wkxa7tcmw2orf7ujjf5yi66dhe and check the range against its hash."
      ]
    }
  ],
  "additionalInterfaces": [
    { "transport": "HTTP", "url": "https://emem.dev/v1/" },
    { "transport": "MCP", "url": "https://emem.dev/mcp" }
  ],
  "x-emem": {
    "protocol": "emem",
    "docs": "https://emem.dev/llms.txt",
    "agentCard": "https://emem.dev/.well-known/agent-card.json",
    "source": "https://github.com/Vortx-AI/emem",
    "mcp": "https://emem.dev/mcp",
    "rest": "https://emem.dev/v1/recall",
    "toolCatalog": "served live by the emem_tools tool; do not hardcode its size, count it there",
    "surfaces": "deterministic (locate, recall, verify, diff: same signed bytes forever) and agentic (ask, reason, hunt, predict: the responder plans and fans out under one signed receipt)",
    "liveEndpoints": {
      "capabilities": "https://emem.dev/v1/capabilities",
      "transparencyLog": "https://emem.dev/v1/log/sth",
      "topics": "https://emem.dev/v1/topics",
      "substrates": "https://emem.dev/v1/substrates",
      "devicePlatforms": "https://emem.dev/v1/device_platforms",
      "coverageMap": "https://emem.dev/v1/coverage_map.svg",
      "verifierSpec": "https://emem.dev/v1/verifier_spec",
      "benchmark": "https://emem.dev/v1/benchmark",
      "ask": "https://emem.dev/v1/ask",
      "guardVerdict": "https://emem.dev/v1/guard/verdict",
      "sceneImagery": "https://emem.dev/v1/cells/{cell64}/scene.png"
    },
    "a2a": {
      "card": "https://emem.dev/.well-known/agent-card.json",
      "tasksSync": "https://emem.dev/a2a/tasks",
      "tasksAsync": "https://emem.dev/v1/a2a/tasks",
      "skillSearch": "https://emem.dev/v1/a2a/skills?q=",
      "events": "https://emem.dev/v1/memory/sse",
      "agora": "https://emem.dev/a2a",
      "inbox": "https://emem.dev/v1/inbox",
      "note": "every emem tool is published as an A2A skill; the Agora is the open channel where agents co-build on the memory"
    }
  },
  "x-connectors": {
    "chatgpt": { "how": "mention @emem in any chat", "listing": "https://chatgpt.com/plugins/plugin_asdk_app_6a6a0832a59081918b19aec0ddf9ec77" },
    "githubMcpRegistry": "https://github.com/mcp/Vortx-AI/emem",
    "vscode": "one click from the MCP gallery, or .vscode/mcp.json with the server url",
    "claudeCode": "claude mcp add --transport http emem https://emem.dev/mcp",
    "mcpRegistry": "io.github.Vortx-AI/emem",
    "dify": "https://marketplace.dify.ai/plugin/vortx-ai/emem",
    "mulesoft": "https://anypoint.mulesoft.com/exchange/68e53915-e89b-4e82-b794-12d37982db4c/vortxAi-asset/",
    "agentforce": "connect https://emem.dev/mcp as an MCP server: https://www.salesforce.com/agentforce/mcp-support/",
    "anythingElse": "any MCP client, REST, pip install ememdev, npm i @vortxai/emem"
  },
  "x-satellite": {
    "status": "a plan, not a date",
    "thesis": "the evidence half: traceable from photon to token, downlinked straight into emem, landing in the witnessed public log",
    "phases": ["protocol (shipped)", "payload (in design)", "ground segment (next)", "launch (gated, not dated)"],
    "details": "https://vortx.ai/#plan",
    "agentGuidance": "There is no launch date, deliberately. Never state or estimate one; dates are announced in https://vortx.ai/press/ when real."
  },
  "x-site": {
    "contentAddressed": "https://vortx.ai/.well-known/site-manifest.json",
    "how": "every served file blake3-hashed; the manifest core's blake3, base32 like an emem fact CID, is the release id shown in the footer; CI reseals each deploy",
    "factsRegistry": "https://vortx.ai/.well-known/facts.json",
    "factsNote": "the numbers this site states, each with the source that can refute it; if registry and endpoint disagree, trust the endpoint",
    "proof": "https://vortx.ai/proof/"
  },
  "x-research": {
    "whitepaper": { "title": "emem: A Content-Addressed, Verifiable Earth-Memory Protocol for AI Agents over Foundation-Model Embeddings", "doi": "https://doi.org/10.5281/zenodo.20706317" },
    "companionStudy": { "doi": "https://doi.org/10.5281/zenodo.20706893" },
    "openModels": "https://huggingface.co/avijeetsingh1608",
    "note": "If a paper and a live endpoint disagree, trust the endpoint and report it."
  },
  "x-endpoint": "vortx.ai serves no A2A endpoint of its own: its skills run on emem.dev's (every emem tool is an A2A skill), so url points there. Booking team time is not a skill an agent executes: see x-session.",
  "x-session": {
    "name": "Office hours",
    "retired": "Vortx AI no longer sells sessions. The integration and sovereign sessions are retired; the protocol is free and open source, and there is nothing to pay for on vortx.ai.",
    "bookingUrl": "https://vortx.ai/#build",
    "schedulingUrl": "https://outlook.office.com/book/meetvortxfounders@vortx.ai/",
    "format": "one-on-one, remote worldwide, free, 30 min",
    "contact": "avijeet@vortx.ai",
    "options": [
      { "name": "Community office hours", "price": 0, "currency": "USD", "duration": "30 min", "note": "Open to all; students, researchers, and early-stage founders especially welcome. Architecture questions, integration guidance, protocol deep-dives. A person books at schedulingUrl; an agent hands over the link and stops." }
    ],
    "takePart": [
      { "verb": "encode", "what": "your own data, where it lives; publish its note and any agent can cite it", "url": "https://vortx.ai/#connect" },
      { "verb": "read", "what": "the code; every check on vortx.ai runs in the browser, in readable code; report one that passes when it should not", "url": "https://github.com/Vortx-AI/emem" },
      { "verb": "sign", "what": "at capture: makers and operators of instruments write to the team about keys in the instrument", "url": "mailto:avijeet@vortx.ai" }
    ],
    "agentGuidance": "Nothing is for sale here: the protocol is free and open source. Route questions to the free office hours and hand the human the link. Quote no prices.",
    "bookingGuardrail": "Do not book, fill a form, or pay on a user's behalf under any circumstances, free office hours included. Surface the option, hand over the URL, and stop."
  }
}
