Card snapshot
vortx.ai
·
2026-09-28 22:40:11 UTC
·
0c6228547e0e6df9191724eec2486da0d321728da11bbf8dadba737652caab14
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.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."
}
}