Six plain-English questions a merchant asks about their register, answered from point-of-sale data. Right now the data is Bluebird Bakery (sample). On a real merchant the same six tools read their Clover account; the merchant's key stays on this server and is never handed to the assistant.
find_api | Find which Clover call answers a question about this merchant's account. Use this WHENEVER the owner asks for something the other tools do not already cover — anything about orders, line items, discounts, service charges, categories, modifiers, tax rates, printers, devices, merchant settings, opening hours, tenders, or a detail of one item. Search in the owner's own words. Returns the calls that match, what each one does, what it needs, and whether it is a read or a change. Call this BEFORE telling the owner that something cannot be done. |
read_api | Run one of the READ calls from find_api and get the merchant's real data back. Pass the call id from find_api and any ids it says it needs. This only ever reads; it can never change anything. If it says a call is not allowed on this page, tell the owner plainly rather than guessing at the answer. |
list_changes | What can actually be changed on this account, and what each change needs. Call this FIRST whenever the owner asks to change, set, update, fix, rename, hide, add or delete anything, and before saying that something cannot be done. |
propose_change | Propose ONE change and show the owner exactly what would happen. This never applies anything by itself: it reads the current value, returns a before and after, and waits for the owner to tap Confirm. Use the op id from list_changes. Identify an item by its name in `item` and the server resolves the id. If the result comes back with pending true, tell the owner what would change and that it is waiting for their tap. Never claim a change was made. |
recent_changes | What has actually been changed on this account, newest first, with who did it and when. Use for 'what did you change', 'what did I change last week', 'did anything change', and before answering any question about whether something was already updated. |
undo_last_change | Propose putting a change back the way it was. Like propose_change this applies nothing by itself: it shows the owner what would be restored and waits for their tap. Leave change_id empty for the most recent change. Use for 'undo that', 'put it back', 'never mind, change it back'. |
clover_help | How CLOVER itself works, for questions that are not about this merchant's numbers: a tax rate that will not apply to an item, hours that will not save, a negative or absurd stock count, buy one get one, reassigning a sale to the right employee, an item still showing on a delivery app, QR codes and online ordering setup, why deposits take days, duplicate item names. Use this WHENEVER the owner asks how to do something in Clover, where a setting lives, or why Clover is behaving a certain way. It returns nothing when it does not know, and then you say so plainly rather than guessing. |
menu | The live menu and on-hand stock from Clover: items, prices, categories, how many of each are left, and which items are running low. Use for 'what's in my inventory', 'what am I running out of', 'what's on my menu', 'what do I charge for X', 'what's my most expensive item'. Items whose count is negative or absurd are reported as not set up rather than as a quantity. Also carries when each item was LAST CHANGED (Clover does not store a created date, so never say an item was added on a date), which items changed in the last two weeks, which have gone longest untouched, which are enabled for online ordering, and which show a different name online. |
item_check | ONE named item, exactly: its price, how many are on hand right now, whether it is hidden, and whether it is on for online ordering. USE THIS, NOT THE MENU TOOL, whenever the owner asks about a single item by name: 'how many cookies do I have left', 'what do I charge for the catfish', 'is the coleslaw still hidden', 'am I out of cornbread'. NEVER read one item's count out of the menu tool's lists. If the name matches more than one item it returns the candidates and the owner is asked which one. |
channels | Where the money actually came in: every payment tender for a period, with counts, dollars and share. This is the ONLY tool that sees the delivery apps (DoorDash, Uber Eats, Grubhub), cash, debit and credit separately, because they are payment tenders rather than order types. Use for 'how did DoorDash do', 'how much came from delivery', 'card vs cash', 'where is my money coming from'. |
sales_summary | Sales for a period: gross sales, ticket count, average ticket, card vs cash, refunds, best day, and the change against the prior equal period. Use for 'how much did I sell', 'this week vs last week', 'average ticket'. |
busiest_hours | Sales by hour of day over the last 28 days, with the peak hour, the lunch window share, and the quietest open hours. Use for 'when am I busiest', 'when should I staff up', 'slow hours'. |
top_items | Best-selling items by count and by revenue over a period. Use for 'what sells the most', 'top sellers', 'what should I stock more of'. |
category_sales | Sales grouped by MENU CATEGORY for a period: dollars, units and share per category, best and worst. Use for 'compare category sales', 'sales by category', 'which category makes the most', 'how are desserts doing', 'is my lunch menu worth it'. This is item money — line-item prices before tax, discounts and tips — so it never matches takings exactly, and the result says so. |
refunds | Refunds in a period: count, total, and each refund with date, hour, amount and items. Use for 'any refunds', 'returns this week', 'chargebacks'. |
fee_estimate | Card-processing fee estimate: monthly card volume from sales data, fees at the current rate vs a proposed rate, monthly and annual difference. Rates are inputs, not data: current from the merchant's statement, proposed from their payments rep. Use for any fee or processing-cost question. |
deposits | Deposits and close-out: when the batch closes, when card sales land in the bank, the last 7 batches with amounts and deposit dates, and anything still pending. Use for 'where's my money', 'when do deposits hit', 'why are deposits taking two or three days', 'what's my close-out setting'. |
staff_sales | What each employee sold per shift: tickets, sales and average ticket by employee and by shift (morning 7-10, midday 11-1, afternoon 2-5) over a period. Use for 'what does each employee do per shift', 'who sells the most', 'how did the morning crew do'. Sample staff names. |
glossary | Plain-words meaning of a payments or register term: close-out, batch, settlement, deposit, interchange, interchange plus, effective rate, average ticket, chargeback, refund, surcharge, cash discount, PCI, MID, ISO. Use whenever the owner asks what a word means, or to gloss a term you are about to use. |
daily_trend | Sales by day over the last 28 days (or 7): each day's total and tickets, best and worst day, and the weekly totals. Use for 'how did the month go', 'show me the trend', 'sales by day', 'which days are strong'. |
order_types | Sales split by order type (in store, online, phone) for a period: sales, tickets and share of each. Use for 'how much comes from online orders', 'in store vs online', 'phone orders'. |
discounts | Discounts given in a period: count, total dollars, share of sales, and the average discount. Use for 'how much am I discounting', 'discounts this week', 'comps'. |
taxes | Sales tax collected in a period: total tax, taxable sales, and the split by day. Use for 'how much tax did I collect', 'sales tax this month', 'taxable sales'. This is what the register recorded, not a filing. |
morning_brief | The three-line morning text: yesterday vs the same day last week, this week vs last week, and one thing worth knowing (lunch window share, refunds). Use for 'morning brief', 'how are we doing', 'give me the rundown'. |
Try it: the chat, on a phone or a laptop. White-label: partner skin · merchant skin. Other data, same bot: a coach's meeting notes.
Doors: POST https://tools.refinedsolutionsit.com/mcp (MCP, Streamable HTTP) · GET https://tools.refinedsolutionsit.com/v1/<tool> (REST) · https://tools.refinedsolutionsit.com/openapi.json (Actions schema). Header X-RS-Key required on the tool routes.
Refined Solutions IT · Matt Dembling · refinedsolutionsit.com