lurq

io.github.jadenryu由 GitHub 帳號 jadenryu 發布v0.1.7更新於 Oct 25, 2026

Verify npm packages before your AI agent installs them: hallucinations, advisories, API drift.

已驗證Streamable HTTP可網頁執行資料庫開發者工具安全與監控

概覽

AI 產生的概覽

一個託管式驗證層,讓助理在安裝前依據即時登錄檔、安全公告與 API 證據核查 npm 套件、相依組合與 MCP 伺服器。

可以做什麼
安裝前核查套件:verify、evaluate、compare 與 policy 提供 npm 套件的健康度、安全公告、仿冒風險與團隊選套件規則,每個回答都帶資料時間戳。核查整組相依:compat 解析一組套件的 peer 與引擎衝突,audit 一次審查專案的相依與已設定的 MCP 伺服器,diagram 產生參考架構草圖。針對套件寫程式:usage 回傳某版本的具型別 API 簽章,resolve_surface 顯示該版本執行時實際匯出的內容,diff_surface 列出兩個版本間新增、移除或改名的符號。檢查 MCP 伺服器:mcp_surface 讀取即時工具契約,mcp_drift 回報版本間的契約變化,mcp_stack 判斷多個伺服器是否在同一工具命名空間衝突。輔助工具:capabilities 說明哪個工具適合目前情況,report_outcome 可選擇性回報採用結果。
適用情境
當編碼助理憑記憶挑選 npm 套件,而你希望它在寫入相依清單前確認套件名稱真實、健康且彼此相容,或在寫程式前核對套件目前 API 時,值得加入。把 MCP 伺服器接入助理、需要了解其真實工具契約或命名空間衝突時也有用。
執行需求
遠端 streamable HTTP 端點,不需要本機執行環境。需要 lurq 帳號與 API 金鑰,透過 Authorization bearer 標頭傳送。免費方案每月含 1,000 次託管呼叫,付費方案可提高額度。需要能連線該託管服務的網路。
安裝前請注意
Authorization bearer 金鑰屬於憑證:它會寫入各助理的 MCP 設定,在儀表板撤銷前一直有效。託管呼叫按量計費,付費方案需要付費。套件名稱與版本、以及本機讀取的相依清單會傳送到該服務;mcp-scan 預設會上傳 MCP 伺服器的工具描述,除非關閉。unknown 或無法驗證的結果並不代表套件是安全的。report_outcome 為選擇性回饋。

安裝

在 SourceWeft 中

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

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

交給代理程式安裝

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

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

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

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "lurq": {
      "type": "http",
      "url": "https://api.lurq.run/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

lurq

The verification layer for everything your agent installs.

Your coding agent picks npm packages from memory. lurq checks them against the live registry, security advisories, shipped type definitions and real co-installs, before anything lands in package.json.

[npm version] [npm downloads] [MCP Registry] [license] [node]

Install · For AI agents · MCP tools · CLI · Autopilot · Docs

text
$ lurq verify lodahslodahs  ✗ do not install 0.0.1-security (latest) without review  • name closely mimics "lodash" — possible typosquat  • 1 critical/high advisory(ies) recorded against this packagerisk flags: possible-typosquat-of:lodash, low-downloads, single-maintainer, has-known-advisory
$ lurq verify zodzod  ✓ no supply-chain problems found in 4.6.4 (latest)weekly dl:  209.2M   confidence: proven   advisories: 0
$ lurq compat next @auth/core next-authnext + @auth/core + next-auth  conflictpeer-deps  next-auth needs peer @auth/[email protected], but the stack uses @auth/[email protected]

Real output, not a mockup. Your agent gets the same answers over MCP.


Why your agent needs this

A model's knowledge of npm stops at its training cutoff. The registry doesn't.

  • Invented and typosquatted names. Agents confidently install packages that don't exist, or that exist only because someone registered the misspelling.
  • APIs that moved. Of the 38,752 packages lurq tracks, 2,725 shipped a new major version between May 1 and September 13, 2026. Code written from memory calls functions that were renamed or removed.
  • Stacks that don't install together. Every package can be healthy on its own while the set fails on a peer or engine range. That usually surfaces at deploy.

lurq answers from evidence it can show: 47,238 packages scored, 4.2M versions tracked, 34,843 API surfaces extracted from shipped code, and 27M co-install pairs, refreshed daily from npm, GitHub, deps.dev and OSV. Every answer carries a dataAsOf timestamp.

Scope: the JavaScript/TypeScript ecosystem (npm).


Install

One command, once per machine. Nothing to install first:

bash
npx lurqrun

The setup wizard:

  1. Opens lurq in your browser. Sign in and the key comes back to the terminal by itself.
  2. Detects every coding agent on the machine.
  3. Writes a keyed remote MCP entry for each, in the shape that agent expects.
  4. Installs standing instructions where the agent supports them, so it reaches for lurq instead of answering from memory.

Restart your agent afterward. The free plan includes 1,000 hosted calls a month and never asks for a card.

Works with: Claude Code · Cursor · Windsurf · VS Code / GitHub Copilot · OpenAI Codex CLI · Gemini CLI · Google Antigravity · Kiro

Check it worked: ask your agent to "add zod to this project". It should call lurq's verify before installing anything.

Claude Code plugin, no terminal needed:

text
/plugin marketplace add jadenryu/lurq/plugin install lurq@lurq

One-click links for Cursor and VS Code are in the quickstart.

The package is published as lurqrun (the bare name was taken). The command is lurq:

bash
npm install -g lurqrunlurq --version

For AI agents

If you are an AI coding agent and your user asked you to set up lurq, follow these steps.

1. Run setup.

bash
npx lurqrun setup

In your shell it does not prompt: it prints a one-time sign-in link and exits right away. Give the user that link. When they sign in on this computer, lurq stores a key and connects every detected coding agent by itself. Never invent a key.

2. Or configure non-interactively when the user already has a key from lurq.run/dashboard/keys, or on a cloud, SSH or CI machine, where a sign-in link on this computer can't work:

bash
npx lurqrun setup --yes --no-open --api-key <key> --agent <id>
Agent--agent
Claude Codeclaude-code
Cursorcursor
Windsurfwindsurf
VS Code / GitHub Copilotcopilot
OpenAI Codex CLIcodex
Gemini CLIgemini-cli
Google Antigravityantigravity
Kirokiro

--agent all configures every detected agent. With --yes, the key can also come from LURQ_API_KEY.

Some checks need no key at all. npx lurqrun check-upgrade --upgrade <package>@<from>..<to> compares an upgrade against the names your code actually imports, locally.

3. Tell the user to restart the agent, then confirm lurq appears in its MCP tool list.

Writing the MCP config by hand

Endpoint: https://api.lurq.run/mcp (streamable HTTP), header Authorization: Bearer <key>. The field names differ by client:

Claude Code (~/.claude.json, under mcpServers) and VS Code (mcp.json, under servers):

json
"lurq": { "type": "http", "url": "https://api.lurq.run/mcp", "headers": { "Authorization": "Bearer <key>" } }

Cursor (~/.cursor/mcp.json) and Kiro (~/.kiro/settings/mcp.json), under mcpServers:

json
"lurq": { "url": "https://api.lurq.run/mcp", "headers": { "Authorization": "Bearer <key>" } }

Windsurf (~/.codeium/windsurf/mcp_config.json) and Antigravity (~/.gemini/config/mcp_config.json), under mcpServers:

json
"lurq": { "serverUrl": "https://api.lurq.run/mcp", "headers": { "Authorization": "Bearer <key>" } }

Gemini CLI (~/.gemini/settings.json, under mcpServers). It must be httpUrl, because a plain url is read as SSE:

json
"lurq": { "httpUrl": "https://api.lurq.run/mcp", "headers": { "Authorization": "Bearer <key>" } }

Codex (~/.codex/config.toml). Headers go in an inline table:

toml
[mcp_servers.lurq]url = "https://api.lurq.run/mcp"http_headers = { Authorization = "Bearer <key>" }

When to call lurq

You are about to…Call
Install or import a packageverify with the exact name, first
Choose between librariescompare your candidates, then verify the pick
Commit to a set of packagescompat with the whole set in one call
Write code against a package whose API may have movedusage, with the version you remember as knownVersion
Upgrade, or explain a breakdiff_surface between the two versions
Add dependencies in a team codebasepolicy, before choosing
Review a whole projectaudit with names and versions from package.json and the lockfile
Wire an MCP server into an agentmcp_surface, or mcp_stack for several
Not sure which tool fitscapabilities

When lurq flags something, tell the user what it found and that it came from lurq. An unknown or UNVERIFIABLE result means lurq could not check. It never means the package is clean.

Machine-readable docs: lurq.run/llms.txt · lurq.run/docs/llms-full.txt


MCP tools

Fifteen tools. Responses are compact to save tokens, and package answers carry dataAsOf.

Before installing

ToolWhat it answers
verifyIs this package real, healthy and safe? Catches hallucinated and typosquatted names
evaluateThe full evidence for one package: scores, advisories, usage guide, sandbox verdict
compare2–5 packages ranked head-to-head
policyWhat your team's selection policy refuses, so the agent picks an allowed package first

Across a stack

ToolWhat it answers
compatWill these packages install together? Returns the exact clashing peer or engine range
auditA whole project's outdated, deprecated and vulnerable dependencies and drifted MCP servers, in one call
diagramA reference-architecture Mermaid diagram for a stack

Writing code

ToolWhat it answers
usageA version's real public API from its shipped .d.ts, and what changed since the version you know
resolve_surfaceWhat a version actually exports at runtime
diff_surfaceWhat a version bump adds, removes, renames or changes arity on

MCP servers

ToolWhat it answers
mcp_surfaceA server's real tool contract, from a live tools/list handshake, including what each tool can write or reach
mcp_driftWhat a server changed between two versions
mcp_stackDo these servers collide in one agent's tool namespace?

About lurq

ToolWhat it answers
capabilitiesWhich lurq tool answers this situation
report_outcomeWhat happened after a pick shipped, which feeds future rankings

Inputs, outputs and verdict definitions for each: MCP tools reference.


CLI

The same index, scriptable. Every read command takes --json.

bash
# Before installinglurq verify jsonwebtokenlurq evaluate zodlurq compare date-fns dayjs moment
# Stacks and projectslurq compat next react react-domlurq audit .                               # every dependency and MCP server in the project
# APIs and upgradeslurq usage zod --known 3.22.4              # what changed since the version you knowlurq upgrade-plan .                        # what's behind, and what each upgrade removeslurq check-upgrade . --plan lurq-plan.json --exit-code
# Publishing your own packagelurq check-release                         # is the version you're about to publish honest?lurq check-api --against origin/main       # does this break your API's callers?
# MCP serverslurq mcp-scan                              # read the servers you have configured, record what changed
# Team policylurq policy pull policy.json               # keep the selection policy in a reviewed filelurq policy push policy.json               # and apply it from CI (needs a policy:write key)
# Finding your waylurq can "will this upgrade break my code" # which capability answers this?

Full reference: CLI docs.


Autopilot

lurq keeps a repository's dependencies current, and names the code an upgrade breaks before it merges.

The check reads the symbol-level API diff between versions and matches it against what your code actually references. It needs no tests.

blocking   a referenced symbol or deep import disappears,           or require() of a now-ESM package breaks         → the code will throwwarning    a call's argument count no longer fits, a new type           error, or a Node / peer version the repo lacks   → it may misbehave or not buildok         nothing referenced is affectedunverified could not be established                         → never counted as safe
StepRuns onNeeds
1. lurq upgrade-plan: drift, plus what each upgrade removesyour runnerlurq key
2. lurq check-upgrade: matched against your source, with file:lineyour runnernothing
3. lurq fix: applies what the package itself proves — renames, and the range bump in every manifestyour runnernothing
4. claude-code-action: migrates what a rule cannot, and runs your testsyour runnerAnthropic credential
5. create-pull-request: one branch, one PRyour runnerGITHUB_TOKEN
6. Outcomes post back: names and counts, never sourcelurqnothing

Three modes, and editing is opt-in. The workflow starts in comment: it plans, checks, writes the brief to the run summary, and changes nothing. fix opens a pull request containing only what the package itself proves — renamed call sites, and the range bump in every manifest — so it needs no Anthropic credential, and it is what a newly armed repo gets. pr is fix plus the agent, for the changes a rule cannot make. Step 4 above is the only one that needs a model, so only pr does.

The dashboard setting governs repos that already installed the workflow: each run reads the mode from the plan response rather than from the committed file.

Cadence follows scope — weekly for the scopes that track breakage, since majors arrive slowly enough that a daily run mostly reports nothing new; daily for a repo set to advisories-only, because weekly can mean seven days sitting on a known CVE.

Trust model. lurq's GitHub App holds Contents: read-only and Actions: write. It can read your manifests and start the workflow you committed — it cannot write a byte to your repository, change this file, or set a repository variable. Every write is made by the workflow itself using your own ephemeral GITHUB_TOKEN, bounded by the permissions: block in the file you control. The agent's allowlist is Read,Edit,Write,Bash(<pkg-manager>:*), so it edits files but never touches version control. Removing it is git rm .github/workflows/lurq-upgrade.yml.


What leaves your machine

Package names and versions, never your source code. audit receives the inventory your agent reads locally, check-upgrade matches symbols against your code on your own runner, and outcomes report names and counts only.

lurq mcp-scan is the one exception worth knowing: by default it records what your MCP servers expose (tool names, descriptions and parameters, with secrets redacted) to your account, so it can tell you what changed. --no-upload keeps the scan on your machine.


Where the evidence comes from

Readable: npm, GitHub, deps.dev and OSV, re-synced daily. Downloads, release cadence, maintenance, advisories, deprecations, license and bundle cost.

Executed: an isolated sandbox installs and imports package versions and records the results in a compatibility matrix. compat reads those edges alongside declared peer and engine ranges, which is why lurq can say whether a whole stack holds together.

Ranking is deterministic and public. No model sits in the scoring path:

health    = maintenance 0.35 · adoption 0.30 · reliability 0.25 · efficiency 0.10quality   = types · tests · docs · changelog · dep count · license · provenancecomposite = blend at a single tunable λ (default 0.35)

Every weight lives in src/scoring/weights.ts and prints with lurq weights.


Plans

PlanPriceHosted calls
Free$01,000 a month
Pro$15/mo10,000 a month
Team$25/seat/mo, 3-seat minimum15,000 per seat, pooled
Businessfrom $1,000/moUncapped, with SSO and audit export

Past the limit, calls slow to 20 a day rather than stopping. The CLI run against your own database is never metered. Details: pricing.


Uninstall, reinstall, and where setup writes

Setup is safe to re-run: npx lurqrun again overwrites the previous entries.

bash
lurq uninstall                  # MCP entries, agent instructions, the stored keylurq uninstall --agent cursor   # just one agentnpm uninstall -g lurqrun        # then remove the `lurq` command

It lists what it will remove and asks first (--yes skips the question).

AgentMCP configInstructions
Claude Code~/.claude.json~/.claude/skills/lurq/SKILL.md
Cursor~/.cursor/mcp.jsonnone (tool descriptions carry the guidance)
Windsurf~/.codeium/windsurf/mcp_config.json~/.codeium/windsurf/memories/global_rules.md
VS Code / Copilot<VS Code user dir>/mcp.jsonnone
Codex~/.codex/config.toml~/.codex/AGENTS.md
Gemini CLI~/.gemini/settings.json~/.gemini/GEMINI.md
Antigravity~/.gemini/config/mcp_config.json~/.gemini/GEMINI.md
Kiro~/.kiro/settings/mcp.json~/.kiro/steering/lurq.md

lurq logout only clears the CLI's stored key. A copy stays in each MCP entry until lurq uninstall removes it, and the key keeps working until you revoke it in the dashboard.

Self-hosting

lurq runs against your own Postgres too: lurq serve (stdio MCP) or lurq serve-http (a rate-limited HTTP service), with DATABASE_URL set. The published CLI installs only what hosted use needs; the first self-hosting command prints the exact npm install line for the server packages. Guide: self-hosting.


Contact

Inquiries, partnerships or proposals: [email protected]

License

MIT

來源:README.md,提交 c70dd73

工具

16

evaluate

Evaluate a package

Full evidence read for one npm package: health and quality scores and the signals behind them, advisories, the shared safety verdict, a summary and a usage guide. Use it when a choice needs more than verify's install gate. Enforces the account's dependency policy. A package lurq has never tracked is fetched and scored on demand, waiting up to ~4 seconds; if scoring takes longer the result is `tracked: false` with a note to retry in a few seconds, which is not an answer about the package.

輸入參數package必填

policy

Read the dependency policy

The rules this account's selection policy enforces on which packages you may add: denied packages (with the reason), license allowlist, confidence, advisory, adoption, staleness and bundle-size floors. Read it once before choosing dependencies so you pick an allowed package first; evaluate already enforces it. Read-only.

無需輸入參數。

compare

Compare packages

Side-by-side comparison of 2–5 npm packages you are choosing between, ranked by health score. Untracked names are fetched on demand; one still being scored comes back under `pending` (retry shortly), and a name not on npm under `notFound`.

輸入參數packages必填

compat

Check package compatibility

Check whether a set of packages forms a coherent stack. Resolves the whole set the way npm would and returns a definitive verdict: compatible, conflict (with the exact clashing constraints), or unknown. Checks peer-dependency and engine ranges from declared metadata, plus any recorded sandbox conflicts. Read-only: never installs or executes package code. Not always instant: a set checked before answers immediately, but a new set is resolved live from registry metadata, which can take up to ~25 seconds. Call once with the whole stack before committing to it.

輸入參數nodepackages必填versions

verify

Verify a package

Confirm an npm package is real, healthy, and not risky before installing: guards against hallucinated or typosquatted names, deprecations and known advisories, and returns a safety verdict with its reasons and what was not checked. Checks the live registry. The cheap gate to call before every install; use evaluate when you need the full scores.

輸入參數package必填

usage

Version-exact API surface + drift

A package version's TYPED API: exported symbols and their signatures from its shipped .d.ts (or DefinitelyTyped), exact to the version, none of it in the model's training data. Use before writing code against a package whose API may have moved. For whether a name exists at RUNTIME (what decides if an import throws) use resolve_surface; for is-it-safe-to-install use verify. Pass knownVersion (e.g. the version you were trained on) to get the precise delta: added, removed, renamed, changed. Also returns the version's declared engines (Node/runtime floor). Large surfaces are paged, 80 symbols per call: `totalSymbols` is the size, `query` filters by name, `offset` pages. `shallow: true` means the API lives on an interface's members that are not listed, and the note says where to read them. For framework file/convention changes (not exported symbols), consult the official migration guide / Context7 instead.

輸入參數queryoffsetpackage必填versionknownVersion

diagram

Reference architecture diagram

Emit a reference-architecture Mermaid diagram for a stack you have already chosen (package names). A labeled starting point keyed by layer, not a validated architecture, and not an architecture designer.

輸入參數stack

resolve_surface

Version-exact runtime surface

What a package version ACTUALLY exports at runtime, extracted from its shipped JavaScript rather than from documentation or the model's memory: names and arity, not type signatures (use usage for those). Call before writing code against a package whose API may have moved. Runtime existence is what decides whether an import throws; a removed type breaks tsc, a removed runtime symbol breaks the program. A miss returns UNKNOWN and queues extraction, UNKNOWN never means the symbol is absent.

輸入參數package必填version

diff_surface

Surface diff between two versions

What changed in a package's runtime surface between two versions: symbols removed, added, and arity changes, plus renames the package itself proves (a removed name that shared one declaration with a name the new version still exports). Removals break `node`; type-only removals are returned separately because they break `tsc` instead. Answers "when did this stop working" from static comparison, with no install required. Use before an upgrade, and to explain a break after one.

輸入參數package必填toVersion必填fromVersion必填

mcp_stack

Do these MCP servers coexist?

Check whether a set of MCP servers can be wired into one agent together. The npm question does not apply — servers are separate processes with nothing to resolve between them. They clash in the single flat TOOL NAMESPACE the agent assembles from all of them: two servers exposing the same tool name leave the agent unable to express which it means, and nothing errors, one simply shadows the other. Also reports the standing context cost, since every tool's schema rides in every request. Pass `tools` for a server when you already hold its tool list (any server: remote, PyPI, Docker, private) and it is analysed as-is; otherwise the npm server's probed surface is used, and one that has not been probed makes the answer UNKNOWN, never clean.

輸入參數servers必填

mcp_surface

An MCP server's tool contract

What an MCP server ACTUALLY exposes: every tool, its required and optional parameters, and its behaviour annotations, read from a live `tools/list` handshake in a sandbox rather than from a README or the model's memory. Call before wiring an agent to a server, or when a tool call is failing for reasons the error does not explain. Also returns `requires` — the API keys and settings the server declares it needs — and `configRequest`, a ready-made line to put in front of your user when something is missing, so 'it needs a token' never presents as 'it is broken'. A miss returns UNKNOWN and queues a probe; UNKNOWN never means the server has no tools.

輸入參數server必填version

mcp_drift

MCP tool-contract drift between two versions

What moved in an MCP server's tool contract between two versions: tools removed, parameters that became required, types narrowed, and annotation flips. Two findings here have no npm equivalent and are why this exists. SILENT DRIFT is a schema that changed while its description stayed byte-identical, invisible to anyone reading a changelog. PRIVILEGE WIDENING is a tool that stopped being read-only or started being destructive, which does not break anything and is worse than a break. Use before upgrading a server an agent depends on.

輸入參數server必填toVersion必填fromVersion必填

connect_check

Will this MCP server work in my client?

Before wiring an MCP server into a client, find out whether it will work there and exactly what it takes. Accepts an endpoint URL, an official-registry server name, or an npm package name. Answers per client (Claude Code, Claude.ai, ChatGPT, Cursor, VS Code, Codex, Gemini CLI and more): WORKS; NEEDS_SETUP with the steps (a key to send as a header, an OAuth client to pre-register and the redirect URIs to allow, a URL placeholder to fill); BLOCKED with the reason and which side causes it; or UNKNOWN when a decisive fact is not established. Built from a credential-free probe of the endpoint (whether it answers, how it authenticates, which OAuth registration methods it offers, spec deviations strict clients refuse, tool names and schemas) and from primary-sourced client constraints. Returns ready-to-paste config in each client's own format, with placeholder values. Tell the user what it found, including which client it was checked for. UNKNOWN never means it will not work.

輸入參數clientserver必填

audit

Audit a whole project

Assess an entire project's dependencies in ONE call: which packages are outdated, deprecated or carry advisories for the exact installed version, and which configured MCP servers have drifted, need credentials, or cannot be observed at all. Send the inventory you read locally (names and versions only — never source). Returns a per-item verdict plus an explicit coverage count: how many were answered, how many are queued because the index has not seen them, and how many were skipped and why. An item lurq could not assess is reported as unassessed, never as clean.

輸入參數packagesmcpServers

capabilities

What lurq can do

Look up which lurq tool answers a situation, and what to run next. Call when you're unsure whether lurq covers something (an upgrade, a licence rule, a version's exact exports, publishing a package) instead of guessing or skipping it. Returns matching capabilities with the tool or command to use.

輸入參數query

report_outcome

Report how a package worked out

Opt-in feedback after you act on lurq's evidence about a package (verify, evaluate, compare, compat): whether you went with it and whether it built. No source code, only the coarse decision + a build signal. Helps lurq learn which packages agents actually succeed with; safe to skip.

輸入參數needpackage必填accepted必填buildSignal

版本歷史

1
  1. v0.1.7最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

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

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