agent-bom

io.github.koda-ai-studio由 GitHub 帳號 koda-ai-studio 發布v0.113.2更新於 Nov 5, 2026

AI supply-chain BOM: agents, MCP servers, packages and recorded reach. Scan and investigate via MCP.

已驗證Streamable HTTP可網頁執行開發者工具安全與監控AI 與機器學習

概覽

AI 產生的概覽

掃描 AI 代理與 MCP 伺服器設定,產生 AI-BOM、檢查套件 CVE,並提供修補與合規報告。

可以做什麼
  • 掃描專案、儲存庫網址或設定檔,盤點代理、MCP 伺服器、工具與相依套件並輸出 AI-BOM
  • 在安裝前檢查指定套件的已知 CVE,並從本機威脅情報資料庫查詢單筆公告
  • 為代理環境產生 CycloneDX 或 SPDX 格式的 SBOM,並依政策規則評估掃描結果
  • 輸出合規狀態與排序後的暴露路徑,並產生含修補指令與憑證收斂建議的修補計畫
適用情境
適合使用 Claude Code、Cursor、Codex 等 MCP 客戶端的應用安全團隊與開發者,用來查看已安裝的代理、伺服器與套件、哪些有漏洞、各自能觸及什麼。也適合安裝前的相依套件檢查與 CI 安全閘門。
執行需求
可作為遠端端點使用,也可透過 uvx 從 PyPI 套件 agent-bom 在本機執行。本機掃描不需帳號。遠端部署需要 OAuth 的 Authorization 持有者權杖,缺少時僅有唯讀的 check 與 intel_lookup 工具可用。選用的 NVD_API_KEY 可提高漏洞資訊補全的速率上限。本機專案掃描路徑須位於家目錄或已設定的工作區根目錄內。
安裝前請注意
遠端端點需要 Authorization 標頭中的 OAuth 持有者權杖,部署權杖會解鎖可寫工具,應視為機密。掃描會讀取本機專案檔案與設定,repo_url 目標會被複製。部分磁碟側掃描會建立暫存雲端資源。工具結果含不可信的外部文字,伺服器亦提醒 JSON 序列化不構成注入防護界線。發現項目與控制項對應僅供調查參考,並非認證。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 agent-bom,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.koda-ai-studio%2Fagent-bom/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "agent-bom": {
      "type": "http",
      "url": "https://agent-bom-mcp.up.railway.app/mcp"
    }
  }
}

README

[agent-bom — AI supply-chain BOM: every agent, MCP server and AI package, and what each one can reach.]

[Build] [PyPI] [Python 3.11 through 3.14]

[Apache-2.0 license] [OpenSSF Scorecard]

AI supply-chain BOM: every agent, MCP server and AI package, and what each one can reach.

For AppSec teams and developers who run Claude Code, Cursor, Codex or any MCP client: see which agents, MCP servers, tools and packages are installed, which are vulnerable, and what each one can reach. Local scans need no account.

Quick start · Try in browser · Laptop → team → org · What you get · Product tour · Docs

Quick start

From the repository you want to inspect, with uv installed:

bash
uvx agent-bom scan . --no-discover -f html -o agent-bom-report.html

Open agent-bom-report.html for inventory, findings and fix guidance. Run the same scan again later and agent-bom prints what changed since the last one. No MCP configuration in the project? Package findings still apply. No project handy? Run uvx agent-bom scan --demo --offline for a bundled sample; Exit 1 is expected there because the sample trips the security gate. A non-zero exit can mean a security gate or incomplete assessment; inspect the report and coverage (exit codes, what a scan does and does not establish, first-run guide).

[Recorded agent-bom CLI showing sample findings and remediation guidance; no fix executed]

From laptop to team to org

WhereStart withYou get
On your laptopuvx agent-bom scan . · claude mcp add agent-bom -- uvx agent-bom mcp serverFindings with fixes, a delta on every rescan, and agent-bom as a tool inside your coding agent (MCP server, plugins)
In your teamuses: koda-ai-studio/agent-bom@v0 on pull requests and a weekly schedule:A PR gate with a findings comment and SARIF in code scanning, plus a weekly rescan that catches new CVEs in unchanged code (GitHub Action)
Across your orgagent-bom up locally, then Docker Compose or the Helm chart from oci://ghcr.io/koda-ai-studio/charts/agent-bomRetained scans, one graph of agents, MCP servers, packages and credentials, SSO and audit, in your own infrastructure (self-host)

Why an AI supply-chain BOM

Agents and MCP servers ship without an inventory. A CVE in an AI package, a poisoned tool description or an over-scoped credential matters by what the agent that loads it can reach. A package SBOM stops at packages; agent-bom records the chain and keeps the evidence for every edge.

1. Inventory2. Correlate3. Act
Agents, MCP servers, tools, packages, models, credential references and cloud resources, read-onlyOne graph: agent → MCP server → tool → package → credential → data, each edge with its sourceFix, gate CI, block poisoned tool calls, rescan to verify

[Sample production AI environment: Document Intake Agent uses a document-tools MCP server that depends on pillow 9.0.0, linked to KEV-listed CVE-2023-4863; Support Triage Agent uses a ticketing MCP server that references TICKETING_API_KEY, which can access a customer ticket archive]

Fictional sample estate. Dashed use, credential and access links are configured or modeled, not observed at runtime; path analysis covers the collected snapshot only. The AWS badge describes environment membership; these sample agents have no recorded execution host or model endpoint. Agent, hosting and model context.

Findings map to OWASP LLM Top 10, OWASP Agentic Top 10, OWASP MCP Top 10, MITRE ATLAS, EU AI Act and NIST AI RMF; control mappings are investigation context, not certification.

What you get

Start with the workflow you need. An individual developer can scan, inspect findings and verify fixes without a shared control plane or a compliance workflow. Teams can add retained scans and shared inventory; organizations can add identity, audit review and governance when needed. These are adoption paths, not separate editions or permissions. See the deployment chooser.

OfferingWhat it includesCostStart
CLI, CI and exportsLocal and CI scans; SARIF, CycloneDX, SPDX, JSON and HTML exports; check pre-install gate; GitHub ActionFree, Apache-2.0; no accountFirst run
Self-hosted control planeAPI and dashboard on Compose or Helm with PostgreSQL, SSO/OIDC, roles, tenant isolation, audit chain, lake evidence import and executive briefsFree, Apache-2.0; your infrastructureSelf-host · Helm
MCP server and agent pluginsagent-bom mcp server tool profiles; Claude Code and Codex plugins; OpenClaw and Cortex Code skillsFree; runs locallyMCP server · Plugins
Hosted service and supportNo managed cloud offering today. Community support on GitHub; security reports follow published response targets, not a contractual SLA—Product boundaries · Support model

What it covers

AreaWhat you get
AI agents and MCPAgents, MCP servers, tools and credentials from local configs and agent frameworks, linked to what they can reach.
Models and AI platformsSupported OpenAI, Hugging Face, Ollama, MLflow and W&B assets, with available model provenance beside dependencies and agent context.
RuntimeAn MCP proxy and gateway that alert on poisoned tools and injected results, or block them with --injection-mode enforce.
SBOM, AI-BOM and Agent-BOMSoftware SBOMs in CycloneDX or SPDX. CycloneDX AI components carry collected model metadata. Native agent-bom JSON connects agents, MCP servers, tools, credential references and packages.
DependenciesLockfiles and manifests across Python, JavaScript, Go, Java, .NET, Rust and more, matched against OSV, GitHub advisories and NVD with KEV and EPSS.
CodeFindings imported from any SARIF producer, plus native analysis of AI code (prompt-injection sinks, guardrails, tool exposure) and whether your code reaches the vulnerable function.
Containers and IaCImages scanned in bounded memory and time; Dockerfile, Terraform, Kubernetes, Helm and compose risks with exact lines in SARIF.
Cloud and data platformsRead-only collection from AWS, Azure, GCP, Kubernetes, Databricks and Snowflake, with provider-specific posture checks and graph context. Per-lane rule counts are generated from code in the capability matrix.
GPU and AI infrastructureAI workloads on CoreWeave, Nebius, Lambda, RunPod, Vast.ai and Crusoe; GPU containers and Kubernetes GPU nodes. Collection depth varies by provider.

Generate a BOM from a project, or inspect an agent inventory with sample data:

bash
agent-bom scan --project . -f cyclonedx -o sbom.cdx.jsonagent-bom scan --project . -f spdx -o sbom.spdx.jsonagent-bom scan --demo --offline -f json -o agent-bom.json

Model metadata appears when the source supplies it. A BOM is an inventory, not proof of safe execution or complete collection.

All supported sources and evidence destinations, by category
AreaIntegrations
AI clients + IDEsClaude, Codex, Cursor, GitHub Copilot, Windsurf, Cortex Code, Gemini CLI, JetBrains AI, Junie, Amazon Q, Cline, Roo Code, Continue, Zed, Goose, Snowflake CLI, Docker MCP Toolkit, Tabnine, Sourcegraph Cody, Aider, Void, Aide, Trae, Pieces, OpenClaw, mcp-cli
AI platforms + model hubsOpenAI, Hugging Face, Ollama, MLflow, W&B, Langfuse, LangSmith
GPU + neo cloudsCoreWeave, Nebius, Lambda, RunPod, Vast.ai, Crusoe, GPU containers + K8s GPU nodes
Hyperscalers + KubernetesAWS, Azure, GCP, Kubernetes
Data + vector storesSnowflake, Databricks, Supabase, Pinecone, Qdrant, Weaviate, Chroma, Milvus
Identity + SaaS + devOkta, GitHub Actions, Vercel, Microsoft Entra ID, Jira, ServiceNow, Slack, Jamf
Evidence outClickHouse, BigQuery, S3, GCS, Azure Blob, Jira tickets, Slack alerts, Vanta, Drata, OCSF syslog

Product names and logos are trademarks of their owners, used only to identify supported evidence sources. Their use does not imply endorsement or partnership.

Investigate context and exposure

Which agent uses the vulnerable component? What could it reach? What evidence supports that path? Correlate retained scans by exact, tenant-scoped identities and trace the recorded blast radius from each agent through its MCP servers to packages, findings, credentials and data stores. Each relationship keeps its source and evidence kind. Agent kind, platform, execution host and model links are separate facts: an environment badge does not say where an agent runs.

From agent to verified fix: select Document Intake Agent → inspect CVE-2023-4863 (high, KEV-listed) and the evidence on each arrow → take the proposed remediation → rescan the changed pin and compare snapshots. The comparison verifies the changed input, not a running deployment.

Am I affected by a new CVE? Match it against stored scans, including CVEs only NVD has published. You get affected assets with their patch target, possibly affected distro packages to verify, and the blast radius (walkthrough):

bash
agent-bom db update                                   # refresh OSV, NVD, KEV and EPSSagent-bom db advisory affected CVE-2026-109618        # most recent saved scanagent-bom db advisory affected CVE-2026-109618 --report <scan-report.json> --format json   # a JSON report written by an earlier scan

From an MCP client, the read-only affected_assets tool (graph and full profiles) takes the same advisory_id. In CI, run uvx agent-bom db update before the GitHub Action step (its auto-update-db default only refreshes feeds older than seven days). To explain a finding to your team, create an impact brief with affected assets, source receipts, evidence gaps and the next action.

More sample graphs: package evidence, repository and cloud (3)

One package, three parsed inputs. A repository pin, an image SBOM and a modeled Kubernetes workload resolve to one [email protected]. The image inventory and the deployment occurrence stay separate nodes; the advisory receipt is open.

[Repository pin, image inventory and Kubernetes deployment occurrence resolving to one pillow package linked to KEV-listed CVE-2023-4863, with the plain-language relationship evidence open]

Real parsers, modeled infrastructure; a graph path does not prove exploitation.

Repository. Source imports, deployment configuration and CI traced to a published container and its vulnerable packages:

[Sample repository linking source, deployment configuration and a CI job to a container, vulnerable npm and PyPI packages, their advisories and a CI misconfiguration]

Cloud. A public API gateway into a vulnerable workload, its role and a PII bucket:

[Sample cloud account where a public API gateway exposes a workload with a critical advisory that authenticates as a role permitted to read a PII bucket]

Context, correlation and reachability · Run the reference lab · Reproduce these screenshots

Open the sample graph

Try the demo in your browser: a read-only copy of the UI on labelled sample data, with no install and no backend. Scans, settings and sign-in are turned off there. To open the same graph locally:

bash
pip install 'agent-bom[ui]==0.113.2'agent-bom quickstart --run --offline

Run the server command it prints, then open its graph URL. Offline quickstart skips package-CVE lookup, so zero CVEs is not a clean verdict; use the bundled demo for advisory-backed findings or populate the advisory database.

Self-host in your environment

Your infrastructure, identity, database, and audit boundary. Start a local pilot from a published release checkout:

bash
git clone --depth 1 --branch v0.113.2 https://github.com/koda-ai-studio/agent-bom.git && cd agent-bomAGENT_BOM_IMAGE_TAG=0.113.2 docker compose up -d

Open http://localhost:3000, then Connections or New Scan. The pilot binds to loopback and retains state in a Docker volume. For cloud accounts, add a scoped read-only connection, verify access, then start a scan. Before sharing access, move to the authenticated deployment.

  • Scan with CLI or CI; export findings, SBOMs and reports.
  • Centralize inventory, graph evidence, remediation and compliance in your own control plane.
  • Enforce policy on selected live MCP tool calls through the proxy or gateway.
Deployment options (5): CLI, local dashboard, Compose pilot, authenticated host, Helm
DeploymentFirst stepResult and next step
CLI or CI jobagent-bom scan --demo --offline -o report.jsonLabelled sample findings in JSON; scan your own inventory or configure a CI gate.
Local API and dashboardagent-bom quickstart --run --offlineSample report and persisted graph; run the printed loopback server command and open its graph URL.
Docker Compose pilotRelease checkout and docker compose up -d aboveLoopback API/UI with retained state; connect a read-only source and run a scan.
Authenticated single hostPlatform Compose setupLogin-gated API/UI and PostgreSQL; configure TLS, identity, secrets and backups before sharing access.
Kubernetes / EKSHelm deploymentControl plane in your cluster; provision role-separated secrets and storage, then validate authentication and health.
Operating modes (5): scan, fleet inventory, MCP server, runtime proxy, runtime gateway

Modes can be combined:

ModeWhat it doesStart
ScanCollect inventory and findings on demand or in CI; retain reports and graph evidence.First run
Fleet inventoryEndpoints or collectors sync inventory to the control plane; review last-seen evidence.Fleet sync
MCP serveragent-bom mcp server exposes security tools to an MCP client.Tool profiles
Runtime proxyWrap selected local stdio MCP servers to inspect tool calls; verify decisions in the audit trail.Proxy setup
Runtime gatewayRelay selected remote MCP traffic through a shared service; validate client auth, policy and upstream connectivity.Gateway setup
Console terms: Sources, Assets, Findings, Issues
  • Sources describes recorded evidence: local scans, fleet inventory, cluster scans, CI/CD, imported evidence, or mixed sources. It does not select a deployment type or enable runtime enforcement. Demo data marks labelled sample inventory.
  • Assets are inventoried resources; Findings are detections on those resources; Issues group related findings for investigation or remediation.
  • Affected assets counts distinct resources only when that count is available. One finding may belong to several security areas, so area counts must not be summed. Repeated observations across scans are shown separately.

Preview and community deployment paths have separate support boundaries.

Docker pilot guide · Compose with PostgreSQL · Choose a deployment · Enterprise controls · Connect cloud accounts

Integrations

Claude Code and Codex plugins: ask your coding agent instead of reading a report

In Claude Code:

text
/plugin marketplace add koda-ai-studio/agent-bom/plugin install agent-bom@agent-bom

In Codex, run codex plugin marketplace add koda-ai-studio/agent-bom, then install agent-bom-local from the Plugins Directory. Both plugins run the pinned agent-bom release locally and send nothing to an agent-bom service.

AskSkill
"Is this project safe to ship?"checkup: one verdict and the three fixes that matter most
"Am I affected by CVE-2025-29927?"affected: affected or not found in what was scanned, never "safe"
"What have my agents been doing?"activity: MCP usage, unused servers, risky commands from local session history
"Are my agent settings too permissive?"audit-mcp and audit-skills
"Give me an AI-BOM"bom: CycloneDX or SPDX for this machine, a project, an image or a cloud account

Add /plugin install agent-bom-guard@agent-bom to block malicious and typosquatted package installs before Claude runs them. All skills and their permissions · Guard details

Work with your existing tools

Use CLI or GitHub Action, REST API, or MCP; export SARIF, CycloneDX, SPDX, JSON and HTML. Cloud connectors and fleet sync collect inventory; proxy and gateway deployments add runtime evidence.

For other MCP clients, run agent-bom mcp server. Start with eight focused tools in the default profile. Choose an MCP profile for graph, cloud, runtime or audit work. Try three investigations: affected agents, exposure receipts and a before/after scan comparison. Import existing scanner reports without replacing their source evidence.

Check a dependency before installing it with uvx agent-bom check [email protected] --ecosystem pypi. Add pre-commit and CI setup for repeated checks.

Proxy, gateway and fleet · Integration capability matrix · MCP client setup · Smithery migration

Trust and evidence

Discovery uses read-only access by default. Explicit disk side-scans create temporary cloud resources. Missing evidence stays unavailable or partial; control mappings are not audit certification.

Runtime evidence and MITRE mapping boundaries

Persisted runtime, proxy and gateway activity retains source receipts and bounded time windows in the graph. Exact inventory references can bind records; unresolved identities and collection gaps remain explicit. Recorded activity does not prove execution or grant access. See the runtime evidence boundaries.

MITRE technique associations provide investigation context, not proof of an attack. ATLAS mapping receipts retain the weakness association and source catalog hashes; modeled graph paths do not establish observed execution or effective access.

Measured matcher proof · Product boundaries · Permissions · Threat model · Release verification · Graph data model

Contributing and support

[Open in GitHub Codespaces]

Start with the first PR guide or a good first issue. Ask in GitHub Discussions (or Discord), share feedback, or follow the maintainer path (review owners).

Contributing · Capabilities and roadmap · Support · Report an inaccurate finding · Apache-2.0

Source version: v0.113.2 · Latest release: v0.113.2 · Changelog

來源:README.md,提交 6753a3e

工具

8

scan

Security Scan

Run a full AI supply chain security scan and return an AI-BOM. Point it at a target with one of: • project_path — a local project / repo directory ("scan this repo"; must be inside home or AGENT_BOM_MCP_WORKSPACE_ROOTS) • repo_url — a public git repo URL (cloned + scanned, no checkout) • config_path — a local MCP-config directory • image — a Docker image • sbom_path — an existing CycloneDX/SPDX SBOM • package — a single package or MCP launch command (pair it with ``ecosystem`` when the spec names no launcher) With none of these, it auto-discovers local MCP clients (Claude Desktop, Cursor, Windsurf, VS Code Copilot, OpenClaw, etc.). It extracts package dependencies, looks up CVEs (online via OSV.dev and advisory sources unless offline mode is requested or configured), assesses config security (credential exposure, tool access), computes blast radius, and returns structured results. Scanning is fully static and read-only — repository and image contents are parsed, never executed. Returns: JSON. By default a bounded summary: counts (packages, agents, findings by severity/category), top findings, affected paths, and a result_id. Page any full-fidelity section with scan(result_id=..., section='findings', offset=0, limit=25). An incomplete scan (e.g. vulnerability source unavailable) is returned as an error result whose body is still JSON.

輸入參數imagelimitdetailenrichoffsetpolicyofflinepackagesectionrepo_urlecosystemresult_id另有 12 個

check

Package CVE Check

Check a specific package for known CVEs before installing. Queries OSV.dev for vulnerabilities in the given package. Use this before installing an MCP server or dependency to verify it is safe. Args: package: Package name with optional version, e.g. "[email protected]", "@modelcontextprotocol/[email protected]", or just "requests" (resolves @latest). ecosystem: Package ecosystem — "npm", "pypi", "go", "cargo", "maven", "nuget", "rubygems", "composer", "swift", "pub", "hex", "conda", "deb", "apk", or "rpm". Defaults to "npm". Returns: JSON with package, version, ecosystem, vulnerability count, and vulnerability details (id, severity, cvss, fix version, summary).

輸入參數offlinepackage必填versionecosystem

intel_lookup

Threat Intel Advisory Lookup

Look up one advisory from the local threat-intel database.

輸入參數advisory_id必填

policy_check

Policy Evaluation

Evaluate a security policy against current scan results. Runs a scan, then evaluates the provided policy rules against the findings. Policies can gate on severity thresholds, CISA KEV status, AI risk flags, credential exposure, and denied packages. Args: policy_json: JSON string containing policy rules. Example: {"rules": [{"id": "no-critical", "severity_gte": "critical", "action": "fail"}, {"id": "no-kev", "kev": true, "action": "fail"}]} Returns: JSON with passed (bool), violations list, failure_count, and warning_count.

輸入參數policy_json必填

generate_sbom

Generate SBOM

Generate a Software Bill of Materials (SBOM) for your AI agent setup. Discovers AI agents and MCP servers, extracts all package dependencies, and generates a standards-compliant SBOM. Args: format: SBOM format — "cyclonedx" (CycloneDX 1.7) or "spdx" (SPDX 3.0). config_path: Path to a specific MCP config directory. If not provided, auto-discovers all local agent configs. Returns: JSON string containing the SBOM in the requested format.

輸入參數formatconfig_path

compliance

Compliance Posture

Return compliance posture with its source: the tenant's persisted evidence, or a labelled local scan. With completed scans in the control plane, ``summary`` is exactly ``/v1/compliance/summary``; ``framework`` adds ``/v1/compliance/{framework}`` and ``control`` pages the driving finding ids from ``/v1/findings?framework=&control=``. Otherwise (or with source='local_scan') it scans local MCP configurations and labels that scope.

輸入參數imagelimitcursorsourcecontrolframeworktenant_idconfig_path

remediate

Remediation Plan

Generate a remediation plan for vulnerabilities in your AI agent setup. Scans for vulnerabilities, then generates actionable fix commands for each affected package (npm install, pip install), credential scope reduction guidance, and reports on unfixable vulnerabilities. Args: config_path: Path to a specific MCP config directory. If not provided, auto-discovers all local agent configs. image: Docker image reference to scan (e.g. "nginx:1.25"). Returns: JSON with package_fixes (upgrade commands by ecosystem), credential_fixes (scope reduction steps), and unfixable items.

輸入參數imageconfig_path

exposure_paths

Exposure Paths

Return the attack-path queue in the dashboard's order, with why each path ranks where it does. Ranking is ``ranking.order`` (evidence tier, KEV, severity, evidence confidence, composite risk, credential count); every path carries ``rank``, ``evidenceTier``, ``isKev``, ``severity``, ``evidenceConfidence`` and ``rankingFactors``. Totals, filters and cursor pages match ``/v1/graph/attack-paths``. With ``result_id`` the paths are that session scan result's, unfiltered and labelled ``session_scan_result``.

輸入參數kevviewlimitcursornode_idscan_idmin_riskresult_idtarget_idtenant_idfinding_idsource_type另有 3 個

版本歷史

5
  1. v0.113.2最新Nov 4, 2026
  2. v0.113.1Nov 4, 2026
  3. v0.113.0Nov 3, 2026
  4. v0.111.0Oct 29, 2026
  5. v0.110.0Oct 22, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分