Skip to main content
Glama

Read shop

shop_read
Read-onlyIdempotent

Reads shop data of the active site: categories, products, variations, stock, basket, checkout form, orders, product comments, currencies and balance.

Input Schema

NameRequiredDescriptionDefault
idNoGoods, category, comment, or basket line id.
cntNoBasket quantity.
idsNoIds separated by commas (invoice_*: order ids, also separated by |; stock_remove).
pidNoParent category id.
dateNoinvoices_list created period date1|date2.
hideNoHide flag or invoices_list group.
pageNoList page, from 1.
pnumNoGoods list page, the earlier name of page; page wins when both are set.
sortNoGoods list sort field.
viewNoGoods list view. Default usergoods when user_id is given, otherwise allgoods.
cdateNoinvoices_list delivery period date1|date2.
f_artNo
orderNoList asc/desc or order hash.
actionYesOperation to run. Each oneOf entry describes one action and lists its parameters.
detailNoRecord form of a paged list. brief (default): the fields that identify a record, without descriptions and HTML; for products id, title up to 120 characters, status (visible or hidden), date added (UTC, ISO 8601), public URL, price, stock, category id and an excerpt up to 200 characters. Titles and excerpts are plain text; names, logins, paths, URLs and other identifiers are as the source gives them. full: complete records. A list reply is at most 30 KB and holds every record of its page: a record that does not fit in full comes in brief form, marked detail brief, the reply counts such records in brief_records, and get by id returns the complete record; brief records shorten their excerpts, then keep only their ids and titles. Only a page that does not fit even so is cut: truncated is true and next names the offset to go on from.
f_nameNoGoods name filter (plain; MCP encodes Base64).
f_warrNo
offsetNoRecords to skip from the start of a list; overrides page. A list reply cut at its size limit names the offset that follows in next.
statusNoOrder status code.
f_brandNo
f_priceNoPrice filter MIN|MAX|CUR.
f_stockNo
inv_sumNoinvoices_list sum1|sum2.
user_idNoUser id filter or balance target.
f_statusNo
f_weightNo
goods_idNoWishlist goods id (get).
per_pageNoRecords per page: 1-50, 20 by default, larger values count as 50.
parent_idNoSynonym for pid / category_list parent.
payment_idNo
promo_codeNo
delivery_idNo
get_globalsNo1 = global categories in category_list.
group_courierNo
variation_crcNoVariation hash from variations_list.
custom_delivery_taxNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / action / oneOf
      Previous value: -[
      -  {
      -    "const": "category_list",
      -    "description": "Lists shop categories (children of parent_id when set). Optional: parent_id, pid, get_globals, offset."
      -  },
      -  {
      -    "const": "list",
      -    "description": "Lists products a page at a time, with sorting and filters: all goods, the wishlist of the current user, or the goods of user_id (view usergoods). By default products are brief, without descriptions; complete products come with detail=full, and one complete product card from get by id. The reply has page, per_page, total, has_more, truncated and, while products remain, next with the paging arguments of the following page. A shop that shows fewer than 5 products a catalog page serves fewer products a list page than per_page asks; the reply per_page names how many, and pages by number stay consecutive. Optional: view, user_id, page, pnum, per_page, offset, detail, sort, order, f_name, f_brand, f_art, f_price, f_stock, f_status, f_warr, f_weight."
      -  },
      -  {
      -    "const": "get",
      -    "description": "Returns one product card. Required: id. Optional: cnt, goods_id."
      -  },
      -  {
      -    "const": "variations_list",
      -    "description": "Lists the variations of a product. Required: id. Optional: offset."
      -  },
      -  {
      -    "const": "variation_get",
      -    "description": "Returns one variation of a product. Required: id, variation_crc."
      -  },
      -  {
      -    "const": "variation_dict_list",
      -    "description": "Returns one variation dictionary (name and values) by its id. Required: id."
      -  },
      -  {
      -    "const": "stock_get",
      -    "description": "Returns the stock of a product by option sets. Required: id. Optional: offset."
      -  },
      -  {
      -    "const": "basket_get",
      -    "description": "Returns the basket of the current user, or of user_id. Optional: user_id."
      -  },
      -  {
      -    "const": "checkout_get",
      -    "description": "Returns the checkout form data for the current basket. Optional: promo_code, custom_delivery_tax."
      -  },
      -  {
      -    "const": "invoices_list",
      -    "description": "Lists orders with filters, a page at a time, paged like list. Brief orders by default; detail=full gives complete orders, order_get one complete order. Optional: page, per_page, offset, detail, user_id, hide, status, group_courier, payment_id, delivery_id, ids, id, inv_sum, cdate, date."
      -  },
      -  {
      -    "const": "order_get",
      -    "description": "Returns one order (order hash in order or id). Optional: order, id."
      -  },
      -  {
      -    "const": "comments_list",
      -    "description": "Lists the comments of a product a page at a time, paged like list. Brief comments by default; detail=full gives complete comments. Required: id. Optional: page, per_page, offset, detail."
      -  },
      -  {
      -    "const": "currencies",
      -    "description": "Lists shop currencies and rates. Optional: offset."
      -  },
      -  {
      -    "const": "balance_get",
      -    "description": "Returns the balance of a user. Optional: user_id."
      -  }
      -]New value: +[
      +  {
      +    "const": "category_list",
      +    "description": "Lists shop categories (children of parent_id when set). Optional: parent_id, pid, get_globals, offset."
      +  },
      +  {
      +    "const": "list",
      +    "description": "Lists products a page at a time, with sorting and filters: all goods, the wishlist of the current user, or the goods of user_id (view usergoods, which user_id alone selects). By default products are brief, without descriptions; complete products come with detail=full, and one complete product card from get by id. The reply has page, per_page, total, has_more, truncated and, while products remain, next with the paging arguments of the following page. A shop that shows fewer than 5 products a catalog page serves fewer products a list page than per_page asks; the reply per_page names how many, and pages by number stay consecutive. Optional: view, user_id, page, pnum, per_page, offset, detail, sort, order, f_name, f_brand, f_art, f_price, f_stock, f_status, f_warr, f_weight."
      +  },
      +  {
      +    "const": "get",
      +    "description": "Returns one product card. Required: id. Optional: cnt, goods_id."
      +  },
      +  {
      +    "const": "variations_list",
      +    "description": "Lists the variations of a product. Required: id. Optional: offset."
      +  },
      +  {
      +    "const": "variation_get",
      +    "description": "Returns one variation of a product. Required: id, variation_crc."
      +  },
      +  {
      +    "const": "variation_dict_list",
      +    "description": "Returns one variation dictionary (name and values) by its id. Required: id."
      +  },
      +  {
      +    "const": "stock_get",
      +    "description": "Returns the stock of a product by option sets. Required: id. Optional: offset."
      +  },
      +  {
      +    "const": "basket_get",
      +    "description": "Returns the basket of the current user, or of user_id. Optional: user_id."
      +  },
      +  {
      +    "const": "checkout_get",
      +    "description": "Returns the checkout form data for the current basket. Optional: promo_code, custom_delivery_tax."
      +  },
      +  {
      +    "const": "invoices_list",
      +    "description": "Lists orders with filters, a page at a time, paged like list. Brief orders by default; detail=full gives complete orders, order_get one complete order. Optional: page, per_page, offset, detail, user_id, hide, status, group_courier, payment_id, delivery_id, ids, id, inv_sum, cdate, date."
      +  },
      +  {
      +    "const": "order_get",
      +    "description": "Returns one order (order hash in order or id). Required: order or id."
      +  },
      +  {
      +    "const": "comments_list",
      +    "description": "Lists the comments of a product a page at a time, paged like list. Brief comments by default; detail=full gives complete comments. Required: id. Optional: page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "currencies",
      +    "description": "Lists shop currencies and rates. Optional: offset."
      +  },
      +  {
      +    "const": "balance_get",
      +    "description": "Returns the balance of a user. Optional: user_id."
      +  }
      +]
    • changedInput schema / properties / ids / description
      Previous value: -"Comma-separated ids (invoice_*, stock_remove)."New value: +"Ids separated by commas (invoice_*: order ids, also separated by |; stock_remove)."
    • changedInput schema / properties / view / description
      Previous value: -"Goods list view. Default allgoods."New value: +"Goods list view. Default usergoods when user_id is given, otherwise allgoods."
  2. Changed6 schema fields changed
    • changedInput schema / properties / action / oneOf
      Previous value: -[
      -  {
      -    "const": "category_list",
      -    "description": "Lists shop categories (children of parent_id when set). Optional: parent_id, pid, get_globals."
      -  },
      -  {
      -    "const": "list",
      -    "description": "Lists products with paging, sorting and filters: all goods, the wishlist of the current user, or the goods of user_id (view usergoods). Optional: view, user_id, pnum, page, sort, order, f_name, f_brand, f_art, f_price, f_stock, f_status, f_warr, f_weight."
      -  },
      -  {
      -    "const": "get",
      -    "description": "Returns one product card. Required: id. Optional: cnt, goods_id."
      -  },
      -  {
      -    "const": "variations_list",
      -    "description": "Lists the variations of a product. Required: id."
      -  },
      -  {
      -    "const": "variation_get",
      -    "description": "Returns one variation of a product. Required: id, variation_crc."
      -  },
      -  {
      -    "const": "variation_dict_list",
      -    "description": "Returns one variation dictionary (name and values) by its id. Required: id."
      -  },
      -  {
      -    "const": "stock_get",
      -    "description": "Returns the stock of a product by option sets. Required: id."
      -  },
      -  {
      -    "const": "basket_get",
      -    "description": "Returns the basket of the current user, or of user_id. Optional: user_id."
      -  },
      -  {
      -    "const": "checkout_get",
      -    "description": "Returns the checkout form data for the current basket. Optional: promo_code, custom_delivery_tax."
      -  },
      -  {
      -    "const": "invoices_list",
      -    "description": "Lists orders with filters. Optional: page, user_id, hide, status, group_courier, payment_id, delivery_id, ids, id, inv_sum, cdate, date."
      -  },
      -  {
      -    "const": "order_get",
      -    "description": "Returns one order (order hash in order or id). Optional: order, id."
      -  },
      -  {
      -    "const": "comments_list",
      -    "description": "Lists the comments of a product. Required: id."
      -  },
      -  {
      -    "const": "currencies",
      -    "description": "Lists shop currencies and rates."
      -  },
      -  {
      -    "const": "balance_get",
      -    "description": "Returns the balance of a user. Optional: user_id."
      -  }
      -]New value: +[
      +  {
      +    "const": "category_list",
      +    "description": "Lists shop categories (children of parent_id when set). Optional: parent_id, pid, get_globals, offset."
      +  },
      +  {
      +    "const": "list",
      +    "description": "Lists products a page at a time, with sorting and filters: all goods, the wishlist of the current user, or the goods of user_id (view usergoods). By default products are brief, without descriptions; complete products come with detail=full, and one complete product card from get by id. The reply has page, per_page, total, has_more, truncated and, while products remain, next with the paging arguments of the following page. A shop that shows fewer than 5 products a catalog page serves fewer products a list page than per_page asks; the reply per_page names how many, and pages by number stay consecutive. Optional: view, user_id, page, pnum, per_page, offset, detail, sort, order, f_name, f_brand, f_art, f_price, f_stock, f_status, f_warr, f_weight."
      +  },
      +  {
      +    "const": "get",
      +    "description": "Returns one product card. Required: id. Optional: cnt, goods_id."
      +  },
      +  {
      +    "const": "variations_list",
      +    "description": "Lists the variations of a product. Required: id. Optional: offset."
      +  },
      +  {
      +    "const": "variation_get",
      +    "description": "Returns one variation of a product. Required: id, variation_crc."
      +  },
      +  {
      +    "const": "variation_dict_list",
      +    "description": "Returns one variation dictionary (name and values) by its id. Required: id."
      +  },
      +  {
      +    "const": "stock_get",
      +    "description": "Returns the stock of a product by option sets. Required: id. Optional: offset."
      +  },
      +  {
      +    "const": "basket_get",
      +    "description": "Returns the basket of the current user, or of user_id. Optional: user_id."
      +  },
      +  {
      +    "const": "checkout_get",
      +    "description": "Returns the checkout form data for the current basket. Optional: promo_code, custom_delivery_tax."
      +  },
      +  {
      +    "const": "invoices_list",
      +    "description": "Lists orders with filters, a page at a time, paged like list. Brief orders by default; detail=full gives complete orders, order_get one complete order. Optional: page, per_page, offset, detail, user_id, hide, status, group_courier, payment_id, delivery_id, ids, id, inv_sum, cdate, date."
      +  },
      +  {
      +    "const": "order_get",
      +    "description": "Returns one order (order hash in order or id). Optional: order, id."
      +  },
      +  {
      +    "const": "comments_list",
      +    "description": "Lists the comments of a product a page at a time, paged like list. Brief comments by default; detail=full gives complete comments. Required: id. Optional: page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "currencies",
      +    "description": "Lists shop currencies and rates. Optional: offset."
      +  },
      +  {
      +    "const": "balance_get",
      +    "description": "Returns the balance of a user. Optional: user_id."
      +  }
      +]
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "Record form of a paged list. brief (default): the fields that identify a record, without descriptions and HTML; for products id, title up to 120 characters, status (visible or hidden), date added (UTC, ISO 8601), public URL, price, stock, category id and an excerpt up to 200 characters. Titles and excerpts are plain text; names, logins, paths, URLs and other identifiers are as the source gives them. full: complete records. A list reply is at most 30 KB and holds every record of its page: a record that does not fit in full comes in brief form, marked detail brief, the reply counts such records in brief_records, and get by id returns the complete record; brief records shorten their excerpts, then keep only their ids and titles. Only a page that does not fit even so is cut: truncated is true and next names the offset to go on from.",
      +  "enum": [
      +    "brief",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Records to skip from the start of a list; overrides page. A list reply cut at its size limit names the offset that follows in next.",
      +  "type": "number"
      +}
    • changedInput schema / properties / page / description
      Previous value: -"List page (orders / goods)."New value: +"List page, from 1."
    • addedInput schema / properties / per_page
      Added value: +{
      +  "description": "Records per page: 1-50, 20 by default, larger values count as 50.",
      +  "type": "number"
      +}
    • changedInput schema / properties / pnum / description
      Previous value: -"Goods list page."New value: +"Goods list page, the earlier name of page; page wins when both are set."
  3. Added

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description's only added context is that reads target the 'active site' (implying a dependency on select_site) and its enumeration of domains; it says nothing about permissions, pagination behavior, or cost of broad reads.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with a clear verb and scope and no wasted clauses. The trailing domain list is a slight dump but each item maps to a real action, so it earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-action, 36-parameter dispatcher this is thin: no explanation of how to choose an action, no mention that detail=full is needed for complete records, and no note that many params are action-specific. The unusually self-documenting oneOf schema carries most of that burden, keeping it at minimum-viable rather than inadequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no information about any of the 36 parameters, not even the required `action` dispatcher. Schema coverage is 69% (below the 80% threshold where a 3 baseline would apply), so the description should compensate for the undocumented quarter but does not; the schema's oneOf blocks do the real work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Reads') and resource ('shop data of the active site') and enumerates the nine data domains covered, so an agent knows the breadth of the read surface. The read/write/delete split against shop_write and shop_delete is implied by the verb but not explicitly stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use, when-not-to-use, or alternative routing: it never says to use shop_write for mutations or shop_delete for removal. Action selection among the 14 operations is left entirely to the schema's oneOf blocks, not to the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.