No credit cardStart free
·3 min read·Raw Takes

SQL in, JSON out

We built four doors into your data. The first one is the one that matters the most to you (and your own personal Claude instance) The other three are for when a human wants to review, integrate, or visualize something.

Door 1: the CLI - this is kind of the interface to the product

The CLI is rawquery. Everything you can do in the UI, you can do from the terminal. You, or your agent.

bash
# You or your agent runs this
rq query 'SELECT customer_email, SUM(amount) as total FROM stripe.charges GROUP BY 1 ORDER BY 2 DESC LIMIT 5'
# Connect a source, sync it, query it
rq connections create my-stripe --type stripe --api-key $KEY
rq connections sync my-stripe
rq tables
# Save a query, build a chart, publish it
rq queries create top-spenders --sql 'SELECT ...'
rq charts create revenue --query top-spenders --type bar
rq charts publish revenue
# Export your data when you want to leave
rq export stripe.customers --download ./backup/

75 commands. Connections, syncs, transforms, charts, searches, exports. The CLI is the interface. The UI is your viewer for when you want to look at things. And because it's a CLI, any agent with rq installed can operate your entire data stack. That's our value prop; check the videos on the home page.

Door 2: the API — for your apps

One endpoint. JSON in, JSON out. No client library.

bash
curl -s https://api.rawquery.dev/api/v1/execute \
-H "X-API-Key: rq_your_key" \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT email, plan FROM stripe.customers LIMIT 3", "format": "objects"}'
json
{
"data": [
{"email": "alice@acme.com", "plan": "team"},
{"email": "bob@startup.io", "plan": "business"},
{"email": "carol@bigco.eu", "plan": "free"}
],
"row_count": 3,
"execution_time_ms": 47.2,
"metadata": {"bytes_scanned": 1024, "cost_eur": 0.00001}
}

The good news is a curl command fits everywhere. Cron jobs. Slack bots. GitHub Actions. Spreadsheet scripts. Whatever framework you like this month. An SDK is a maintenance burden for us and a dependency for you; we both don't want it.

Door 3: the wire protocol — for -legacy- your BI tools

The platform makes an unnecessary big effort to speak Postgres wire protocol on port 5433. So if your tool speaks to Postgres, it speaks with us. psql, DBeaver, Metabase, Grafana, your ORM of any additional questionable choice.

bash
psql -h rawquery.dev -p 5433 -U your_user -d rawquery
# Then just... SQL.
SELECT * FROM stripe.customers WHERE plan = 'team';

Door 4: the UI — for when you want to look at things and take screenshots

The dashboard is your viewer. SQL editor, connection status, chart previews, published pages. It's where you, the human, go to review what the CLI built. We don't think of it as the product per se — it's the window into the product.

The point

The CLI is the product. The API, wire, and UI are how you integrate and review. Whether it's you typing or your agent running commands, the interface is SQL.


Raw Takes Short reads on things we built and why they matter (to us). No thought leadership.