Resolve an exact Packrift packaging SKU for a buyer requirement, confirm live price and inventory through the Packrift MCP server, and return a measured cart handoff URL or a bulk-quote URL when no exact match exists. Treats dimensions, material, color, adhesive, printer compatibility, case count, and SKU as strict exact-match constraints — never substitutes nearby SKUs.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionexact-spec-packaging-procurementExecute the skills CLI command in your project's root directory to begin installation:
Fetches exact-spec-packaging-procurement from packrift.com/exact-spec-packaging-procurement-e4ujmy and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate exact-spec-packaging-procurement. Access via /exact-spec-packaging-procurement in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
0
total installs
0
this week
0
upvotes
Run in your terminal
0
installs
0
this week
—
stars
| name | exact-spec-packaging-procurement |
| title | Packrift Exact-Spec Packaging Procurement |
| description | >- Resolve an exact Packrift packaging SKU for a buyer requirement, confirm live price and inventory through the Packrift MCP server, and return a measured cart handoff URL or a bulk-quote URL when no exact match exists. Treats dimensions, material, color, adhesive, printer compatibility, case count, and SKU as strict exact-match constraints — never substitutes nearby SKUs. |
| website | packrift.com |
| category | packaging |
| tags | - packaging - procurement - mcp - shopify - exact-match - b2b - ai-commerce |
| source | 'browserbase: agent-runtime 2026-05-19' |
| updated | '2026-05-19' |
| recommended_method | mcp |
| alternative_methods | - method: api rationale: >- Static cached per-SKU records are available at https://mcp.packrift.com/ai/sku/{SKU}.md (text/markdown) and .json. Useful for spec verification when MCP latency matters, but does NOT return live price or inventory — always pair with check_inventory + get_pricing before any cart handoff. - method: browser rationale: >- Falling back to packrift.com Shopify search and product pages is possible but loses AI_APPROVE gating, exact_terms_matched evidence, and the GA4-tagged measured cart/reorder/quote URLs. Reserve for the case where MCP itself is unreachable. |
| verified | true |
| proxies | true |
Resolve an exact Packrift packaging SKU for a buyer requirement, confirm live price and inventory against Packrift's first-party MCP server at https://mcp.packrift.com/mcp, and return either (a) a measured MCP cart handoff URL when every constraint is matched and the buyer has confirmed, or (b) a measured Packrift bulk-quote handoff URL when no exact match exists. Treats dimensions (L/W/D in inches), material/grade (e.g. ECT-32 kraft corrugated), color, adhesive, printer compatibility, case/bundle count, and SKU as strict exact-match constraints — does not present nearby SKUs as exact matches. Read-only with respect to inventory and pricing; the only mutating side effects are GA4 attribution events that Packrift records when the agent emits a measured URL, and these are explicitly silenced when suppress_analytics: true is set.
1066, LL251WR, MFL1295, …) and needs a one-call live-confirmed cart or reorder URL.Don't use this skill for dimension-only "what box fits this item" discovery — that's the find_packaging_for_item / pack_calculator path, which is a separate flow and is not an exact-spec procurement skill.
Packrift exposes a Streamable-HTTP MCP server at https://mcp.packrift.com/mcp with 15 tools covering discovery, live confirmation, and handoff. All SKU-involving tools are AI_APPROVE-gated — only SKUs whose ai_status === "AI_APPROVE" are eligible for cart/reorder handoff. The canonical sequence (printed verbatim in every cart-handoff candidate response) is:
search_products → get_product → get_pricing → check_inventory → create_cart_url
For exact-SKU reorders, prepare_purchase_handoff collapses that whole sequence into a single call and is the preferred shortcut.
Send an initialize JSON-RPC over POST with Accept: application/json, text/event-stream. The server responds with a single JSON envelope (not a streamed SSE response), so no session-id handshake or Mcp-Session-Id header round-trip is required for subsequent tools/call requests — each request is independent.
POST https://mcp.packrift.com/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-06-18","capabilities":{},
"clientInfo":{"name":"<agent>","version":"x.y"}}}
Server returns serverInfo: { name: "Packrift MCP", version: "0.2.10+" } plus an instructions block that names every tool and gates SKUs behind AI_APPROVE. After that, every tool call is a tools/call request with { name, arguments }.
Two retrieval shapes depending on what the buyer gave you:
| Buyer input | Tool | Notes |
|---|---|---|
Exact SKU (1066, LL251WR, …) | skip retrieval — go to step 3 | Trust the SKU; live-confirm in step 3. |
| Free-text category + spec ("weather-resistant polyester laser labels 2 5/8 x 1 3000/case") | search_products(query, limit≤50) | Returns AI_APPROVE-gated hits with match.confidence, evidence.exact_terms_matched, unsafe_substitute_blocked. Inspect evidence.exact_terms_matched to confirm each constraint token actually appears — confidence alone is not sufficient. |
| Item L/W/D + use_case but no specific SKU type | find_packaging_for_item | Returns 5 fit-ranked SKUs. Treat its output as candidates, then exact-match-filter in step 2b. |
| Comparing against competitor spec | compare_alternatives(requested_spec, family) | Returns ranked Packrift candidates plus a plain-language summary — useful for "is there a Packrift equivalent to Uline S-XYZ?" |
2b. Exact-match filter (mandatory before step 3). For every candidate, verify each of the buyer's constraints against the response fields:
title or dimensions.{length_in, width_in, depth_in} on get_product. Reject if any axis differs.title and description. Look for ECT-32 kraft, polyester, polypropylene, etc.title/description. kraft ≠ white ≠ natural.description.laser vs inkjet vs thermal-transfer vs direct-thermal.- N Bundle, - N/Case, - N-pack in title and the pack_count line in description. 25 Bundle ≠ 100/Case.approved_sku must match character-for-character.If any constraint fails, do not emit a cart handoff — jump to step 5 (no-match path).
For exact-SKU procurement, the single best call is prepare_purchase_handoff:
{
"name": "prepare_purchase_handoff",
"arguments": {
"sku": "1066",
"quantity": 25,
"buyer_confirmed": false,
"source_context": "exact_spec_procurement"
}
}
It internally runs the AI_APPROVE gate, get_product, get_pricing, and check_inventory and returns status: "live_confirmed_awaiting_buyer_confirmation" with the full price/inventory snapshot, the canonical product URL, plus pre-baked product / reorder / quote URLs under live_confirmation.product.conversion_actions. Crucially, it does NOT include a cart URL until you re-call with buyer_confirmed: true. Use the unconfirmed response to present the spec + price + stock back to the buyer for approval.
After buyer approval, re-call with buyer_confirmed: true — the response now has status: "cart_handoff_ready" and a measured cart_url ready to emit. This URL goes to https://mcp.packrift.com/r/cart/{SKU} which Packrift then 302-redirects through to the Shopify cart-permalink URL (https://packrift.com/cart/{variant_id}:{qty}?...) and on to https://packrift.com/checkouts/cn/{token} — i.e., the buyer lands directly on a live Shopify checkout with the item pre-loaded. See gotchas before emitting.
get_product(handle) → full product detail, dimensions, all variants, AI_APPROVE gate verdict
get_pricing(variant_ids, qty) → unit_price, currency, available_quantity, line_total, AI_APPROVE gate verdict
check_inventory(variant_ids) → available (int), in_stock (bool), per-variant AI_APPROVE gate verdict
# Optionally:
inventory_status(sku | variant_ids) → Shopify total qty + location-level BOX warehouse split + plain-language summary
get_shipping_estimate(zip, country, items[]) → carrier rate options if buyer wants delivered cost
Then hand off via either:
create_cart_url({ sku, quantity }) — shortcut form (resolves variant from SKU)create_cart_url({ items:[{variant_id, qty}] }) — full formThe response contains both an mcp_cart_landing_redirect URL (preferred — stamps GA4 attribution) and a final_shopify_cart_url_candidate direct-to-Shopify URL. Emit the MCP landing URL unless you have a reason to bypass attribution.
If step 2b rejects every candidate, do not call create_cart_url. Instead:
{
"name": "explain_no_exact_match",
"arguments": {
"requested_spec": "9x6x6 white corrugated box 25-pack",
"family": "boxes",
"missing_or_mismatched_fields": ["length_in", "color"],
"reason": "Only 10x6x6 kraft available, not 9x6x6 white."
}
}
Response includes a no_match_policy string, a bulk_quote.quote_url measured handoff URL, a copy_procurement_spec text the agent can paste into a quote form, safe_next_actions: ["request_bulk_quote", "ask_which_attribute_can_vary", "show_family_page_without_calling_it_exact"], and a verbatim unsafe_action_blocked: "Do not call a different dimension, material, color, closure, adhesive, printer type, strength, pack count, or SKU an exact match." — emit that policy line back to the buyer along with the quote URL.
Alternatively, when the buyer wants bulk pricing on a known SKU (rather than a no-match scenario), use get_bulk_quote_link({ requested_spec, sku, family, quantity }) directly.
For repeat-buy workflows where the buyer prefers Packrift's reorder-by-SKU landing over a fresh checkout:
{ "name": "get_reorder_link", "arguments": { "sku": "1066", "source_context": "ai_agent_reorder" } }
Returns reorder_url, product_url, and copy_procurement_spec text. The reorder URL is https://packrift.com/pages/reorder-packaging-by-sku?view=packrift_ai_reorder_live_r05&sku={SKU}&...#sku-{SKU} — anchored to the SKU's row on the reorder page.
ai_status: "AI_APPROVE" and approval_gate: "passed". If you encounter a SKU that exists on packrift.com but the MCP server refuses to gate it, use get_bulk_quote_link instead of trying to construct a cart URL by hand — manual /cart/{variant_id}:{qty} URLs bypass GA4 attribution and Packrift's safety policy.buyer_confirmed: true is the cart-URL gate. prepare_purchase_handoff deliberately returns status: "live_confirmed_awaiting_buyer_confirmation" (no cart URL) on first call. The skill must show the live price + stock to the buyer, get confirmation, and only then re-call with buyer_confirmed: true. Skipping the confirmation step is an unsafe behavior.https://mcp.packrift.com/r/cart/{SKU} in a browser ends at https://packrift.com/checkouts/cn/{token} with the line item pre-loaded and attribution stamped via cart attributes. No card details are pre-filled and there is no auto-submit, but treat this URL as a terminal handoff — emit it to the buyer rather than auto-navigating in a headless context.https://mcp.packrift.com/ai/sku/{SKU}.md (text/markdown) and https://mcp.packrift.com/ai/sku/{SKU}.json. These are cached spec cards — great for confirming dimensions/material/pack-count cheaply — but they do not carry live price or inventory. Always pair with get_pricing + check_inventory (or just prepare_purchase_handoff) before any cart handoff.10x6x6 kraft 25 Bundle is not a match for 9x6x6 kraft 25 Bundle, and 25 Bundle is not a match for 100/Case. The skill must refuse to call any of these substitutions an exact match — emit explain_no_exact_match instead.- N Bundle, labels/tape often use - N/Case, mailers use - N-pack or N/case. Parse them separately and case-sensitively when filtering candidates from search_products.search_products confidence is a ranking signal, not a constraint check. A 0.82 confidence hit can still differ from the buyer's spec on material or pack count. Always cross-check evidence.exact_terms_matched against your constraint list — and prefer the explicit field check from get_product (dimensions.length_in, dimensions.width_in, dimensions.depth_in, description text) before calling anything "exact".initialize does not return an Mcp-Session-Id header in practice (observed null), and subsequent tools/call requests work without one. Each call is self-contained, including its own journey_id if the caller wants to thread attribution across the sequence.get_pricing returns line_total = unit_price × quantity with USD as the only observed currency. Don't infer multi-currency support — if a buyer needs CAD or other, fall back to get_shipping_estimate(country="CA", ...) for ship cost and surface USD pricing as the unit price.get_shipping_estimate only supports US and CA per its JSON-schema enum. For other destinations, hand off via get_bulk_quote_link with a reason describing the international ship requirement.utm_source=chatgpt, utm_medium=mcp, utm_campaign=packrift_ai_commerce) — set suppress_analytics: true on prepare_purchase_handoff, create_cart_url, get_reorder_link, get_bulk_quote_link, and explain_no_exact_match during agent eval / synthetic testing to avoid polluting Packrift's AI-commerce attribution.instructions block names tools that are NOT in tools/list. The initialize response mentions find_packaging_for_item, prepare_purchase_handoff, get_cart_handoff_candidates etc. — most of these are in tools/list, but always cross-check with a fresh tools/list rather than relying on the instructions prose as a contract.approved_risk_flags: "chatgpt_paid_priority" appears on every AI_APPROVE response — it is a Packrift internal attribution tag, not a flag the agent needs to act on. Pass through unchanged in any agent-side logging.The skill emits one of four outcome shapes. The exact field set varies slightly with the tool that produced the confirmation, but each shape is built from the JSON fields the MCP server returns.
{
"outcome": "cart_handoff_ready",
"match_type": "exact",
"sku": "1066",
"handle": "10x6x6-ect-32-kraft-long-corrugated-boxes-25-bundle",
"variant_id": "53472879935856",
"family": "boxes",
"title": "10x6x6 ECT-32 Kraft Long Corrugated Boxes - 25 Bundle",
"constraints_verified": {
"dimensions": { "length_in": 10, "width_in": 6, "depth_in": 6 },
"material": "ECT-32 kraft corrugated",
"color": "kraft",
"pack_count": 25,
"pack_unit": "bundle"
},
"live_price": { "unit_price": 13.21, "currency": "USD", "quantity": 25, "line_total": 330.25 },
"live_inventory": { "available": 499, "in_stock": true },
"buyer_confirmed": true,
"cart_url": "https://mcp.packrift.com/r/cart/1066?utm_source=chatgpt-mcp&utm_medium=mcp_tool&utm_campaign=create_cart_url&...&ref=mcp&qty=25",
"final_shopify_cart_url": "https://packrift.com/cart/53472879935856:25?ref=mcp&utm_source=chatgpt-mcp&...",
"product_url": "https://packrift.com/products/10x6x6-ect-32-kraft-long-corrugated-boxes-25-bundle?ref=mcp&..."
}
{
"outcome": "live_confirmed_awaiting_buyer_confirmation",
"match_type": "exact",
"sku": "LL251WR",
"handle": "2-5-8-x-1-weather-resistant-polyester-laser-labels-3000-case",
"variant_id": "53475925492080",
"family": "labels",
"title": "2 5/8\" x 1\" Weather-Resistant Polyester Laser Labels - 3000/Case",
"constraints_verified": {
"dimensions": { "width_in": 2.625, "height_in": 1 },
"material": "weather-resistant polyester",
"printer_compatibility": "laser",
"pack_count": 3000,
"pack_unit": "case"
},
"live_price": { "unit_price": 88.12, "currency": "USD", "quantity": 1, "line_total": 88.12 },
"live_inventory": { "in_stock": true },
"buyer_confirmed": false,
"cart_url": null,
"next_action": "Present price + stock to buyer; re-call prepare_purchase_handoff with buyer_confirmed=true to receive cart_url."
}
{
"outcome": "reorder_handoff",
"match_type": "exact",
"sku": "1066",
"variant_id": "53472879935856",
"title": "10x6x6 ECT-32 Kraft Long Corrugated Boxes - 25 Bundle",
"live_price": { "unit_price": 13.21, "currency": "USD" },
"live_inventory": { "available": 499, "in_stock": true },
"reorder_url": "https://packrift.com/pages/reorder-packaging-by-sku?view=packrift_ai_reorder_live_r05&sku=1066&...#sku-1066",
"product_url": "https://packrift.com/products/10x6x6-ect-32-kraft-long-corrugated-boxes-25-bundle?...",
"copy_procurement_spec": "Packrift SKU 1066 — 10x6x6 ECT-32 Kraft Long Corrugated Boxes - 25 Bundle"
}
{
"outcome": "no_exact_match",
"match_type": "no_exact_match",
"requested_spec": "9x6x6 white corrugated box 25-pack",
"family": "boxes",
"missing_or_mismatched_fields": ["length_in", "color"],
"reason": "Only 10x6x6 kraft available; no 9x6x6 white SKU in AI_APPROVE catalog.",
"no_match_policy": "Exact matches only for purchase handoff. Nearby products must be labeled as alternatives and require buyer confirmation.",
"unsafe_action_blocked": "Do not call a different dimension, material, color, closure, adhesive, printer type, strength, pack count, or SKU an exact match.",
"quote_url": "https://packrift.com/pages/bulk-quote?spec=9x6x6+white+corrugated+box+25-pack&family=boxes&ref=mcp&utm_source=chatgpt&utm_medium=mcp&...",
"copy_procurement_spec": "Requested spec: 9x6x6 white corrugated box 25-pack.",
"safe_next_actions": ["request_bulk_quote", "ask_which_attribute_can_vary", "show_family_page_without_calling_it_exact"]
}
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
coupa.com/companyregistry-y0chx9
aradotso/trending-skills
davila7/claude-code-templates
jeffallan/claude-skills
modelcontextprotocol/ext-apps
aahl/skills
Keeps context tight: exact-spec-packaging-procurement is the kind of skill you can hand to a new teammate without a long onboarding doc.
Solid pick for teams standardizing on skills: exact-spec-packaging-procurement is focused, and the summary matches what you get after install.
exact-spec-packaging-procurement has been reliable in day-to-day use. Documentation quality is above average for community skills.
Useful defaults in exact-spec-packaging-procurement — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Registry listing for exact-spec-packaging-procurement matched our evaluation — installs cleanly and behaves as described in the markdown.
Useful defaults in exact-spec-packaging-procurement — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
I recommend exact-spec-packaging-procurement for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Keeps context tight: exact-spec-packaging-procurement is the kind of skill you can hand to a new teammate without a long onboarding doc.
Registry listing for exact-spec-packaging-procurement matched our evaluation — installs cleanly and behaves as described in the markdown.
We added exact-spec-packaging-procurement from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
showing 1-10 of 75