Why does my AI give different answers to the same data question?
Recipe verified on
Ran on the public demo (read-only)
Short answer
When an AI reads data as text, each answer is a fresh estimate, so it can change from one try to the next. When it queries a database, the number comes from the query: run the same query twice and you get the same result, as the two calls below show.
Steps
- Connect your assistant to the public demo. It's a read-only instance with 10 million synthetic orders,
so you can try this before you have your own. In Claude Code:
claude mcp add --transport http mcpdata-demo https://demo.mcpdata.org/mcp --header "Authorization: Bearer cdb_live_PkVoldus8qcE-hqffjajNZzQwiA7rTHMoR4RLSAxsCE"
The key is public on purpose: it can only read the demo's sample data. For Claude Desktop, Cursor and other apps, see Connect your AI.
- Ask your question. Give your AI this prompt:
Using mcpdata, how many orders did each channel have in 2025 in Demo.Orders?
What your AI does: the tool calls it makes for this prompt, and what came back
query(table_name="Demo.Orders", filters=[{"column": "order_year", "op": "eq", "value": 2025}], group_by=["channel"], agg=[{"func": "count", "column": "order_id", "alias": "orders"}], sort=[{"column": "channel", "desc": false}]) → 3 rows
query(table_name="Demo.Orders", filters=[{"column": "order_year", "op": "eq", "value": 2025}], group_by=["channel"], agg=[{"func": "count", "column": "order_id", "alias": "orders"}], sort=[{"column": "channel", "desc": false}]) → 3 rows
| channel | orders |
|---|---|
| Online | 2,112,747 |
| Partner | 461,084 |
| Store | 1,267,106 |
Synthetic data: the demo's orders are generated, not real customers.
The assistant needs mcpdata connected (step 1) to run the query.
Why this works
Models sample their wording, and, without a tool, their arithmetic too. Moving the counting into a query makes the answer reproducible; the only thing left to vary is how the model words it.