WooCommerce
WooCommerce Products
Read public products from a specified WooCommerce store.
MCP tool name
nexscope_woocommerce_productsMCP endpoint
https://api.nexscope.ai/mcpJSON-RPC method
tools/callAuthentication
Use OAuth 2.1 Authorization Code with PKCE and the mcp:tools scope. API keys remain supported as a compatibility option.
Authorization: Bearer nk-xxxxxxxxxxxxxxxxxIf authentication fails, ask the user to open API Access and copy a valid key.
Call this MCP tool
Initialize an MCP 2025-11-25 Streamable HTTP session at https://api.nexscope.ai/mcp, then use tools/call.
{
"jsonrpc": "2.0",
"id": "woocommerce-products-1",
"method": "tools/call",
"params": {
"name": "nexscope_woocommerce_products",
"arguments": {
"storeUrl": "https://example.com"
}
}
}MCP 2025-11-25 Β· Streamable HTTPProgress is delivered on the original POST SSE response. GET SSE carries notifications; reconnecting must query existing asynchronous work rather than submit again.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
storeUrl | string | required | Public HTTPS store root or WordPress installation path, without query or fragment. Example: https://example.com |
keyword | string | optional | Search only within this store; at most 200 characters. Example: shirt |
pageNum | integer | optional | Page number, default 1. Example: 1 |
pageSize | integer | optional | Page size, default 20, maximum 100. Example: 20 |
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Description |
|---|---|---|---|
code | integer | required | 0 means accepted or successful; nonzero is a platform error. |
cost | string | required | Elapsed milliseconds, never credits; -1 outside web requests. |
data | any | required | Data value used by this API operation. |
msg | string | null | required | Msg value used by this API operation. |
time | string | required | Server local time: yyyy-MM-dd HH:mm:ss. |
traceId | string | null | required | Trace id value used by this API operation. |
ts | string | required | Epoch milliseconds. |
Any of option 1 β requires storeUrl, fetchedAt, cacheHit, products, pageNum, pageSize
| Name | Type | Required | Description |
|---|---|---|---|
data | object | required | Data value used by this API operation. |
data.cacheHit | boolean | required | Whether the response was served from the anonymous 60-second cache. Example: false |
data.fetchedAt | string | required | Fetch time in epoch milliseconds, not the product modification time. Example: 1792972800000 |
data.hasMore | any | optional | Null when total pages are unavailable. |
data.pageNum | integer | required | Pagination metadata; totals are null when the store omits headers. Example: 1 |
data.pageSize | integer | required | Pagination metadata; totals are null when the store omits headers. Example: 20 |
data.products | array | required | Normalized public products. Example: [] |
data.products[] | object | required | Normalized public products. |
data.products[].description | any | optional | Plain text or public product identifier. |
data.products[].id | any | optional | Plain text or public product identifier. |
data.products[].images | array | required | Public image URLs; images are not fetched by this API. Example: [] |
data.products[].images[] | object | required | Public image URLs; images are not fetched by this API. |
data.products[].images[].alt | string | required | Plain text alternative label. Example: Shirt |
data.products[].images[].url | string | required | Image URL. Example: https://example.com/image.jpg |
data.products[].isInStock | any | optional | Store value, null when unavailable. |
data.products[].isPasswordProtected | any | optional | Store value, null when unavailable. |
data.products[].name | any | optional | Plain text or public product identifier. |
data.products[].parentId | any | optional | Store value; null when unavailable. |
data.products[].prices | object | required | Anonymous store pricing; decimal values are strings for exact precision. Example: {} |
data.products[].prices.currency | string | required | Currency code. Example: USD |
data.products[].prices.maxPrice | any | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
data.products[].prices.maxPriceMinor | any | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
data.products[].prices.minPrice | any | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
data.products[].prices.minPriceMinor | any | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
data.products[].prices.minorUnit | integer | required | Currency decimal precision. Example: 2 |
data.products[].prices.price | any | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
data.products[].prices.priceMinor | any | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
data.products[].prices.regularPrice | any | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
data.products[].prices.regularPriceMinor | any | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
data.products[].prices.salePrice | any | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
data.products[].prices.salePriceMinor | any | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
data.products[].shortDescription | any | optional | Plain text or public product identifier. |
data.products[].sku | any | optional | Plain text or public product identifier. |
data.products[].stockQuantity | any | optional | Always null: public Store API does not expose exact inventory. |
data.products[].type | any | optional | Store value; null when unavailable. |
data.products[].url | any | optional | Plain text or public product identifier. |
data.products[].variation | any | optional | Plain text or public product identifier. |
data.storeUrl | string | required | Normalized store identity. Example: https://example.com |
data.total | any | optional | Pagination metadata; totals are null when the store omits headers. |
data.totalPages | any | optional | Pagination metadata; totals are null when the store omits headers. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.hasMore | boolean | optional | Null when total pages are unavailable. Example: false |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.hasMore | null | optional | Null when total pages are unavailable. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].description | string | optional | Plain text or public product identifier. Example: Cotton shirt. |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].description | null | optional | Plain text or public product identifier. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].id | string | optional | Plain text or public product identifier. Example: 34 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].id | null | optional | Plain text or public product identifier. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].isInStock | boolean | optional | Store value, null when unavailable. Example: true |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].isInStock | null | optional | Store value, null when unavailable. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].isPasswordProtected | boolean | optional | Store value, null when unavailable. Example: false |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].isPasswordProtected | null | optional | Store value, null when unavailable. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].name | string | optional | Plain text or public product identifier. Example: Cotton Shirt |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].name | null | optional | Plain text or public product identifier. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].parentId | string | optional | Store value; null when unavailable. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].parentId | null | optional | Store value; null when unavailable. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.maxPrice | string | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.maxPrice | null | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.maxPriceMinor | string | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.maxPriceMinor | null | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.minPrice | string | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.minPrice | null | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.minPriceMinor | string | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.minPriceMinor | null | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.price | string | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. Example: 11.05 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.price | null | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.priceMinor | string | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.priceMinor | null | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.regularPrice | string | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.regularPrice | null | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.regularPriceMinor | string | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.regularPriceMinor | null | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.salePrice | string | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.salePrice | null | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.salePriceMinor | string | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].prices.salePriceMinor | null | optional | Exact amount string; null when unavailable. Minor suffix denotes original smallest-unit amount. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].shortDescription | string | optional | Plain text or public product identifier. Example: Cotton shirt. |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].shortDescription | null | optional | Plain text or public product identifier. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].sku | string | optional | Plain text or public product identifier. Example: SHIRT-34 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].sku | null | optional | Plain text or public product identifier. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].stockQuantity | integer | optional | Always null: public Store API does not expose exact inventory. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].stockQuantity | null | optional | Always null: public Store API does not expose exact inventory. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].type | string | optional | Store value; null when unavailable. Example: simple |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].type | null | optional | Store value; null when unavailable. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].url | string | optional | Plain text or public product identifier. Example: https://example.com/product/shirt |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].url | null | optional | Plain text or public product identifier. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].variation | string | optional | Plain text or public product identifier. Example: |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.products[].variation | null | optional | Plain text or public product identifier. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.total | integer | optional | Pagination metadata; totals are null when the store omits headers. Example: 1 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.total | null | optional | Pagination metadata; totals are null when the store omits headers. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.totalPages | integer | optional | Pagination metadata; totals are null when the store omits headers. Example: 1 |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.totalPages | null | optional | Pagination metadata; totals are null when the store omits headers. |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data | null | required | Data value used by this API operation. |
Examples
Example arguments
{
"storeUrl": "https://example.com"
}Example structuredContent
{
"code": 0,
"cost": "-1",
"data": {
"cacheHit": false,
"fetchedAt": "1792972800000",
"hasMore": false,
"pageNum": 1,
"pageSize": 20,
"products": [
{
"description": "Cotton shirt.",
"id": "34",
"images": [
{
"alt": "Shirt",
"url": "https://example.com/image.jpg"
}
],
"isInStock": true,
"isPasswordProtected": false,
"name": "Cotton Shirt",
"prices": {
"currency": "USD",
"minorUnit": 2,
"price": "11.05"
},
"shortDescription": "Cotton shirt.",
"sku": "SHIRT-34",
"type": "simple",
"url": "https://example.com/product/shirt",
"variation": ""
}
],
"storeUrl": "https://example.com",
"total": 1,
"totalPages": 1
},
"msg": null,
"time": "2026-01-01 00:00:00",
"traceId": null,
"ts": "0"
}