retailcrm-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | HTTP server bind address (default 127.0.0.1) | |
| PORT | No | HTTP server port (default 3000) | |
| RETAILCRM_URL | No | Fallback for RETAILCRM_DOMAIN (e.g. https://yourstore.retailcrm.ru) | |
| RETAILCRM_DOMAIN | No | Your RetailCRM domain (e.g. yourstore.retailcrm.ru) | |
| RETAILCRM_API_KEY | Yes | API key (sent via the X-API-KEY header) | |
| RETAILCRM_READONLY | No | Set to '1' to expose only read tools | |
| RETAILCRM_RATE_LIMIT | No | Client-side requests/second cap (default ~10/s) | |
| RETAILCRM_DNS_PROTECTION | No | Set to 'off' to disable DNS-rebinding protection (HTTP mode) | |
| RETAILCRM_HTTP_ALLOWED_HOSTS | No | Comma-separated allowed Host values for DNS-rebinding protection |
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
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_ordersA | List orders with filters by status, customer name, number, and created-date range. Returns (summary): pagination + array of {id, number, status, total, customer, phone, itemCount, createdAt}. Use detail:'full' for line items/delivery/payments, raw:true for the untouched payload. |
| get_orderA | Get a single order by RetailCRM id or externalId. Returns a shaped order; detail:'full' adds items, delivery, payments, comments. |
| create_orderA | Create an order with line items and delivery. Link an existing customer via customer_id/customer_external_id, or pass first_name (+phone/email) to create one inline. Returns {success, id, order?}. |
| update_orderA | Update an order (status, customer, delivery, comments). Only the fields you pass are sent. Returns {success}. |
| orders_historyA | Order change history incl. status transitions; supports incremental sync via filter_since_id and a date window. Returns {history[], pagination}. |
| list_customersA | List/search customers by name, email, phone, created-date. Returns (summary): pagination + array of {id, name, email, phone, ordersCount, totalSpent}. detail:'full' adds address/externalId/all phones. |
| get_customerA | Get a single customer by id or externalId. Returns a shaped customer; detail:'full' adds address and contact details. |
| create_customerA | Create a customer with name, contacts, address, optional externalId. Returns {success, id}. |
| update_customerA | Edit an existing customer (name, email, phones, address) by id or externalId. Only the fields you pass are sent. Returns {success}. |
| merge_customersA | Merge duplicate customers into a target; merged records are DELETED. Returns {success}. |
| customers_historyA | Customer field-change log for growth/churn signals and incremental sync. Returns {history[], pagination}. |
| list_productsA | List catalog products with filters by name, active, group, price range. Returns pagination + array of {id, name, article, active, url, groups, offers}. |
| list_product_groupsA | List product groups (category tree). Returns {productGroup[], pagination}. |
| store_inventoriesA | Stock levels (and cost prices) per offer/warehouse. Use details:true for the per-store breakdown. Returns {offers[], pagination}. |
| order_payment_createA | Record a payment against an order (amount, type, status, paid_at). Returns {success, id}. |
| order_payment_editA | Edit an existing order payment (amount/status/paid_at). Returns {success}. |
| order_payment_deleteA | Delete an order payment by id. Returns {success}. |
| customer_notes_listA | List free-text notes attached to customers. Returns {notes[], pagination}. |
| customer_notes_createA | Add a note to a customer (by id or externalId). Returns {success, id}. |
| customer_notes_deleteA | Delete a customer note by id. Returns {success}. |
| tasks_listA | List follow-up tasks/reminders, filterable by status/performer/customer. Returns {tasks[], pagination}. |
| tasks_createA | Create a task (text, due datetime, performer, linked order/customer). Returns {success, id}. |
| tasks_editA | Edit a task or mark it complete. Returns {success}. |
| list_segmentsA | List customer segments (RFM/marketing cohorts). Returns {segments[], pagination}. |
| list_costsA | List expense records (for margin/profit analytics) by date and cost group. Returns {costs[], pagination}. |
| create_costA | Create an expense record, optionally attributed to an order. Returns {success, id}. |
| files_listA | List files attached to orders/customers. Returns {files[], pagination}. |
| files_getA | Get a file's metadata by id. Returns {file}. |
| files_uploadA | Upload a file (UTF-8 text or base64 binary). Returns {success, file}. |
| list_statusesA | All order statuses (codes, names, groups, ordering). Call before filtering/updating orders by status. |
| list_delivery_typesA | All delivery types with codes, names, default costs. |
| list_payment_typesB | All payment types with codes and names. |
| list_storesB | All warehouses/stores (codes, names, types). |
| list_sitesA | All sites/stores the API key can act on — use the returned code as the |
| list_countriesB | Valid country ISO codes for addresses/delivery. |
| list_order_typesA | All order types (codes/names) — valid values for create_order's order_type. |
| list_order_methodsB | All order methods (acquisition channels). |
| get_orders_summaryA | Period-scoped order summary: exact totalCount for the date range plus revenue, average order value, and status distribution aggregated over up to max_pages×100 orders (partial:true if the window exceeds that). |
| get_customers_summaryA | Period-scoped new-customer count for a date range. Returns {period, newCustomers}. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| new-orders | Show all orders created today — quick daily overview. |
| customer-search | Find a customer by name, email, or phone. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 39 tools
Each tool targets a distinct operation (list, get, create, update, delete, history, summary) on a specific entity (orders, customers, products, payments, etc.). Descriptions clearly differentiate them, even where naming patterns vary.
Tool names mix verb-first (e.g., list_orders, create_customer) and noun-first patterns (e.g., orders_history, customer_notes_list, order_payment_create). While readable, the inconsistency in naming convention increases ambiguity.
With 39 tools, the surface is heavy. Many reference data tools (list_statuses, list_delivery_types) add bulk without deepening functionality. The count is unnecessarily high for the scope.
Several fundamental CRUD operations are missing: no order delete, no customer delete, no product create/update/delete, no note update, no task delete, no file delete. These gaps will hinder autonomous agent workflows in a retail CRM.