Catalog CLI - Agent-native Amazon catalog auditing tool
Project description
Catalog CLI
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.
Want more? Check out Catalog Audit Pro for web-based audits, unlimited reports, and client-ready PDFs.
What's New in v2.0
- Shared core architecture - Business logic separated into
catalog/core/, powering both CLI and MCP - MCP server -
catalog mcplaunches a stdio MCP server with 4 tools, ready for Claude Desktop and any MCP client - JSON input -
--jsonand--stdinflags for structured agent input - Schema introspection -
catalog schema --format jsonreturns full request/response schemas - Field masks -
--fields sku,severity,detailsto reduce output size - Pagination -
--limitand--offsetfor controlling result size - NDJSON streaming -
--format ndjsonfor line-by-line streaming of large results - Input hardening - Pydantic validation rejects path traversal, injection, and malformed input
- Environment variables -
CATALOG_CLI_DEFAULT_FORMAT=jsonfor headless/CI use - Backward compatible - All v1.x commands work unchanged
Features
- Agent-Native - CLI + MCP server as equal citizens, JSON/NDJSON output, schema introspection
- Fast - Query 1000+ SKU catalogs in seconds
- Extensible - Plugin system for custom queries
- Comprehensive - 12 built-in catalog health checks
- RUFUS Optimized - Amazon AI shopping assistant bullet scoring
Installation
pip 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 .
Quick Start
For Humans
# Run all catalog checks
catalog scan my-catalog.xlsx
# Detailed results
catalog scan my-catalog.xlsx --show-details
# Run specific check
catalog check rufus-bullets my-catalog.xlsx
# List available queries
catalog list-queries
For AI Agents
# JSON output with field mask and limit
catalog scan my-catalog.xlsx --format json --fields sku,severity,details --limit 20
# 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
MCP Server (for Claude Desktop, CLR Pro, etc.)
# Start MCP server
catalog mcp
Add to Claude Desktop config:
{
"mcpServers": {
"catalog": {
"command": "catalog",
"args": ["mcp"]
}
}
}
MCP tools: catalog_scan, catalog_check, catalog_list_queries, catalog_schema
Available Queries
Attribute Audits
- missing-attributes - Find mandatory attributes missing from listings
- missing-any-attributes - Find all missing attributes (required + conditional)
- new-attributes - Find unused template fields that might add value
Content Quality
- rufus-bullets - Score bullet points against Amazon's RUFUS AI framework
- bullet-prohibited-content - Find bullet points with prohibited chars, emojis, claims, or placeholders
- bullet-formatting - Check bullet formatting (capitalization, length, punctuation)
- bullet-awareness - Soft violations in bullets (excessive caps, problematic chars)
- long-titles - Find titles exceeding 200 characters
- title-prohibited-chars - Find titles with prohibited characters
- prohibited-chars - Find prohibited characters in title/brand
Catalog Structure
- product-type-mismatch - Find mismatched product types and item keywords
- missing-variations - Find products that should be variations but aren't
CLI Commands
catalog scan
Run 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 Include FBM/MFN duplicates
--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 check
Run 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 schema
Show schema for queries, params, and response shapes.
catalog schema [query-name] [OPTIONS]
Options:
--format [terminal|json] Output format
catalog list-queries
List available queries.
catalog list-queries [OPTIONS]
Options:
--format [terminal|json] Output format
catalog mcp
Start the MCP server (stdio transport).
catalog mcp
Example JSON Output
{
"timestamp": "2026-03-05T10:30:00Z",
"marketplace": "US",
"is_us_marketplace": true,
"total_queries": 12,
"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": {}
}
]
}
]
}
Agent Integration
Via CLI (subprocess)
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)
Via Python (direct import)
from catalog.core import execute_scan, ScanRequest
request = ScanRequest(
file="my-catalog.xlsx",
queries=["missing-attributes", "rufus-bullets"],
fields=["sku", "severity", "details"],
limit=20,
)
response = execute_scan(request)
Via MCP
Add the MCP server to any MCP client (Claude Desktop, CLR Pro, etc.) and call catalog_scan, catalog_check, catalog_list_queries, or catalog_schema.
RUFUS Bullet Optimization
The rufus-bullets query evaluates bullet points against Amazon's RUFUS AI framework:
- Bullet 1: Should lead with Hero Benefit (why buy this?)
- Bullet 2: Should state who it's for (target audience)
- Bullet 3: Should differentiate (why this vs. competitors?)
- All bullets: Checked for specifics, length, vague marketing, ALL CAPS
Scores 1-5 with actionable suggestions.
Extending with Custom Queries
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
Requirements
- Python 3.10+
- openpyxl
- click
- rich
- pydantic
- mcp
How to Get Your CLR
- Go to Amazon Seller Central > Catalog > Category Listing Report
- Click Generate Report
- Download the
.xlsmor.xlsxfile - Run catalog CLI on it
Contributing
This is an open-source project. Contributions welcome!
- Add new query plugins
- Improve parsing logic
- Enhance output formats
- Build integrations
License
MIT License - Free to use, modify, and distribute.
Author
Built by Brett Bohannon (@BWB03)
Related Projects
- amazon-catalog-auditor-skill - OpenClaw skill for agent workflows
- clr-auditor - Original CLR auditing tool
- amazon-tool - Amazon variation creator
Agent-native Amazon catalog tool. Built for the future of catalog management.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file amazon_catalog_cli-2.1.0.tar.gz.
File metadata
- Download URL: amazon_catalog_cli-2.1.0.tar.gz
- Upload date:
- Size: 32.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d60ce4df8002eb5c2e2fbf47e5a149007d2e1468cf455f0eca381c2d355373df
|
|
| MD5 |
d1a59cb57d03dd54de97356e9eae1553
|
|
| BLAKE2b-256 |
d1c3ea92439e270c29d8f815cd0ed385365033e66aeabbd7b93b83ca21176eec
|
File details
Details for the file amazon_catalog_cli-2.1.0-py3-none-any.whl.
File metadata
- Download URL: amazon_catalog_cli-2.1.0-py3-none-any.whl
- Upload date:
- Size: 41.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a11b731457fc2c7d3c855540307f462a410e0f4efa5b7d70760c3a1ef59c54a
|
|
| MD5 |
329775cb5d200ba7d9b422a3d69512b8
|
|
| BLAKE2b-256 |
e63c6a4df9e92217d265e75413977b79cb97fbc6eae2ee326ff5981aa694bd00
|