Agents and MCP inside your product
Let customers ask about their data.
Which location had the most refunds? Why did this month's bill change? Give your agents access to the reporting data behind your application. Your team builds the tools and decides what customers can see.
01 · The answer
Start with a question your customers already ask.
A customer asks which locations had the most refunds, then compares those refunds with revenue. The answer needs the right account, the right reporting period and a clear point in time for the data.
customer scope · acmeauthorizedrefunds_by_location · March12 locationsrevenue + refunds · alignedsame as-of time02 · The reporting data
The agent should use the dashboard's numbers.
Use the same models in both places. When comparing numbers, use the same account and period, and align the data to the same point in time. Your product decides how the customer's question becomes a query or tool call.
03 · Access
Your product decides what the agent can do.
Your app checks the user's identity and permissions before letting a tool access their data. Model changes and other administrative tools belong to the developers you authorize.
Customer reports
Expose the reports customers need, with the same access rules as your application.
Model changes
Give developers and coding agents permission to change models. Development tools.
Actions
If an agent can take an action, use your app's APIs and approval rules for that action.
04 · Time
Say which data the answer includes.
A date picker chooses March. A correction saved in April can still change March's numbers. Show which source changes the answer includes. When comparing related reports, align them to the same point in time; newer changes may need to wait.
05 · Connecting the tool
Choose how your tool gets the data.
Use MCP, HTTP or a Postgres client to query eddy. You can also push results to other systems. Your product chooses the reporting model and checks the customer's access before returning an answer.
// Check access before querying this account's data. const customer = await authorizeReporting(user); const { rows } = await eddy.query( `select location, refunded from refunds_by_location where account_id = $1 and month = $2`, [customer.accountId, requestedMonth] ); // Include the reporting period and source progress with the answer.
06 · Trying it
Test the questions your agent will receive.
Bring a few real customer questions. Check the answers, update delays, response times and cost on your own data, including the detailed questions customers may ask next.
We expect reads to be part of usage-based pricing. Agree the pilot price before starting.
Keep going
What would your customers ask?
Book a demo and bring one question you'd like your agent to answer.

