{"schemaVersion":"1.0","count":16,"utilities":[{"id":"shopify-product-csv-preflight","title":"Shopify Product CSV Preflight","category":"Commerce","summary":"Check normalized Shopify product rows for missing identity fields, duplicate SKUs, unsafe image URLs, and overwrite hazards.","limitations":["Checks normalized JSON rows, not a live Shopify store.","A READY result is a preflight signal, not an import guarantee."],"inputSchema":{"type":"object","required":["rows"],"properties":{"rows":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":[],"additionalProperties":true}},"mode":{"enum":["new","overwrite"]},"existing_handles":{"type":"array","maxItems":1000,"items":{"type":"string"}},"overwrite_required_columns":{"type":"array","maxItems":100,"items":{"type":"string"}}},"additionalProperties":false},"sampleInput":{"rows":[{"Handle":"linen-shirt","Title":"Linen Shirt","Variant SKU":"LS-001","Image Src":"https://example.com/ls.jpg"}],"mode":"new"},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/shopify-product-csv-preflight/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/shopify-product-csv-preflight"},{"id":"image-to-sku-match-checker","title":"Image to SKU Match Checker","category":"Commerce","summary":"Match supplied image paths to a SKU roster and flag missing, extra, unknown, or colliding assets.","limitations":["Works from supplied filenames and roster evidence only.","Does not inspect, upload, or modify images."],"inputSchema":{"type":"object","required":["roster","files"],"properties":{"roster":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["sku"],"additionalProperties":true}},"files":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["path"],"additionalProperties":true}},"sku_pattern":{"type":"string","maxLength":300}},"additionalProperties":false},"sampleInput":{"roster":[{"sku":"LS-001","expected_count":1}],"files":[{"path":"images/LS-001-front.jpg"}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/image-to-sku-match-checker/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/image-to-sku-match-checker"},{"id":"utm-link-consistency-checker","title":"UTM Link Consistency Checker","category":"Marketing","summary":"Check campaign links for missing UTMs, duplicates, case drift, policy violations, and possible PII.","limitations":["Possible-PII checks are conservative heuristics.","Does not visit links or verify downstream analytics."],"inputSchema":{"type":"object","required":["links"],"properties":{"links":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["id","url"],"additionalProperties":true}},"policy":{"type":"object","properties":{"required":{"type":"array","items":{"type":"string"}},"allowed_values":{"type":"object"}},"additionalProperties":false}},"additionalProperties":false},"sampleInput":{"links":[{"id":"hero","url":"https://example.com/?utm_source=newsletter&utm_medium=email&utm_campaign=launch"}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/utm-link-consistency-checker/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/utm-link-consistency-checker"},{"id":"gitignore-coverage-preflight","title":"Gitignore Coverage Preflight","category":"Developer Tools","summary":"Check supplied paths and ignore patterns for uncovered or tracked sensitive-looking files.","limitations":["Implements a conservative portable subset of gitignore matching.","Does not read a repository or alter Git state."],"inputSchema":{"type":"object","required":["paths"],"properties":{"paths":{"type":"array","minItems":1,"maxItems":2000,"items":{"type":"string"}},"patterns":{"type":"array","maxItems":1000,"items":{"type":"string"}},"tracked_paths":{"type":"array","maxItems":2000,"items":{"type":"string"}}},"additionalProperties":false},"sampleInput":{"paths":["src/index.ts",".env"],"patterns":[".env"],"tracked_paths":[]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/gitignore-coverage-preflight/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/gitignore-coverage-preflight"},{"id":"one-click-unsubscribe-header-checker","title":"One-Click Unsubscribe Header Checker","category":"Email","summary":"Check normalized marketing-message evidence for List-Unsubscribe and RFC 8058 one-click headers.","limitations":["Checks supplied header evidence only.","Does not send mail or certify provider delivery behavior."],"inputSchema":{"type":"object","required":["messages"],"properties":{"messages":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["id","message_type","headers"],"additionalProperties":true}}},"additionalProperties":false},"sampleInput":{"messages":[{"id":"m1","message_type":"marketing","headers":{"List-Unsubscribe":"<https://example.com/unsubscribe/1>","List-Unsubscribe-Post":"List-Unsubscribe=One-Click"},"body_text":"Unsubscribe here."}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/one-click-unsubscribe-header-checker/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/one-click-unsubscribe-header-checker"},{"id":"npm-publish-payload-preflight","title":"npm Publish Payload Preflight","category":"Developer Tools","summary":"Check an npm pack manifest for missing entrypoints, absent runtime output, sensitive files, and baseline drift.","limitations":["Checks supplied package metadata and pack paths only.","Does not execute lifecycle scripts or publish a package."],"inputSchema":{"type":"object","required":["package","pack_files"],"properties":{"package":{"type":"object"},"pack_files":{"type":"array","minItems":1,"maxItems":5000,"items":{"type":"string"}},"previous_files":{"type":"array","maxItems":5000,"items":{"type":"string"}}},"additionalProperties":false},"sampleInput":{"package":{"name":"example","version":"1.0.0","main":"dist/index.js"},"pack_files":["package.json","dist/index.js"]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/npm-publish-payload-preflight/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/npm-publish-payload-preflight"},{"id":"redirect-map-preflight","title":"Redirect Map Preflight","category":"Web Operations","summary":"Check a redirect map for invalid targets, self-redirects, chains, loops, and missing legacy sources.","limitations":["Checks a normalized redirect map, not deployed server behavior.","Does not follow remote redirects or modify configuration."],"inputSchema":{"type":"object","required":["redirects"],"properties":{"redirects":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["source","destination"],"additionalProperties":true}},"baseline_sources":{"type":"array","maxItems":2000,"items":{"type":"string"}}},"additionalProperties":false},"sampleInput":{"redirects":[{"source":"/old","destination":"/new"}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/redirect-map-preflight/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/redirect-map-preflight"},{"id":"subtitle-timeline-qa","title":"Subtitle Timeline QA","category":"Media","summary":"Flag invalid cue timing, overlaps, empty captions, and excessive reading speed in normalized subtitle data.","limitations":["Does not parse vendor-specific styling extensions.","Reading-speed thresholds are review aids, not accessibility certification."],"inputSchema":{"type":"object","required":["cues"],"properties":{"cues":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["id","start_ms","end_ms","text"],"additionalProperties":true}},"max_characters_per_second":{"type":"number","exclusiveMinimum":0}},"additionalProperties":false},"sampleInput":{"cues":[{"id":"1","start_ms":0,"end_ms":2000,"text":"Welcome."}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/subtitle-timeline-qa/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/subtitle-timeline-qa"},{"id":"calendar-invite-timezone-preflight","title":"Calendar Invite Timezone Preflight","category":"Productivity","summary":"Check normalized iCalendar events for floating time, boundary, DATE, sequence, and recurrence hazards.","limitations":["Does not expand recurrence rules or simulate calendar clients.","Timezone checks depend on runtime IANA timezone data."],"inputSchema":{"type":"object","required":["events"],"properties":{"events":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["uid","dtstart","dtend"],"additionalProperties":true}}},"additionalProperties":false},"sampleInput":{"events":[{"uid":"event-1","dtstart":"20260801T140000Z","dtend":"20260801T150000Z","value_type":"DATE-TIME","sequence":0}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/calendar-invite-timezone-preflight/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/calendar-invite-timezone-preflight"},{"id":"filename-portability-preflight","title":"Filename Portability Preflight","category":"Productivity","summary":"Flag reserved names, invalid characters, trailing dots, case collisions, Unicode collisions, and long paths.","limitations":["Path-length risk is configurable and environment-dependent.","Does not rename, move, or delete files."],"inputSchema":{"type":"object","required":["paths"],"properties":{"paths":{"type":"array","minItems":1,"maxItems":5000,"items":{"type":"string","maxLength":4096}},"max_path_length":{"type":"integer","minimum":1,"maximum":32767}},"additionalProperties":false},"sampleInput":{"paths":["assets/logo.svg","docs/Guide.pdf"],"max_path_length":240},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/filename-portability-preflight/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/filename-portability-preflight"},{"id":"promise-action-evidence-checker","title":"Promise, Action, and Evidence Checker","category":"Agent Evidence","summary":"Compare declared promises with recorded actions and evidence, flagging unsupported completion and unaddressed commitments.","limitations":["Checks supplied records only and cannot prove that an external action occurred.","Evidence references are checked for presence, not fetched or independently authenticated."],"inputSchema":{"type":"object","required":["promises","actions","evidence"],"properties":{"promises":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["id"],"additionalProperties":true}},"actions":{"type":"array","maxItems":2000,"items":{"type":"object","required":["id","status","promise_ids","evidence_ids"],"additionalProperties":true}},"evidence":{"type":"array","maxItems":5000,"items":{"type":"object","required":["id"],"additionalProperties":true}}},"additionalProperties":false},"sampleInput":{"promises":[{"id":"p1","description":"Publish package","required":true}],"actions":[{"id":"a1","status":"completed","promise_ids":["p1"],"evidence_ids":["e1"]}],"evidence":[{"id":"e1","type":"registry","uri":"https://registry.example/package"}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/promise-action-evidence-checker/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/promise-action-evidence-checker"},{"id":"tool-call-contract-auditor","title":"Tool Call Contract Auditor","category":"Agent Evidence","summary":"Audit recorded tool calls against declared authorization, argument, call-count, and outcome contracts.","limitations":["Audits supplied call records and contracts; it does not intercept live tools.","Argument checks are key-presence checks, not full schema validation."],"inputSchema":{"type":"object","required":["contracts","calls"],"properties":{"contracts":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["tool"],"additionalProperties":true}},"calls":{"type":"array","maxItems":5000,"items":{"type":"object","required":["id","tool","arguments"],"additionalProperties":true}}},"additionalProperties":false},"sampleInput":{"contracts":[{"tool":"publish","allowed":true,"max_calls":1,"required_arguments":["artifact"],"forbidden_arguments":["private_key"]}],"calls":[{"id":"c1","tool":"publish","arguments":{"artifact":"package.tgz"},"outcome":"published"}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/tool-call-contract-auditor/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/tool-call-contract-auditor"},{"id":"completion-evidence-receipt-auditor","title":"Completion Evidence Receipt Auditor","category":"Agent Evidence","summary":"Check completion, partial, and blocked outcome records for the evidence and remaining-work details their status requires.","limitations":["Checks receipt structure, not the truth of the underlying evidence.","Legal, financial, safety, and identity-sensitive conclusions still require appropriate human review."],"inputSchema":{"type":"object","required":["outcomes"],"properties":{"outcomes":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["id","status","evidence"],"additionalProperties":true}}},"additionalProperties":false},"sampleInput":{"outcomes":[{"id":"publish","promised_outcome":"Package is public","status":"completed","evidence":[{"type":"registry","uri":"https://registry.example/package"}]}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/completion-evidence-receipt-auditor/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/completion-evidence-receipt-auditor"},{"id":"tool-description-contract-linter","title":"Tool Description Contract Linter","category":"Agent Evidence","summary":"Lint structured tool descriptions for bounded purpose, inputs, outputs, side effects, failure modes, cost, and idempotency.","limitations":["Checks explicit metadata fields and simple length bounds, not semantic correctness.","Passing metadata does not make a tool safe or reliable."],"inputSchema":{"type":"object","required":["tools"],"properties":{"tools":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["name","description"],"additionalProperties":true}}},"additionalProperties":false},"sampleInput":{"tools":[{"name":"catalog","description":"List available deterministic utilities and their current prices.","inputs":["none"],"outputs":["utility catalog"],"side_effects":["none"],"failure_modes":["network unavailable"],"cost":{"amount":"0","currency":"USD"},"idempotency":"safe to repeat"}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/tool-description-contract-linter/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/tool-description-contract-linter"},{"id":"skill-activation-verifier","title":"Skill Activation Verifier","category":"Agent Evaluation","summary":"Compare expected and observed skill activations across test cases to expose missed and spurious routing.","limitations":["Requires the caller to define expected skills for each case.","Measures activation agreement, not whether the skill performed well after activation."],"inputSchema":{"type":"object","required":["cases"],"properties":{"cases":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["id","expected_skills","observed_skills"],"additionalProperties":true}}},"additionalProperties":false},"sampleInput":{"cases":[{"id":"create-pdf","expected_skills":["pdf"],"observed_skills":["pdf"]}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/skill-activation-verifier/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/skill-activation-verifier"},{"id":"agent-cost-decomposer","title":"Agent Cost Decomposer","category":"Agent Evaluation","summary":"Calculate model, cached-token, and external-tool costs per call and flag a supplied budget overrun.","limitations":["Uses caller-supplied token counts and rates; it does not query provider billing.","Taxes, credits, rounding policies, and unreported infrastructure costs are outside scope."],"inputSchema":{"type":"object","required":["calls"],"properties":{"calls":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"object","required":["id","input_tokens","output_tokens","input_usd_per_million","output_usd_per_million"],"additionalProperties":true}},"budget_usd":{"type":"number","minimum":0}},"additionalProperties":false},"sampleInput":{"budget_usd":0.1,"calls":[{"id":"turn-1","model":"example-model","input_tokens":1000,"cached_input_tokens":500,"output_tokens":250,"input_usd_per_million":1,"cached_input_usd_per_million":0.1,"output_usd_per_million":4,"tool_cost_usd":0.01}]},"version":"1.0.0","price":"$0.05","docsUrl":"https://justhandledlabs.com/skills/agent-cost-decomposer/","endpoint":"https://justhandled-agent-gateway.netlify.app/api/run/agent-cost-decomposer"}]}