Closes two of the four v1 product routes that neither public package reached.
Both were fan-out oversights rather than decisions: n8n already had the passport
equivalent of batch, and BOTH packages already exposed passport archive, so a
customer could archive a passport through the API but had to drop to raw HTTP
for its product.
create_batch POST /api/v1/products/batch (up to 100, partial success)
archive POST /api/v1/products/{id}/archive (409 while a live passport
still references it)
The batch schema caps at 100 client-side because the platform rejects an
over-cap batch wholesale with 429 — validating here turns a wasted round-trip
into an immediate, explainable error. Verified: a 101-item call is rejected
locally with a precise message, and both actions route to the right endpoint.
Both descriptions spell out the risk per the repo convention — batch consumes N
writes upfront and creates nothing if that exceeds the cap; archive is
reversible and is NOT deletion.
The image routes stay deliberately unexposed. imageUrls is already fully
manageable via create + update, so nothing is unreachable; what those two add is
binary multipart upload and positional (index-based) deletion, and an LLM tool
cannot hold a file while index-addressing is unsafe for an agent that retries.
Also corrects the action count in CLAUDE.md (27 -> 29) and the README's two tool
listings — the README is what mcppedia parses for its tool extraction, and its
table sits at char 4758, inside the 8000-char window that extractor reads.
Build + 36 tests green.