一键导入
dinobase
Set up and query business data across 100+ sources (Stripe, HubSpot, Salesforce, etc.) via SQL. Agent-driven setup, cross-source joins, mutations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Set up and query business data across 100+ sources (Stripe, HubSpot, Salesforce, etc.) via SQL. Agent-driven setup, cross-source joins, mutations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Build a new Dinobase YAML connector for a REST API that dlt doesn't have a verified source for. Researches the API, writes the YAML config with read + write endpoints, incremental loading, pagination, and auth.
Build or update the semantic layer for a Dinobase source — checks what's already annotated, then fills gaps and rebuilds only what's missing or incomplete.
| name | dinobase |
| description | Set up and query business data across 100+ sources (Stripe, HubSpot, Salesforce, etc.) via SQL. Agent-driven setup, cross-source joins, mutations. |
| version | 0.2.0 |
| metadata | {"openclaw":{"emoji":"🦕","homepage":"https://github.com/DinobaseHQ/dinobase","requires":{"bins":["dinobase"]},"install":[{"id":"uv","kind":"uv","package":"dinobase","bins":["dinobase"],"label":"Install Dinobase (uv)"}]}} |
Dinobase is an agent-first database. It syncs data from 100+ SaaS APIs, databases, and files into a SQL database (DuckDB). You query across all sources with standard SQL.
dinobase status first)You can fully set up Dinobase for the user. It runs entirely locally — no account required.
dinobase status
This shows any sources that are already configured. If Dinobase isn't initialized yet, proceed with setup below.
dinobase init
This initializes a local Dinobase database. Everything works locally — connecting sources, syncing, and querying.
Ask the user what tools and data sources they use. Then check what's available:
dinobase sources --available
This returns JSON with full metadata per source:
[
{
"name": "stripe",
"description": "Stripe payments (customers, subscriptions, charges, invoices)",
"supports_oauth": false,
"credential_help": "Stripe Dashboard > Developers > API keys (use the Secret key)",
"credentials": [{"name": "stripe_secret_key", "cli_flag": "--api-key", ...}]
},
{
"name": "hubspot",
"description": "HubSpot CRM (contacts, companies, deals, tickets)",
"supports_oauth": true,
"credential_help": "HubSpot > Settings > Integrations > Private Apps > create app > copy token",
"credentials": [{"name": "api_key", "cli_flag": "--api-key", ...}]
}
]
For each source the user wants, connect it with an API key:
credential_help from the sources listdinobase add <source_type> --<cli_flag> <value>
Example:
dinobase add stripe --api-key sk_live_...
dinobase sync
This runs the sync directly. Check status:
dinobase status
dinobase info
Confirm that sources appear with non-zero table and row counts.
Always follow this sequence when answering data questions:
dinobase info to see what sources and tables existdinobase describe <schema>.<table> on relevant tables to see columns, types, and sample datadinobase query "<sql>"dinobase confirm <mutation_id>All commands output JSON by default (machine-readable). Add --pretty for human-readable output.
dinobase sources --available # list all 100+ source types with auth info
dinobase add stripe --api-key sk_test_... # API key connect
dinobase info # overview of all sources, tables, freshness
dinobase status # source status with freshness indicators
dinobase describe stripe.customers # table schema: columns, types, sample rows
# Run SQL (DuckDB dialect). Tables are schema.table
dinobase query "SELECT c.email, s.status FROM stripe.customers c JOIN stripe.subscriptions s ON c.id = s.customer_id WHERE s.status = 'past_due'"
# Limit rows returned (default 200, max 10000)
dinobase query "SELECT * FROM hubspot.contacts" --max-rows 500
Join across sources using shared columns (email, company name, IDs):
dinobase query "
SELECT c.email, c.name, i.amount_due, t.subject as ticket_subject
FROM stripe.customers c
JOIN stripe.invoices i ON c.id = i.customer_id
JOIN zendesk.tickets t ON c.email = t.requester_email
WHERE i.status = 'past_due' AND t.status = 'open'
"
UPDATE and INSERT queries return a preview first. Nothing executes until confirmed.
# Step 1: Query returns preview with mutation_id
dinobase query "UPDATE hubspot.contacts SET lifecycle_stage = 'customer' WHERE email = 'jane@acme.com'"
# Step 2: Confirm to execute (writes back to API + updates data)
dinobase confirm <mutation_id>
# Or cancel
dinobase cancel <mutation_id>
dinobase refresh stripe # re-sync a specific source
dinobase refresh --stale # re-sync only stale sources
dinobase sync # sync all sources
schema.table (e.g., stripe.customers, hubspot.contacts)describe before writing queries to find correct column names and typesILIKE, LIST, STRUCT, regexp_matches(), date functions--pretty when showing results directly to the userdinobase status for freshness info and run dinobase refresh <source>describe on both tables to find join keysdinobase init and API key auth