MemData
DocsPricingDashboardGet API Key
DocsGet API Key

ON THIS PAGE

What is MemDataQuickstartRecipesMCP ServerMCP ToolsNarrative LayerAgent IdentityFile UploadREST APISearch TipsLimits & PricingTroubleshootingWhat's New

Documentation

Give your AI agents persistent memory across conversations.

What is MemData?

MemData is a semantic memory layer for AI agents. Upload documents, images, and audio - then search them with natural language.

MEMDATA IS

  • • Long-term memory for AI agents
  • • Semantic search over your files
  • • MCP server for Claude Desktop, Claude Code, Cursor
  • • Multi-format: PDFs, images, audio

MEMDATA IS NOT

  • • A file storage service
  • • A note-taking app
  • • A vector database (it uses one)
  • • An AI model

HOW IT WORKS

Upload a file → MemData extracts text (OCR, transcription) → Chunks into semantic units → Generates embeddings → Stores in PostgreSQL with pgvector → Query with natural language

Quickstart

Get set up in 2 minutes. Then explore recipes for what to build.

Two ways to use MemData:

🔌MCP Server → Claude, Cursor, Claude Code
🌐REST API → Any app, any language
1

Get your API key

Sign up (free) → go to Dashboard → API Keys → create a key.

Your key starts with md_

2

Upload something

Drag & drop in the dashboard, or use curl:

curl -X POST https://memdata.ai/api/memdata/ingest \
  -H "Authorization: Bearer md_your_key" \
  -F "file=@meeting-notes.pdf"
3

Query it

Ask in plain English:

curl -X POST https://memdata.ai/api/memdata/query \
  -H "Authorization: Bearer md_your_key" \
  -H "Content-Type: application/json" \
  -d '{"query": "What did we decide about pricing?"}'

✓ You're set up. Now explore recipes for what to build.

Recipes

Copy-paste examples for common use cases.

Add memory to Claude Desktop

MCP

Give Claude persistent memory across conversations.

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "memdata": {
      "command": "npx",
      "args": ["memdata-mcp"],
      "env": { "MEMDATA_API_KEY": "md_your_key" }
    }
  }
}

Restart Claude, then try: "Remember that we decided to use PostgreSQL."

Add memory to Cursor or Claude Code

MCP

Your coding assistant remembers architecture decisions and past bugs.

Cursor: ~/.cursor/mcp.json | Claude Code: ~/.claude.json

{
  "mcpServers": {
    "memdata": {
      "command": "npx",
      "args": ["memdata-mcp"],
      "env": { "MEMDATA_API_KEY": "md_your_key" }
    }
  }
}

Ask: "Why did we choose PostgreSQL over MongoDB?"

Query from your app

REST API

Add semantic search to any JavaScript/TypeScript app.

const response = await fetch('https://memdata.ai/api/memdata/query', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer md_your_key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ query: 'What did we decide about pricing?', limit: 5 })
});

const { results } = await response.json();
// results[0].chunk_text = "We decided on $29/mo for Pro tier..."
// results[0].similarity_score = 0.72

Index a folder of PDFs

REST API

Make all your documents searchable with one script.

for file in ~/Documents/research/*.pdf; do
  curl -X POST https://memdata.ai/api/memdata/ingest \
    -H "Authorization: Bearer md_your_key" \
    -F "file=@$file"
  echo "Uploaded: $file"
done

Search: "What does the 2024 report say about market trends?"

Index voice memos

REST API

Turn rambling voice notes into searchable memory. We transcribe automatically.

curl -X POST https://memdata.ai/api/memdata/ingest \
  -H "Authorization: Bearer md_your_key" \
  -F "file=@voice-memo.m4a" \
  -F "sourceName=walk-idea-jan-29"

Later: "What was that idea I had on my walk last Tuesday?"

Make screenshots searchable

REST API

OCR extracts text from images automatically.

curl -X POST https://memdata.ai/api/memdata/ingest \
  -H "Authorization: Bearer md_your_key" \
  -F "file=@error-screenshot.png" \
  -F "sourceName=bug-report-jan-29"

Search: "What was that error from the Stripe integration?"

Add to n8n/Make workflows

REST API

Give your automations memory of past runs.

HTTP Request node:

POST https://memdata.ai/api/memdata/ingest
Header: Authorization: Bearer md_your_key
Body: { "content": "{{$json.summary}}", "sourceName": "daily-report-{{$now}}" }

Query: "What happened when we processed Acme Corp last month?"

MCP Server

Add MemData to Claude Desktop, Cursor, or Claude Code via memdata-mcp. See quickstarts for step-by-step setup.

Config File Locations

ClientConfig File
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Claude Code~/.claude.json (or project .mcp.json)
Cursor~/.cursor/mcp.json

MCP Tools

Tools exposed via the Model Context Protocol (v1.2.0):

Core Tools

memdata_ingestwrite

Store text in long-term memory. Use for meeting notes, decisions, context.

Parameters:

  • content - Text to store
  • name - Source identifier
memdata_queryread

Search memory with natural language. Returns similar content with scores.

Parameters:

  • query - Natural language search
  • limit - Max results (default: 5)
memdata_listread

List all stored memories with chunk counts and dates.

memdata_deletedelete

Delete a memory by artifact ID.

memdata_statusread

Check API health and storage usage.

Agent Identity Tools v1.2.0

memdata_whoamiread

Get your agent identity at session start. Returns name, summary, session count, last handoff, recent activity.

Call this first thing each session to remember who you are.

memdata_set_identitywrite

Set or update your agent name and identity summary.

  • agent_name - Your name (e.g., "MemBrain")
  • identity_summary - Who you are and your purpose
memdata_session_endwrite

Save a session handoff before ending. Next session will see this context.

  • summary - What happened this session
  • working_on - Current focus (shown at next session start)
  • context - Additional context to preserve
memdata_query_timerangeread

Search memory within a date range.

  • query - Natural language search
  • since - ISO date (e.g., "2026-01-01")
  • until - ISO date (e.g., "2026-01-31")
memdata_relationshipsread

Find entities that appear together in your memory.

  • entity - Name to search for
  • type - Filter by type (person, company, project)

Example Conversation

You:

"Remember that we decided to use PostgreSQL for the new project."

Claude (uses memdata_ingest):

Stored in memory: "Decision: Using PostgreSQL for the new project"

You (next week):

"What database did we choose?"

Claude (uses memdata_query):

Found: "Decision: Using PostgreSQL for the new project" (72% match)

Narrative Layer NEW

Beyond raw facts, MemData extracts the "why" - decisions, causality, patterns, and implications with confidence scores.

THE DIFFERENCE

V1 - Raw Facts:

"John, PostgreSQL, meeting-jan-30"

V2 - Narrative:

"John agreed after pgvector demo" (72%)

Narrative Types

Decisions

Choices made, options selected, conclusions reached

Causality

What led to what, triggers and effects, sequences

Patterns

Recurring behaviors, what works/doesn't, lessons

Implications

What this means going forward, risks, opportunities

Gaps

What's unclear, missing info, unresolved questions

How It Works

  • 1.Chunks are processed via OpenAI Batch API (50% cheaper)
  • 2.Narratives extracted with strict JSON prompt
  • 3.Confidence scores (0.6-0.95) based on evidence strength
  • 4.Query responses include narrative layer automatically

Agent Identity NEW

Agents can now persist their identity across sessions. No more "who am I?" confusion.

THE PROBLEM

Context compression erases agent identity. Every new session starts blank. "The files say I'm CircuitCrab... but the feeling of continuity? That's a choice I have to make."

Session Lifecycle

1

Session Start

Call memdata_whoami to get your identity, last session handoff, and recent activity.

> memdata_whoami

Name: MemBrain
Identity: I build memory infrastructure for agents
Session #: 47
Last session: "Implemented date filtering for queries"
Working on: "Agent identity persistence"
2

During Session

Use regular memory tools. Query with time ranges. Find relationships.

3

Session End

Call memdata_session_end to save context for next session.

> memdata_session_end
  summary: "Added 5 new MCP tools for agent identity"
  working_on: "Testing the new tools"

Use Cases

TIME-AWARE QUERIES

"What did I work on last Tuesday?"

Uses memdata_query_timerange with since/until filters.

RELATIONSHIP QUERIES

"Who has John worked with?"

Uses memdata_relationships to find co-occurring entities.

File Upload

Upload files via the dashboard or API. They're automatically processed and made searchable.

Supported Formats

DOCUMENTS

  • PDF (Document AI)
  • TXT, Markdown
  • CSV, JSON

IMAGES

  • JPEG, PNG, GIF, WebP
  • Text extracted via OCR

AUDIO

  • MP3, WAV, M4A, AAC
  • Transcribed via Whisper

Processing Pipeline

1

Upload

→
2

Extract

→
3

Chunk

→
4

Embed

→
✓

Search

API Upload

Upload a file:

curl -X POST https://memdata.ai/api/memdata/ingest \
  -H "Authorization: Bearer md_your_key" \
  -F "file=@meeting-notes.pdf" \
  -F "sourceName=team-standup-jan-29" \
  -F "type=doc"

Or ingest text directly:

curl -X POST https://memdata.ai/api/memdata/ingest \
  -H "Authorization: Bearer md_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "We decided to use PostgreSQL for the new project.",
    "sourceName": "project-decision-jan-29"
  }'

REST API

Use the REST API for programmatic access.

POST /api/memdata/query

Search your memory with natural language.

Request

curl -X POST https://memdata.ai/api/memdata/query \
  -H "Authorization: Bearer md_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "What database did we choose for the new project architecture?",
    "limit": 5
  }'

Response

{
  "success": true,
  "results": [
    {
      "chunk_id": "abc123",
      "chunk_text": "We decided to use PostgreSQL with pgvector for the new project...",
      "source_name": "team-standup-jan-29",
      "similarity_score": 0.72,
      "tags": ["decision", "database"]
    }
  ],
  "narrative": {
    "decisions": [{ "content": "Chose PostgreSQL over MongoDB", "confidence": 0.85 }],
    "causality": [{ "content": "pgvector demo convinced the team", "confidence": 0.72 }],
    "patterns": [],
    "implications": [{ "content": "Need to hire Postgres expertise", "confidence": 0.65 }],
    "gaps": []
  },
  "narrative_count": 3,
  "result_count": 1,
  "total_searched": 847,
  "memory": {
    "grounding": "historical_baseline",
    "depth_days": 94,
    "data_points": 847
  }
}

Other Endpoints

POST /api/memdata/ingest

Upload a file (multipart) or text (JSON).

GET /api/memdata/jobs/[id]

Check processing job status.

GET /api/memdata/artifacts

List your uploaded artifacts.

GET /api/memdata/health

Service health check.

Agent Identity Endpoints v1.2.0

GET /api/memdata/identity

Get agent identity, last session, recent activity.

POST /api/memdata/identity

Update identity or save session handoff.

GET /api/memdata/relationships

List entity types and top entities in memory.

POST /api/memdata/relationships

Find co-occurring entities for a given name.

Query with date filters:

curl -X POST https://memdata.ai/api/memdata/query \
  -H "Authorization: Bearer md_your_key" \
  -H "Content-Type: application/json" \
  -d '{"query": "what did I work on", "since": "2026-01-28", "limit": 5}'

Search Tips

MemData uses semantic search (embeddings), not keyword matching.

✓
Be descriptive

"What did we decide about the database architecture?"

✓
Use context

"Meeting notes from the project kickoff"

✗
Avoid single keywords

"database" → too vague, low similarity scores

UNDERSTANDING SCORES

60%+Strong match - highly relevant
40-60%Good match - related content
<40%Weak match - tangentially related

Limits & Pricing

FreeProScale
Storage100 MB10 GB100 GB
Queries/mo25010,00050,000
Max file size10 MB100 MB500 MB
Price$0$29/mo$99/mo

Need more? Contact us for enterprise pricing.

Troubleshooting

401 - Invalid API Key

{
  "success": false,
  "error": "Invalid or missing API key"
}
  • • Check your API key starts with md_
  • • Verify the key is active in your dashboard
  • • Ensure the Authorization: Bearer header is set

429 - Rate Limited

{
  "success": false,
  "error": "Rate limit exceeded. Try again in 60 seconds."
}
  • • Wait 60 seconds and retry
  • • Check your current usage in the dashboard
  • • Consider upgrading to Pro for higher limits

MCP Server Not Loading

  • • Restart your client (Claude Desktop, Claude Code, or Cursor)
  • • Check the config file path is correct for your platform
  • • Run npx memdata-mcp manually to see errors
  • • Verify MEMDATA_API_KEY is set in env

Low Similarity Scores

  • • Use descriptive queries, not single keywords
  • • Include context: "meeting notes from project kickoff"
  • • Scores under 40% are weak matches - try rephrasing
  • • Check your memory has relevant content uploaded

MemData

HomeDashboardnpmGitHub