Deterministic acceptance report for a supplied product catalog: validates price/currency/availability/URL formatting, GS1 GTIN checksums, and flags duplicate SKUs, duplicate GTINs, and grouped-variant collisions. Checks only the structured rows given in the request - no network calls, no brand or marketplace certification, no ISO 4217 currency list.
0.05 per analysis
Requires x402 capable MCP client with wallet for payment settlement.
{
"type": "object",
"additionalProperties": false,
"required": [
"products"
],
"properties": {
"products": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "object",
"additionalProperties": false,
"description": "Submit the observed row as-is, including missing or invalid values. Row defects are reported by the job, not rejected by the tool schema.",
"properties": {
"sku": {
"description": "Observed SKU. Acceptance requires a nonblank string of at most 128 characters."
},
"title": {
"description": "Observed title. Acceptance requires a nonblank string of at most 512 characters."
},
"price": {
"description": "Observed price. Acceptance requires a canonical nonnegative decimal string with at most 15 integer and 6 fractional digits; numeric values are reported as defects."
},
"currency": {
"description": "Observed currency. Acceptance requires exactly three uppercase ASCII letters; no ISO registry lookup."
},
"availability": {
"description": "Observed availability. Accepted values: in_stock, out_of_stock, preorder."
},
"url": {
"description": "Observed URL. Acceptance requires an absolute HTTP(S) URL without credentials, whitespace, controls or malformed percent escapes. Never fetched."
},
"gtin": {
"description": "Optional observed GTIN. Acceptance requires a digit string of length 8, 12, 13 or 14 with a valid check digit. Leading zeros are significant."
},
"brand": {
"description": "Optional observed brand. Acceptance requires a nonblank string of at most 256 characters."
},
"group_id": {
"description": "Optional observed variant group. Acceptance requires a nonblank string of at most 128 characters."
},
"attributes": {
"description": "Optional observed attribute map. Acceptance requires at most 50 string entries; keys at most 128 and values at most 256 characters."
}
}
}
},
"required_attributes": {
"type": "array",
"description": "Optional list of attribute keys that every row must supply in its attributes map.",
"maxItems": 50,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 128
}
}
}
}
{
"products": [
{
"sku": "SKU-001",
"title": "Trail Running Shoe - Blue - 10",
"price": "89.99",
"currency": "USD",
"availability": "in_stock",
"url": "https://shop.example.com/p/sku-001",
"gtin": "4006381333931",
"brand": "Acme",
"group_id": "shoe-trail",
"attributes": {
"color": "blue",
"size": "10"
}
},
{
"sku": "SKU-003",
"title": "Trail Running Shoe - Red - 10",
"price": "not-a-price",
"currency": "us",
"availability": "in-stock",
"url": "ftp://shop.example.com/p/sku-003",
"group_id": "shoe-trail",
"attributes": {
"color": "red"
}
}
],
"required_attributes": [
"color",
"size"
]
}
{
"ok": true,
"summary": {
"products": 2,
"accepted": 1,
"rejected": 1,
"issue_counts": {
"invalid_price": 1,
"invalid_currency": 1,
"invalid_availability": 1,
"invalid_url": 1,
"missing_attribute": 1
}
},
"rows": [
{
"index": 0,
"sku": "SKU-001",
"accepted": true,
"issues": []
},
{
"index": 1,
"sku": "SKU-003",
"accepted": false,
"issues": [
{
"code": "invalid_price",
"field": "price"
},
{
"code": "invalid_currency",
"field": "currency"
},
{
"code": "invalid_availability",
"field": "availability"
},
{
"code": "invalid_url",
"field": "url"
},
{
"code": "missing_attribute",
"field": "size"
}
]
}
],
"duplicate_skus": [],
"duplicate_gtins": [],
"variant_collisions": [],
"scope": "supplied_catalog_only"
}
Add to your MCP client configuration:
{
"mcpServers": {
"merchant-catalog-acceptance": {
"type": "http",
"url": "https://mcp-factory.bowling-anthony.workers.dev/merchant-catalog-acceptance/mcp"
}
}
}
Price: 0.05 USDC per analysis
This tool requires an x402-capable MCP client with wallet support. Tool listing and initialization are free. Actual completed job analysis is paid in USDC on the Base network.
Payment flow: