The typed data platform

Headless CMS, integrations, analytics, CLI and MCP in one workspace. Eliminate the silos.

Content, integrations and analytics on one typed store.

One schema for the whole company. Publish to any frontend, sync with any service, report on all of it.

Book a demo
  1. 01

    Content

    collections, documents, media, live preview, delivery API

  2. 02

    Integrations

    connectors, webhooks, forms, pipelines, alerts

  3. 03

    Analytics

    views, pivots, dashboards, drill-down, exports

  • Typed. Every collection, record and amount has a declared type, from the schema to the site's TypeScript.
  • Agent-operated. Every button has a CLI command. Agents work through the CLI or MCP with the permissions of the person who runs them.
  • Safe to change. Changes run as a dry run first, nothing that loses data runs silently, and every version can be restored.
  • Exact money. Amounts are decimals end to end, so totals match the bank.

Content

A headless CMS that agents can run.

The content model is one file you can keep in git. Editors work on drafts over the real site and click a block to edit it. A publish sends a signed webhook, and the page updates in about half a second.

>add a "speakers" collection with name, photo and talk, and fill it from speakers.csv $estype cms schema pull $estype cms schema push --dry-run + speakers · 3 fields · no data loss $estype cms schema push $estype cms import speakers.csv --collection speakers 42 documents · 0 errors

Integrations

A typical connector passes data through. estype keeps it.

Every record from every service is stored with its type, deduplicated, and kept with its history. A failed delivery retries and then raises an alert, so nothing disappears quietly. Analytics runs over all of it.

300+ services

HubSpot QuickBooks Notion Xero Gmail Airtable PostgreSQL Paddle Revolut Wise Asana Greenhouse Google Sheets Stripe Shopify Linear Jira GitHub Snowflake PayPal Intercom Vercel Google BigQuery Webflow
>connect QuickBooks and sync invoices every 15 minutes $estype sources add quickbooks --every 15m $estype sources connect quickbooks opened the OAuth window · connected $estype status quickbooks ok · 3,418 invoices · 0 duplicates · next run in 15m

Analytics

Ask a question, get a typed dashboard.

Content, leads, money and tasks live in one database, so a question crosses all of them without a warehouse or ETL. An agent builds the view, the types check it, and it publishes with one command. Click a cell to see the rows behind it; exports match the screen.

>which pages brought paying clients this year, by month
view("pages-to-revenue", {
  rows:    page.title,
  columns: month(payment.paidAt),
  measure: sum(payment.amount),   // decimal, EUR
})
pages-to-revenue 2026 · EUR
Paid amounts by page and month, 2026, in EUR. The Pricing cell for September is opened into the three payments behind it.
EUR JanFebMarAprMayJunJulAugSep Total
Pricing 2,140.002,480.003,120.502,960.003,410.003,880.004,215.504,020.00 4,860.00 31,086.00
INV-1187 · 04 Sep
1,450.00
INV-1203 · 12 Sep
2,180.50
INV-1219 · 23 Sep
1,229.50
Home 1,320.001,410.001,180.001,640.001,720.501,905.002,010.002,180.002,340.00 15,705.50
Case studies 640.00880.001,150.001,020.001,390.001,240.001,610.001,875.501,960.00 11,765.50
Services 910.00760.00980.001,105.00990.001,260.001,180.001,340.001,425.00 9,950.00
Blog 210.00340.00295.50480.00610.00545.00720.00830.00915.50 4,946.00
Contact 480.00390.00520.00455.00610.00580.00495.00640.00705.00 4,875.00
Total 5,700.006,260.007,246.007,660.008,730.509,410.0010,230.5010,885.5012,205.50 78,328.00

Built in Rust, kept in the EU

  1. Written in Rust end to end, from the API to every connector: no runtime errors from null values or data races, and money math in exact decimals.
  2. Each company's data sits in its own isolated database, hosted in the EU.
  3. Credentials are encrypted at rest, and API keys are stored only as hashes.
  4. Every change is logged with who made it (a person, an agent or a pipeline), and any version can be restored.
  5. Agents get keys scoped to their job: read, write or preview.
  6. Backups replicate continuously to a second EU region, with restore to any point in the last 7 days.

Start with one site.

  1. 01

    Map

    We go through the sites, services and reports and write the content model.

  2. 02

    Move

    Content comes over from Sanity, Contentful, Webflow or any export, and connectors are written for every service the company uses.

  3. 03

    Run

    Editors, engineers and agents work in estype, and we stay on a shared Slack channel.