clover-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLOVER_REGION | No | Clover region: na, eu, or la | na |
| CLOVER_SANDBOX | No | Set to true to use the Clover sandbox | false |
| CLOVER_AUTH_MODE | No | Authentication mode: token or oauth_refresh | token |
| CLOVER_READ_ONLY | No | Refuse every write before making a Clover request | false |
| CLOVER_MERCHANT_ID | Yes | Your Clover merchant ID | |
| CLOVER_ACCESS_TOKEN | Yes | Your Clover API access token | |
| CLOVER_WRITE_LIMIT_COUNT | No | Maximum writes per safety window; 0 disables | 10 |
| CLOVER_WRITE_LIMIT_WINDOW_S | No | Positive write-safety window in seconds | 300 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whoamiA | Diagnostic: who is this request authenticated as, and is a Clover tenant mapped to them? Returns the authenticated identity, the names of available token claims (never their values), scopes, and whether a tenant is provisioned — no Clover data and no secrets. Use it when setting up multi-tenant to discover which identity claim your platform (e.g. FastMCP Cloud / Horizon) actually provides, so you can key CLOVER_TENANTS_JSON correctly. |
| get_merchant_infoA | Return key information about this Clover merchant. Includes name, address, currency, timezone, country, and business type. Also primes the internal currency and timezone cache used by all other tools. |
| get_sales_summaryA | Return an aggregated sales summary for the given date window. Defaults to today (UTC) when no dates are supplied. Uses 90-day chunking so multi-month or full-year queries work transparently (emits progress logs when more than one window is scanned). Rules: only result=SUCCESS payments counted; voids/refunds reported separately; tips, taxes broken out; offline payments flagged; currency from merchant record. This tool does NOT support payment capture, refund, or void actions. |
| list_paymentsA | List payments within an optional date window (default: today, limit 50). Only result=SUCCESS payments. Card transaction details never included. fields: optional list of field names to keep (narrows the response; cannot widen past the allowlist). This tool does NOT support payment capture, refund, or void actions. |
| list_refundsA | List refunds within an optional date window (default: today, limit 50). Clover refunds are separate objects with a positive amount (cents), not negative payments. Card/transaction detail is never included. Requires PAYMENTS_R. This tool does NOT issue refunds. |
| list_creditsA | Return the merchant's credits (store/account-credit adjustments, up to 1000). Element shape is unverified (sandbox has none provisioned) — shaped conservatively. Requires PAYMENTS_R. |
| get_sales_by_employeeA | Return gross sales grouped by employee for a date window (default: today). Requires PAYMENTS_R; employee name enrichment additionally requires EMPLOYEES_R (degrades to IDs-only with a note if not granted). |
| get_tips_by_employeeA | Return a tip-out sheet: tips collected grouped by employee (default: today). Requires PAYMENTS_R; employee name enrichment additionally requires EMPLOYEES_R (degrades to IDs-only with a note if not granted). |
| get_sales_by_hourA | Return gross sales bucketed by local hour-of-day for a single day (default: today). Buckets use the merchant's local timezone, falling back to UTC with a note if unavailable. Requires PAYMENTS_R. |
| list_ordersA | List orders within an optional date window and/or state filter (default: today, limit 50). state: open | paid | refunded | partially_refunded (omit for all states). Customer card data is never included. This tool is read-only. fields: optional list of field names to keep (narrows the response; cannot widen past the allowlist). |
| get_orderA | Fetch a single order by ID, including line items and payment summary. Expands lineItems and payments only. Customer card data never expanded. Returns a 404 error if the order_id does not exist. This tool is read-only. |
| list_open_ordersA | Return all currently open orders for this merchant (up to 200). Convenience wrapper — no date filter, state=open only. Customer card data is never included. This tool is read-only. |
| list_itemsA | Return a page of inventory items. Filter by name (query) or category (category_id). Requires INVENTORY_R. fields: optional list of field names to keep (narrows the response; cannot widen past the allowlist). |
| get_itemA | Return a single inventory item by ID, including stock quantity. Pass include=["modifier_groups"], ["tax_rates"], ["categories"], and/or ["tags"] to opt in to those association details. Requires INVENTORY_R. |
| list_low_stock_itemsA | Return all items whose stock quantity is at or below threshold. Items with no stock tracking are excluded. Requires INVENTORY_R. |
| list_categoriesA | Return all inventory categories. Requires INVENTORY_R. |
| list_modifiersA | Return all modifier groups with their modifiers. Requires INVENTORY_R. |
| list_item_groupsA | Return item groups (sets of item variants, e.g. size/color). Requires INVENTORY_R. |
| list_taxesA | Return the merchant's tax rates (raw rate + computed percent). Requires INVENTORY_R. |
| list_discountsA | Return the merchant's discount catalogue (fixed-amount or percentage). Requires INVENTORY_R. |
| list_devicesA | Return the merchant's Clover devices/terminals. Requires MERCHANT_R. |
| list_tendersA | Return the merchant's tender types (payment methods: cash, credit, custom). Requires MERCHANT_R. |
| get_merchant_propertiesA | Return the merchant's POS configuration (currency, tips, stock tracking, closeout, locale, support contacts). Banking/account fields are never returned. Requires MERCHANT_R. |
| list_order_typesA | Return the merchant's order types (Dine In, Take Out, …). Requires MERCHANT_R. |
| list_opening_hoursA | Return the merchant's opening-hours sets (per-day time ranges). Requires MERCHANT_R. |
| list_tip_suggestionsA | Return the merchant's tip-suggestion presets (percentage or flat amount). Requires MERCHANT_R. |
| get_default_service_chargeA | Return the merchant's default service charge configuration (name, enabled, percentage). Requires MERCHANT_R. |
| list_cash_eventsA | Return recent cash-drawer events (paid in/out, no-sale, deposits). Capped at |
| list_attributesA | Return item attributes (variant axes like Size/Color) with options. Requires INVENTORY_R. |
| list_tagsA | Return the merchant's tags/labels used to group items. Requires INVENTORY_R. |
| get_top_itemsA | Return the best-selling items in a date window, ranked by units sold. Defaults to today (UTC); 90-day chunked. Each line item counts as one unit. Requires ORDERS_R. |
| list_employeesA | Return a page of employees (PINs never returned). Requires EMPLOYEES_R. |
| get_employeeA | Return a single employee by ID (PINs never returned). Requires EMPLOYEES_R. |
| list_shiftsA | List shifts, optionally by employee and/or date window. Requires EMPLOYEES_R. Without employee_id, aggregates shifts across all employees. |
| list_active_shiftsA | Return currently open shifts (clocked in, not out) across all employees. Requires EMPLOYEES_R. |
| list_rolesA | Return the merchant's employee roles (name + system role category). Requires EMPLOYEES_R. |
| search_customersA | Search customers by full name (query), phone, or email. Cards are never returned. Requires CUSTOMERS_R. fields: optional list of field names to keep (narrows the response; cannot widen past the allowlist). |
| get_customerA | Return a single customer by ID. Pass include=["addresses"] or include=["orders"] to opt in to optional fields. Cards are never returned. Requires CUSTOMERS_R. |
| summarize_salesA | AI: plain-language sales briefing for a date window (default: today). Gathers the sales summary + top items, then asks your client's model to write a short narrative. Read-only suggestion. Needs a sampling-capable client; if yours can't sample, returns the raw data with a note. Requires ORDERS_R/PAYMENTS_R. |
| suggest_item_categoriesA | AI: suggest categories for uncategorized items from the merchant's own taxonomy. Suggestion only — applying a category is a separate, confirmed write. Needs a sampling-capable client (graceful fallback otherwise). Requires INVENTORY_R. |
| inventory_reorder_suggestionsA | AI: prioritized reorder list — low-stock items crossed with sales velocity. Read-only suggestion. Needs a sampling-capable client (graceful fallback otherwise). Requires INVENTORY_R and ORDERS_R. |
| detect_sales_anomaliesA | AI: flag unusual refund / discount / sales patterns in a window (default: today). Read-only analysis. Needs a sampling-capable client (graceful fallback otherwise). Requires PAYMENTS_R and ORDERS_R. |
| draft_customer_messageA | AI: draft a customer message (promo / win-back / thank-you) for the given intent. Returns a DRAFT only — never sends anything. Needs a sampling-capable client (graceful fallback otherwise). Requires CUSTOMERS_R. |
| create_customerA | Modifies merchant data. Create a new customer record in Clover. Idempotency guard: searches for an existing customer with the same email or phone before creating. If a match is found and confirm_duplicate is False, the call is refused and the existing match is returned. dry_run=True returns the would-be POST payload without sending it. Requires CUSTOMERS_R (duplicate check) and CUSTOMERS_W (write). |
| set_item_price_centsA | Modifies merchant data. Set an item's price (in cents, absolute value). Optimistic lock: refuses the write unless the item's current price equals expected_current_price_cents (prevents stale-context overwrites). Bounds: 0 <= new_price_cents <= 100_000_000. dry_run=True previews the PUT body (still performs one read to fetch current price/name) and never writes. Requires INVENTORY_R and INVENTORY_W. |
| set_item_stock_quantityA | Modifies merchant data. Set an item's stock to an ABSOLUTE quantity (not a delta). Optimistic lock: refuses unless current stock equals expected_current_quantity. Bounds: 0 <= new_quantity <= 1_000_000. dry_run=True previews the PUT body (still performs one read to fetch current stock) and never writes. Requires INVENTORY_R and INVENTORY_W. |
| create_categoryA | Modifies merchant data. Create a new inventory category. Previews on dry_run; confirms via your client's prompt (MCP elicitation) or confirm=True before writing. Requires INVENTORY_W. |
| create_itemA | Modifies merchant data. Create a new inventory item (name + price in cents). Bounds 0–100_000_000 cents. Previews on dry_run; confirms via MCP elicitation or confirm=True before writing. Requires INVENTORY_W. |
| create_orderA | Modifies merchant data. Create a new open order (no line items, no payment). Previews on dry_run; confirms via MCP elicitation or confirm=True before writing. Add items with add_line_item. Requires ORDERS_W. |
| add_line_itemA | Modifies merchant data. Add a catalog item as a line item to an order. Name/price are copied from the catalog item. Previews on dry_run; confirms via MCP elicitation or confirm=True before writing. Requires ORDERS_W. No payment. |
| update_customerA | Modifies merchant data. Update a customer's name and/or marketing opt-in. Only the fields you pass change. Previews on dry_run; confirms via MCP elicitation or confirm=True before writing. Requires CUSTOMERS_W. |
| apply_order_discountA | Modifies merchant data. Apply an order-level discount. Exactly one of percentage (1-100), amount_cents (1-100_000_000, positive — Clover requires a negative amount on the wire, this tool negates it for you), or catalogue_discount_id must be given. Catalogue discounts are resolved client-side (name + percentage/amount fetched from list_discounts and sent inline). Previews on dry_run (includes current discounts + a client-computed line-item subtotal — Clover has no computed order total); confirms via MCP elicitation or confirm=True before writing. Requires ORDERS_W. |
| update_item_nameA | Modifies merchant data. Rename an inventory item (price/other fields preserved). Optimistic lock: refuses unless the item's current name equals expected_current_name. Bounds: non-empty, <= 127 characters. dry_run=True previews the POST body (still performs one read) and never writes. Requires INVENTORY_R and INVENTORY_W. |
| create_modifier_groupA | Modifies merchant data. Create a new modifier group (e.g. "Milk options"). Duplicate guard: refuses if a group with the same name (case-insensitive) already exists. Previews on dry_run; confirms via MCP elicitation or confirm=True before writing. Requires INVENTORY_W. |
| create_modifierA | Modifies merchant data. Create a new modifier within a modifier group. Pre-check: verifies the modifier group exists (404 -> clear error). Bounds: 0 <= price_cents <= 100_000_000. Previews on dry_run; confirms via MCP elicitation or confirm=True before writing. Requires INVENTORY_W. |
| create_tagA | Modifies merchant data. Create a new tag/label used to group items. Duplicate guard: refuses if a tag with the same name (case-insensitive) already exists. Previews on dry_run; confirms via MCP elicitation or confirm=True before writing. Requires INVENTORY_W. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| daily_briefing | A start-of-day briefing: today's sales, low stock, and open orders. |
| weekly_sales_report | A 7-day sales report: totals, best sellers, and tender mix. |
| inventory_health_check | Surface low stock, uncategorized items, and catalog gaps. |
| end_of_day_closeout | Reconcile the day: payments, refunds, and open orders still pending. |
| customer_lookup | Find a customer and summarize who they are and their recent history. |
| monthly_tax_summary | Tax collected for a given month (format YYYY-MM), broken down by rate. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| capabilities | What this Clover MCP server can do: tools, prompts, and guardrails. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SBolivarLoL/clover-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server