Getting Started
Get up and running with Dinobase in under 5 minutes.
Install
Section titled “Install”curl -fsSL https://dinobase.ai/install.sh | bashuv tool install dinobasepip install dinobasepipx install dinobaseRequires Python 3.10+.
Initialize
Section titled “Initialize”dinobase initThis creates ~/.dinobase/ with a config file and DuckDB database.
Connect a source
Section titled “Connect a source”File sources (instant)
Section titled “File sources (instant)”The fastest way to start — no sync, no API keys:
dinobase add parquet --path ./data/events/ --name analyticsdinobase add csv --path ./exports/customers.csv --name customersSaaS APIs
Section titled “SaaS APIs”Connect with an API key:
dinobase add stripe --api-key sk_live_...dinobase add hubspot --api-key pat-na1-...dinobase syncOr connect via OAuth (browser-based authorization):
dinobase auth hubspotdinobase auth salesforcedinobase syncDatabases
Section titled “Databases”dinobase add postgres --connection-string postgresql://user:pass@host/dbdinobase syncSee all available sources
Section titled “See all available sources”dinobase sources --available --prettyLists all 100+ supported sources grouped by category (SaaS APIs, databases, cloud storage, files). See Connecting Sources for full details and Sources Reference for the complete list.
Explore your data
Section titled “Explore your data”# What sources are connected?dinobase status --pretty
# Inspect a table's columns and typesdinobase describe stripe.customers --prettyExample describe output:
stripe.customers (180 rows)
id VARCHAR -- Unique identifier for the object. email VARCHAR -- The customer's email address. Can be null created INTEGER -- Time at which the object was created. Unix timestamp. Use to_timestamp() to convert. delinquent BOOLEAN -- Whether the customer has an overdue invoice.Column descriptions come from source APIs — Stripe’s OpenAPI spec, HubSpot’s Properties API, Postgres column comments. See Schema Annotations for how to add your own.
Run a query
Section titled “Run a query”dinobase query "SELECT COUNT(*) FROM stripe.customers" --prettyCross-source join:
dinobase query " SELECT s.email, s.name, h.company, d.amount FROM stripe.customers s JOIN hubspot.contacts h ON s.email = h.email JOIN hubspot.deals d ON h.id = d.contact_id WHERE d.dealstage = 'closedwon' ORDER BY d.amount DESC LIMIT 10" --prettyAll queries use DuckDB SQL syntax. Tables are referenced as schema.table. See Querying Data for more SQL patterns and join strategies.
Set up an agent
Section titled “Set up an agent”Dinobase works with any AI agent. One command installs the MCP config for your client:
Claude Code
Section titled “Claude Code”dinobase install claude-codeOr use the CLI directly — no configuration needed:
dinobase info # what data is availabledinobase describe X # column detailsdinobase query "..." # execute SQLSee the Claude Code integration guide for full details.
Claude Desktop
Section titled “Claude Desktop”dinobase install claude-desktopWrites the config to your Claude Desktop config file automatically. See the Claude Desktop integration guide.
Cursor
Section titled “Cursor”dinobase install cursorWrites .cursor/mcp.json in your project root. See the Cursor integration guide.
OpenClaw
Section titled “OpenClaw”openclaw skills install dinobaseSee the OpenClaw integration guide.
Other agents
Section titled “Other agents”Dinobase integrates with many AI frameworks. See the full list of integrations.
Keep data fresh
Section titled “Keep data fresh”Set freshness thresholds and sync intervals per source:
dinobase add stripe --api-key ... --freshness 30m --sync-interval 15mRun a background sync daemon:
dinobase sync --schedule --interval 30mOr sync alongside the MCP server:
dinobase serve --sync --sync-interval 30mSee Syncing & Scheduling for freshness thresholds, live fetch, and scheduled sync details.
Try with sample data
Section titled “Try with sample data”Generate realistic test data without any API keys:
pip install fakerpython scripts/generate_sample_data.pydinobase initdinobase add parquet --path sample_data/ --name demodinobase query "SELECT COUNT(*) FROM demo.customers" --prettyNext steps
Section titled “Next steps”- Connecting Sources — all source types in detail
- Querying Data — SQL patterns, joins, aggregations
- Syncing & Scheduling — freshness, live fetch, daemon mode
- Schema Annotations — add context for AI agents
- Mutations — write data back to source APIs
- MCP Integration — how the MCP server works
- Sources Reference — full list of 100+ sources
- CLI Reference — all commands and flags