Features
Create, understand, retrieve, use, and operate context.
RushDB keeps graph relationships, semantic retrieval, live schema, operational queries, and durable records in one context layer. Applications and agents can inspect real fields, value domains, and relationship paths before they construct a query.
Write evolving operational data once. Use the resulting records, schema, relationships, values, and embeddings through REST, TypeScript, Python, or MCP.
From first write to shared operational context.
Create context from evolving payloads, understand it through live schema, retrieve it by meaning and relationship, use it through applications or agent tools, and operate it in RushDB Cloud or on your own Neo4j or Aura instance. Each example follows the current runnable API path.
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.records.vector_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.records.vector_search({
'labels': ['MEMORY'],
'propertyName': 'output',
'query': 'What did we decide about the Pro launch?',
'where': {'agent_id': 'agent-42', 'status': 'approved'},
'limit': 10,
})05 · Smart Search
Ask in natural language. Inspect the query that actually ran.
Smart Search uses the project schema to translate a natural-language request into SearchQuery, executes that query, and returns both the records and the generated query. It is a query-generation surface, not a synonym for vector similarity.
Schema-grounded generation
RushDB uses the labels, properties, and relationship structure available in the project instead of relying on a generic prompt alone.
Visible SearchQuery
The generated SearchQuery is attached to the SDK result so callers can explain which labels and filters produced the records.
Refinable context
Pass currentQuery when a user refines an existing dashboard or query-builder state rather than starting from an empty request.
Return the generated query with the records.
from rushdb import RushDB
db = RushDB('RUSHDB_API_KEY')
results = db.ai.search(
'Show open checkout incidents for enterprise accounts'
)
print(results.search_query)
print(results.warnings)
print(results.total)
print(results.data)06 · 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 body
# Analytics uses the same SearchQuery contract.
daily = db.records.find({
'labels': ['EVENT'],
'where': {'featureId': 'checkout', 'type': 'conversion'},
'select': {
'day': {'$timeBucket': {'field': '$record.timestamp', 'unit': 'day'}},
'events': {'$count': '*'},
},
'groupBy': ['day'],
'orderBy': {'day': 'asc'},
})07 · 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)08 · MCP server
Give agents a direct path to inspectable context.
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
09 · Deployment options
Choose where the graph and the API run.
RushDB supports managed cloud, External Database, 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.
External Database 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',
})Start with the part of the context lifecycle you need.
Each capability page explains the smallest useful path, its operational boundary, and the relevant documentation. Combine primitives without maintaining another representation of the data.
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
Context infrastructure, agent memory, GraphRAG, connected applications, and operational analytics.
Browse guidesUse cases
See it applied
Primary workflows and implementation blueprints organized by the system teams are building.
Browse use casesCompare
Evaluate against alternatives
Sourced comparisons with Neo4j, Pinecone, Weaviate, SurrealDB, and Mem0.
Browse comparisons