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.

Technical walkthrough

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.

Explore connect your data

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.

Explore relationship suggestions

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.

Explore managed embeddings

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.

Explore vector + graph search

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.

Explore unified query api

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

06 · 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.

Explore schema api

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.

Explore mcp server

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.

Or host your own MCP server
# 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.

Explore cloud, byoc, or self-hosted

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',
})
Schema API

Agents 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.

POST/api/v1/ai/schema/md
# 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 structure

One call. One session. No hallucinated schema.

✕ Before
✓ After
Agent filters price > 50,000 — 0 results, no explanation
Agent knows max price is $2,499 — constructs meaningful range query
Agent queries productType field — doesn't exist, silent fail
Agent queries category — real field, real values
Agent traverses USER → ITEM — relationship doesn't exist
Agent traverses CUSTOMER → ORDER → PRODUCT — exact topology

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.

Give your agent memory.