The problem custom context solves
Real schemas are full of traps for an AI:amountis stored in cents, not dollars.status = 3means “churned” — but nothing in the schema says so.deleted_at IS NOT NULLmarks soft-deleted rows that should usually be excluded.mrr_v2is the real revenue column;mrris deprecated.
How it works
In the dashboard, open a connection’s schema and add descriptions to:- Tables — what the table represents, and any rows that should typically be filtered out.
- Columns — units, enumerations, conventions, and which columns are canonical vs. deprecated.
get_schema, so every AI client — Claude, Cursor, ChatGPT, and the rest — sees them when it plans a query.
Example
Annotating theorders table:
“Now when someone asks “what was revenue last month?”, the AI divides by 100, filters voids, and uses the right timestamp — without anyone re-explaining the schema every time.orders— one row per completed checkout. Exclude rows wherestatus = 'void'.total_centsis in cents (divide by 100 for dollars). Usecreated_at(UTC) for time filters, notupdated_at.”
Why annotate once
Custom context lives with the connection, so the knowledge is shared across every client and every teammate. You document a quirk once, and every future query — by any agent, in any tool — benefits. It’s the difference between an AI that knows your data and one that merely sees it.Related
- Schema detection — the structure custom context enriches
- Memory — context QueryBear infers automatically over time