MCP-Server

SoundCreation Catalog

ro.soundcreation/catalog
Commerce & Retail Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Searches and compares musical instruments, prices, availability, bundles, promotions, alternatives, and open-box products.

compare_products
Compare products
Compare 2 to 4 products side by side - price, stock, specs, who each one suits - together with the stored spec-based comparisons between them, or pass ONE product_id with with_alternatives=true to put it next to the in-stock alternatives its buying guide compares it with. Good for "X or Y?", "what is the difference between..." and "is there something similar but..." questions. Records carry specs and short_description (get_product has the full description and the accessories). comparisons[] is written from the point of view of product_id against the alternative; two products with no stored comparison between them have none - compare their specs directly. Buying-guide text is Romanian for language=ro and English otherwise.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['product_ids'], 'properties': {'language': {'enum': ['ro', 'hu', 'de', 'en'], 'type': 'string', 'description': 'Locale for text + pricing (ro=RON, hu=HUF, de/en=EUR). Default ro.'}, 'product_ids': {'type': 'array', 'items': {'type': 'integer'}, 'maxItems': 4, 'minItems': 1, 'description': 'Catalog product ids: 2 to 4, or exactly 1 together with with_alternatives=true.'}, 'with_alternatives': {'type': 'boolean', 'description': 'With exactly one product id: add the in-stock alternatives its buying guide compares it with (up to 3). Default false.'}}}
create_checkout
Create checkout
Create an order and get a Stripe payment link the customer opens to pay. Requires authentication (send a valid X-Api-Key header). Shipping to RO, HU or DE only. Prices include VAT and match get_product for the same destination.
Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['items', 'buyer', 'shipping_address'], 'properties': {'buyer': {'type': 'object', 'required': ['name', 'email'], 'properties': {'name': {'type': 'string'}, 'email': {'type': 'string'}, 'phone': {'type': 'string'}}}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['product_id'], 'properties': {'quantity': {'type': 'integer', 'minimum': 1}, 'product_id': {'type': 'integer'}}}, 'description': 'Products to buy.'}, 'expected_total': {'type': 'number', 'description': 'Optional. If set, the call is rejected when the live total moved more than 2%.'}, 'shipping_address': {'type': 'object', 'required': ['country', 'street', 'city'], 'properties': {'city': {'type': 'string'}, 'county': {'type': 'string'}, 'street': {'type': 'string'}, 'country': {'enum': ['RO', 'HU', 'DE'], 'type': 'string'}, 'postcode': {'type': 'string'}}}}}
get_product
Get product details
Get full details for one product by id, including description, specs, stock and VAT-included localized price. When the product is NOT in stock the record carries substitutes[]: up to 5 in-stock products of the same kind in the same price band (the same alternatives the product page shows), each as a brief record with its own product_id, price and product_url - offer them instead of searching. Every record also carries companions[]: up to 8 in-stock accessories used together with this product, one per role (role is a short label such as stand, cable, strings, case; other = no specific role) - the list our add-to-cart box shows, chosen from what customers buy together and checked with AI - each as a brief record with its own product_id, price and product_url; when the customer asks what else they need or decides to buy, offer these first (empty = we have no accessory list). Products with a stored buying guide also carry buying_guide: who the product suits (audience.levels are fixed English tokens: beginner, intermediate, professional, child, teacher, gift), typical use cases, plain-language explanations of terms, questions and answers (the last one, when present, lists the accessories of companions[]), and - while the product is in stock - a spec-based comparison with up to 3 in-stock alternatives (each with its own product_id, price and product_url). The guide is Romanian for language=ro and English otherwise; it was written with AI from our product data and a sourced fact sheet.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['product_id'], 'properties': {'language': {'enum': ['ro', 'hu', 'de', 'en'], 'type': 'string', 'description': 'Locale for text + pricing. Default ro.'}, 'product_id': {'type': 'integer', 'description': 'Catalog product id.'}}}
list_bundles
List bundles
List bundles — pre-priced sets of products sold together for less than buying the parts separately (an instrument plus the accessories normally needed with it). Each result gives the set price, what the parts would cost separately, the saving, and exactly what is included. Good for "what do I need to get started" questions, where recommending one set beats listing five separate products.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'sort': {'enum': ['discount', 'price_asc', 'price_desc', 'newest'], 'type': 'string', 'description': 'Default discount (biggest saving first).'}, 'brand': {'type': 'string', 'description': 'Restrict by brand name, partial match.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Max results (default 20).'}, 'query': {'type': 'string', 'description': 'Optional text match on the set or brand name.'}, 'offset': {'type': 'integer', 'maximum': 500, 'minimum': 0}, 'in_stock': {'type': 'boolean', 'description': 'true = only sets where every included item is in stock.'}, 'language': {'enum': ['ro', 'hu', 'de', 'en'], 'type': 'string', 'description': 'Locale for text + pricing (ro=RON, hu=HUF, de/en=EUR). Default ro.'}, 'max_price': {'type': 'number', 'description': 'Highest acceptable price, response currency.'}, 'min_price': {'type': 'number', 'description': 'Lowest acceptable price, response currency.'}}}
list_open_box
List open-box units
List open-box / ex-display units (Romanian: "resigilat") — returned or opened stock sold cheaper, one entry per physical unit, each with its own price, condition note and product page. Quantities are small and often one-of-a-kind, so treat availability as immediate-only. These units are NOT part of the normal catalog listings.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'sort': {'enum': ['discount', 'price_asc', 'price_desc', 'newest'], 'type': 'string', 'description': 'Default discount (biggest reduction first).'}, 'brand': {'type': 'string', 'description': 'Restrict by brand name, partial match.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Max results (default 20).'}, 'query': {'type': 'string', 'description': 'Optional text match on product or brand name.'}, 'offset': {'type': 'integer', 'maximum': 500, 'minimum': 0}, 'category': {'type': 'string', 'description': 'Restrict by category name, partial match.'}, 'language': {'enum': ['ro', 'hu', 'de', 'en'], 'type': 'string', 'description': 'Locale for text + pricing (ro=RON, hu=HUF, de/en=EUR). Default ro.'}, 'max_price': {'type': 'number', 'description': 'Highest acceptable price, response currency.'}, 'category_id': {'type': 'integer', 'description': 'Restrict to one category id.'}}}
list_promotions
List current promotions
List what is discounted at SoundCreation right now, biggest reduction first. Each result carries price (current) and price_old (before the discount). Use this rather than searching product by product when the customer asks what is on offer.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'sort': {'enum': ['discount', 'price_asc', 'price_desc', 'newest'], 'type': 'string', 'description': 'Default discount (biggest reduction first).'}, 'brand': {'type': 'string', 'description': 'Restrict by brand name, partial match.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Max results (default 20).'}, 'offset': {'type': 'integer', 'maximum': 500, 'minimum': 0}, 'category': {'type': 'string', 'description': 'Restrict by category name, partial match.'}, 'in_stock': {'type': 'boolean', 'description': 'true = only items in stock now.'}, 'language': {'enum': ['ro', 'hu', 'de', 'en'], 'type': 'string', 'description': 'Locale for text + pricing (ro=RON, hu=HUF, de/en=EUR). Default ro.'}, 'max_price': {'type': 'number', 'description': 'Highest acceptable price, response currency.'}, 'min_price': {'type': 'number', 'description': 'Lowest acceptable price, response currency.'}, 'category_id': {'type': 'integer', 'description': 'Restrict to one category id.'}}}
search_products
Search products
Search the SoundCreation catalog by free text (brand, model, category, or keywords), by filters, or both. With a query you get relevance-ranked results; with filters only you get a sorted browse ("cheapest in-stock electric guitar under 2000"). All prices include VAT and are locale-correct.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'sort': {'enum': ['relevance', 'price_asc', 'price_desc', 'discount', 'newest'], 'type': 'string', 'description': 'Default: relevance with a query, cheapest-first without one.'}, 'brand': {'type': 'string', 'description': 'Restrict by brand name, partial match.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Max results (default 20).'}, 'query': {'type': 'string', 'description': 'Free-text search query. Optional if you supply at least one filter.'}, 'offset': {'type': 'integer', 'maximum': 500, 'minimum': 0, 'description': 'Skip this many results, for paging through a filtered list.'}, 'category': {'type': 'string', 'description': 'Restrict by category name, partial match (use when you do not know the id).'}, 'in_stock': {'type': 'boolean', 'description': 'true = only items physically in stock and shippable now.'}, 'language': {'enum': ['ro', 'hu', 'de', 'en'], 'type': 'string', 'description': 'Locale for text + pricing (ro=RON, hu=HUF, de/en=EUR). Default ro.'}, 'on_promo': {'type': 'boolean', 'description': 'true = only items currently discounted (price_old is the pre-discount price).'}, 'condition': {'enum': ['new', 'open_box', 'bundle'], 'type': 'string', 'description': 'new (default) = normal catalog items. open_box = individually priced used/opened units; each result is one physical unit. bundle = pre-priced sets of several products sold together for less.'}, 'max_price': {'type': 'number', 'description': 'Highest acceptable price, in the response currency for the chosen language.'}, 'min_price': {'type': 'number', 'description': 'Lowest acceptable price, in the response currency for the chosen language.'}, 'category_id': {'type': 'integer', 'description': 'Restrict to one category id. Ids come back on every result.'}}}
Geändert
compare_products
27. September 2026 02:50
Geändert
get_product
27. September 2026 02:50
Hinzugefügt
compare_products
25. September 2026 02:59
Geändert
get_product
25. September 2026 02:59
Geändert
get_product
23. September 2026 02:50
Hinzugefügt
create_checkout
17. September 2026 12:54
Hinzugefügt
get_product
17. September 2026 12:54
Hinzugefügt
list_bundles
17. September 2026 12:54
Hinzugefügt
list_open_box
17. September 2026 12:54
Hinzugefügt
list_promotions
17. September 2026 12:54
Hinzugefügt
search_products
17. September 2026 12:54