Features
One write path for connected, searchable context.
RushDB turns structured data into connected graph context as it arrives. Choose the text fields you want indexed for semantic search, and give agents a live view of the labels, properties, and relationships they can query.
RushDB combines graph relationships, vector search, typed records, and live schema discovery in one database, exposed through a REST API, TypeScript and Python SDKs, and a native MCP server.
From first write to agent access.
The complete data lifecycle: push JSON, approve suggested relationships, index text with managed or your own embeddings, retrieve by meaning and relationship, query one contract, expose live schema, hand agents direct tool access, and deploy on RushDB Cloud or your own Neo4j or Aura instance. Each example is the real, runnable path — not pseudocode.
01 · Connect your data
Turn incoming data into queryable graph context.
RushDB infers property types as data arrives. Nested payloads become linked records immediately. Flat sources can be analyzed for reviewable relationship patterns after import.
Accept real payloads
Use nested JSON, arrays of records, or CSV-shaped imports instead of forcing every source through a hand-built staging model.
Keep structure queryable
Nested objects become records connected by default parent-child relationships, so the source structure survives the import.
Evolve flat imports safely
When separate flat sources need joins, suggested patterns stay reviewable before they become durable graph relationships.
Import nested records in one call.
from rushdb import RushDB
db = RushDB('RUSHDB_API_KEY')
db.records.import_json({
'label': 'COMPANY',
'data': {
'name': 'Acme Corp',
'DEPARTMENT': [
{'name': 'Engineering', 'headcount': 42},
{'name': 'Design', 'headcount': 12},
],
},
})02 · Relationship suggestions
Suggested relationships. Approved by you.
RushDB can analyze the labels, properties, and existing edges in a project and suggest relationship patterns worth making explicit — such as ORDER PLACED_BY CUSTOMER after a flat import. Analysis proposes graph structure; approval is the step that changes relationships.
Useful after imports and schema changes
Run analysis when new flat sources arrive or the schema evolves, and stable domain relationships surface as reviewable candidates.
Two explicit modes
join_pattern creates relationships by matching keys between records. retype_existing_relationship replaces default import edges with an explicit domain type.
Reversible by design
Ignore a suggestion without changing anything, or delete an approved pattern along with the relationships it created.
Analyze, review, approve.
from rushdb import RushDB
db = RushDB('RUSHDB_API_KEY')
# Queue analysis, then poll list() until analysis.status returns to "idle"
db.relationships.patterns.analyze()
result = db.relationships.patterns.list()
for pattern in result.data['patterns']:
print(pattern['id'], pattern['type'], pattern['confidence'])
# Approval is the step that changes relationships
db.relationships.patterns.approve(pattern_id)03 · Managed embeddings
Keep searchable text indexed as records change.
Define an embedding index for the label and string property you want to retrieve by meaning. Use managed embeddings for the shortest path or external vectors for model control.
Index only useful text
Choose the specific property that should be recalled by meaning, such as an agent output, document body, or product description.
Backfill stays attached
Managed indexes can generate vectors for existing records and keep updated values searchable as records change.
Model control remains possible
External indexes let teams supply their own vectors when compliance, local inference, or domain models matter.
Create an index, then search with plain text.
from rushdb import RushDB
db = RushDB('RUSHDB_API_KEY')
db.ai.indexes.create({'label': 'MEMORY', 'propertyName': 'output'})
recall = db.ai.search({
'labels': ['MEMORY'],
'propertyName': 'output',
'query': 'What pricing decision affected revenue?',
'limit': 10,
})04 · Vector + graph search
Retrieve meaning and connected context from one backend.
Semantic search is useful when the query is fuzzy. Graph traversal and structured filters add the context that similarity alone cannot provide.
Ground fuzzy search with facts
Use exact filters for tenant, status, category, permission scope, or workflow state before similarity ranking happens.
Keep evidence connected
Documents, entities, policies, decisions, and users can stay in one graph instead of being rejoined after vector search.
Support RAG and apps
The same backend can power agent recall, knowledge-base retrieval, faceted search, and operational dashboards.
Prefilter semantic recall with ordinary fields.
from rushdb import RushDB
db = RushDB('RUSHDB_API_KEY')
recall = db.ai.search({
'labels': ['MEMORY'],
'propertyName': 'output',
'query': 'What did we decide about the Pro launch?',
'where': {'agent_id': 'agent-42', 'status': 'approved'},
'limit': 10,
})05 · Unified query API
Query records. Inspect the graph. Use one shape.
RushDB applies the same SearchQuery-shaped request model across records and graph introspection. Applications and agents can filter stored data, discover labels, inspect relationships, read property metadata, and fetch distinct values or ranges before constructing the next query.
Build adaptive UIs
Fetch labels, property metadata, and distinct values or ranges to build filters that match the data actually present.
Support analytics inline
Use select expressions, groupBy, time buckets, and derived metrics for dashboard-style answers without exporting to another analytics store.
Reduce agent query drift
The same request shape teaches agents how to discover structure and then query records without switching mental models.
One intent, five perspectives.
from rushdb import RushDB
db = RushDB('RUSHDB_API_KEY')
# One intent, defined once
query = {
'labels': ['ORDER'],
'where': {'status': 'paid', 'CUSTOMER': {'tier': 'enterprise'}},
}
records = db.records.find(query) # 1. matching entities
labels = db.labels.find(query) # 2. entity types in this slice
properties = db.properties.find(query) # 3. fields in this slice
relationships = db.relationships.find(query) # 4. graph links in this slice
# 5. canonical values for one property in this slice:
# POST /properties/:propertyId/values with the same query body06 · Schema API
Let agents inspect real structure before they query.
RushDB exposes a live snapshot of project structure as compact Markdown or structured JSON. Applications can inject it into agent context or use it to build controlled interfaces.
Grounded tool calls
Agents can read the current data shape before they call search, aggregation, or relationship traversal tools.
Dynamic filters
Applications can build filter chips, numeric sliders, and date ranges from schema output instead of hardcoding UI options.
Less prompt maintenance
As records arrive and the schema evolves, the agent reloads schema instead of relying on stale hand-written schema notes.
Load compact schema context at session start.
from rushdb import RushDB
db = RushDB('RUSHDB_API_KEY')
schema = db.ai.get_schema_markdown({
'labels': ['Order', 'User', 'Product'],
})
print(schema.data)07 · MCP server
Give agents a direct path to structured memory.
The RushDB MCP server exposes database operations as tools for MCP-compatible clients. Agents can discover structure before they build queries.
Hosted or local connection
Connect ChatGPT, Claude.ai, and other web assistants to the hosted OAuth endpoint at mcp.rushdb.com/mcp — one URL, sign in, no install. Desktop and coding clients run the local npx server.
Database operations as tools
Agents can browse structure, query records, manage relationships, run bulk operations, export data, and use transactions.
Discovery before execution
The documented workflow starts with schema, classifies intent, loads the query spec when needed, and then builds the tool call.
Connect hosted with OAuth, or run the local server.
Hosted MCP with OAuth
https://mcp.rushdb.com/mcp
Add this URL as a connector in ChatGPT, Claude.ai, or any web client, then sign in. No install, no API key handling.
# Local MCP server (desktop and coding clients): RUSHDB_API_KEY=your-key npx -y @rushdb/mcp-server
08 · Deployment options
Choose where the graph and the API run.
RushDB supports managed cloud, BYOC, and self-hosted deployment models. Choose the operational boundary that matches your application.
Managed for speed
Use RushDB Cloud when the priority is getting a project live without operating Neo4j or the RushDB service.
BYOC for data control
Keep graph data in your own Neo4j or Aura instance while the RushDB API layer remains managed.
Self-host for full control
Run the API, metadata database, graph store, and embedding configuration yourself when infrastructure policy requires it.
Start a self-hosted stack with Docker Compose.
import RushDB from '@rushdb/javascript-sdk'
// Same API surface — point the SDK at your self-hosted instance
const db = new RushDB('RUSHDB_API_KEY', {
url: 'http://your-rushdb-server.com/api/v1',
})What's in the box.
Start with the capability your workflow needs. Each page explains the smallest useful path, the operational boundary, and the relevant documentation.
One feature set. Use the interface that fits.
RushDB database capabilities start with the REST API. Use the same product surface through the TypeScript or Python SDKs, or give MCP-compatible agents direct tool access to database operations.
REST API
Canonical surface
Use language-agnostic HTTP endpoints directly. OpenAPI documents records, relationships, transactions, AI search, and more.
Explore REST APITypeScript SDK
Browser + Node.js
Use a type-safe client for application code while keeping the same RushDB capabilities and query semantics.
Explore TypeScript SDKPython SDK
Sync + async
Use the Python client for backends, scripts, data workflows, and agent services without dropping down to raw HTTP.
Explore Python SDKMCP server
Agent-facing tools
Expose discovery, records, relationships, queries, bulk work, exports, and transactions to MCP-compatible clients.
Explore MCP serverAgents that know your data
before they query it.
RushDB builds a live schema from every record you push. Agents read it once per session — and never construct a query blind again.
# Graph Schema ## Dataset Summary | Label | Count | |----------|-------:| | PRODUCT | 4,821 | | ORDER | 12,304 | | CUSTOMER | 6,882 | --- ## PRODUCT — 4,821 records | Property | Type | Values / Range | Vector | |-----------|---------|----------------------------|--------| | name | string | "Wireless Headphones" (+8) | cosine | | price | number | 9.99 – 2,499.00 | — | | category | string | electronics, furniture … | — | | inStock | boolean | true / false | — | | Relationship | Direction | Target | |--------------|-----------|----------| | CONTAINS | in | ORDER | --- ## ORDER — 12,304 records | Property | Type | Values / Range | Vector | |-----------|----------|---------------------------|--------| | orderId | string | "ORD-0001" … (+12k) | — | | status | string | pending, shipped (+2) | — | | total | number | 9.99 – 4,998.00 | — | | createdAt | datetime | 2023-01-01 … 2024-12-31 | — | | Relationship | Direction | Target | |--------------|-----------|----------| | CONTAINS | out | PRODUCT | | PLACED_BY | out | CUSTOMER | --- ## CUSTOMER — 6,882 records | Property | Type | Values / Range | Vector | |----------|--------|-----------------------|--------| | email | string | "alice@…" (+6k) | — | | name | string | "Alice Chen" (+6k) | — | | country | string | US, GB, DE, FR (+12) | — | | tier | string | free, pro, enterprise | — | | Relationship | Direction | Target | |--------------|-----------|--------| | PLACED_BY | in | ORDER |
What the agent now knows
✓ Valid filter ranges
Agent knows price ranges from $9.99 to $2,499. It won't filter for price > $10,000 and return empty results.
✓ Real property names
Agent knows the field is "category", not "type" or "productType". No hallucinated field names. No silent query failures.
✓ Traversable relationships
Agent knows CUSTOMER → ORDER → PRODUCT is the real topology. Multi-hop queries built with confidence, not guesswork.
# Called once at agent session start
schema = db.ai.get_schema_markdown().data
# Inject into system prompt
system_prompt += f"\n\nDatabase schema:\n{schema}"
# Agent now constructs all queries against real structureOne call. One session. No hallucinated schema.
Fewer empty results. Fewer hallucinations. Agents that explain themselves.
The same SearchQuery that finds records also discovers what labels, properties, and relationships exist — making schema introspection a natural extension of the query you’re already writing. No separate schema API to learn.
Keep evaluating.
Guides
Understand the concepts
Agent memory, GraphRAG, graph analytics, and the tradeoffs behind each capability.
Browse guidesUse cases
See it applied
Implementation blueprints across industries and cross-functional engineering patterns.
Browse use casesCompare
Evaluate against alternatives
Sourced comparisons with Neo4j, Pinecone, Weaviate, SurrealDB, and Mem0.
Browse comparisons