Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/strong-buses-burn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'rushdb-dashboard': patch
'rushdb-docs': patch
'@rushdb/javascript-sdk': patch
'@rushdb/mcp-server': patch
'@rushdb/skills': patch
'rushdb-core': patch
---

Dashboard help panel improvements
26 changes: 21 additions & 5 deletions docs/docs/mcp-server/configuration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,32 @@ sidebar_position: 4

# Configuration

| Variable | Required | Default | Description |
|---|---|---|---|
| `RUSHDB_API_KEY` | **yes** | — | Your RushDB API token (from the dashboard) |
| `RUSHDB_API_URL` | no | `https://api.rushdb.com/api/v1` | Override for self-hosted or staging |
## Connection modes

### Remote OAuth (ChatGPT, Claude.ai, web clients)

No configuration file needed. Point your AI client at:

```
https://mcp.rushdb.com/mcp
```

Authentication is handled via OAuth — your client will redirect to RushDB for sign-in. No API key is required in this mode; you authorize with your RushDB account and the server issues a token scoped to the selected project.

### Local (API key)

For stdio-based clients (Claude Desktop, Cursor, VS Code), the MCP package is configured through environment variables:

| Variable | Required | Default | Description |
| ---------------- | -------- | ------------------------------- | ------------------------------------------ |
| `RUSHDB_API_KEY` | **yes** | — | Your RushDB API token (from the dashboard) |
| `RUSHDB_API_URL` | no | `https://api.rushdb.com/api/v1` | Override for self-hosted or staging |

:::tip Security
Treat `RUSHDB_API_KEY` like a password — do not commit it to version control. Prefer MCP client `env` injection or OS keychains over `.env` files in repositories.
:::

## Providing values
## Providing API key values

### 1) MCP client configuration

Expand Down
14 changes: 13 additions & 1 deletion docs/docs/mcp-server/introduction.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ sidebar_position: 1

# MCP Server

Connect Claude, Cursor, or any MCP-compatible client to your RushDB database. Type natural language; the server handles discovery, query building, and execution.
Connect Claude, ChatGPT, Cursor, or any MCP-compatible client to your RushDB database. Type natural language; the server handles discovery, query building, and execution.

```
You: How many MOVIE records have a rating above 8?
Expand All @@ -18,6 +18,18 @@ Claude: [calls getOntologyMarkdown → confirms MOVIE label and rating field]
Result: 1 movie matched (Inception, rating 8.8)
```

## Connection modes

**Remote OAuth** — connect directly from ChatGPT, Claude.ai, or any web-based AI assistant. No local installation required. Authenticates via your RushDB account at:

```
https://mcp.rushdb.com/mcp
```

**Local (API key)** — install `@rushdb/mcp-server` in Claude Desktop, Cursor, VS Code, or any stdio-based MCP client. Provide your RushDB API key as an environment variable.

→ [Quickstart](./quickstart) for setup instructions for both modes.

## Mandatory workflow

The MCP server ships with a built-in system prompt that enforces a four-step workflow:
Expand Down
50 changes: 44 additions & 6 deletions docs/docs/mcp-server/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,39 @@ sidebar_position: 2

# Quickstart

Two ways to connect:

- **Remote OAuth** — connect directly from ChatGPT, Claude.ai, or any web-based AI client with no local installation. Uses `https://mcp.rushdb.com/mcp` and authenticates via your RushDB account.
- **Local (API key)** — install the MCP package in Claude Desktop, Cursor, VS Code, or any stdio-based client. Requires a RushDB API key.

---

## ChatGPT

Connect RushDB to ChatGPT as a connector — no local installation required:

1. In ChatGPT, open **Settings → Connectors → Add connector**
2. Enter the MCP URL: `https://mcp.rushdb.com/mcp`
3. Complete the OAuth sign-in with your RushDB account
4. Select the project you want to expose to ChatGPT

After linking, ChatGPT can query and write to your RushDB project directly.

:::tip Troubleshooting
If you see `OAuth linked, action discovery failed`, see the [Troubleshooting](./troubleshooting) page.
:::

---

## Claude.ai

1. In Claude.ai, open **Settings → Integrations → Add integration**
2. Enter the MCP URL: `https://mcp.rushdb.com/mcp`
3. Authorize with your RushDB account via OAuth
4. The integration is now active across Claude.ai conversations

---

## Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
Expand Down Expand Up @@ -66,17 +99,22 @@ Ask Claude:

**Override API URL** (self-hosted / staging): add `"RUSHDB_API_URL": "https://your-host/api/v1"` to any `env` block above.

## Hosted MCP endpoint (connected clients)
## Remote MCP endpoint

The hosted endpoint for all remote and web-based clients:

For connected clients that use an HTTP MCP endpoint, use:
```
https://mcp.rushdb.com/mcp
```

`https://mcp.rushdb.com/mcp`
Do not use the root domain (`https://mcp.rushdb.com`) — always include `/mcp`.

Do not use the root domain (`https://mcp.rushdb.com`) for connector setup.
Local tunnel testing: `https://<your-ngrok-host>.ngrok-free.app/mcp`

If you are testing locally through a tunnel, use the full tunnel endpoint path as well:
OAuth discovery metadata is available at:

`https://<your-ngrok-host>.ngrok-free.app/mcp`
- `https://mcp.rushdb.com/.well-known/openid-configuration`
- `https://mcp.rushdb.com/.well-known/jwks.json`

## Enable the Query Builder prompt (recommended)

Expand Down
198 changes: 198 additions & 0 deletions docs/docs/tutorials/third-party-webhook-ingestion.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
---
sidebar_position: 30
title: 'Webhook Ingestion from Third-Party Tools (Clay, Supabase, Superglue)'
description: 'A beginner-friendly guide to send JSON or CSV from no-code and data platforms into RushDB using custom HTTP requests.'
tags: [Ingestion, Webhooks, Getting Started, No-Code]
---

# Webhook Ingestion from Third-Party Tools

Many tools can send data to a custom HTTP endpoint. That means you can connect your existing workflow to RushDB without writing a full app.

This guide is for non-technical teams and covers:

- Clay
- Supabase
- Superglue
- Any platform that supports custom HTTP requests or webhooks

## What you need

Before you start, prepare these values:

- Your RushDB API key
- Your RushDB API base URL: `https://api.rushdb.com`
- A destination label (example: `LEAD`, `CUSTOMER`, `ORDER`)
- A sample JSON or CSV payload

You can get your API key from your dashboard project settings.

## The universal webhook recipe

Most platforms ask for the same settings. Use these defaults:

- Method: `POST`
- URL (JSON import): `https://api.rushdb.com/api/v1/records/import/json`
- URL (CSV import): `https://api.rushdb.com/api/v1/records/import/csv`
- Header: `Authorization: Bearer YOUR_RUSHDB_API_KEY`
- Header: `Content-Type: application/json` (for JSON)
- Body: include `label` and your data

### JSON request body shape

```json
{
"label": "LEAD",
"data": [
{
"externalId": "lead_001",
"name": "Ava Collins",
"email": "ava@example.com",
"source": "Clay"
}
]
}
```

### CSV request body shape

For CSV import, send your CSV text as request body and include a label parameter based on your platform's request builder. If your platform cannot send raw CSV, convert CSV rows to JSON and use the JSON endpoint.

## Setup in Clay

1. Open your table/workflow where rows are ready to export.
2. Add an action step that can send an HTTP request (sometimes called Webhook or API request).
3. Set method to `POST`.
4. Set URL to `https://api.rushdb.com/api/v1/records/import/json`.
5. Add headers:

- `Authorization: Bearer YOUR_RUSHDB_API_KEY`
- `Content-Type: application/json`

6. Build the request body using Clay row fields and this structure:

```json
{
"label": "LEAD",
"data": [
{
"externalId": "{{row.id}}",
"name": "{{row.name}}",
"email": "{{row.email}}",
"company": "{{row.company}}"
}
]
}
```

7. Run a test send, then verify the new records in your RushDB project.

## Setup in Supabase

Supabase usually sends outbound HTTP from Edge Functions, triggers, or automation flows.

1. Choose the event you want to sync (insert/update).
2. Configure an outbound `POST` request to RushDB.
3. Use URL: `https://api.rushdb.com/api/v1/records/import/json`.
4. Add headers:

- `Authorization: Bearer YOUR_RUSHDB_API_KEY`
- `Content-Type: application/json`

5. Map changed row fields into `data`.

Optional payload example:

```json
{
"label": "CUSTOMER",
"data": [
{
"externalId": "{{new.id}}",
"email": "{{new.email}}",
"plan": "{{new.plan}}",
"updatedAt": "{{new.updated_at}}"
}
]
}
```

If your Supabase workflow exports CSV, route that payload to `https://api.rushdb.com/api/v1/records/import/csv` instead.

## Setup in Superglue

1. In your Superglue pipeline, add a destination step using custom HTTP.
2. Select `POST` method.
3. Choose JSON endpoint (`/api/v1/records/import/json`) for mapped objects or CSV endpoint (`/api/v1/records/import/csv`) for file/text streams.
4. Add Authorization header with your RushDB API key.
5. Map source fields to your target object shape.
6. Send a test batch and confirm records appear in RushDB.

Tip: start with a single small batch, validate fields, then scale.

## JSON and CSV quick reference

### Use JSON when

- Your source already provides structured objects
- You want field-level mapping control
- You want easier debugging of each record

### Use CSV when

- Your source exports files or flat tables
- You do not need nested object structures
- You want fast bulk upload from tabular datasets

## Troubleshooting

### 401 or 403 errors

- Check API key value and spacing in `Authorization` header
- Ensure the key belongs to the correct project

### 400 validation errors

- Confirm `label` exists and is non-empty
- Validate JSON syntax (trailing commas are common issues)
- Check required fields and data types

### Empty or malformed CSV imports

- Ensure header row exists
- Confirm consistent delimiter and quoting
- Verify UTF-8 encoding

### Duplicate records after retries

Webhook systems may retry requests. Use an external stable ID (`externalId`) in each record so you can deduplicate and upsert safely.

For stronger idempotency patterns, see [Event-Driven Ingestion from Webhooks and Queues](./event-driven-ingestion).

## Optional: test from terminal first

If you want to verify credentials before configuring a platform:

```bash
export RUSHDB_API_KEY="YOUR_RUSHDB_API_KEY"

curl -X POST "https://api.rushdb.com/api/v1/records/import/json" \
-H "Authorization: Bearer $RUSHDB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"label": "LEAD",
"data": [
{
"externalId": "lead_001",
"name": "Ava Collins",
"email": "ava@example.com"
}
]
}'
```

## Related docs

- [Importing data from external sources](./importing-data)
- [Event-Driven Ingestion from Webhooks and Queues](./event-driven-ingestion)
- [REST API introduction](../rest-api/introduction)
Loading
Loading