PackIndex
Packaging material prices, quote checks, contract price adjustments, pack costing and supplier RFQs.
我該用這個嗎
品質與安全性
發現項目(2)
- LOW在 packindex_query 中
- LOW在 get_index_forecast 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"packindex": {
"url": "https://opnplatform.com/api/mcp"
}
}
}遠端端點
https://opnplatform.com/api/mcpstreamable-http它能做什麼
工具清單
工具(26)
🟢search_indices(layer, limit, query)
Find PackIndex codes by material, input, format or plain words ('polypropylene', 'recovered paper', 'natural gas', 'kraftliner', 'corrugated box'). Returns published codes with layer (L0 inputs, L1 raw materials, L2 semi-finished, L3 finished packs), region and unit — no prices. Use first when you don't know the exact code.
輸入結構描述
{
"type": "object",
"properties": {
"layer": {
"description": "Optional layer filter: L0 primary inputs, L1 raw materials, L2 semi-finished, L3 finished units.",
"enum": [
"L0",
"L1",
"L2",
"L3"
],
"type": "string"
},
"limit": {
"default": 10,
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"query": {
"maxLength": 80,
"minLength": 2,
"type": "string"
}
},
"required": [
"query"
]
}🟢get_live_index(code, currency)
Today's value of one PackIndex code — commodity inputs (L0: oil, gas, power, metals, recovered fibre), raw materials (L1: PP, HDPE, pulp…), semi-finished (L2: kraftliner, films…) or finished packs (L3) — in USD (and your currency), with 1-week / 1-month / 3-month / 1-year change (each period only where that much history exists) and carbon data where scored. Free callers get a 12-week delayed reference value (plus a daily live rotation); live values need the Essential plan.
輸入結構描述
{
"type": "object",
"properties": {
"code": {
"description": "PackIndex code, e.g. PP, KRLNR, OCC, GAS_TTF, CORR. Use search_indices if unsure.",
"type": "string"
},
"currency": {
"description": "Also show the value in this currency (ISO code, e.g. EUR, CAD). Defaults to the signed-in user's own currency; converted at live FX.",
"type": "string"
}
},
"required": [
"code"
]
}🟢get_index_history(code, months)
Price history for any PackIndex code (L0-L3), one value per date: every point for up to 3 months, weekly closes for longer spans, with the change between points. Depth follows the caller's plan (observer 3mo · essential 3mo · professional 24mo · intelligence 24mo); free history ends 12 weeks ago.
輸入結構描述
{
"type": "object",
"properties": {
"code": {
"description": "PackIndex code, e.g. PP, KRLNR, OCC, GAS_TTF, CORR. Use search_indices if unsure.",
"type": "string"
},
"months": {
"default": 12,
"description": "Capped to the caller's plan depth.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"code"
]
}🟢get_all_indices(layer, limit, offset)
Page through index values by layer: L0 primary inputs, L1 raw materials, L2 semi-finished (paid plans) and L3 finished packs. Prefer get_prices for specific codes; use this for portfolio scans. Paginate with limit/offset (next_offset is returned while more rows remain).
輸入結構描述
{
"type": "object",
"properties": {
"layer": {
"default": "all",
"enum": [
"L0",
"L1",
"L2",
"L3",
"all"
],
"type": "string"
},
"limit": {
"default": 50,
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"offset": {
"default": 0,
"minimum": 0,
"type": "integer"
}
}
}🟢get_carbon_index(code, recycled_content)
Carbon footprint: finished packs (L3) in kg CO2e per unit with grade A-D; raw materials and semi-finished (board grades, pulps, polymers, aluminium, steel, cullet) in kg CO2e per tonne, virgin and PEF CFF, optionally at your recycled content. For Scope 3 Category 1: factor × units or tonnes.
輸入結構描述
{
"type": "object",
"properties": {
"code": {
"description": "PackIndex code, e.g. PP, KRLNR, OCC, GAS_TTF, CORR. Use search_indices if unsure.",
"type": "string"
},
"recycled_content": {
"description": "Materials only: recycled share 0-1 for the CFF value.",
"maximum": 1,
"minimum": 0,
"type": "number"
}
},
"required": [
"code"
]
}🟢packindex_query(currency, question)
Ask a plain-English question about packaging costs, indices or which PACKIQ agent to use. Returns a structured, citable answer grounded in PackIndex data.
輸入結構描述
{
"type": "object",
"properties": {
"currency": {
"description": "Answer currency; auto-detected from the question if omitted.",
"enum": [
"USD",
"EUR",
"GBP",
"CAD",
"BRL",
"MXN"
],
"type": "string"
},
"question": {
"maxLength": 500,
"type": "string"
}
},
"required": [
"question"
]
}🟢list_packiq_agents(discipline)
Browse PACKIQ AI packaging co-workers (procurement, manufacturing, compliance, finance, sales, logistics, contracts, global markets). Returns agent IDs, names, credit costs and descriptions.
輸入結構描述
{
"type": "object",
"properties": {
"discipline": {
"default": "all",
"enum": [
"Manufacturing",
"Procurement",
"Sales",
"Logistics",
"Finance",
"Compliance",
"Contract Intelligence",
"Global Markets",
"North America Compliance",
"all"
],
"type": "string"
}
}
}🟢get_agent_chain(agent_id, result_signal)
After a PACKIQ agent run, get the 2-3 most logical follow-on agents with reasons. Pass result_signal (e.g. 'OVERPRICED', 'BUY') to bias the pick.
輸入結構描述
{
"type": "object",
"properties": {
"agent_id": {
"type": "string"
},
"result_signal": {
"maxLength": 200,
"type": "string"
}
},
"required": [
"agent_id"
]
}🟢get_index_forecast(code, currency)
12-week forward value for any PackIndex code — inputs, raw materials, semi-finished and finished packs: current level, projection, projected change and confidence. Professional plan and above.
輸入結構描述
{
"type": "object",
"properties": {
"code": {
"description": "PackIndex code, e.g. PP, KRLNR, OCC, GAS_TTF, CORR. Use search_indices if unsure.",
"type": "string"
},
"currency": {
"description": "Also show the value in this currency (ISO code, e.g. EUR, CAD). Defaults to the signed-in user's own currency; converted at live FX.",
"type": "string"
}
},
"required": [
"code"
]
}🟢get_prices(codes, currency)
Today's values for up to 20 PackIndex codes in one call (any layer: oil, gas, resins, pulp, board, films, finished packs) with 1w/1m/3m/1y change — for watchlists and cost models. Free callers get 12-week delayed reference values.
輸入結構描述
{
"type": "object",
"properties": {
"codes": {
"description": "PackIndex codes, e.g. ['PP','HDPE','KRLNR','GAS_TTF']",
"items": {
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
},
"currency": {
"description": "Also show values in this currency (ISO code).",
"type": "string"
}
},
"required": [
"codes"
]
}🟢check_quote(code, currency, price, quantity, quote_date, ...)
Is this supplier price fair? Compares a quoted price (any currency; per t, kg, lb, unit…) with the PackIndex benchmark: difference %, verdict FAIR / HIGH / LOW, where the quote sits in the benchmark's 12-month range and, with a quantity, the overpayment. Free callers are compared with the 12-week delayed reference value.
輸入結構描述
{
"type": "object",
"properties": {
"code": {
"description": "PackIndex code, e.g. PP, KRLNR, OCC, GAS_TTF, CORR. Use search_indices if unsure.",
"type": "string"
},
"currency": {
"default": "USD",
"description": "Quote currency (ISO code)",
"type": "string"
},
"price": {
"description": "Quoted price per unit",
"minimum": 0,
"type": "number"
},
"quantity": {
"description": "Order quantity in the quote's unit",
"type": "number"
},
"quote_date": {
"description": "YYYY-MM-DD; compares with the benchmark on that date (paid plans)",
"type": "string"
},
"region": {
"description": "Where the quote is for, e.g. 'Germany'",
"type": "string"
},
"unit": {
"description": "Quote unit: t, kg, lb, MWh, therm, L, bbl, unit, 1000… (defaults to the benchmark's unit)",
"type": "string"
}
},
"required": [
"code",
"price"
]
}🟢price_adjustment(adjustment_date, base_date, base_price, code, components, ...)
Recalculate an index-linked contract price: base price and base date plus the indices it follows and their weights (the rest is fixed). Returns the adjusted price, each index's ratio and effect, and the formula. Essential plan (base dates up to 3 months back), Professional (24 months).
輸入結構描述
{
"type": "object",
"properties": {
"adjustment_date": {
"description": "YYYY-MM-DD, default today",
"type": "string"
},
"base_date": {
"description": "YYYY-MM-DD the base price was agreed",
"type": "string"
},
"base_price": {
"minimum": 0,
"type": "number"
},
"code": {
"description": "Shortcut for one index (with weight)",
"type": "string"
},
"components": {
"description": "e.g. [{'code':'PP','weight':0.6},{'code':'GAS_TTF','weight':0.1}]",
"items": {
"properties": {
"code": {
"type": "string"
},
"weight": {
"maximum": 1,
"minimum": 0,
"type": "number"
}
},
"required": [
"code",
"weight"
],
"type": "object"
},
"maxItems": 8,
"type": "array"
},
"currency": {
"description": "Currency of the contract price (label only)",
"type": "string"
},
"weight": {
"maximum": 1,
"minimum": 0,
"type": "number"
}
},
"required": [
"base_price",
"base_date"
]
}🟢compare_regions(codes, duty_pct, freight_per_unit, material, reference)
One material across regions — e.g. PP in Europe, US, China and the Middle East — in USD with spreads vs a reference region; add freight per unit and duty % to compare landed costs. Professional plan and above.
輸入結構描述
{
"type": "object",
"properties": {
"codes": {
"description": "Or explicit codes to compare",
"items": {
"type": "string"
},
"maxItems": 10,
"type": "array"
},
"duty_pct": {
"description": "Import duty % into the reference region",
"type": "number"
},
"freight_per_unit": {
"description": "USD freight per benchmark unit into the reference region",
"type": "number"
},
"material": {
"description": "Code or name, e.g. PP, HDPE, OCC, 'polypropylene'",
"type": "string"
},
"reference": {
"description": "Reference code (default: the European benchmark)",
"type": "string"
}
}
}🟢explain_price_move(code, period)
Why did a price move? Splits the change over 1w / 1m / 3m / 6m / 1y into the moves of its inputs (e.g. PP ← propylene, gas, power; kraftliner ← OCC, pulp; boxes ← board grades) and the rest (margins, demand, supply). Essential plan and above.
輸入結構描述
{
"type": "object",
"properties": {
"code": {
"description": "PackIndex code, e.g. PP, KRLNR, OCC, GAS_TTF, CORR. Use search_indices if unsure.",
"type": "string"
},
"period": {
"default": "1m",
"enum": [
"1w",
"1m",
"3m",
"6m",
"1y"
],
"type": "string"
}
},
"required": [
"code"
]
}🟢get_market_movers(group, layer, limit, period)
Biggest risers and fallers among inputs (L0), raw materials (L1) and semi-finished (L2) over 1w / 1m / 3m / 1y, optionally within a group (e.g. 'polymer', 'fibre', 'energy'). Essential plan and above.
輸入結構描述
{
"type": "object",
"properties": {
"group": {
"description": "Optional group or name filter",
"type": "string"
},
"layer": {
"default": "all",
"enum": [
"L0",
"L1",
"L2",
"all"
],
"type": "string"
},
"limit": {
"default": 5,
"maximum": 15,
"minimum": 1,
"type": "integer"
},
"period": {
"default": "1w",
"enum": [
"1w",
"1m",
"3m",
"1y"
],
"type": "string"
}
}
}🟢estimate_packaging_price(currency, flute, format, height_mm, horizon, ...)
Price a corrugated RSC box (FEFCO 0201) from internal dimensions and flute (E, B, C, F or double-wall), anchored to the PackIndex RSC benchmark, with a low/mid/high band, optional order total and a next-quarter projection. Returns the sources to cite.
輸入結構描述
{
"type": "object",
"properties": {
"currency": {
"description": "Also show the estimate in this currency (ISO code, e.g. CAD, EUR). Defaults to the region's currency; converted at live FX.",
"type": "string"
},
"flute": {
"default": "B",
"enum": [
"E",
"B",
"C",
"F",
"EB",
"BC",
"EC"
],
"type": "string"
},
"format": {
"default": "RSC",
"enum": [
"RSC"
],
"type": "string"
},
"height_mm": {
"maximum": 2500,
"minimum": 30,
"type": "number"
},
"horizon": {
"default": "now",
"enum": [
"now",
"next_quarter"
],
"type": "string"
},
"length_mm": {
"maximum": 2500,
"minimum": 30,
"type": "number"
},
"quantity": {
"minimum": 1,
"type": "integer"
},
"region": {
"description": "Country or region, e.g. 'US', 'Germany', 'Poland'",
"type": "string"
},
"width_mm": {
"maximum": 2500,
"minimum": 30,
"type": "number"
}
},
"required": [
"length_mm",
"width_mm",
"height_mm"
]
}⚪draft_packaging_spec(brief, project_name)
Turn a plain-language packaging brief into a structured spec (format, materials, dimensions, quantity, assumptions) saved as a Design Studio project. Requires the user's OPN account (sign-in or API key); spends 1 Suite run (Intelligence includes monthly free runs).
輸入結構描述
{
"type": "object",
"properties": {
"brief": {
"maxLength": 6000,
"type": "string"
},
"project_name": {
"maxLength": 120,
"type": "string"
}
},
"required": [
"brief"
]
}⚪cost_packaging_spec(project_id, spec)
Derive the bill of materials for a Design Studio project (or a spec object) and anchor each component to live PackIndex values. Requires the user's OPN account (sign-in or API key); spends 1 Suite run.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"description": "From draft_packaging_spec",
"type": "integer"
},
"spec": {
"description": "Alternative to project_id",
"type": "object"
}
}
}⚪compare_packaging_options(goal, index_category, material, performance, project_id)
Optimise a Design Studio project (or a material): right-size, lightweight and substitute options with cost and carbon savings anchored to PackIndex. Requires the user's OPN account (sign-in or API key); spends 1 Suite run.
輸入結構描述
{
"type": "object",
"properties": {
"goal": {
"default": "both",
"enum": [
"cost",
"carbon",
"both"
],
"type": "string"
},
"index_category": {
"description": "Without a project: the material family to find substitutes for — one of BOPET, BOPP, COEX_7L, CRTN_FBB, FBB, FLUTE_NSSC, FLUTE_SC, KRLNR, KRLNR_125, LDPE, LDPE_FILM, LDPE_MONO, LLDPE, LLDPE_FILM, METBOPP, PET_BTL, PP, PP_BLOCK, PP_COPOL, PP_FILM, PP_INJ, PP_INJ_SEMI, PP_SHEET, PVC, SBB, SBS_FOOD, SBS_PPR, THERM_PP, VMPET, WHTOP",
"type": "string"
},
"material": {
"description": "Name of the material (shown in the result)",
"type": "string"
},
"performance": {
"additionalProperties": false,
"description": "Performance floor — use the pair that fits the pack. Downgauging is checked against the floor only when both current and required are given.",
"properties": {
"ect_current": {
"description": "Corrugated: current edge crush (ECT)",
"type": "number"
},
"ect_required": {
"description": "Corrugated: minimum ECT",
"type": "number"
},
"stiffness_current": {
"description": "Folding carton: current board bending stiffness, mN·m",
"type": "number"
},
"stiffness_required": {
"description": "Folding carton: minimum bending stiffness, mN·m",
"type": "number"
},
"topload_current_kgf": {
"description": "Rigid packs: current top-load, kgf",
"type": "number"
},
"topload_required_kgf": {
"description": "Rigid packs: minimum top-load, kgf",
"type": "number"
}
},
"type": "object"
},
"project_id": {
"description": "From draft_packaging_spec (with a costed BoM)",
"type": "integer"
}
}
}🟡update_project(contents_mm, name, performance, project_id, quantity, ...)
Change a Design Studio project's order quantity, target region, contents size (boxes — enables right-sizing), name or performance floor (corrugated: ECT; folding cartons: bending stiffness in mN·m; rigid packs: top-load kgf). Free — no Suite run; a new quantity re-prices the existing bill of materials. Use it when the user gives the real volume before comparing options or requesting quotes.
輸入結構描述
{
"type": "object",
"properties": {
"contents_mm": {
"description": "Boxes: the product(s) as packed, 'L x W x H' in mm (3 balls of 74 mm in a row: '74 x 74 x 222'). Enables right-sizing.",
"type": "string"
},
"name": {
"maxLength": 120,
"type": "string"
},
"performance": {
"additionalProperties": false,
"description": "Performance floor — use the pair that fits the pack. Downgauging is checked against the floor only when both current and required are given.",
"properties": {
"ect_current": {
"description": "Corrugated: current edge crush (ECT)",
"type": "number"
},
"ect_required": {
"description": "Corrugated: minimum ECT",
"type": "number"
},
"stiffness_current": {
"description": "Folding carton: current board bending stiffness, mN·m",
"type": "number"
},
"stiffness_required": {
"description": "Folding carton: minimum bending stiffness, mN·m",
"type": "number"
},
"topload_current_kgf": {
"description": "Rigid packs: current top-load, kgf",
"type": "number"
},
"topload_required_kgf": {
"description": "Rigid packs: minimum top-load, kgf",
"type": "number"
}
},
"type": "object"
},
"project_id": {
"type": "integer"
},
"quantity": {
"description": "Units per order / year",
"minimum": 1,
"type": "integer"
},
"region": {
"description": "Target market or supply country",
"type": "string"
}
},
"required": [
"project_id"
]
}🟢list_my_projects
The user's Design Studio packaging projects (id, name, pack type, status) and Suite runs left. Use it before compare_packaging_options or post_rfq when the user refers to 'my project' without an id. Requires the user's OPN account.
輸入結構描述
{
"type": "object",
"properties": {}
}🟡post_rfq(broadcast, company_slugs, currency, listing_ids, material_id, ...)
Request quotes on the OPN Trade Exchange for a Design Studio project or a PackIndex material code to up to 3 suppliers. listing_ids (from find_suppliers) or, by default, the 3 best-matching listings get an RFQ — needs a verified e-mail and an Exchange plan with RFQs (Business+). company_slugs (converters from find_suppliers) ask those companies to quote; the Exchange contacts them for the buyer, anonymously. Real e-mails are sent — confirm the selection with the user first.
輸入結構描述
{
"type": "object",
"properties": {
"broadcast": {
"description": "Also send to every live listing for the material",
"type": "boolean"
},
"company_slugs": {
"description": "Converters to ask for a quote (company_slug from find_suppliers)",
"items": {
"type": "string"
},
"maxItems": 3,
"type": "array"
},
"currency": {
"default": "USD",
"type": "string"
},
"listing_ids": {
"description": "Only these listings (from search_exchange_listings)",
"items": {
"type": "integer"
},
"maxItems": 3,
"type": "array"
},
"material_id": {
"description": "PackIndex code, e.g. RSC_0201, KRLNR, PP",
"type": "string"
},
"needed_by": {
"description": "YYYY-MM-DD",
"type": "string"
},
"notes": {
"maxLength": 2000,
"type": "string"
},
"project_id": {
"description": "Design Studio project with a costed BoM",
"type": "integer"
},
"quantity": {
"type": "number"
},
"region": {
"type": "string"
},
"target_price": {
"type": "number"
},
"unit": {
"description": "e.g. units, t",
"type": "string"
}
}
}🟢find_suppliers(material_id, project_id, query, region)
Who can quote a material or a Design Studio project: live Trade Exchange listings (price vs PackIndex benchmark) plus matched converters from the verified supplier network, filtered by country. Use before post_rfq. A project_id needs the user's OPN account; a material code works for anyone.
輸入結構描述
{
"type": "object",
"properties": {
"material_id": {
"description": "PackIndex code, e.g. RSC_0201, FBB, KRLNR",
"type": "string"
},
"project_id": {
"description": "Design Studio project (see list_my_projects)",
"type": "integer"
},
"query": {
"description": "Supplier name or keywords, e.g. 'Box Co', 'FSC', 'Ontario'",
"type": "string"
},
"region": {
"description": "Supplier country or region, e.g. Canada, CA, Germany, North America",
"type": "string"
}
}
}🟢get_my_rfqs(rfq_id)
The user's sent RFQs with how many suppliers received each and how many responded; pass rfq_id for the responses (bids and, once a supplier responds, their contact).
輸入結構描述
{
"type": "object",
"properties": {
"rfq_id": {
"type": "integer"
}
}
}🟢search_exchange_listings(limit, material_id, query, region)
Live supplier offers on the OPN Trade Exchange, filterable by PackIndex material code and origin, each with its PackIndex benchmark (live on paid plans, 12-week delayed otherwise). No contact details — RFQs happen on the Exchange.
輸入結構描述
{
"type": "object",
"properties": {
"limit": {
"default": 10,
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"material_id": {
"description": "PackIndex code, e.g. KRLNR, PP, BOPP",
"type": "string"
},
"query": {
"description": "Supplier name or keywords (grade, certification, city)",
"type": "string"
},
"region": {
"description": "Origin country or region, e.g. Canada, CA, North America",
"type": "string"
}
}
}⚪run_packiq_agent(agent_id, input, inputs)
Run a PACKIQ agent on the caller's data (quotes, invoices, BOMs, specs). Requires the user's OPN account (sign-in or API key); spends the agent's credit cost (refunded automatically if the run fails). Returns structured JSON plus a next_agent recommendation.
輸入結構描述
{
"type": "object",
"properties": {
"agent_id": {
"description": "From list_packiq_agents, e.g. quote-analyser.",
"type": "string"
},
"input": {
"description": "The data to analyse as text.",
"maxLength": 24000,
"type": "string"
},
"inputs": {
"description": "Alternative to input: agent-specific fields as key/value pairs.",
"type": "object"
}
},
"required": [
"agent_id"
]
}社群
證據