Yaktool for AI agents
Agents keep rewriting the same ad-hoc validators — and each one misses the edge cases. The Yaktool MCP servers put all 112 checks inside your agent: the same rule engine as this site, with every check numbered, severity-graded and backed by an official source.
8 focused servers
The tools ship as separate npm packages, split by what they carry — install any or all. Nobody downloads image codecs to validate a barcode.
yaktool-mcp
Validation suite — 73 tools. GTIN/EAN/UPC, product feeds, Shopify CSV, GS1, ISBN, VIN, IBAN, Peppol, XRechnung and more. Pure rule code, no wasm — a small, fast install.
claude mcp add yaktool -- npx -y yaktool-mcp yaktool-image-mcp
Image tools — 2 tools. Compress PNG/JPEG on your machine (smart visually-guarded lossy, or true lossless), with WebP/AVIF output. Ships the wasm codecs. Same engine as the browser compressor.
claude mcp add yaktool-image -- npx -y yaktool-image-mcp yaktool-labels-mcp
Label tools — 3 tools. Print-ready Amazon FBA (FNSKU) label PDFs at exact physical size — 30-up sheets, A4 or thermal rolls, bars on the printer dot grid, calibration page included. Same engine as the browser generator.
claude mcp add yaktool-labels -- npx -y yaktool-labels-mcp yaktool-pdf-mcp
PDF tools — 12 tools. Merge, split, compress, unlock and reorganise PDFs with a structure diagnosis first: truncation, encryption and damaged cross-references come back as numbered findings, and bad files are skipped with their diagnosis — never silently. Same engine as the browser tools.
claude mcp add yaktool-pdf -- npx -y yaktool-pdf-mcp yaktool-store-mcp
Store CSV tools — 2 tools. Forecast what a WooCommerce import will actually do — which rows create, which are silently skipped, which columns never map — and convert a Shopify export into a WooCommerce import without losing variants or reversing sale prices. Same engine as the browser validator.
claude mcp add yaktool-store -- npx -y yaktool-store-mcp yaktool-compliance-mcp
Compliance tools — 9 tools. GPSR listings against Article 19, EUDR plot geolocation before a Due Diligence Statement, FDA nutrition rounding, and EU fragrance allergen thresholds. Every rule cites its source — and says so when it is our reading rather than regulation text. Same engine as the browser checkers.
claude mcp add yaktool-compliance -- npx -y yaktool-compliance-mcp yaktool-gs1-mcp
GS1 tools — 7 tools. Build GS1 element strings with FNC1 placement handled, generate a GS1 DataMatrix (ECC200), and validate the eight GS1 identification keys beyond GTIN — including the GMN check character pair. Same engine as the browser builder.
claude mcp add yaktool-gs1 -- npx -y yaktool-gs1-mcp yaktool-invoice-mcp
E-invoice tools — 4 tools. Check an invoice against the mandatory fields of EN 16931 with the arithmetic rules quoted verbatim, and look up the four code lists an invoice is judged by — including the rules each VAT category code brings into force. Same engine as the browser checker.
claude mcp add yaktool-invoice -- npx -y yaktool-invoice-mcp Claude Desktop
Add to claude_desktop_config.json (keep only the servers you want):
{
"mcpServers": {
"yaktool": { "command": "npx", "args": ["-y", "yaktool-mcp"] },
"yaktool-image": { "command": "npx", "args": ["-y", "yaktool-image-mcp"] },
"yaktool-labels": { "command": "npx", "args": ["-y", "yaktool-labels-mcp"] },
"yaktool-pdf": { "command": "npx", "args": ["-y", "yaktool-pdf-mcp"] },
"yaktool-store": { "command": "npx", "args": ["-y", "yaktool-store-mcp"] },
"yaktool-compliance": { "command": "npx", "args": ["-y", "yaktool-compliance-mcp"] },
"yaktool-gs1": { "command": "npx", "args": ["-y", "yaktool-gs1-mcp"] },
"yaktool-invoice": { "command": "npx", "args": ["-y", "yaktool-invoice-mcp"] }
}
} Cursor and other MCP clients
Any stdio-capable MCP client works — the command is npx -y <package> and it
requires Node.js ≥ 20. Packages on npm: yaktool-mcp · yaktool-image-mcp · yaktool-labels-mcp · yaktool-pdf-mcp · yaktool-store-mcp · yaktool-compliance-mcp · yaktool-gs1-mcp · yaktool-invoice-mcp
Why not just let the agent write a validator?
- Deterministic — pure rule code. Same input, same result, every run.
- Complete — the edge cases quick scripts miss (Excel scientific-notation damage, lost leading zeros, in-store barcode ranges, ISBN Bookland prefixes) are exactly what these rules cover.
- Local & private — runs over stdio on your machine. Zero network calls; nothing leaves the host.
- Structured — findings come back as
{ ruleId, severity, message, fix?, sourceUrl? }, not prose. - Bulk-native — most tools accept up to 1000 values per call, so a whole spreadsheet column is one call, not a loop.
Validation suite yaktool-mcp
Every tool mirrors a check you can also run in the browser — same engine, same rules, same results.
-
validate_gtinValidate a GTIN / UPC / EAN barcode -
calculate_check_digitCalculate / complete a GTIN check digit -
analyze_amazon_search_termsAnalyze Amazon backend search terms (byte budget + rules) -
convert_gtinConvert a GTIN between UPC-12, EAN-13 and GTIN-14 -
validate_google_feedValidate a Google Shopping product feed before upload -
validate_shopify_csvValidate a Shopify product CSV before importing -
validate_isbnValidate and convert an ISBN (10 ⇄ 13) -
lint_listing_titleCheck a product title against marketplace rules -
check_main_imageCheck product-image measurements against Amazon main-image rules -
convert_upc_eConvert UPC-E ⇄ UPC-A (zero suppression) -
interpret_eight_digit_barcodeDisambiguate an 8-digit barcode (UPC-E vs GTIN-8) -
detect_invisible_charactersFind and explain invisible or look-alike characters in text -
identify_tracking_carrierIdentify the carrier from a tracking number -
generate_barcode_modulesGenerate the module pattern for a barcode symbol -
validate_vinValidate a VIN check digit and decode its structure -
validate_imeiValidate an IMEI or IMEISV -
validate_container_numberValidate a shipping container number (ISO 6346) -
parse_gs1_element_stringParse a GS1-128 element string into its Application Identifiers -
diff_product_feedsCompare two product feed versions aligned by SKU -
fix_mojibakeDiagnose and repair encoding damage (mojibake) -
detect_csv_dialectDetect the delimiter, quoting and encoding traits of a CSV -
check_number_formatCheck a price or number for ambiguous formatting -
check_date_formatCheck a date for ambiguity, or decode a spreadsheet serial -
diagnose_excel_damageDiagnose what a spreadsheet broke in a column of data -
check_gs1_digital_linkCheck a GS1 Digital Link URI against the current standard -
build_gs1_digital_linkBuild a conformant GS1 Digital Link URI from a GTIN -
check_image_metadataCheck an image for privacy-leaking EXIF metadata -
check_country_codeCheck or convert an ISO 3166-1 country code -
check_hreflangCheck hreflang annotations and produce the block every page must carry -
validate_awbValidate an air waybill number -
detect_mixed_scriptFind characters that are not what they look like -
convert_unitsConvert dimensions or weights for a feed, and report what rounding costs -
check_utmCheck a set of campaign URLs for tagging problems and report fragmentation -
build_utm_urlBuild a correctly tagged campaign URL -
check_colour_spaceCheck whether an image is CMYK, RGB, greyscale or indexed -
generate_slugTurn product titles into URL slugs and platform handles -
check_product_jsonldValidate Product structured data, values included -
build_product_jsonldGenerate Product JSON-LD that passes validation -
check_description_htmlCheck product description HTML for what a marketplace will strip -
check_postcodeCheck postcodes against the format each country uses -
check_lithium_batteryCalculate lithium battery watt hours and the passenger-carriage band -
validate_gs1_keyValidate SSCC-18 and GLN numbers -
validate_media_codesValidate ISSN journal numbers and ISRC recording codes -
validate_regulated_codesVerify CAS Registry numbers and convert NDC drug codes -
validate_ibanValidate IBANs and SWIFT/BIC codes -
validate_tax_idsCheck EU VAT numbers and EORI numbers against their published formats and check digits -
lint_bullet_pointsCheck listing bullet points and screen them for risky claim language -
audit_columnFind duplicate and inconsistently written values in a column -
calculate_dim_weightDimensional weight and the break-even box size -
check_compliance_statementCheck Prop 65, allergen and CE/UKCA/FCC statement wording -
check_open_graphCheck Open Graph meta tags -
check_email_templateCheck email merge fields before a send -
check_textile_labelCheck garment fibre content and care wording -
audit_media_specsAudit a batch of images and videos against marketplace limits -
convert_shoe_sizeConvert shoe sizes from the unit definitions -
explain_apparel_sizingExplain why apparel sizes cannot be converted -
lookup_un_numberLook up dangerous goods entries by name or UN number -
check_incotermCheck an Incoterms trade term against the transport mode -
validate_marketplace_feedValidate a product feed for Meta, TikTok Shop, Walmart or Amazon -
check_invoice_sequenceFind gaps and duplicates in a column of invoice numbers -
check_peppol_invoiceCheck a UBL invoice against the published Peppol BIS Billing 3.0 rules -
convert_feedConvert a product feed between Google Shopping and Meta -
repair_feedRepair a damaged product feed -
check_hs_codeCheck an HS / HTS / CN commodity code -
check_origin_declarationCheck a preferential origin declaration against the prescribed wording -
check_supplier_declarationPick and check an EU supplier's declaration -
check_leiCheck the structure and check digit of an LEI -
identify_einvoiceIdentify an e-invoice XML: syntax, kind, profile, and which validator applies -
check_creditor_referenceCheck an ISO 11649 RF creditor reference -
check_xrechnungCheck a German XRechnung invoice against KoSIT's official BR-DE rules -
convert_csv_to_xlsxConvert a CSV file to .xlsx without destroying identifiers -
convert_xlsx_to_csvConvert an .xlsx workbook to CSV without silent data changes -
generate_digital_link_qrGenerate a Sunrise-2027-ready GS1 Digital Link QR code (validated)
Image tools yaktool-image-mcp
-
compress_imageCompress a PNG/JPEG image file (local, lossless or smart-lossy) -
convert_imageConvert/resize an image file to a format or marketplace preset (local)
Label tools yaktool-labels-mcp
-
generate_fnsku_labelsGenerate a print-ready Amazon FBA (FNSKU) label PDF -
generate_logistic_labelsGenerate GS1 logistic (SSCC pallet) labels — PDF or ZPL -
render_zplRender ZPL (Zebra label code) to an exact-size PDF
PDF tools yaktool-pdf-mcp
-
merge_pdfsMerge PDF files — with a structure diagnosis first -
split_pdfSplit a PDF / extract pages — range language with real errors -
compress_pdfCompress a PDF by recompressing its images — and report every change -
unlock_pdfRemove a PDF password using the password the user supplies -
organize_pdfReorder, rotate and delete PDF pages in one pass -
check_pdf_redactionCheck whether a PDF is actually redacted (local) -
extract_pdf_textRead the text out of a PDF, and say which pages have none -
extract_pdf_attachmentsList and read the files embedded inside a PDF, and check a hybrid invoice container -
check_pdf_formList a PDF form’s fields and check whether it would be rejected -
fill_pdf_formFill a PDF form and regenerate the field appearances -
images_to_pdfBuild a PDF from images, with the layout decisions stated -
check_pdf_hidden_contentShow what a recipient can still recover from a PDF
Store CSV tools yaktool-store-mcp
-
validate_woocommerce_csvForecast a WooCommerce product CSV import -
migrate_store_csvConvert a product CSV between Shopify and WooCommerce
Compliance tools yaktool-compliance-mcp
-
check_gpsr_listingCheck a listing against Article 19 of the EU GPSR -
check_eudr_geojsonPre-check EUDR plot geolocation before a DDS submission -
check_nutrition_factsRound nutrient values for a US Nutrition Facts panel and check them -
round_nutrient_valueRound one nutrient value the way FDA requires -
check_fragrance_allergensWork out which fragrance allergens must be named in an EU ingredient list -
check_eu_nutrition_declarationCheck an EU nutrition declaration against Regulation 1169/2011 -
eu_nutrition_toleranceWork out the range an official control accepts for one declared value -
check_cpsc_certificateCheck a US CPSC certificate of compliance (CPC or GCC) against 16 CFR 1110 -
check_eu_declaration_of_conformityCheck an EU/EC Declaration of Conformity against the annex that actually applies
GS1 tools yaktool-gs1-mcp
-
build_gs1_element_stringBuild a GS1-128 element string from application identifiers -
generate_gs1_datamatrixGenerate a GS1 DataMatrix (ECC200) from application identifiers -
validate_gs1_extended_keyValidate GRAI, GIAI, GSRN, GDTI, GINC, GSIN, GCN or GMN -
list_gs1_keysList the GS1 identification keys and their syntax -
check_itf14_specCheck an ITF-14 case code print specification and compute its printed size -
decode_variable_measure_codeDecode a variable-measure (price- or weight-embedded) in-store barcode -
build_variable_measure_codeBuild a variable-measure barcode number with its price check digit
E-invoice tools yaktool-invoice-mcp
-
check_invoice_fieldsCheck an invoice for the particulars EU VAT law requires -
check_invoice_draftCheck a structured invoice draft before it is issued -
lookup_en16931_codeLook up an EN 16931 / Peppol code, and the rules it triggers -
list_en16931_vat_category_rulesList the official rules a VAT category code brings into force