AI agents & MCP

Let your AI assistant work with your business data, on your terms

Claude and other MCP-capable agents connect to your Data Lake with a revocable key, answer questions from all your systems and — if you allow it — operate the platform itself, under the same permissions and audit trail as any other client.

# the agent asks the data plane
read_records  entity=account  $filter=Region eq 'West'
aggregate     entity=orders   sum(Total) by Month
# with an admin key, it can operate the platform too
create_table  set_entity_exposure  restart_dab
# and the same tools from your own shell
$ dlake tool aggregate --entity orders --profile acme

What is MCP, and why does it matter here?

In plain wordsMCP is a standard plug that lets an AI assistant use tools and data. The Data Lake offers that plug, so an agent can work with your data without anyone building a custom integration.

The CLI is a complete peer of the MCP connector — every tool is callable as dlake tool <name> or dlake admin <name>, which is why the same skills serve both. One key decides which of the two planes a caller reaches, and the rules underneath both are enforced in SQL Server rather than by whichever client is asking.

How a caller reaches the data, and where the rules are enforcedAn app, the dlake command line or an AI agent all present the same API key. The key decides which of the two planes they can use — the data plane for rows, the admin plane for operating the platform — and both planes end at the Data Lake, where the caller's role and row-level security are enforced inside SQL Server.App or reportdlake CLIAI agent (MCP)API keyrevocableData planedlake toolAdmin planedlake adminData Lakerole + RLSRole and row-level security are enforced inside SQL Server, for every caller.
One key, two planes, and the rules underneath both.

Data plane

Work with rows

Read, write, query, aggregate, export and look at history — for the entities you have exposed, and no others.

dlake tool list shows what your key allows.

Admin control plane

Operate the platform

Define schema, expose entities, mint keys, restart the Data API, manage security and events, drive the sync products.

dlake admin list — admin keys only.

The 20 bundled agent skills

In plain wordsEach skill is a playbook for one job. Install them all with one command; your agent picks the right one from its description.

dlake skills install
dlake skills show dlake

Skills ship inside the CLI and update with it, so dlake skills install after every upgrade refreshes the copies on disk (add --skip-existing to keep local edits). Catalogue last changed 19 Sept 2026. Browse the skills folder on GitHub ↗

The sync round trip between your ERP and your CRMThe Commercient Sync Agent reads your on-premises ERP into the Data Lake. CRMPro pushes from the Data Lake into your CRM. TxDownloaderPro carries changes made in the CRM back through the Data Lake to the ERP, closing the loop.Your ERPon your serverData LakeYour CRMHubSpot, Salesforce,Zoho, Dynamics, moreSync AgentCRMProTxDownloaderPro — writeback
Three of the five skill families follow this loop: the agent into the ERP, into the CRM, and back again.

Build and operate a tenant2 skills

In plain wordsStart here: the everyday skill for an existing Data Lake, and the one that stands up a brand-new integration.

SkillWhat it coversERP pages
dlake-integration-setupStand up a NEW integration: register a tenant, seed it, then drive the setup wizard — server IP, CRM (connect now or later, OAuth included), and the ERP connector that declares Syspro/QuickBooks/SQL Server/ODBC. Covers the wizard's ordering and guards, credential lifetimes, and how to resume days later.
dlakeBuild and operate a tenant end-to-end: schema → expose → restart → scoped key, the sharp edges (the scoped-key restart, exposed-vs-raw entities, IDENTITY-key limits), and the REST/GraphQL + events contract — all in one `SKILL.md`.

Bring data in (sync products)3 skills

In plain wordsWhich ERP tables are cloned, and the agents for sources that are not SQL Server or that are APIs.

SkillWhat it coversERP pages
dlake-apisyncSet up **Generic API Sync** — the product for a source that is an API rather than a database. Enable it (schema provision + flag), describe the endpoints the agent calls (the two-mode save trap), read the shared per-ERP template catalogue, and read a hosted customer's real ERP columns.
dlake-normalsyncChoose which ERP tables **Normal Sync** — the on-prem change-tracking agent for SQL Server 2008 R2+ — clones into the gateway database's `dbo` clone tables. The available-tables dropdown, the two-call add, per-table sync toggles and row filters, the shared-catalogue semantics, and the prerequisites this surface cannot set (so finishing it does not mean the customer syncs). Plus **resync** — queue a full or per-table re-pull for the agent's next run — and **clone coverage**, rows actually in each clone against the count recorded at last sync (a green sync run is not evidence rows moved).
dlake-odbcsyncConfigure **ODBC Sync** — the agent for a source that is NOT Microsoft SQL Server, which stages data through an S3 bucket into an intermediary database Normal Sync then consumes. The bucket registry, the IAM IP allow-list, the agent's `BridgeClient.exe.config` (and the encrypted-echo trap), and the two verification reads.

Push data to a CRM (CRMPro)8 skills

In plain wordsThe forward sync from your ERP into HubSpot, Salesforce, Shopify, Zoho, Dynamics, MDC or Magento, with one page per source ERP.

SkillWhat it coversERP pages
dlake-crmpro-dynamicscrmThe **Dynamics CRM** specifics for a CRMPro forward sync, read from the shipped templates: the objects, the repository key, the view and `TimeStamp_Prefix` conventions, and what to check when a run pushes nothing. Extends `dlake-crmpro/`; carries one `erps/` child page per source ERP.19
dlake-crmpro-hubspotThe **HubSpot** specifics for a CRMPro forward sync: the configuration values the HubSpot engine dispatches on, the DLO view contract for it — the three view kinds and the `SavedTimeStamp` cursor rule that decides which rows a view returns — the seed/upsert pair for CRM-owned versus ERP-owned fields, the `CRM_FieldList` rows an object needs before it pushes anything, and what to check when a run completes without pushing any records. Extends `dlake-crmpro/`.89
dlake-crmpro-magentoThe **Magento** specifics for a CRMPro forward sync, read from the shipped templates: the objects, the repository key, the view and `TimeStamp_Prefix` conventions, and what to check when a run pushes nothing. Extends `dlake-crmpro/`; carries one `erps/` child page per source ERP.7
dlake-crmpro-mdcThe **MDC** specifics for a CRMPro forward sync, read from the shipped templates: the objects, the repository key, the view and `TimeStamp_Prefix` conventions, and what to check when a run pushes nothing. Extends `dlake-crmpro/`; carries one `erps/` child page per source ERP.11
dlake-crmpro-salesforceThe **Salesforce** specifics for a CRMPro forward sync: the configuration values the Salesforce engine dispatches on — standard objects alongside the managed package's custom objects, the namespace prefix/postfix pair, and an external-id field as the match key — the view contract the shipped templates use (a single-colon repository key, the identity column named as the external id, no `SFDCID` output column), the id-chaining ladder that makes `Sync_Order` a dependency order, the reverse-lookup and create/update process pairs, and what to check when a run completes without pushing any records. Extends `dlake-crmpro/`; carries one `erps/` child page per source ERP.105
dlake-crmpro-shopifyThe **Shopify** specifics for a CRMPro forward sync: the upper-case object tokens, the display name that reads as an operation, the insert-only create legs and their `::` repository key, and the two update legs — which are not cursor-driven at all but compare the ERP value against a mirrored Shopify value and push only the difference. Covers why a created product never updates, and what an empty mirror table does to a run. Extends `dlake-crmpro/`; carries one `erps/` child page per source ERP.24
dlake-crmpro-zohocrmThe **Zoho CRM** specifics for a CRMPro forward sync, read from the shipped templates: the objects those templates push to, the repository key they build, the view and `TimeStamp_Prefix` conventions, and which template groups every source ships versus only some. Extends `dlake-crmpro/`; carries one `erps/` child page per source ERP.27
dlake-crmproSet up **and operate CRMPro** — the source→CRM (forward) sync agent that pushes ERP data into the supported CRM and e-commerce platforms. Flag-driven: CRUD the configuration and run-history/error tables, read and edit the field mapping, and know which of its tables are reachable as lake views and which deliberately are not.

Write changes back (TxDownloaderPro)6 skills

In plain wordsThe return leg: changes made in the CRM travel back to the source system.

SkillWhat it coversERP pages
dlake-txdownloaderpro-dynamicscrmThe **Dynamics CRM** specifics for a TxDownloaderPro writeback, from the shipped default templates: the query shape that finds flagged records and the marker columns it reads, the structure of the inbound mapping document and the `$FUN_` token names it carries, which `ResultStructure` parts the templates fill for the write back to Dynamics CRM, and the process row each template becomes on import. Extends `dlake-txdownloaderpro/`.18
dlake-txdownloaderpro-hubspotThe **HubSpot** specifics for a TxDownloaderPro writeback, from the shipped default templates: the query shape that finds flagged records and the marker columns it reads, the structure of the inbound mapping document and the `$FUN_` token names it carries, which `ResultStructure` parts the templates fill for the write back to HubSpot, and the process row each template becomes on import. Extends `dlake-txdownloaderpro/`.67
dlake-txdownloaderpro-salesforceThe **Salesforce** specifics for a TxDownloaderPro writeback, from the shipped default templates: the query shape that finds flagged records and the marker columns it reads, the structure of the inbound mapping document and the `$FUN_` token names it carries, which `ResultStructure` parts the templates fill for the write back to Salesforce, and the process row each template becomes on import. Extends `dlake-txdownloaderpro/`.69
dlake-txdownloaderpro-shopifyThe **Shopify** specifics for a TxDownloaderPro writeback, from the shipped default templates: the query shape that finds flagged records and the marker columns it reads, the structure of the inbound mapping document and the `$FUN_` token names it carries, which `ResultStructure` parts the templates fill for the write back to Shopify, and the process row each template becomes on import. Extends `dlake-txdownloaderpro/`.22
dlake-txdownloaderpro-zohocrmThe **Zoho CRM** specifics for a TxDownloaderPro writeback, from the shipped default templates: the query shape that finds flagged records and the marker columns it reads, the structure of the inbound mapping document and the `$FUN_` token names it carries, which `ResultStructure` parts the templates fill for the write back to Zoho CRM, and the process row each template becomes on import. Extends `dlake-txdownloaderpro/`.30
dlake-txdownloaderproSet up **and operate TxDownloaderPro** — the CRM→source (writeback) sync agent. Expose its gateway objects to the Data API and scope a key to them, then CRUD the configuration and in-flight transaction rows, edit the field mapping in their JSON/XML columns, and use the filter-operator vocabulary that decides which retrieved CRM records reach the source. Covers exposure-vs-key-scope, `keyFields`, and the `SFUpdated` state machine.

On the customer's own server1 skill

In plain wordsThe Windows agent that actually reads the source ERP; the other half of every setup.

SkillWhat it coversERP pages
dlake-syncagentInstall and configure the **Commercient Sync Agent** — the on-premises Windows agent on the customer's own ERP server — with `CommercientSyncAgentCLI.exe`, the scriptable peer of the desktop app. The install/configure/test sequence, the per-product configuration fields, the exit codes to branch on, what it writes to the registry and Task Scheduler, and how it self-updates. The ON-PREMISES half of a setup; the other skills cover the platform half.

Where skills are installed4 harnesses

HarnessSkills directory
Claude Code / Cowork.claude/skills/<skill>/ (per project) or ~/.claude/skills/<skill>/ (global)
OpenAI Codex~/.codex/skills/<skill>/ or your project's skills directory
OpenCode.opencode/skill/<skill>/
Other harnesseswherever the harness discovers skills; keep the <skill>/SKILL.md layout intact

dlake skills install auto-detects these locations. Confirm the exact path against your harness's own documentation.

Questions about AI agents

What is MCP?

MCP (Model Context Protocol) is an open standard that lets an AI assistant such as Claude connect to external tools and data. Commercient Data Lake exposes MCP connectors, so an agent can query your data and, with the right key, operate the platform, using the same permissions and audit trail as any other client.

What can an AI agent actually do with my data lake?

On the data plane it can read and write records, run read-only SQL queries, aggregate, export, ingest files and look at time-travel history for the entities you have exposed. On the admin control plane it can define schema, expose entities, manage keys and drive the sync products. Run dlake tool list and dlake admin list to see exactly which tools your key can use.

What are agent skills?

Skills are small Markdown playbooks that teach a coding agent how to drive dlake correctly: the right command ordering, the non-obvious gotchas and the HTTP contract for the Data API. They ship inside the CLI. dlake skills install writes them where your agent harness looks (Claude Code, Codex, OpenCode and others), and dlake skills show <name> prints one.

Can an agent sign up for a Data Lake on my behalf?

Signing up is deliberately a human step. dlake register start takes a password and three affirmation flags (that you have backed up your CRM and ERP data, and that you consent to phone contact). The CLI help states that agents must ask the human and never pass these on their own initiative. Once the Data Lake is seeded, the rest of the setup wizard can be driven over MCP.

How do I limit what an agent can see?

Mint a scoped API key with dlake admin create_api_key and a scope file listing the entities and actions it may use, then run dlake admin restart_dab --confirm true. Row-level security adds per-row rules on top, and revoking a key takes effect immediately.