Single endpoint: mcp__flex__flex_search. Two params: query (SQL or @preset), cell (cell name). Every query must be valid SQL or a @preset. Plain text is not accepted — wrap in keyword() or vec_ops().
Pipeline: SQL → vec_ops → SQL. Phase 1 narrows with SQL. Phase 2 scores with embeddings. Phase 3 composes with SQL.
Scores are ordinal within a query. Do not compare scores across queries with different tokens.