Open source. Apache 2.0.

Give your customers agentic analytics out of the box.

Accurate, fast, and scalable agentic data layer to build your next generation of AI features.

Read the docs
npm install -g @bonnard/cli

Used by B2B companies shipping accurate AI Analytics

Erblotse

You're sitting on a gold mine.

Define metrics in YAML, connect your warehouse, and ship governed AI analytics with multi-tenancy and access control built in.

01

Connect your data, define your metrics.

02

Bonnard handles multi-tenancy, governance, and the semantic layer.

03

Ship AI analytics inside your product or over MCP for your customers.

100% Accurate. 100% Scalable.

Define your metrics, business rules, and access policies once. Bonnard enforces them on every query, so your agents execute on real context, not hallucinated guesses.

Schema
Search...⌘K
NAMEDESCRIPTIONFIELDS
Vorders_overview
Joins orders, customers, and line_items. Pre-aggregated AOV, fulfillment rate, repeat %.15
Vrevenue_analytics
Net revenue, refunds, and MRR by region, channel, and cohort month.13
Vproduct_performance
SKU-level sell-through, return rate, and contribution margin.12
Vcustomer_360
LTV, order frequency, RFM segment, and churn probability per customer.15
Corders
Source: warehouse.public.orders. One row per transaction.14
Ccustomers
Source: warehouse.public.customers. Deduplicated on email.13
Cproducts
Source: warehouse.public.products. Includes variants and pricing tiers.8
Cline_items
Source: warehouse.public.line_items. Quantity, unit price, discount applied.9
Cstores
Source: warehouse.public.stores. Physical and online locations with region.5

Everything your customers need

One governed schema powers every surface. Dashboards, agents, SDKs, and MCP all query the same definitions.

what's driving revenue this quarter?
Let me start by exploring the available data sources to understand what's available for revenue analysis.
Used Bonnard MCP integration>
Now let me pull 2025 revenue data with a monthly breakdown:
40.0M30.0M20.0M10.0M0
JanFebMarAprMayJunJulAugSepOctNovDec

Answers your customers can trust

Your agent queries governed metric definitions, not raw tables. Every response is grounded in your business logic. No hallucinated aggregations.

View docs →
API KEYS
Publishable keypk_live_a3f8k9...x2m1
Secret keysk_live_••••••••••••
Your customer's MCP config
1{
2 "mcpServers": {
3 "acme-analytics": {
4 "url": "https://mcp.bonnard.dev/acme",
5 "headers": {
6 "Authorization": "Bearer pk_live_a3f8k9...x2m1"
7 }
8 }
9 }
10}

Offer in your product or via MCP

Embedded dashboards, React SDK, MCP server. Publishable keys let your customers access their data from wherever they work. You control what they see.

View docs →
page.tsx
1"use client"
2
3import { PageHeader } from "@/components/page-header"
4import {
5 BarChart,
6 LineChart,
7 BigValue,
8 useBonnardQuery,
9} from "@bonnard/react"
10
11function ChartCard({ title, children }) {
12 return (
13 <Card className="bg-secondary/30">
14 <CardHeader>
15 <CardTitle>{title}</CardTitle>
16 </CardHeader>
17 <CardContent>{children}</CardContent>
18 </Card>
19 )
20}
21
22function PromoCountBigValue() {
23 const { data, loading } = useBonnardQuery({
24 query: {
25 measures: ["promotion_data.count"],
26 },
27 })

SDK for every surface

REST for your app. React for embedded analytics. SQL for your internal team. Same governed model, every consumer.

View docs →
Schemasales_performanceavg_order_value
sales_performance.avg_order_value
Average revenue per transaction
DEFINITION
TYPEavg
SQLsales_amount
CHANGE HISTORY
added23 Feb 2026, 20:01
Included from salesDeploy: Initial semantic layer: sales, product, store
+ description: "Average revenue per transaction"
+ name: "avg_order_value"
+ origin_cube: "sales"
+ sql: "sales_amount"
+ type: "avg"

Browse before you ship

Explore your schema, run queries, check results. See exactly what your customers will see before it goes live.

View docs →

From zero to PoC in a week.

npm install -g @bonnard/cli