{"uid":"cap_9EJ6REQelSMzydDsj3HjR","slug":"fittings-package-manifest-normalizer-21f24f7a","name":"fittings Package Manifest Normalizer","description":"Normalizes a package.json the way npm does at publish time (repository shorthand, author strings, license and bin fields) and reports every change, warning and blocking error.","url":"https://fittings.sh/v1/pkg/normalize-manifest","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"manifest":{"type":"object","description":"package.json as an object or as JSON text, at most 64KB"}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.004126","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.004126/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.004126","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.004126","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_BJ-ifvtpg5GjiODhK33-C","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.004126","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Normalizes a package.json the way npm does at publish time, reporting all field transformations, warnings, and blocking errors.","exampleAgentPrompt":"Can you normalize my package.json the way npm would at publish time and tell me about any changes, warnings, or errors? Here's the manifest: {\"name\":\"my-cool-lib\",\"version\":\"1.0.0\",\"repository\":\"github:user/my-cool-lib\",\"author\":\"Jane Doe <jane@example.com>\",\"license\":\"MIT\",\"bin\":\"./cli.js\"}","exampleUseCases":[{"title":"Pre-publish package.json validation","prompt":"Before I publish my npm package, can you run my package.json through npm-style normalization and flag any blocking errors or warnings? Here's the full manifest content."},{"title":"Repository shorthand expansion check","prompt":"I'm using a GitHub shorthand in my package.json repository field — can you normalize the manifest and show me how npm will expand it at publish time, along with any other changes it would make?"},{"title":"CI pipeline manifest lint step","prompt":"As part of our release pipeline, can you validate this package.json against npm's publish-time normalization rules and return a list of every change, warning, and error so we can fail the build if there are blockers?"}],"resultDescription":"Returns the normalized form of the package.json as npm would produce it at publish time, along with a structured list of every field that was changed (showing before and after values), any warnings about non-blocking issues, and any blocking errors that would prevent publishing.","failureModes":["Manifest exceeds 64KB limit — request rejected","Malformed JSON input that cannot be parsed","Missing required fields like 'name' or 'version' reported as blocking errors","Network timeout on the fittings.sh endpoint"],"whenToPreferThis":"Choose this endpoint when you need to know exactly how npm will transform a package.json at publish time — including repository shorthand expansion, author string normalization, license field normalization, and bin field restructuring — and want a machine-readable report of all changes, warnings, and blocking errors. Prefer this over generic JSON validators when npm-specific semantics matter.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T12:55:40.860Z","isFirstParty":false}