
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.
| 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% |
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.
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.
<!-- 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.
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.
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.
| 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% |
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.
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.
What a change costs an agent
| Change | Through the MCP server | Charts built into your app |
|---|---|---|
| Add a chart to a dashboard | ~58 tokensone tool call | one component, plus wiring |
| Bar chart to line chart | ~16 tokensone tool call | read the file, write it back |
| Retitle it | ~14 tokensone tool call | read the file, write it back |
| Point it at a different query | ~40 tokensone tool call | read 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.
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.
Database to product in four steps
Connect a database
Postgres, MySQL, BigQuery, DuckDB, MotherDuck, SingleStore and more — read only, over an encrypted connection or an SSH tunnel.
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.
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.
signature="…"
></tractorscope-chart>
Put it in your product
A web component, a framed dashboard or a link — each signed per customer, none of them priced per viewer.
Grouped the same total by plan and switched the bars to stacked so the months stay comparable.
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.
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


Shared links that expire, and number charts you don't have to style
September 4, 2026
Read more →
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.










