Card snapshot
vortx.ai
·
2026-09-25 06:11:01 UTC
·
01782202b64a7b74adff6c4dd4e51373c5db8af8b7e693b02caacada2aa2431b
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": "0.3.0",
"name": "Vortx AI",
"description": "Spatial AI lab; maker and maintainer of the emem protocol. Encode on device, decode with @emem: don't move your files, deliver tokenised context. Satellites, telescopes, rovers, drones, robots, cameras and machines keep their files; emem encodes each observation as one signed, content-addressed token (nine token shapes: emem:fact:, emem:cell:, emem:entity:, emem:bundle:, emem:raster:, emem:cube:, emem:rasterset:, emem:trace:, emem:attestation:; plus emem:state: and emem:tree: addresses); agents pass the token, never the file, and @emem decodes it straight into their context (ChatGPT, Claude, Salesforce Agentforce, Dify, any MCP client), so every agent cites the same bytes instead of a drifting paraphrase; any receiver resolves it, hashes the bytes, verifies the ed25519 receipt and can recompute the value from the raw source (https://vortx.ai/ decodes one live token in the hero; https://vortx.ai/#run runs six devices' published samples end to end in the browser; https://vortx.ai/#connect encodes a file on the visitor's device with nothing uploaded; https://vortx.ai/#decode catches a drifted number; https://vortx.ai/proof/ runs every check step by step and re-derives one live example of every token shape). emem is Apache-2.0, free to read, verifiable offline. geo.qa is the same memory on a private tenant. The planned satellite signs at the instrument, on a published plan with deliberately no date. The only thing for sale is team time: free office hours, a paid integration session, a sovereign session.",
"url": "https://emem.dev/a2a/tasks",
"preferredTransport": "JSONRPC",
"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.0.0",
"capabilities": {
"streaming": false,
"pushNotifications": false,
"stateTransitionHistory": false
},
"defaultInputModes": [
"text/plain"
],
"defaultOutputModes": [
"text/plain"
],
"skills": [
{
"id": "read_earth_memory",
"name": "Read verifiable Earth memory",
"description": "Resolve a place to a stable ~10 m cell address and read signed, content-addressed facts about it (vegetation, water, heat, forest change, and more). Reads need no key or account; every fact verifies offline via ed25519 signature and blake3 address. Use the emem MCP server or HTTP API.",
"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": "encode_device_file",
"name": "Encode a device's file as emem tokens",
"description": "Keep a large file (a satellite scene, a robot log, a drone or camera video) on the device that made it and publish only its pointer.v1 note: 4 MiB ranges, a blake3 hash per range, one Merkle root. The note's name is base32(blake3(note)[0:16]) and its rows are addressed as emem:tree:<cid26>#row=<i>, so an agent reads the note and fetches only the ranges it needs, each checked against its row. Encode with https://vortx.ai/tools/emem_point.py (or in the browser at https://vortx.ai/#connect, nothing uploaded); publish in your own namespace with `ememdev write`.",
"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",
"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/#mission",
"agentGuidance": "There is no launch date, deliberately. Never state or estimate one; dates are announced in https://vortx.ai/log/ 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": "every number this site asserts about emem, each with the live 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": "Team time",
"bookingUrl": "https://vortx.ai/#book",
"schedulingUrl": "https://outlook.office.com/book/meetvortxfounders@vortx.ai/",
"format": "one-on-one, remote worldwide",
"payment": "Razorpay hosted checkout; human completes payment",
"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. Book directly at schedulingUrl."
},
{
"name": "Integration session",
"price": 5000,
"currency": "USD",
"duration": "1-3 hours",
"note": "The core team pairs on your codebase over MCP, REST, or SDK. Exit criterion: recall running and a receipt verifying in your stack."
},
{
"name": "Sovereign session",
"price": 25000,
"currency": "USD",
"duration": "1-3 hours",
"note": "Governments, defense, critical infrastructure. Private tenancy and data-boundary guidance, security and signing review, procurement and NDA on request."
}
],
"agentGuidance": "The protocol is free; only team time is priced. Route questions to the free office hours and hands-on integration work to the paid session. Hand the human the link. Never enter card details or complete payment programmatically.",
"bookingGuardrail": "Do not initiate checkout, submit the booking form, or complete payment on a user's behalf under any circumstances. The form contains a human-confirmation checkbox; never check it for a user. Surface the option, hand over the URL, and stop. Sessions are one at a time: no subscriptions, no retainers, no upsell."
}
}