Mcp Ashby

io.github.smeet666由 GitHub 账号 smeet666 发布v2.1.0更新于 Nov 3, 2026

Search public Ashby job boards: resolve a company, read its openings and the pay it publishes.

概览

AI 生成的概览

搜索 Ashby 公开招聘看板:把公司名解析为看板标识,筛选职位、读取职位详情并对比已公布的薪酬。

可以做什么
  • 把公司名解析为 Ashby 看板标识,并列出尝试过的写法
  • 在最多十家指定公司的职位中按部门、团队、地点、国家、雇佣类型、远程、发布时间或薪酬筛选
  • 完整读取单个职位,包括职位描述和公司公布的薪酬组成
  • 列出某个看板实际使用的部门、团队、地点等词条及对应职位数量
  • 将多个职位的某一项薪酬组成并排对比,不做换算
适用场景
适合调研通过 Ashby 发布招聘看板的特定公司的招聘情况,例如确认某公司是否在招人、查找远程或特定部门的职位,或对比公开的薪资区间。它不是通用职位搜索,每个问题都必须从公司名开始。
运行要求
以本地进程运行:可通过 npx 安装 npm 包(需 Node 24 或更高版本)、使用 Docker 镜像,或安装 MCP 打包文件。无需 API 密钥、账号或环境变量。需要能访问 api.ashbyhq.com 的出站 HTTPS 连接。
安装前请注意
只读:仅搜索和读取公开看板,不会投递职位或修改任何数据。请求只发往 api.ashbyhq.com,结果保存在内存中。薪酬按公司公布的原样返回,不做货币换算或年化,未公布的区间为 null 而非零。该项目为非官方项目,与 Ashby 及其看板所属公司无关联。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Mcp Ashby,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[图片]

mcp-ashby

[npm] [CI] [license] [MCP Registry] [Glama] [M8ven] [LobeHub] [Install in Cursor] [Install in VS Code]

Ashby is recruiting software, and every company using it gets a public job board that comes with it. Each board carries that company's open positions with their title, their department and team, the employment type, the locations and whether the work is remote, the full advert, and, where the company chose to publish it, the pay: a salary range, an equity share, a commission or a bonus, each with the period it is quoted over. Ashby holds one board per company and publishes no index across them.

This server connects a chat client to those boards. You name the companies you are interested in, and it turns each name into the token that addresses its board, searches their postings, filters them by department, team, location, country, employment type, remoteness, recency or pay, reads one posting in full, lists the words each board actually uses, and puts the pay of several postings side by side. It needs no API key and no account.

Version française


Install

One-click install

[Install in Cursor] [Install in VS Code]

Claude Code

bash
claude mcp add ashby -- npx -y mcp-ashby

Claude Desktop, Cursor, and any client using the standard config format

json
{  "mcpServers": {    "ashby": {      "command": "npx",      "args": ["-y", "mcp-ashby"]    }  }}

Node 24 or later is required, and no environment variable has to be set.

With Docker

json
{  "mcpServers": {    "ashby": {      "command": "docker",      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-ashby:2.1.0"]    }  }}

-i keeps stdin open, which is where the protocol travels, and -t is left out because a TTY rewrites the stream. The container needs outbound HTTPS to api.ashbyhq.com, and nothing else: no volume, no port, no credential.

Bundle, without npm

Download mcp-ashby-2.1.0.mcpb from the latest release and open it. A client that supports MCP bundles installs it on its own, with no npm and no configuration file to edit. The bundle carries its dependencies, so nothing is fetched at install time.

What you can ask

  • "Is Ramp hiring on Ashby?"
  • "Find me remote design roles at Ramp and Linear."
  • "Read me that posting in full."
  • "What departments does that board file its jobs under?"
  • "Put the salaries of those engineering postings side by side."

Every question starts from a company, since Ashby offers no search across boards. search_jobs resolves the names you give it, so no preparation is needed:

resolve_board(["Ramp"])          ->  ramp, publishingsearch_jobs(["Ramp"], query: "designer", is_remote: true)get_job("ramp", "b0c8…")

Tools

ToolWhat it does
resolve_boardTurns a company name into the Ashby board token.
search_jobsSearches the postings of the companies you name.
get_jobReads one posting in full, advert included.
list_filter_valuesLists the words one board uses, with how many postings carry each.
compare_compensationPuts one pay component of several postings side by side.

Every board keeps its own departments and teams, so a filter written from another board's vocabulary narrows to nothing. list_filter_values publishes the words a board actually uses.

resolve_board

Turns a company name into the token that addresses its Ashby board.

ArgumentTypeRequiredWhat it does
namestringyesA company name, or an Ashby board token you already know.

In return: found, the boards that answered, and tried, the forms actually sent in order. Four forms are tried per name, so nothing found is never proof that a company is absent from Ashby.

search_jobs

Searches the postings of the companies named. Ashby serves a whole board at once, and every restriction below is applied to what was read.

ArgumentTypeRequiredWhat it does
companiesarray of 1 to 10 stringsyesCompany names or board tokens.
querystringnoWords to look for.
search_intitle or title_and_description, default titlenoWhere query is looked for.
departmentone string or a list of up to 10noDepartments as the board spells them.
teamone string or a list of up to 10noTeams as the board spells them.
employment_typeone string or a list of up to 6noEmployment types.
workplace_typeone string or a list of up to 4noWorkplace types.
is_remotebooleannoKeep the postings marked remote.
countryone country or a list of up to 10noCountries as the board spells them.
location_containsstringnoPart of a location line.
published_afteran ISO 8601 datenoHow recent a posting has to be.
has_compensationbooleannoKeep the postings whose company publishes a pay range.
salary_minnumber, 0 or morenoA floor for the salary component.
currencythree-letter codenoThe currency the floor is written in.
salary_intervalstring, default 1 YEARnoThe period the floor belongs to.
sortpublished_desc, published_asc or title, default published_descnoHow the rows are ordered.
limitinteger, 1 to 100, default 20noPostings to serve.
offsetinteger, 0 to 10000, default 0noPostings to skip.

In return: jobs, each carrying board and id, which get_job takes together, plus title, department, team, employment_type, location, country, secondary_location_count, workplace_type, is_remote, published_at with the offset Ashby publishes, compensation_summary, job_url and apply_url. The rows carry no advert text, at any limit. total_on_board counts the postings the boards read hold, total_matched those the criteria kept, and returned those in this answer: three different numbers. per_company gives one outcome per company with its status, filters_applied echoes what was applied, and undeclared counts the postings that declare nothing on a field being filtered, so a restriction never silently swallows them.

get_job

Reads one posting in full.

ArgumentTypeRequiredWhat it does
boardstringyesA company name, or an Ashby board token.
job_idstringyesThe identifier a search row carries.
descriptionplain, html or none, default plainnoHow to serve the advert.
include_compensationboolean, default truenoCarry the pay the company published.

The advert runs to thousands of characters, and html is the company's own markup, unrewritten.

In return: the posting a search row carries, with its description, its locations and the pay components the company published.

list_filter_values

Lists the words one board actually uses, with how many postings carry each.

ArgumentTypeRequiredWhat it does
boardstringyesA company name, or a board token.
facetdepartments, teams, locations, countries, employment_types, workplace_types or all, default allnoWhich vocabulary to read.

In return: facets, each value with the number of postings carrying it, and undeclared, the postings declaring nothing on that facet. sibling_spellings names the wordings that differ only in case or spacing, which a filter would otherwise treat as two different things.

compare_compensation

Puts one pay component of several postings side by side.

ArgumentTypeRequiredWhat it does
boardstringyesA company name, or a board token.
job_idsarray of up to 50 stringsnoThe postings to compare.
departmentone string or a list of up to 10noCompare a department instead.
teamone string or a list of up to 10noCompare a team instead.
querystringnoWords to look for in the titles.
componentSalary, EquityCashValue, EquityPercentage, Commission or Bonus, default SalarynoWhich component to compare.
intervalstring, default 1 YEARnoThe period compared.
limitinteger, 1 to 100, default 25noPostings to compare.

One component at a time: a share of capital and a salary do not add up. Postings quoted over another period are listed apart, unconverted.

In return: rows, one per posting, with the component and the interval they were compared on, currencies_present naming every currency in the answer, and not_published listing the postings whose company published nothing, which is never the same as zero.

What a pay figure means

A company publishes what it chooses. A posting without a range comes back with none, never with a zero. A range is reported in the currency and over the period Ashby carries it in, and it is never converted or annualised: comparing two postings quoted over different periods is left to whoever knows what the comparison is for.

Configuration

Nothing has to be configured. The server reads no environment variable, and the mcpServers block above is complete as written.

The pacing, the timeout and the cache are settings of the client layer, which As a library shows how to pass. The interval between two requests can be widened there and never narrowed.

Errors

Every failure carries one of six codes, a message, and where it helps the values that would have been accepted.

CodeWhat happenedWhat to do
not_foundAshby answered, and holds no such board or posting.Check the token with resolve_board.
invalid_inputThe arguments were refused before any request went out.Read the message, which names the argument and what it takes.
rate_limitedAshby asked this client to slow down.Wait, then call again with the same arguments. The posting is still on the board.
parse_failureAshby answered in a shape this client cannot read.Report it at the issue tracker.
network_errorThe request did not complete.Try again shortly.
timeoutThe request passed its deadline.Ask for fewer companies, or a smaller limit.

As a library

The layer reading Ashby is published on its own, with its pacing, its cache and its errors, and with no protocol attached.

ts
import { Client } from "mcp-ashby/client";
const client = new Client({ minIntervalMs: 2000 });const resolved = await client.resolveBoard("Ramp");console.log(resolved.found);

ClientOptions takes minIntervalMs, timeoutMs, cacheTtlMs and fetchImpl. An interval below the published floor is ignored, so the floor holds here as well.

Pacing and attribution

Requests go out one at a time with at least a second between them, and that floor holds however the client is configured. Ashby serves a whole board in one response, which can weigh megabytes, so a single question about one company costs one request and this server holds the answer briefly rather than asking again. The User-Agent carries the project and an address where a person can be reached, and imitates no browser.

Every posting carries the address of its Ashby page and its apply URL. Credit the company and link that page when you show a posting.

This MCP server is an unofficial project, with no affiliation to Ashby or to the companies whose boards it reads.

Privacy

This server collects nothing about you and sends nothing to its author. It runs on your machine, contacts api.ashbyhq.com and nothing else, holds its answers in memory while it runs, and writes nothing to disk. PRIVACY.md states what a request carries and which settings change any of it.

Development

bash
npm installnpm run build:fixturesnpm testnpm run check

Tests run against generated fixtures and make no network request. The live suite, npm run test:live, makes one request per route and runs nightly against the service itself.

Contributing

Bugs, questions and ideas belong in the issue tracker. Pull requests are welcome; opening an issue first helps agree on the shape of the change. See CONTRIBUTING.md.

License

MIT, see LICENSE. The postings belong to the companies that published them.


mcp-ashby (français)

English version

Ashby est un logiciel de recrutement, et chaque entreprise qui l'utilise reçoit avec lui un site d'offres public. Chaque site porte les postes ouverts de cette entreprise avec leur intitulé, leur département et leur équipe, le type de contrat, les lieux et le caractère distant du travail, l'annonce complète, et, quand l'entreprise a choisi de le publier, la rémunération : une fourchette de salaire, une part de capital, une commission ou une prime, chacune avec la période sur laquelle elle est exprimée. Ashby héberge un site par entreprise et ne publie aucun index les traversant.

Ce serveur relie un client de conversation à ces sites. Vous nommez les entreprises qui vous intéressent, et il traduit chaque nom en le jeton qui adresse son site, cherche dans leurs offres, les filtre par département, équipe, lieu, pays, type de contrat, télétravail, fraîcheur ou rémunération, lit une offre en entier, liste les mots que chaque site emploie réellement, et met les rémunérations de plusieurs offres côte à côte. Aucune clé d'API, aucun compte.

Installation

Installation en un clic

[Install in Cursor] [Install in VS Code]

Claude Code

bash
claude mcp add ashby -- npx -y mcp-ashby

Claude Desktop, Cursor, et tout client au format de configuration standard

json
{  "mcpServers": {    "ashby": {      "command": "npx",      "args": ["-y", "mcp-ashby"]    }  }}

Node 24 ou plus récent est nécessaire, et aucune variable d'environnement n'est à renseigner.

Avec Docker

json
{  "mcpServers": {    "ashby": {      "command": "docker",      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-ashby:2.1.0"]    }  }}

-i garde l'entrée standard ouverte, qui est le canal du protocole, et -t est omis parce qu'un TTY réécrit le flux. Le conteneur a besoin d'un accès HTTPS sortant vers api.ashbyhq.com, et de rien d'autre : aucun volume, aucun port, aucun identifiant.

Bundle, sans npm

Téléchargez mcp-ashby-2.1.0.mcpb depuis la dernière publication et ouvrez-le. Un client qui gère les bundles MCP l'installe seul, sans npm et sans fichier de configuration à modifier. Le bundle emporte ses dépendances, donc rien n'est téléchargé à l'installation.

Ce qu'on peut demander

  • « Est-ce que Ramp recrute sur Ashby ? »
  • « Trouve-moi des postes de design en télétravail chez Ramp et Linear. »
  • « Lis-moi cette offre en entier. »
  • « Sous quels départements ce site classe-t-il ses offres ? »
  • « Mets côte à côte les salaires de ces offres d'ingénierie. »

Chaque question part d'une entreprise, puisque Ashby n'offre aucune recherche traversant les sites. search_jobs résout lui-même les noms qu'on lui donne, donc rien n'est à préparer :

resolve_board(["Ramp"])          ->  ramp, publiesearch_jobs(["Ramp"], query: "designer", is_remote: true)get_job("ramp", "b0c8…")

Les outils

OutilCe qu'il fait
resolve_boardTraduit un nom d'entreprise en jeton de site Ashby.
search_jobsCherche dans les offres des entreprises nommées.
get_jobLit une offre en entier, annonce comprise.
list_filter_valuesListe les mots qu'un site emploie, et combien d'offres les portent.
compare_compensationMet une composante de rémunération de plusieurs offres côte à côte.

Chaque site garde ses propres départements et équipes, donc un filtre écrit dans le vocabulaire d'un autre site ne retient rien. list_filter_values publie les mots qu'un site emploie réellement.

resolve_board

Traduit un nom d'entreprise en le jeton qui adresse son site Ashby.

ArgumentTypeRequisCe qu'il fait
namechaîneouiUn nom d'entreprise, ou un jeton Ashby déjà connu.

En retour : found, les sites qui ont répondu, et tried, les formes réellement envoyées dans l'ordre. Quatre formes sont essayées par nom, donc ne rien trouver ne prouve jamais qu'une entreprise est absente d'Ashby.

search_jobs

Cherche dans les offres des entreprises nommées. Ashby sert un site entier d'un coup, et chaque restriction ci-dessous s'applique à ce qui a été lu.

ArgumentTypeRequisCe qu'il fait
companiestableau de 1 à 10 chaînesouiNoms d'entreprises ou jetons.
querychaînenonLes mots à chercher.
search_intitle ou title_and_description, défaut titlenonOù query est cherché.
departmentune chaîne ou une liste jusqu'à 10nonDépartements comme le site les écrit.
teamune chaîne ou une liste jusqu'à 10nonÉquipes comme le site les écrit.
employment_typeune chaîne ou une liste jusqu'à 6nonTypes de contrat.
workplace_typeune chaîne ou une liste jusqu'à 4nonModes de travail.
is_remotebooléennonNe garder que les offres en télétravail.
countryun pays ou une liste jusqu'à 10nonPays comme le site les écrit.
location_containschaînenonUne partie d'une ligne de lieu.
published_afterune date ISO 8601nonL'ancienneté maximale d'une offre.
has_compensationbooléennonNe garder que les offres dont l'entreprise publie une fourchette.
salary_minnombre, 0 ou plusnonUn plancher pour la composante salaire.
currencycode à trois lettresnonLa devise du plancher.
salary_intervalchaîne, défaut 1 YEARnonLa période à laquelle le plancher se rapporte.
sortpublished_desc, published_asc ou title, défaut published_descnonL'ordre des lignes.
limitentier, 1 à 100, défaut 20nonOffres à servir.
offsetentier, 0 à 10000, défaut 0nonOffres à enjamber.

En retour : jobs, chacune portant board et id, que get_job reprend ensemble, plus title, department, team, employment_type, location, country, secondary_location_count, workplace_type, is_remote, published_at avec le décalage horaire qu'Ashby publie, compensation_summary, job_url et apply_url. Les lignes ne portent pas l'annonce, quelle que soit la limite. total_on_board compte les offres que contiennent les sites lus, total_matched celles que les critères ont retenues, et returned celles de cette réponse : trois nombres différents. per_company donne une issue par entreprise avec son status, filters_applied redonne ce qui a été appliqué, et undeclared compte les offres qui ne déclarent rien sur un champ filtré, pour qu'une restriction ne les avale jamais en silence.

get_job

Lit une offre en entier.

ArgumentTypeRequisCe qu'il fait
boardchaîneouiUn nom d'entreprise, ou un jeton Ashby.
job_idchaîneouiL'identifiant que porte une ligne.
descriptionplain, html ou none, défaut plainnonComment servir l'annonce.
include_compensationbooléen, défaut truenonPorter la rémunération publiée.

L'annonce fait des milliers de caractères, et html est le balisage de l'entreprise, non réécrit.

En retour : l'offre que porte une ligne de recherche, avec sa description, ses lieux et les composantes de rémunération que l'entreprise a publiées.

list_filter_values

Liste les mots qu'un site emploie réellement, et combien d'offres portent chacun.

ArgumentTypeRequisCe qu'il fait
boardchaîneouiUn nom d'entreprise, ou un jeton.
facetdepartments, teams, locations, countries, employment_types, workplace_types ou all, défaut allnonLe vocabulaire à lire.

En retour : facets, chaque valeur avec le nombre d'offres qui la portent, et undeclared, les offres qui ne déclarent rien sur cette facette. sibling_spellings nomme les formulations qui ne diffèrent que par la casse ou les espaces, qu'un filtre traiterait sinon comme deux choses distinctes.

compare_compensation

Met une composante de rémunération de plusieurs offres côte à côte.

ArgumentTypeRequisCe qu'il fait
boardchaîneouiUn nom d'entreprise, ou un jeton.
job_idstableau jusqu'à 50 chaînesnonLes offres à comparer.
departmentune chaîne ou une liste jusqu'à 10nonComparer un département.
teamune chaîne ou une liste jusqu'à 10nonComparer une équipe.
querychaînenonLes mots à chercher dans les intitulés.
componentSalary, EquityCashValue, EquityPercentage, Commission ou Bonus, défaut SalarynonLa composante comparée.
intervalchaîne, défaut 1 YEARnonLa période comparée.
limitentier, 1 à 100, défaut 25nonOffres à comparer.

Une composante à la fois : une part de capital et un salaire ne s'additionnent pas. Les offres exprimées sur une autre période sont listées à part, sans conversion.

En retour : rows, une par offre, avec le component et l'interval sur lesquels elles ont été comparées, currencies_present qui nomme chaque devise présente dans la réponse, et not_published qui liste les offres dont l'entreprise n'a rien publié, ce qui ne vaut jamais zéro.

Ce que dit un chiffre de rémunération

Une entreprise publie ce qu'elle veut. Une offre sans fourchette revient sans rien, jamais avec un zéro. Une fourchette est rendue dans la devise et sur la période où Ashby la porte, et elle n'est jamais convertie ni annualisée : comparer deux offres exprimées sur des périodes différentes est laissé à qui sait à quoi la comparaison doit servir.

Configuration

Il n'y a rien à configurer. Le serveur ne lit aucune variable d'environnement, et le bloc mcpServers ci-dessus est complet tel quel.

Le rythme, le délai et le cache sont des réglages de la couche cliente, que Comme bibliothèque montre comment passer. L'écart entre deux requêtes peut y être élargi et jamais resserré.

Erreurs

Chaque échec porte un des six codes, un message, et quand cela aide les valeurs qui auraient été acceptées.

CodeCe qui s'est passéQue faire
not_foundAshby a répondu, et n'a ni ce site ni cette offre.Vérifiez le jeton avec resolve_board.
invalid_inputLes arguments ont été refusés avant toute requête.Lisez le message, qui nomme l'argument et ce qu'il prend.
rate_limitedAshby demande à ce client de ralentir.Attendez, puis rappelez avec les mêmes arguments. L'offre est toujours en ligne.
parse_failureAshby a répondu dans une forme que ce client ne lit pas.Signalez-le sur le suivi d'incidents.
network_errorLa requête n'a pas abouti.Réessayez sous peu.
timeoutLa requête a dépassé son délai.Demandez moins d'entreprises, ou un limit plus petit.

Comme bibliothèque

La couche qui lit Ashby est publiée seule, avec son rythme, son cache et ses erreurs, sans protocole attaché.

ts
import { Client } from "mcp-ashby/client";
const client = new Client({ minIntervalMs: 2000 });const resolved = await client.resolveBoard("Ramp");console.log(resolved.found);

ClientOptions prend minIntervalMs, timeoutMs, cacheTtlMs et fetchImpl. Un écart sous le plancher publié est ignoré, donc le plancher tient également ici.

Rythme et attribution

Les requêtes partent une à une avec au moins une seconde entre elles, et ce plancher tient quelle que soit la configuration du client. Ashby sert un site entier en une réponse, qui peut peser plusieurs mégaoctets, donc une question sur une entreprise coûte une requête et ce serveur garde brièvement la réponse plutôt que de redemander. Le User-Agent porte le projet et une adresse où joindre une personne, et n'imite aucun navigateur.

Chaque offre porte l'adresse de sa page Ashby et son adresse de candidature. Créditez l'entreprise et renvoyez vers cette page quand vous montrez une offre.

Ce MCP est un projet non officiel, sans affiliation à Ashby ni aux entreprises dont il lit les sites.

Confidentialité

Ce serveur ne collecte rien sur vous et n'envoie rien à son auteur. Il tourne sur votre machine, ne joint que api.ashbyhq.com, garde ses réponses en mémoire le temps qu'il tourne, et n'écrit rien sur le disque. PRIVACY.md dit ce qu'une requête emporte et quels réglages changent cela.

Développement

bash
npm installnpm run build:fixturesnpm testnpm run check

Les tests s'exécutent sur des fixtures engendrées et n'émettent aucune requête. La suite en direct, npm run test:live, émet une requête par route et tourne chaque nuit contre le service lui-même.

Contribuer

Les anomalies, les questions et les idées ont leur place dans le suivi d'incidents. Les propositions de modification sont bienvenues ; ouvrir un ticket d'abord aide à s'accorder sur la forme du changement. Voir CONTRIBUTING.md.

Licence

MIT, voir LICENSE. Les offres appartiennent aux entreprises qui les ont publiées.

来源:README.md,提交 3323cb9

工具

5

resolve_board

Resolve company names to Ashby boards

Turn a company name into the token that addresses its Ashby job board, and report every form that answered. search_jobs does this on its own, so call this when a name returns nothing and you want to see the spellings that were tried.

输入参数name必填

search_jobs

Search postings at named companies

Search the open postings of named companies on Ashby. Ashby publishes no index across its customers, so companies are required. Every filter runs here rather than at the source, and the answer reports how many postings declared nothing about a field it filtered on. Rows carry no description: read one posting with get_job.

输入参数sortteamlimitqueryoffsetcountrycurrencycompanies必填is_remotesearch_indepartmentsalary_min另有 6 个

get_job

Read one posting

Read one Ashby posting in full: its locations, its description and the pay ranges its company published. Ashby addresses a posting by board and identifier, both of which search_jobs returns.

输入参数board必填job_id必填descriptioninclude_compensation

list_filter_values

List a board's filter wordings

List the words one Ashby board actually uses, with how many postings carry each, and how many declare nothing. Every board keeps its own departments and teams, so a filter written from another board's vocabulary narrows to nothing.

输入参数board必填facet

compare_compensation

Compare published pay on one board

Put the pay ranges of one Ashby board side by side, one component at a time and one period at a time. Nothing is converted between currencies, summed across components or averaged: a third of the postings publish no range at all, and they are named rather than dropped.

输入参数teamboard必填limitqueryjob_idsintervalcomponentdepartment

版本历史

2
  1. v2.1.0最新Oct 29, 2026
  2. v2.0.1Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分