Claude, with live context.
Expose Basalt views to Claude as typed tools. Claude reads current rows through a scoped role, so answers reflect data from seconds ago.
Expose Basalt views to Claude as typed tools. Claude reads current rows through a scoped role, so answers reflect data from seconds ago.
Basalt generates a tool definition for each view, with an input schema built from its columns and filters. Use it with the Messages API or the Basalt MCP server. Every call runs under a read-only role with row limits.
Pick the views Claude can read and a row limit per call. Basalt prints tool definitions you pass in the tools array, or an MCP server URL.
# expose two views to Claude as tools basalt connect anthropic --views orders_live,inventory --role readonly
Write plain SQL over the source. Basalt keeps the view current with every record and tracks lineage back to the topic, partition and offset.
CREATE MATERIALIZED VIEW revenue_by_min AS SELECT date_trunc('minute', ts) AS minute, currency, sum(amount) AS revenue, count(*) AS payments FROM payments WHERE status = 'captured' GROUP BY 1, 2;
Every view is an endpoint the moment it exists. Call it over REST, connect with any Postgres client, or use the SDK from your app.
curl https://api.basalt.dev/v1/views/revenue_by_min?limit=5 \ -H "Authorization: Bearer $BASALT_TOKEN"
Input schemas come from view columns, so Claude asks for valid filters.
Connect Claude Desktop, Claude Code or any MCP client with one URL.
Calls run under a read-only role with row limits and column masks.
Every tool call is logged with its arguments, rows returned and latency.