The data platform for agents

Your revenue opssupportBImarketingcustomer successfinancesalescomplianceon‑callanalytics
agents need
a data platform.

Dinobase syncs 100+ sources — APIs, databases, files, MCP servers — annotates your data, makes it SQL-ready for agents.

Read the docs  ·  Open-source on GitHub

Stripe HubSpot Salesforce Zendesk Postgres MySQL MongoDB Snowflake BigQuery Airtable Shopify Jira Linear GitHub Slack Intercom Mixpanel Amplitude Segment Notion Stripe HubSpot Salesforce Zendesk Postgres MySQL MongoDB Snowflake BigQuery Airtable Shopify Jira Linear GitHub Slack Intercom Mixpanel Amplitude Segment Notion

01 — before / after

Your agents are flying blind.

Drag to see what changes when your agent stack has a real data platform.

Scroll to see what changes when your agent stack has a real data platform.

✗ tool calls
✓ dinobase
stripe_list_customers {"limit":100} ok
↳ has_more: true — paginating...
stripe_list_customers {"starting_after":"cus_Nk..."} ok
stripe_list_customers {"starting_after":"cus_Pb..."} ok
... 8 more pages ...
hubspot_list_contacts {"limit":100} err
⚠ rate limited — retrying in 2s...
hubspot_list_contacts {"limit":100} ok
↻ joining by email... 67% match rate
agent: "Globex Corp seems important"
       (full activity data unavailable)
12
tool calls
60s
latency
3,891
tokens
SELECT c.name, c.mrr, h.owner,
       DATEDIFF('day', MAX(a.created_at), NOW()) AS days_silent
FROM stripe.customers c
JOIN hubspot.contacts h USING (email)
LEFT JOIN hubspot.activities a ON h.id = a.contact_id
WHERE c.mrr > 200
GROUP BY 1,2,3 ORDER BY days_silent DESC
LIMIT 10
namemrrownerdays_silent
Globex Corp$3,100Sarah K.47 🚨
Initech LLC$890Mike D.12
Umbrella Co.$2,450Sarah K.8
Vandelay Ind.$670Alex T.5
1
sql query
50ms
latency
300
tokens
◀▶

← drag to compare →

02 — benchmarks

Numbers that justify the switch.

0%

query accuracy across benchmarked LLMs

fewer tokens vs API calling

<50ms

avg query time

0+

sources synced automatically

MCP / API calling accuracy~38%
~38%
Dinobase query accuracy91%
91%

benchmarked on the Dinobase eval suite · 10+ LLMs including GPT-5.4, Claude 4.6, Gemini 3

03 — connect

Plug in every source.

100+ connectors — APIs, databases, files, MCP servers — one place your agents look. Add them from the CLI, or run dinobase setup to run a local setup UI.

Connectors docs →
APIs 50+
stripe hubspot salesforce shopify notion airtable intercom zendesk linear jira + 990 more
Databases 30+
postgres mysql mongo clickhouse snowflake bigquery databricks
Files any blob
s3 gcs azure parquet csv · json local disk
MCP servers any stdio · sse · http
github gitlab slack discord sentry datadog pagerduty asana
revenue ops support BI sales finance compliance

04 — understandable

Every column, understood.

After every sync, Dinobase automatically builds a semantic layer. Agents call describe and get column descriptions, PII flags, enum values, and the full relationship graph — so they write correct SQL on the first try.

✗ Raw SQL without context

subscriptions
  id          VARCHAR
  customer_id VARCHAR
  plan_id     VARCHAR
  status      VARCHAR
  created     INTEGER

Agent has to guess: what is created? Unix? ISO? What values does status accept? How does customer_id join?

✓ Dinobase semantic layer

stripe.subscriptions — "Active and historical subscriptions"

  customer_id  VARCHAR  → stripe.customers.id  [FK]
  plan_id      VARCHAR  → stripe.plans.id       [FK]
  status       VARCHAR  "active|past_due|canceled|trialing"
  created      INTEGER  "Unix timestamp — use to_timestamp()"
  amount       INTEGER  "Amount in cents"

Related: stripe.customers, stripe.invoices

Agent knows the join path, the enum values, the timestamp format, and which fields are PII — before writing a single query.

05 — actionable

Read, then execute.

Dinobase gives your agent two ways to act. SQL mutations with preview → confirm for structured writes. A Python execution layer for everything else: chain MCP tools, mix SQL with Python logic, reach every connected source in one call.

Mutations docs → Python execution docs →

✓ SQL mutations

dinobase query "UPDATE stripe.customers
  SET name = 'Acme Inc'
  WHERE id = 'cus_123'"
# → mutation_id: mut_abc123
# → rows_affected: 1
# → side_effects: will call Stripe API

dinobase confirm mut_abc123
# ✓ Stripe API called
# ✓ Local data updated

One SQL primitive for every source. Preview before anything executes. Destructive DDL (DROP, ALTER, TRUNCATE) blocked entirely.

✓ Python execution layer

# Agents call exec_code(...) with a code snippet
from dinobase.query.engine import QueryEngine
from dinobase.db import DinobaseDB
from dinobase.mcp import call

with DinobaseDB() as db:
    rows = QueryEngine(db).execute("""
        SELECT email, mrr FROM stripe.customers
        WHERE status = 'past_due'
        ORDER BY mrr DESC LIMIT 10
    """)["rows"]

for row in rows:
    t = call("zendesk.tickets_for_user", email=row["email"])
    row["open_tickets"] = len(t.get("open", []))

result = sorted(rows, key=lambda r: -r["open_tickets"])

SQL + MCP + Python — one tool call, zero ping-pong. Your agent writes the orchestration; Dinobase runs it.

06 — integrations

Drop it into your stack.

Native SDKs for LangChain, CrewAI, LlamaIndex, Pydantic AI, and Mastra. MCP server for Claude Desktop, Cursor, and Codex.

Read the docs →
# Claude Desktop
curl -fsSL https://dinobase.ai/install.sh | bash -s -- claude-desktop

# Cursor
curl -fsSL https://dinobase.ai/install.sh | bash -s -- cursor

# Codex
curl -fsSL https://dinobase.ai/install.sh | bash -s -- codex

# Claude Code
curl -fsSL https://dinobase.ai/install.sh | bash -s -- claude-code
pip install dinobase langchain langgraph

from integrations.langchain.toolkit import DinobaseToolkit

toolkit = DinobaseToolkit()
agent = create_react_agent(model, tools=toolkit.get_tools())
pip install dinobase crewai

from integrations.crewai.tools import dinobase_query, dinobase_describe

analyst = Agent(tools=[dinobase_describe, dinobase_query], ...)
pip install dinobase llama-index llama-index-llms-anthropic

from integrations.llamaindex.tool_spec import DinobaseToolSpec

tool_spec = DinobaseToolSpec()
agent = ReActAgent.from_tools(tool_spec.to_tool_list(), llm=llm)
pip install "dinobase[pydantic-ai]"

from dinobase.integrations.pydantic_ai.tools import DinobaseDeps, dinobase_tools

agent = Agent(
    "anthropic:claude-sonnet-4-6",
    deps_type=DinobaseDeps,
    toolsets=[dinobase_tools],
)
npm install @mastra/core @mastra/mcp @ai-sdk/anthropic && pip install dinobase

const mcp = new MCPClient({
  servers: { dinobase: { command: "dinobase", args: ["serve"] } },
});
const agent = new Agent({
  model: anthropic("claude-sonnet-4-6"),
  tools: await mcp.listTools(), // all 8 tools, auto-discovered
});

local or cloud

Two ways to run it.

Dinobase Local

Open source. Self-hosted. Free forever.

  • 100+ source connectors (APIs, Postgres/MySQL/Mongo, files, cloud storage, MCP servers)
  • Auto semantic layer — agent-drafted annotations, relationships, PII flags
  • Unified SQL over everything, sub-50ms queries
  • Reverse-ETL mutations with preview → confirm
  • exec_code — Python execution layer combining SQL, MCP tools, and the full Python ecosystem in one call
  • SDKs for LangChain, CrewAI, LlamaIndex, Pydantic AI, Mastra
View on GitHub

Dinobase Cloud

Everything in Local, plus managed warehouse, predictive modeling, and humans-in-the-loop.

  • Human-in-the-loop semantic review and editing
  • Predictive layer — agents train models, materialize predictions as views
  • Automated BIs — dashboards, insights, data exploration
  • Managed ops, SSO, audit logs

ok. you've read enough.

Stop giving your agents a blindfold. Give them a database.

Read the docs  ·  Open-source on GitHub