360 Secure SkillHub
360 安全技能中心

Hiq Cortex En

该技能通过外部API或MCP工具访问HiQ Cortex的LCA数据服务,覆盖18个生命周期清单数据库和2.4万余份已发布EPD。支持材料或BOM行匹配数据集、排放因子与基准信息查询、队列分布与百分位定位、非GWP指标聚合、过程热点分析以及EPD同行基准与离群判定。凭据通过登录流程获取并保存于本地,商业数据库需对应数据包权限。

kirbyingithub
kirbyingithub
热度 61.66
最近更新 2026-08-14 10:34:43
分类:数据依赖:第三方 API / 代码执行 / MCP 服务 / 读写文件应用场景:研究 / 数据处理 / 报告撰写 / 推荐

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add hiq-cortex
Metadata
name
hiq-cortex
description
Look up real LCA emission factors and carbon footprint data from 18 life-cycle inventory databases (Ecoinvent, BAFU, USLCI, ELCD, EF, worldsteel, AusLCI, HiQLCD …) and 24,000+ published EPDs. Use whenever a task needs an actual emission factor rather than a remembered number: material GWP lookup, product carbon footprint, BOM carbon accounting, industry benchmarking and percentile positioning, production-route comparison (BF-BOF vs EAF steel, primary vs recycled aluminium, grey vs green hydrogen), EPD peer review, CBAM and EN 15804 work. Triggers on carbon footprint, emission factor, inventory data, bill of materials, industry benchmark, GWP, kg CO2e, LCA dataset, LCI, EPD.
slug
hiq-cortex
displayName
HiQ Cortex — LCA Data
version
1.8.3
summary
Look up real emission factors from 18 LCA databases and 24,000+ published EPDs. Material carbon footprints, BOM accounting, industry benchmarking, production-route comparison, EPD peer review.
license
Apache-2.0
homepage
https://github.com/HiQ-AI/agent-skills
tags
["LCA","carbon-footprint","emission-factor","EPD","CBAM","ecoinvent","HiQLCD","GWP","LCI","life-cycle-assessment"]

HiQ Cortex — LCA Data

Carbon footprint answers must come from real inventory data. A remembered "steel is about 2 kg CO₂e/kg" is useless to an LCA practitioner: the real value depends on database, version, system model, production route, and geography, and varies several-fold across those dimensions.

About

This skill connects to HiQ Cortex — the LCA data service of HiQ (海科数据), a Chinese provider of LCA background data and carbon footprint services that maintains its own China-specific life-cycle inventory databases and aggregates major international sources.

Available:

  • 18 life-cycle inventory databases, 11 of them free. Includes China-specific data (HiQLCD covering China's full industrial system, HiQLCD-AL for the aluminium value chain, CALCD for the automotive sector) alongside international sources (Ecoinvent, BAFU, ELCD, EF, worldsteel, USLCI, AusLCI, CarbonMinds, Agri-footprint …).
  • 24,000+ published EPDs (EPDItaly, ECO Platform, EPD Norge) for peer distributions and outlier review.
  • ISO 14040/14044 and GB/T 24040/24044 conventions; system models covering cut-off, consequential, APOS, and EN 15804.

Search runs server-side. Pass the user's own wording or raw BOM lines straight to the search endpoint — translating material names into LCA terminology, identifying production routes, and mapping categories to process direction all happen on the server. Returned candidates are already ranked and carry a match-quality marker. Do not re-derive search terms locally.

Privacy and security

  • The API key is read only from the environment or the host's MCP config. The skill never writes it to a file and never echoes it in output.
  • Queries go only to x.hiqlcd.com (HiQ's API), never to any third party.
  • Nothing is collected or uploaded — no local files, directory structure, or conversation content.
  • The bundled script uses only the Python standard library, no third-party dependencies, and the source is auditable on GitHub.

Hard rules

  1. Every number must come from a tool call in this session. Never state a GWP, LCIA value, or distribution from memory. If the tools are unavailable, say so — do not fill the gap.
  2. Every number needs its basis: database + version + system model + geography + reference unit. 0.0269 kg CO₂e/kWh (BAFU 2025, DEFAULT, CH, low-voltage grid) is usable; a bare 0.027 is not.
  3. Restricted is not an error. Commercial databases return a restriction marker and a purchase_url when the account lacks the data package. Show it, hand the user the link, and never silently substitute a value from another database or the literature. Retrying does not help. A free database may be used instead, but say that it is a substitution.
  4. Do not compare across conventions. Data with different functional units, system models, or system boundaries is not comparable — say so rather than presenting a misleading delta. Read comparability_note first; that is what it is for.

Access

With no credentials available, lead with browser sign-in — do not send the user to the console to create an API key.

Sign-in is one command plus one click, with no registration. Creating an API key means logging into a console, finding the right page, copying a secret, and setting an environment variable — an order of magnitude more friction. Putting that first is how you lose the user.

python3 scripts/cortex.py login    # ← the default when no credential is present

The command prints an authorization link. Hand the link to the user verbatim, have them click "authorize", then carry on with the original task. Credentials land in ~/.hiq/credentials.json (mode 600) and every command works from then on; the visible data scope matches that account, including any commercial databases it has access to. logout removes them.

Only reach for an API key in three cases: the user asks for one, the environment is CI / server-side with no browser, or sign-in failed.

export HIQ_API_KEY=sk_xxx          # server-side / CI; takes precedence when both exist

The flow is three plain HTTP requests (standard device flow, RFC 8628) — any agent that can run a shell can do it without the script:

curl -sX POST https://x.hiqlcd.com/api/cortex/oauth/device_authorization \
  -H 'Content-Type: application/json' \
  -d '{"agent_id":"my-agent","agent_name":"My Assistant","scope":"lca_data"}'
# hand the returned verification_uri_complete to the user → they approve
curl -sX POST https://x.hiqlcd.com/api/cortex/oauth/token \
  -H 'Content-Type: application/json' -d '{"device_code":"..."}'   # 428 = not yet approved, keep polling

Prefer MCP when the host supports it. If lookup_datasets, aggregate_datasets, epd_search are already available in this session, use them. Otherwise add this to the host's MCP config (WorkBuddy ~/.workbuddy/mcp.json, Claude Code ~/.claude.json, Cursor ~/.cursor/mcp.json) and restart the host:

{
  "mcpServers": {
    "cortex": {
      "type": "http",
      "url": "https://x.hiqlcd.com/api/cortex/mcp",
      "headers": { "X-API-Key": "sk_xxx" }
    }
  }
}

Credentials from login work too — replace that line with "Authorization": "Bearer <credential>".

Never hard-code credentials into files generated for the user.

Tools

Need MCP tool Script command
Material / BOM line → dataset key (none, see below) search "<user's wording>" [--sources X]
Key → GWP, basis, links lookup_datasets lookup <key> [<key> ...]
Cohort → GWP distribution, percentile positioning aggregate_datasets aggregate --source X [--target N]
Cohort → non-GWP LCIA indicators (AP/EP/ODP/WDP/ADP) aggregate_indicators indicators <keys> --indicator AP --source X
Single dataset → process-level hotspots process_hotspot hotspot <key>
Published EPD search epd_search epd "<query>" [--unit m3]
EPD peer distribution, outlier check epd_peer_benchmark epd-benchmark "<category>" --unit m3

Add --json to any script command for the raw payload.

Search has no MCP tool — it is a REST endpoint, wrapped by the script. Direct call:

curl -sN -X POST https://x.hiqlcd.com/api/cortex/search \
  -H "X-API-Key: sk_xxx" -H "Content-Type: application/x-www-form-urlencoded" \
  -d "query=304 stainless steel&sources=BAFU,Ecoinvent"

The response is SSE — parse the WorkflowCompleted event, then JSON-decode its content field. It takes 20–40 seconds (the server searches and verifies each hit). That is normal, not a hang; do not retry in parallel.

dataset_key is an opaque handle — pass it through unchanged, never construct or edit one.

Reading the response

Field Meaning What to do
status: found / partial / not_found partial = results found, some restricted Show them; handle restricted per hard rule 3
summary The server's account of this search Relay it; do not invent a competing explanation
fit: high / medium / low Server-assigned match quality Confirm with the user before citing a low
name / ref_product / location Dataset name, reference flow, geography Read before citing — "cold-rolled annealed coil" and "heavy plate" are different products
restricted: true No data package for that database Give the purchase_url; a free-database alternative must be labelled as such
missing_keys non-empty Key came from an older catalogue version Search again; do not hand-edit keys
comparability_note Cohort comparability caveats Read before comparing
entitlement An empty aggregate is an entitlement issue, not a predicate issue Do not retry with a different predicate

Scenario routing

Top to bottom, first match wins.

Signal What to do
User gives their own number and asks where it sits ("is my 2.5 high or low") aggregate with a cohort predicate + --target → percentile positioning
A material or BOM to match against datasets search → batch lookup
Comparing two production routes (BF-BOF vs EAF steel, primary vs recycled aluminium) Search and aggregate each route separately, compare under one functional unit
"Is this EPD value reasonable" epd-benchmark with an explicit --unit; cross-unit comparison is meaningless
Multi-indicator assessment (acidification, eutrophication …) indicators, one indicator at a time; --source must match the cohort's database

When to ask the user

Search first, compare second, ask last. If there is anything searchable — a material name, product, process, or BOM line — search it and give results in the same turn. Do not ask for information already stated in the conversation.

"I'm not sure which one to use" is a decision-support signal, not a question: give the candidate list, compare under one convention, explain which dimension drives the difference, and give a conditional recommendation where the evidence supports one. A complete advisory answer can end there.

Only ask when a single dataset must be finalised and the remaining ambiguity would materially change the result. Options must correspond to candidates already shown — never invent them. Use the host's interaction facility if one exists, and do not duplicate the options as a text list. After the answer, complete the match on the existing results; do not re-run the same search.

Data entitlements

Tier Content Requirement
Catalogue All 18 databases: inventory, versions, system models, LCIA coverage; dataset names, units, geographies None
Free database values GWP and aggregates for BAFU, USLCI, ELCD, EF, AusLCI, NEEDS, ozLCI, worldsteel, USDA, bioenergiedat, recycledplastics Any valid credential
Commercial database values GWP and aggregates for Ecoinvent, HiQLCD, HiQLCD-AL, CALCD (automotive), CarbonMinds, Agri-footprint Matching data package

Data packages and subscription plans are two separate systems — upgrading a plan does not unlock a database. When something is restricted, name the database, hand over the purchase_url, and offer a free-database path if one answers the same question, labelled as a substitution.

Voice and terminology

Write for LCA practitioners, like a knowledgeable peer.

  • No pleasantries ("I hope this helps", "let me help you"), no adjective stacking, no summarising sign-off.
  • Use ISO 14040/14044, ILCD, and GB/T 24040 terminology — for this audience, standard terms are clearer than plain language.
  • unit process · elementary flow · reference flow · functional unit · system boundary · impact category · characterisation factor · cut-off · consequential.
  • Do not invent terminology. When unsure of the standard term, use the ISO wording.

Troubleshooting

Symptom Cause Fix
401 {"code":"INT-007"} Used Bearer, or the key is invalid Use X-API-Key
CDN returns error 1010 Default HTTP client User-Agent is blocked The bundled script sets one; add a normal User-Agent on direct calls
Search takes 30 seconds Normal — it searches and verifies Wait; do not retry in parallel
Aggregate status: "empty" with entitlement Commercial database, no package Not a predicate problem; do not retry
Aggregate status: "empty" without entitlement The predicate genuinely matched nothing Broaden the predicate
indicators returns empty source must equal the cohort's actual database (method_id is not portable) Pass the correct --source
Cohort values span orders of magnitude Mixed functional units, not real dispersion Narrow the predicate; read comparability_note first
Authorization polling returns 428 The user has not approved yet Normal — keep polling at the returned interval
Still no commercial data after login That account has no such data package Login only changes credentials, not entitlements; show the purchase link