@scavio/mcp-server 0.27.0 → 0.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/tools/specs.js +3 -3
- package/dist/tools/specs.js.map +1 -1
- package/dist/tools/totalwine.js +3 -3
- package/dist/tools/totalwine.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -747,7 +747,7 @@ the store used is echoed in `data.store`, and `product_id` alone is enough with
|
|
|
747
747
|
| `get_totalwine_product` | One product at one store: price, units in stock, aisle, bay, shelf, last restock date, ABV, taste profile |
|
|
748
748
|
| `get_totalwine_stores` | Stores near a ZIP or city: store_id, address, phone, coordinates, distance |
|
|
749
749
|
|
|
750
|
-
|
|
750
|
+
10 credits per call. Prices and stock are per store, so `store_id` (from
|
|
751
751
|
`get_totalwine_stores`, e.g. `"503"`) is required on search and product. When a
|
|
752
752
|
store carries none of the matches, `products` is empty and `searched_all_stores`
|
|
753
753
|
is true.
|
|
@@ -760,7 +760,7 @@ is true.
|
|
|
760
760
|
| `get_specs_product` | Every store's price and stock for one product in `store_prices` (about 200 stores), plus the online price and details |
|
|
761
761
|
| `get_specs_stores` | Stores in a Texas region: store_id, address, phone, coordinates, hours |
|
|
762
762
|
|
|
763
|
-
|
|
763
|
+
5 credits per call. Pass the `slug` from `search_specs` to `get_specs_product`;
|
|
764
764
|
add `store_id` (from `get_specs_stores`, e.g. `"169"`) to put that store's price
|
|
765
765
|
at the top.
|
|
766
766
|
|
package/dist/tools/specs.js
CHANGED
|
@@ -12,17 +12,17 @@ export function registerSpecsTools(server, getClient) {
|
|
|
12
12
|
return handleApiError(err);
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
|
-
server.tool("search_specs", `Search Spec's Wines, Spirits & Finer Foods (Texas liquor chain). Every result has the online price (cents), case price and case quantity, on_promo and keyclub_offer flags, stock, brand, size, category, SKU, UPC and a slug. For per-store prices, pass the slug to get_specs_product.
|
|
15
|
+
server.tool("search_specs", `Search Spec's Wines, Spirits & Finer Foods (Texas liquor chain). Every result has the online price (cents), case price and case quantity, on_promo and keyclub_offer flags, stock, brand, size, category, SKU, UPC and a slug. For per-store prices, pass the slug to get_specs_product. 5 credits/call.`, {
|
|
16
16
|
query: z.string().min(1).max(200).describe("Search keywords, e.g. 'titos'."),
|
|
17
17
|
page: z.number().int().min(1).max(50).optional().describe("Page, 1-based. 24 results per page."),
|
|
18
18
|
}, post("search"));
|
|
19
|
-
server.tool("get_specs_product", `One Spec's product with every store's price and stock in store_prices (about 200 Texas stores in one call), the online price, and details: brand, size, proof, ABV, type, origin, region, vintage, tasting notes, images. Pass slug (from search_specs) or product_url. Optional store_id (from get_specs_stores) puts that store's price and stock at the top; available_at_store is false if it does not list the item.
|
|
19
|
+
server.tool("get_specs_product", `One Spec's product with every store's price and stock in store_prices (about 200 Texas stores in one call), the online price, and details: brand, size, proof, ABV, type, origin, region, vintage, tasting notes, images. Pass slug (from search_specs) or product_url. Optional store_id (from get_specs_stores) puts that store's price and stock at the top; available_at_store is false if it does not list the item. 5 credits.`, {
|
|
20
20
|
slug: z.string().min(1).max(200).optional().describe("Product slug from search_specs, e.g. 'titos-texas-vodka-5'."),
|
|
21
21
|
product_url: z.string().min(1).max(500).optional().describe("https://specsonline.com/shop/<type>/<slug>/"),
|
|
22
22
|
store_id: z.string().regex(/^\d{1,4}$/).optional()
|
|
23
23
|
.describe('Spec\'s store number, e.g. "169" (Stone Oak, San Antonio).'),
|
|
24
24
|
}, post("product"));
|
|
25
|
-
server.tool("get_specs_stores", `List Spec's stores in a Texas region: store_id, name, status, address, city, zip, phone, coordinates and opening hours per day. Use store_id with get_specs_product.
|
|
25
|
+
server.tool("get_specs_stores", `List Spec's stores in a Texas region: store_id, name, status, address, city, zip, phone, coordinates and opening hours per day. Use store_id with get_specs_product. 5 credits.`, {
|
|
26
26
|
region: z.enum(REGIONS).describe("austin, corpus-christi, dallas, el-paso, fort-worth, houston or san-antonio."),
|
|
27
27
|
}, post("stores"));
|
|
28
28
|
}
|
package/dist/tools/specs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../../src/tools/specs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,CAAU,CAAC;AAEnH,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,SAA6B;IACjF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,EAAE,MAA+B,EAAE,EAAE;QACvE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;YACrE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../../src/tools/specs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,CAAU,CAAC;AAEnH,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,SAA6B;IACjF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,EAAE,MAA+B,EAAE,EAAE;QACvE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;YACrE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,0SAA0S,EAC1S;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC5E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACjG,EACD,IAAI,CAAC,QAAQ,CAAC,CACf,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,saAAsa,EACta;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;QACnH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC1G,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;aAC/C,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,EACD,IAAI,CAAC,SAAS,CAAC,CAChB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,iLAAiL,EACjL;QACE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,8EAA8E,CAAC;KACjH,EACD,IAAI,CAAC,QAAQ,CAAC,CACf,CAAC;AACJ,CAAC"}
|
package/dist/tools/totalwine.js
CHANGED
|
@@ -13,17 +13,17 @@ export function registerTotalWineTools(server, getClient) {
|
|
|
13
13
|
return handleApiError(err);
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
|
-
server.tool("search_totalwine", `Search Total Wine & More (liquor, wine, beer) at one store. Every result has that store's price (cents), units in stock, purchase limit, aisle, size, brand, rating, review count, and pickup/delivery/shipping availability. store_id is required; get it from get_totalwine_stores. If the store carries none of the matches, products is empty and searched_all_stores is true.
|
|
16
|
+
server.tool("search_totalwine", `Search Total Wine & More (liquor, wine, beer) at one store. Every result has that store's price (cents), units in stock, purchase limit, aisle, size, brand, rating, review count, and pickup/delivery/shipping availability. store_id is required; get it from get_totalwine_stores. If the store carries none of the matches, products is empty and searched_all_stores is true. 10 credits/call.`, {
|
|
17
17
|
query: z.string().min(1).max(200).describe("Search keywords, e.g. 'titos'."),
|
|
18
18
|
store_id: storeId,
|
|
19
19
|
page: z.number().int().min(1).max(50).optional().describe("Page, 1-based. 24 results per page."),
|
|
20
20
|
}, post("search"));
|
|
21
|
-
server.tool("get_totalwine_product", `One Total Wine product at one store: price (cents), units in stock, aisle, bay, shelf, last restock date, ABV, size, taste profile, characteristics, breadcrumbs, images, rating, review count and pickup/delivery/shipping availability. Pass product_id (the id from search_totalwine) or product_url, plus store_id.
|
|
21
|
+
server.tool("get_totalwine_product", `One Total Wine product at one store: price (cents), units in stock, aisle, bay, shelf, last restock date, ABV, size, taste profile, characteristics, breadcrumbs, images, rating, review count and pickup/delivery/shipping availability. Pass product_id (the id from search_totalwine) or product_url, plus store_id. 10 credits.`, {
|
|
22
22
|
product_id: z.string().regex(/^\d{4,12}$/).optional().describe("Numeric product id, e.g. '96260175'."),
|
|
23
23
|
product_url: z.string().min(1).max(500).optional().describe("Total Wine product URL ending in /p/<id>."),
|
|
24
24
|
store_id: storeId,
|
|
25
25
|
}, post("product"));
|
|
26
|
-
server.tool("get_totalwine_stores", `Find Total Wine stores near a ZIP code or city, nearest first: store_id, name, address, phone, coordinates, distance in miles, delivery availability. Use store_id with search_totalwine and get_totalwine_product.
|
|
26
|
+
server.tool("get_totalwine_stores", `Find Total Wine stores near a ZIP code or city, nearest first: store_id, name, address, phone, coordinates, distance in miles, delivery availability. Use store_id with search_totalwine and get_totalwine_product. 10 credits.`, {
|
|
27
27
|
query: z.string().min(1).max(100).describe("ZIP code, city, or 'city, state', e.g. '78801'."),
|
|
28
28
|
radius: z.number().int().min(1).max(200).optional().describe("Radius in miles. Default 50."),
|
|
29
29
|
}, post("stores"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"totalwine.js","sourceRoot":"","sources":["../../src/tools/totalwine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;KAC1C,QAAQ,CAAC,4HAA4H,CAAC,CAAC;AAE1I,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,SAA6B;IACrF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,EAAE,MAA+B,EAAE,EAAE;QACvE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;YACzE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"totalwine.js","sourceRoot":"","sources":["../../src/tools/totalwine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;KAC1C,QAAQ,CAAC,4HAA4H,CAAC,CAAC;AAE1I,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,SAA6B;IACrF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,EAAE,MAA+B,EAAE,EAAE;QACvE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;YACzE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,qYAAqY,EACrY;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC5E,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACjG,EACD,IAAI,CAAC,QAAQ,CAAC,CACf,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,qUAAqU,EACrU;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACtG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACxG,QAAQ,EAAE,OAAO;KAClB,EACD,IAAI,CAAC,SAAS,CAAC,CAChB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,iOAAiO,EACjO;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QAC7F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC7F,EACD,IAAI,CAAC,QAAQ,CAAC,CACf,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scavio/mcp-server",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.1",
|
|
4
4
|
"mcpName": "io.github.scavio-ai/scavio-mcp",
|
|
5
5
|
"description": "MCP server connecting AI agents to Scavio: web search, page extraction, and structured e-commerce, social, travel, jobs, real-estate, app-store, ad-library and company-filing data. 280 tools across 42 platforms plus Extract, site map, crawl and batch extraction, one API key.",
|
|
6
6
|
"type": "module",
|