Text-to-SQL gets the query right and the business wrong. The model can write a flawless query against your orders table; it has no idea the customer is on credit hold, that fulfilling the order needs manager approval, or who to notify if someone overrides it. Most teams patch this in a system prompt. Works until the prompt drifts from reality, then the agent either breaks something or refuses to do anything useful.OWMS is a structured layer between your agent and your data: entity types,relationships, and policies (ALLOW/DENY/ESCALATE) the agent queries directly,not text it has to remember to apply.Example: Agent: Can I fulfil order ORD-9912 right now? OWMS: DENY — policy CREDIT_HOLD_POLICY_v2 Customer has an active credit hold. Escalate to: ops_manager.Same call works through REST or an MCP server (5 tools, works in ClaudeDesktop, Cursor, GPT-4o function calling, zero custom integration code).Every decision is logged with the rule that produced it.MIT licensed. Docker up in ~60s. 10 built-in domain packs (manufacturing,FMCG, supply chain, finance, HR, e-commerce).Repo: https://github.com/7Bn/OWMSHappy to answer questions on the architecture, the policy engine, or why this isn t just RLS.