If you want to connect your agent to a database (say, to build a data analyst chatbot or any kind of agentic app) today you have 2 options: an SQL MCP server or a semantic layer. SQL MCP is the easiest path to setup, especially if you also have a .md knowledge base which the agent can update. It gets quite messy quickly though, especially if there's many interactions or DB is large. Generated SQL is hard to review if you want to understand where the numbers came from, and related queries can be hard to align and compare. The natural alternative is a semantic layer, which is an inventory of what data is available/useful (data models) and an interface for querying it using a structured DSL — usually a list of measures, dimensions, filters, with joins etc. handled under the hood. When we needed a semantic layer at Motley for connecting to our customers' data, we first settled on Cube with custom wiring for multi-tenancy and for updating the models on the fly.…