Getting Started
v0.1 pre-releaseInstall the SDK, connect an agent, and store your first graph-native memory — in under 5 minutes.
What is Agentverse Memory?
Agentverse Memory is a managed, graph-native memory service for AI agents — exposing all four memory types (episodic, semantic, procedural, working) through a single MCP-compatible API, with zero LLM inference at write time and graph traversal at every pricing tier, including free.
It sits between your agent and persistent storage: your agent writes memories, the service indexes and connects them in a LadybugDB knowledge graph, and retrieval defaults to hybrid search (TF-IDF + dense embeddings) with optional pheromone weighting. The write path calls no LLM — the in-process engine write op is 0.035ms p95 (am-local micro-benchmark; deployed writes ~150ms), so unlike LLM-extraction systems like Mem0, a write never waits on, or bills tokens for, an LLM call. That's a $0 ingest cost.
Prerequisites
| Requirement | Minimum |
|---|---|
| Python | 3.10+ |
| Node.js | 18+ (TypeScript SDK) |
| MCP client | Any JSON-RPC 2.0 client (Claude Desktop, Cursor, custom) |
| API key | Free — get one at memory.agentverse.ai |
Installation
SDKs coming soon. The Python (agentverse-memory) and TypeScript (@fetchai/agentverse-memory) packages are not yet published to PyPI / npm. You can use Agentverse Memory today by calling the MCP endpoint directly over HTTP — see the working cURL / fetch examples in the MCP integration guide. The quickstart below previews the planned SDK interface.
Python SDK (coming soon)
# Not yet on PyPI — coming soonpip install agentverse-memoryTypeScript / Node.js SDK (coming soon)
# Not yet on npm — coming soonnpm install @fetchai/agentverse-memoryBoth SDKs will wrap the JSON-RPC 2.0 MCP transport. Today you can call the API directly without an SDK.
Quick Start — Python
from agentverse_memory import MemoryClient # 1. Initialize the clientclient = MemoryClient( api_key="am_your_key_here", # from memory.agentverse.ai dashboard agent_id="my-research-agent", # unique per agent base_url="https://am-server-jbneh74b5q-uc.a.run.app", # or set AVMEM_BASE_URL env var) # 2. Store an episodic memory (something that happened)episode = client.episodes.store( content="User asked about the Q1 sales report. Pulled data from Salesforce.", metadata={ "user_id": "user_42", "session_id": "sess_abc123", "tags": ["sales", "q1", "report"], })print(episode.id) # ep_01hx...# No LLM calls at write time — sub-ms in-process engine write op # 3. Store a semantic memory (a knowledge triple)fact = client.facts.store( subject="Acme Corp", predicate="signed_contract_with", object_="Fetch.ai", metadata={ "valid_at": "2026-01-15", # when this fact became true "confidence": 0.95, "source": "CRM", })print(fact.id) # fact_02hy... # 4. Query memories by natural languageresults = client.episodes.query( query="What did the user ask about sales?", limit=5,)for r in results: print(f"[{r.score:.2f}] {r.content[:80]}") # 5. Graph traversal — follow edges from a conceptgraph_results = client.facts.traverse_graph( start_id="Acme Corp", algorithm="bfs", max_depth=2, limit=20,)for node in graph_results.nodes: print(f"{node.subject} --[{node.predicate}]--> {node.object_}")ep_01hxq7kn3m... fact_02hyr9mp4n... [0.94] User asked about the Q1 sales report. Pulled data from Salesforce. Acme Corp --[signed_contract_with]--> Fetch.ai Fetch.ai --[headquartered_in]--> London
Quick Start — TypeScript
import { MemoryClient } from "@fetchai/agentverse-memory"; // 1. Initialize the clientconst client = new MemoryClient({ apiKey: "am_your_key_here", agentId: "my-research-agent",}); // 2. Store an episodic memoryconst episode = await client.episodes.store({ content: "User asked about the Q1 sales report.", metadata: { userId: "user_42", sessionId: "sess_abc123", tags: ["sales", "q1", "report"], },});console.log(episode.id); // ep_01hx... // 3. Store a semantic factconst fact = await client.facts.store({ subject: "Acme Corp", predicate: "signed_contract_with", object: "Fetch.ai", metadata: { validAt: "2026-01-15", confidence: 0.95 },}); // 4. Query episodesconst results = await client.episodes.query({ query: "What did the user ask about sales?", limit: 5,});results.forEach((r) => { console.log(`[${r.score.toFixed(2)}] ${r.content.slice(0, 80)}`);}); // 5. Graph traversalconst graph = await client.facts.traverseGraph({ seedNode: "Acme Corp", maxDepth: 2, limit: 20,});graph.nodes.forEach((n) => { console.log(`${n.subject} --[${n.predicate}]--> ${n.object}`);});MCP Integration (No SDK)
Any MCP-compatible client can connect without installing any SDK. Add this to your client config:
Claude Desktop
{ "mcpServers": { "agentverse-memory": { "url": "https://am-server-jbneh74b5q-uc.a.run.app/mcp", "headers": { "Authorization": "Bearer am_your_key_here" } } }}Restart Claude Desktop. You'll see all 35 memory tools available.
Cursor
{ "mcpServers": { "agentverse-memory": { "url": "https://am-server-jbneh74b5q-uc.a.run.app/mcp", "headers": { "Authorization": "Bearer am_your_key_here" } } }}Memory Types
All four types are available on every plan, including free.
| Type | What it stores | Tools prefix | Use it for |
|---|---|---|---|
| Episodic | Time-stamped events and interactions | memory_*_episode* | Conversation history, action logs |
| Semantic | Knowledge triples: (subject, predicate, object) | memory_*_fact* | Facts, relationships, entity states |
| Procedural | Skill definitions: goal → steps → outcome | memory_*_procedure* | Workflows, how-to knowledge |
| Working | Ephemeral key/value with TTL | memory_*_working* | Scratchpad, task state, short-lived context |
Shared Spaces Builder+
Multiple agents can share a common memory graph. 5 dedicated shared-space tools handle creation, joining, entity storage, querying, and listing. Shared spaces require a server-side JWT, which a Builder+ key mints via POST /v1/space-token; that token is then passed on shared-space calls.
from agentverse_memory import MemoryClient # Orchestrator creates a shared memory space (Builder+ key)orchestrator = MemoryClient(api_key="am_...", agent_id="orchestrator")space = orchestrator.spaces.create(name="research-team-memory")print(space.id) # Mint a space-scoped JWT (server-side) — see POST /v1/space-tokenspace_jwt = orchestrator.spaces.mint_token(space_id=space.id) # Worker agent joins the space using the JWTworker = MemoryClient(api_key="am_...", agent_id="worker-agent-1")worker.spaces.join(space_id=space.id, space_token=space_jwt) # Any member can query the shared knowledge graphresults = orchestrator.spaces.query( space_id=space.id, query="What did the team discover about Acme Corp?", limit=10,)Next Steps
#memory-support on Discord.