Amazon catalog auditing tool. 13 quality checks for your listings.
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y @bwb03/catalog-cli-pro
MCP client config
{
"mcpServers": {
"catalog-cli-pro": {
"command": "npx",
"args": [
"-y",
"@bwb03/catalog-cli-pro"
]
}
}
}Agent-native Amazon catalog auditing tool
The first AI-agent-friendly Amazon catalog analysis tool. Query your CLRs with structured input, integrate via MCP server, and automate catalog audits.
Hosted API available at api.catalogcli.com — persistent storage, unlimited scans, and API access for $9.99/mo. Learn more
catalog listing fetch <asin>catalog listing diff <asin> <clr-file>catalog_seller_listing_fetch and catalog_seller_listing_diff--cookie, --cookie-file, or CATALOG_SELLER_CENTRAL_COOKIE; Seller Central cookies stay localmobile-title-readiness flags titles over 75 characters for Amazon's mobile title updatetitle-75 and amazon-title-75 make it easy to call from Claude, MCP clients, and automation workflowslong-titles check unchangedcatalog/core/, powering both CLI and MCPcatalog mcp launches a stdio MCP server with 4 tools, ready for Claude Desktop and any MCP client--json and --stdin flags for structured agent inputcatalog schema --format json returns full request/response schemas--fields sku,severity,details to reduce output size--limit and --offset for controlling result size--format ndjson for line-by-line streaming of large resultsCATALOG_CLI_DEFAULT_FORMAT=json for headless/CI usepip install amazon-catalog-cli
Or install from source:
git clone https://github.com/BWB03/amazon-catalog-cli.git
cd amazon-catalog-cli
pip install -e .
# Run all catalog checks
catalog scan my-catalog.xlsx
# Detailed results
catalog scan my-catalog.xlsx --show-details
# Run specific check
catalog check intent-bullets my-catalog.xlsx
# Audit titles for Amazon's 75-character mobile title update
catalog check mobile-title-readiness my-catalog.xlsx
# List available queries
catalog list-queries
# JSON output with field mask and limit
catalog scan my-catalog.xlsx --format json --fields sku,severity,details --limit 20
# Title rewrite triage for agents
catalog check mobile-title-readiness my-catalog.xlsx --format json \
--fields sku,details,title_char_count,mobile_visible_title,overflow_title,all_significant_terms
# Structured JSON input
catalog scan --json '{"file": "my-catalog.xlsx", "queries": ["missing-attributes"], "limit": 10}'
# Piped input
echo '{"file": "my-catalog.xlsx"}' | catalog scan --stdin --format json
# NDJSON streaming for large results
catalog scan my-catalog.xlsx --format ndjson
# Schema introspection (discover queries, params, response shapes)
catalog schema --format json
# Fetch live Seller Central listing JSON for an ASIN
CATALOG_SELLER_CENTRAL_COOKIE='session-id=...' catalog listing fetch B000TEST01 --format json
# Compare live Seller Central JSON with a CLR row
catalog listing diff B000TEST01 my-catalog.xlsx --sku SKU-123 --format json
# Start MCP server
catalog mcp
Add to Claude Desktop config:
{
"mcpServers": {
"catalog": {
"command": "catalog",
"args": ["mcp"]
}
}
}
MCP tools: catalog_scan, catalog_scan_summary, catalog_check, catalog_seller_listing_fetch, catalog_seller_listing_diff, catalog_list_queries, catalog_schema
catalog scanRun all queries on a CLR file.
catalog scan <clr-file> [OPTIONS]
Options:
--format [terminal|json|csv|ndjson] Output format (default: terminal)
--output PATH Output file path
--show-details / --no-details Show detailed results
--include-fbm-duplicates Legacy: include repeated exact-SKU rows
--json TEXT JSON request body
--stdin Read JSON request from stdin
--queries TEXT Comma-separated query names
--fields TEXT Comma-separated field mask
--limit INTEGER Max issues to return
--offset INTEGER Skip first N issues
catalog checkRun a specific query.
catalog check <query-name> <clr-file> [OPTIONS]
Options:
--format [terminal|json|csv|ndjson] Output format (default: terminal)
--output PATH Output file path
--show-details / --no-details Show detailed results
--json TEXT JSON request body
--stdin Read JSON request from stdin
--fields TEXT Comma-separated field mask
--limit INTEGER Max issues to return
--offset INTEGER Skip first N issues
catalog listing fetchFetch Amazon's live Seller Central listing JSON for an ASIN.
Requires a logged-in Seller Central cookie from your own browser session. Pass it with --cookie, --cookie-file, or the CATALOG_SELLER_CENTRAL_COOKIE environment variable.
catalog listing fetch <asin> [OPTIONS]
Options:
--format [terminal|json] Output format (default: terminal)
--output PATH Output file path
--cookie TEXT Seller Central Cookie header value
--cookie-file PATH File containing the Cookie header value
--timeout FLOAT HTTP timeout in seconds
--json TEXT JSON request body
--stdin Read JSON request from stdin
catalog listing diffCompare Amazon's live Seller Central listing JSON with a matching CLR row.
Rows match by --sku when provided. Otherwise Catalog CLI looks for Product Id Type = ASIN and Product Id = <asin> in the CLR.
catalog listing diff <asin> <clr-file> [OPTIONS]
Options:
--sku TEXT Optional SKU to match in the CLR
--format [terminal|json] Output format (default: terminal)
--output PATH Output file path
--cookie TEXT Seller Central Cookie header value
--cookie-file PATH File containing the Cookie header value
--timeout FLOAT HTTP timeout in seconds
--json TEXT JSON request body
--stdin Read JSON request from stdin
catalog schemaShow schema for queries, params, and response shapes.
catalog schema [query-name] [OPTIONS]
Options:
--format [terminal|json] Output format
catalog list-queriesList available queries.
catalog list-queries [OPTIONS]
Options:
--format [terminal|json] Output format
catalog mcpStart the MCP server (stdio transport).
catalog mcp
catalog setup-claudeConfigure Claude Code to use Catalog CLI as an MCP tool server.
# Free (local) — data stays on your machine
catalog setup-claude
# Pro (hosted API) — persistent storage, unlimited scans
catalog setup-claude --pro --api-key YOUR_KEY
# Per-project instead of global
catalog setup-claude --project
After setup, restart Claude Code and try: "Scan my-catalog.xlsx and tell me the biggest issues"
{
"timestamp": "2026-03-05T10:30:00Z",
"marketplace": "US",
"is_us_marketplace": true,
"total_queries": 14,
"total_issues": 47,
"total_affected_skus": 23,
"results": [
{
"query_name": "missing-attributes",
"description": "Find mandatory attributes missing from listings",
"total_issues": 12,
"affected_skus": 8,
"issues": [
{
"row": 7,
"sku": "ABC-123",
"field": "brand",
"severity": "required",
"details": "Missing required field: brand",
"product_type": "HAIR_STYLING_AGENT",
"extra": {}
}
]
}
]
}
import subprocess, json
result = subprocess.run(
['catalog', 'scan', 'my-catalog.xlsx', '--format', 'json',
'--fields', 'sku,severity,details', '--limit', '20'],
capture_output=True, text=True
)
data = json.loads(result.stdout)
from catalog.core import execute_scan, ScanRequest
request = ScanRequest(
file="my-catalog.xlsx",
queries=["missing-attributes", "intent-bullets"],
fields=["sku", "severity", "details"],
limit=20,
)
response = execute_scan(request)
Add the MCP server to any MCP client (Claude Desktop, CLR Pro, etc.) and call catalog_scan, catalog_check, catalog_seller_listing_fetch, catalog_seller_listing_diff, catalog_list_queries, or catalog_schema.
The intent-bullets query evaluates bullet points against COSMO-inspired shopper intent coverage:
Scores 1-5 with actionable suggestions. The old rufus-bullets query name still works as a deprecated compatibility alias.
from catalog.query_engine import QueryPlugin
class MyCustomQuery(QueryPlugin):
name = "my-custom-check"
description = "My custom catalog check"
def execute(self, listings, clr_parser):
issues = []
for listing in listings:
if some_condition:
issues.append({
'row': listing.row_number,
'sku': listing.sku,
'field': 'FieldName',
'severity': 'warning',
'details': 'Issue description',
'product_type': listing.product_type
})
return issues
.xlsm or .xlsx file| Open Source CLI | Free API | Pro API ($9.99/mo) | |
|---|---|---|---|
| 14 quality audits | Yes | Yes | Yes |
| Scans | Unlimited (local) | 2 lifetime | Unlimited |
| Catalogs stored | — | 1 | Unlimited |
| Results persistence | — | 7 days | Permanent |
| API access | — | Yes | Yes |
| Rate limit | — | 10 req/min | 100 req/min |
| Claude Code integration | Local MCP | — | Hosted MCP |
| Variation Creator | — | — | Coming soon |
Get started at catalogcli.com | API Docs
This is an open-source project. Contributions welcome!
MIT License - Free to use, modify, and distribute.
Built by Brett Bohannon (@BWB03)
Agent-native Amazon catalog tool. Built for the future of catalog management.