Skip to main content
Get Started
New · Ask a dashboard a question in plain English

Embed analytics in your apps, easily.

Connect your database, write a query, and ship a dashboard your customers can use inside your product. Charts, filters, embeds and an assistant that answers questions from the data already on the page — with no per-viewer fees.

app.tractorscope.com/dashboard/revenue-overview
TractorscopeRevenue Overview· Production
ShareEmbedWE
FiltersFiltersDate Range Last 90 daysRegion North America
Vieworders_view12,480Ask
Revenue
$482,915
+12.4%Example sparkline
New accounts
1,204
+8.1%Example sparkline
Avg. order
$389.10
+2.6%Example sparkline
Churn
1.8%
-0.4%Example sparkline
Revenue by month
2026
Example bar chart
Signups vs. activations
SignupsActivated
Example line chart
Revenue by category
Example pie chart
Top accounts
Northwind Trading$92,480+14%
Blue Ridge Foods$74,210+9%
Halcyon Robotics$68,905+22%
Ferrous & Co.$51,338-3%
Wayfarer Labs$46,720+6%
Orders by hour
Example bar chart
Ask this dashboard×
Which channel grew fastest last quarter?
Partner referrals grew +38% over the quarter, ahead of paid search at +11%.
Growth by channel
Example grouped bar chart
Answered from data already on this dashboard.
Ask a question…Send
app.tractorscope.com/chart/revenue-by-month
‹ Revenue OverviewRevenue by month
CancelSave
warehouse · postgres
Search tables…
Tableorders
idtext
customer_idtext
totalnumeric
created_atdate
Tablecustomers
Tableorder_items
Tableproducts
Tablerefunds
SQL
Date Range Last 90 daysRegion North America
1select date_trunc('month', created_at) as month,
2 sum(total) as revenue
3from orders
4where [created_at=daterange] and [[region=Region]]
5group by 1 order by 1
Run Query ⌘↵Format12 rows · 84 ms
Revenue by monthlast 90 days · North America
Example bar chart
EditInteractCode
Type
Bar
Series
revenuebar ▾
forecastbar ▾
Axis
Left$ 0.0a
BottomMMM 'YY
Cache
Refresh every60 min
Embedding

Analytics that lives inside your product

Drop a single chart into a page you already built, frame a whole dashboard, or send a link. Every one of them is signed per customer, so a viewer only ever sees their own rows — and none of them are priced per viewer.

app.northwind.example/usage
NNorthwind
Overview
Customers
Billing
Usage
Settings
acme-industrial
Enterprise plan
UsageFebruary · Acme IndustrialExport
Compute hours
8,412
Storage
1.9 TB
Overage
$412.80
Compute hours by monthLast 12 months
Example bar chart
Spend+18%
Example line chart
<tractorscope-chart>Both charts above are ours. Everything around them is theirs.

Native chart embeds

A web component, not a frame. The chart renders in your DOM, takes your colours and your container, and resizes with your layout — the way a chart you wrote yourself would.

usage.html
<!-- once, anywhere on the page -->
<script src=
  "https://app.tractorscope.com/embed/tractorscope-embed.js"
></script>

<!-- then wherever the chart belongs -->
<tractorscope-chart
  signature="{{ signature }}"
></tractorscope-chart>
  • No iframe. It is an element on your page, so your CSS, your fonts and your dark mode already apply to it.
  • Signed on your server. The signature names the chart and the filters, so a customer cannot widen it to somebody else's data.
  • Cached, not re-queried. Viewers read a cached result rather than hitting your database each time the page loads.
Read the web component docs

One chart, every tenant

Build the chart once. Sign it with the customer's id at request time and the same embed answers for each of them, filtered on your server rather than in the browser.

  • Filters travel in the signature. They are part of what is signed, so they cannot be edited in devtools.
  • No per-viewer pricing. Ten users or ten thousand, the bill is the same.
  • Your domain, your name. White-label the whole surface — colours, fonts and the link people land on.
server.js
const data = encodeURIComponent(
  JSON.stringify({
    chart: "cht_01GRS8C4BVZ8X9N7E86Z82DQG9",
    filters: {
      "Date Range": "last_month",
      "ClientId": customer.id, // their rows only
    },
  }),
);

const signature = createHmac("sha256", apiKey)
  .update(data)
  .digest("hex");

A whole dashboard, framed

Filters, Ask, drill-ins and all. It sizes itself to your page and takes its theme from the dashboard, not from us.

portal.acme.example/reports
TractorscopeRevenue Overview· Production
ShareEmbedWE
FiltersFiltersDate Range Last 90 daysRegion North America
Vieworders_view12,480Ask
Revenue
$482,915
+12.4%Example sparkline
New accounts
1,204
+8.1%Example sparkline
Avg. order
$389.10
+2.6%Example sparkline
Churn
1.8%
-0.4%Example sparkline
Revenue by month
2026
Example bar chart
Signups vs. activations
SignupsActivated
Example line chart
Revenue by category
Example pie chart
Top accounts
Northwind Trading$92,480+14%
Blue Ridge Foods$74,210+9%
Halcyon Robotics$68,905+22%
Ferrous & Co.$51,338-3%
Wayfarer Labs$46,720+6%
Orders by hour
Example bar chart
Ask this dashboard×
Which channel grew fastest last quarter?
Partner referrals grew +38% over the quarter, ahead of paid search at +11%.
Growth by channel
Example grouped bar chart
Answered from data already on this dashboard.
Ask a question…Send
Embed a dashboard

Or just send a link

For the people who will never have a login: a share URL, on your own domain, revocable the moment it stops being their business.

Linkreports.acme.example/s/q4-revenue
Expiresin 30 days
Passwordon
DownloadsCSV, PNG
Askenabled
All the ways to share
New · MCP server

Let your agent build the dashboard

Point Claude Code, Codex, Cursor or any MCP client at your account and it can create charts, arrange dashboards, add filters and read your schema — through tools, not by writing a charting layer into your product.

Thirty tools, not a code generator
Create and update charts, build dashboards, add filters and alerts, read a database's schema, run a query. The agent calls them; it does not write a charting layer.
A change is a field, not a file
Switching a visualisation type touches one argument. Nothing is regenerated, nothing is re-reviewed, and there is no diff to read.
It ships without a deploy
The chart is a row, not code. Change it and every dashboard and embed showing it is already changed.
Scoped keys, same permissions
The server authenticates over OAuth and a read-scoped key cannot call a tool that writes.
Connect an MCP client
tractorscope30 tools
add revenue by month to the ops dashboard
mcpcreate_chart~58 tokens
{
"dashboard_id": "dsh_01M13…",
"name": "Revenue by month",
"type": "bar",
"query": "select date_trunc(…",
}
actually make it a line chart
mcpupdate_chart~16 tokens
{
"chart_id": "cht_01M13…",
"type": "line",
}
No component to rewrite. No redeploy.

What a change costs an agent

ChangeThrough the MCP serverCharts built into your app
Add a chart to a dashboard~58 tokensone tool callone component, plus wiring
Bar chart to line chart~16 tokensone tool callread the file, write it back
Retitle it~14 tokensone tool callread the file, write it back
Point it at a different query~40 tokensone tool callread the file, write it back

The middle column is the JSON these tools actually take, counted at roughly four characters per token. The right column is not a measurement of any particular codebase — it is the work itself: a chart that lives in your source has to be read into context and written back for every change, so a 200-line component costs on the order of a thousand tokens to read before a single line of it moves. Your numbers will differ. The shape of the difference is the point: an argument, versus a file.

New · Ask this dashboard

Questions, not tickets

The people looking at a dashboard always have one more question than it answers. Now they can just ask it — and get a sentence, a number, or a new chart back, without waiting on whoever writes the SQL.

It reads what is already on the page
The dashboard's results are loaded in the viewer's browser, so a question is answered from those rows rather than by running something new against your database.
Column names go out, values stay
The assistant is sent the shape of the data - names, types, a scrambled sample - never the rows themselves.
On for the surfaces you choose
App, share link and embed are three separate switches, so you can leave it on for your team and off for the public link.
Metered, with a ceiling
Every account gets a monthly allowance. Reaching it stops AI rather than quietly billing you for more.
How Ask works
Ask this dashboard×
Which channel grew fastest last quarter?
Partner referrals grew +38% over the quarter, ahead of paid search at +11%.
Growth by channel
Example grouped bar chart
Answered from data already on this dashboard.
Ask a question…Send
How it works

Database to product in four steps

productionpostgres
billingmysql
warehousebigquery
Encrypted · read only · SSH tunnel optional
01

Connect a database

Postgres, MySQL, BigQuery, MotherDuck, SingleStore and more — read only, over an encrypted connection or an SSH tunnel.

select plan, count(*)
from subscriptions
where [started_at=daterange]
group by 1
Run Query ⌘↵
02

Write the query

Real SQL, with filter tokens where the values belong. Run it, see the rows — or describe what you want and let Interact write it for you.

Signups by plan
Example bar chart
Bar
Line
Pie
Table
03

Make it a chart

Pick a type, map the columns, set the colours — by hand or by asking. Cache it so a thousand viewers cost one query.

<tractorscope-chart
signature="…"
></tractorscope-chart>
Example line chart
rendered in your page
04

Put it in your product

A web component, a framed dashboard or a link — each signed per customer, none of them priced per viewer.

EditInteractCode
⌘D
break revenue out by plan and make it stacked

Grouped the same total by plan and switched the bars to stacked so the months stay comparable.

queryGroup by plan
select date_trunc('month', created_at),
plan, sum(total)
group by 1, 2
ApplyDismiss
settingsStacked bars
✓ Applied
use the brand palette and format the axis as currency
Ask for a change…
New · Interact

Or describe the chart you want

Steps two and three, done by asking. Tell the editor to group it by plan, stack the bars, format the axis as currency — it writes the SQL and sets the settings, and shows you both before anything changes.

It answers with changes, not chat
Every reply comes back as proposals — a rewritten query, a chart type, a set of settings. You read each one and apply it, or you don't.
The SQL stays yours
A proposed query lands in the editor where you can read it, change it and run it. Nothing is hidden behind a prompt.
Undo is one click
Applying a proposal keeps a snapshot of the chart as it was, so trying something is cheap.
Nothing is saved until you save
Proposals are staged against your working copy. The chart your dashboard shows does not move until you hit Save.
Building charts with AI
Read only · encrypted · SSH tunnel optional

Connect directly to your database

MySQLPostgreSQLDuckDB
PlanetScaleSingleStoreMotherDuckTursoGoogle BigQuery
COMING SOON
Amazon RedshiftMicrosoft SQL ServerOracle DatabaseSnowflake

Join the companies visualizing their data with Tractorscope

ChangeUp logo
FINTECH
ANNUAL DONATIONS:
100M+
PARTNERS:
100+
Tractorscope enabled ChangeUp to deliver real-time, impactful reports on donations, saving development time and enhancing their mission to modernize charitable giving while providing insights into every penny donated.
HoldMyTicket logo
ECOMMERCE
REDUCED COSTS:
4x
ANNUAL TRANSACTIONS:
10M+
CUSTOM REPORTS:
500+
HoldMyTicket replaced their legacy analytics provider with Tractorscope and saved a whopping 4x, while still providing partners and customers their reporting dashboards across thousands of ticketing venues.
MedReportGuard logo
HEALTHCARE
POPULATION SERVED:
30M+
DATA POINTS PER REPORT:
350+
MedReportGuard sped to market by integrating Tractorscope to serve reporting and dashboards to thousands of users in Healthcare, Law Enforcement, DA’s, and Advocacy, all assisting survivors of interpersonal violence.

Start with Pricing, Docs, or a Product Demo

These are the pages most teams review when evaluating embedded analytics for a SaaS product.

Latest from Our Blog

Stay updated with the latest updates from the Tractorscope team

Frequently asked questions

What is Tractorscope?

Tractorscope is an embedded analytics platform for building dashboards, charts, and customer-facing reporting from SQL-accessible data sources.

Who is Tractorscope built for?

Tractorscope is built for developers, product teams, and operators who need internal dashboards or embedded analytics inside a SaaS product or web application.

Can I embed Tractorscope dashboards in my app?

Yes. Tractorscope supports signed embeds for dashboards and charts so analytics can be shown inside your application with controlled access, filters, and configuration options.

Which databases does Tractorscope support?

Tractorscope supports multiple SQL-oriented databases and warehouses, including common operational and analytics systems used for dashboards, charts, and embedded reporting.

Testimonial avatar

Valeed

CTO at SaRA Health
“The platform's ability to build with arguments has been a game-changer for us. We needed to create the same chart for over 100 different clients, and Tractorscope made it possible to not only achieve this but also scope down to more specific variables like user type.”

Start your free trial today

Take a load off your to-do list. Integrate Tractorscope. Build dashboards. Delight customers. Showcase data without the headache.