MoySklad MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MOYSKLAD_LOGIN | No | Login for HTTP Basic auth | |
| MOYSKLAD_TOKEN | No | Bearer token for MoySklad API (preferred) | |
| MOYSKLAD_PASSWORD | No | Password for HTTP Basic auth |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_productsA | Search products in MoySklad by name or article. Prices returned in RUBLES. |
| get_productA | Get a single product by UUID. Prices returned in RUBLES. |
| create_productB | Create a new product. Prices in RUBLES (converted to kopecks internally). |
| update_pricesB | Update sale/buy/min prices for a product. Prices in RUBLES. |
| get_stockC | Get current stock/inventory report. Shows quantities, reserves, and in-transit. |
| get_stock_by_storeA | Get stock report broken down by warehouse/store. Shows how much of each product is in each store. |
| get_counterpartiesC | Search counterparties (customers/suppliers) by name, INN, or phone. |
| get_counterpartyA | Get full details of a counterparty by UUID. |
| create_counterpartyB | Create a new counterparty. Set companyType to 'legal', 'entrepreneur', or 'individual'. |
| create_customer_orderC | Create a customer order. Prices in RUBLES (converted to kopecks). |
| get_ordersC | Get customer orders with filtering and sorting. Sums in RUBLES. |
| get_customer_orderA | Get a single customer order by UUID with expanded positions. |
| update_customer_order_statusC | Change the status/state of a customer order. |
| get_profit_reportA | Get profit report by product. Shows sales, costs, returns, profit, margin. |
| get_sales_reportC | Get sales report by product. Shows quantities sold and revenue. |
| create_supplyB | Create an incoming supply (purchase receipt). Prices in RUBLES. |
| create_demandA | Create a shipment (demand) to fulfill a customer order. Links to a warehouse. |
| list_storesB | List all warehouses/stores with names, addresses, and meta hrefs. |
| list_organizationsA | List all organizations (your legal entities) with names, INN, and meta hrefs. |
| list_webhooksA | List all registered webhooks with URL, action, entity type, and status. |
| create_webhookB | Register a new webhook for entity events (CREATE/UPDATE/DELETE/PROCESSED). |
| update_webhookB | Update a webhook (URL, action, entity type, enabled state). |
| delete_webhookB | Delete a registered webhook by UUID. |
| create_moveB | Create a stock transfer (move) between two warehouses. |
| get_movesB | List stock transfer (move) documents. |
| create_enterC | Create a stock enter (оприходование) — add stock into a warehouse. |
| get_entersB | List stock enter (оприходование) documents. |
| create_lossB | Create a stock write-off (списание) from a warehouse. |
| get_lossesB | List stock write-off (списание) documents. |
| create_inventoryB | Create an inventory count (инвентаризация) for a warehouse. |
| get_inventoriesA | List inventory count (инвентаризация) documents. |
| create_purchase_orderB | Create a purchase order (заказ поставщику). Prices in RUBLES. |
| get_purchase_ordersB | List purchase orders (заказы поставщикам). |
| create_sales_returnA | Create a sales return (возврат покупателя). Prices in RUBLES. |
| create_purchase_returnB | Create a purchase return (возврат поставщику). Prices in RUBLES. |
| get_documentsA | Generic: list documents of any MoySklad entity type (fallback for entities without a dedicated tool). |
| get_documentA | Generic: get a single document of any MoySklad entity type by UUID (positions expanded). |
| create_payment_inB | Create an incoming bank payment (входящий платёж). Amount in RUBLES. |
| create_payment_outB | Create an outgoing bank payment (исходящий платёж). Amount in RUBLES. |
| create_cash_inB | Create a cash receipt order (приходный кассовый ордер). Amount in RUBLES. |
| create_cash_outB | Create a cash expense order (расходный кассовый ордер). Amount in RUBLES. |
| create_invoice_outB | Create a sales invoice (счёт покупателю). Prices in RUBLES. |
| create_invoice_inC | Create a supplier invoice (счёт поставщика). Prices in RUBLES. |
| get_invoices_outB | List sales invoices (счета покупателям). |
| search_assortmentA | Unified search across products, variants, services and bundles. Returns name, type, price. |
| list_price_typesA | List the account's price types (the first is the default). Use a price type href when setting product prices. |
| search_variantsB | Search product variants (modifications). |
| search_bundlesC | Search bundles (kits/sets). |
| search_servicesD | Search services. |
| create_serviceC | Create a service. Prices in RUBLES. |
| get_dashboardB | Get dashboard metrics (sales, orders, money) for a day/week/month. Money values are in kopecks. |
| get_turnoverB | Get product turnover (обороты) over a period: opening, income, outcome, closing. Sums in RUBLES. |
| get_money_reportA | Get current money balances by bank account and cash register. Balances in RUBLES. |
| get_stock_currentA | Fast current stock report (assortment id -> stock), optionally for one warehouse. |
| list_employeesB | List employees (for document owners/responsible persons). |
| list_currenciesA | List currencies with ISO codes and rates. |
| list_product_foldersC | List product groups/folders. |
| get_metadataA | Get metadata for an entity type (states, attributes, price types). Use to find order state hrefs for update_customer_order_status. |
| get_auditA | Get the account audit/event log (who changed what, when). |
| get_entity_auditA | Get the change history of a single entity by type and UUID. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 60 tools
Most tools have clearly distinct purposes, but there is some overlap among stock reports (get_stock, get_stock_by_store, get_stock_current) and among search tools (search_products, search_assortment, search_variants). The descriptions help resolve ambiguity, but an agent might still struggle to pick the right one in edge cases.
The naming mostly follows a consistent verb_noun pattern (search_*, get_*, create_*, update_*, list_*, delete_*). However, there is a mix of 'get' and 'list' for collection endpoints (get_orders vs list_invoices_out), and some verbs are more specific than others (update_prices, update_customer_order_status). Overall, the pattern is readable and predictable.
With 60 tools, this is far beyond the 25+ threshold for 'too many'. Even for an ERP-like system like MoySklad, the sheer number makes the toolset unwieldy and difficult for an agent to navigate efficiently. The scope is broad, but the count is excessive.
The toolset covers a wide range of MoySklad operations, including products, orders, stock, payments, webhooks, and reports. However, there are notable gaps: many entities only have create and read but lack update and delete (e.g., products, counterparties, payments). The generic get_documents/get_document partially compensate, but the missing CRUD operations create dead ends.