oriole
Oriole · 黄雀 职位引擎
将开放网络转化为一张可追溯、可审核的职位来源地图——而非一堆不透明的抓取列表。
Oriole 是一个开放式的全国职位来源情报 Agent。它发现公开的招聘发布者,验证其端点,在采集前要求人工审批,按实际工作地点对职位进行归一化,并通过 16 个 MCP 工具将结果暴露给任何 LLM。
它刻意被构建为一个引擎,而非单一网站。你可以从 CLI 运行它,在午夜定时调度,将确定性核心嵌入另一个 Node.js 服务,或连接支持 MCP 的模型而无需将该模型的凭据交给它。
已实现的功能
能力 | 实现 |
全国地理范围 | 确定性的两级中国分类体系:34 个省级区域和 365 个地级/省直辖条目 |
工作地点分类 | 使用职位声明的工作地点,保留多地点职位,支持省/市筛选,并拒绝仅限国外的条目 |
来源发现 | 九个经过审计的种子源、一个有界的 19 雇主观察名单、官方目录、百度搜索 API、Common Crawl URL 索引、全部 365 个二级区域任务,以及用户提交的 URL |
稳定采集 | Lever、Greenhouse、Ashby、有界的字节跳动/飞书招聘公开搜索适配器(带持久偏移轮换)、灵活的公共 JSON、JSON-LD、RSS/Atom、Sitemap XML 和受保护的 HTML |
来源图谱 | 发布者、来源、区域、入口点、端点、发现渠道和职位之间带证据的关系 |
信任工作流 |
|
证据 | 运行记录、HTTP 摘要、内容哈希、压缩的原始响应工件、来源/职位可追溯性,以及机器可读的审计 |
Agent 接口 | 基于 JSON-RPC 2.0 NDJSON stdio 的 16 个双语 MCP 工具;支持现代 |
日常运行 | 幂等的北京日期运行器和 GitHub Actions 定时任务,时间为 |
安全性 | 仅 HTTPS 出站访问、公共地址 DNS 固定、SSRF 防御、重定向和 robots 防护、时间/大小/行数限制、速率限制,以及密钥主机固定 |
Related MCP server: OpenAI-Compatible MCP Gateway
来源模型
发现渠道和职位来源承担不同的职责:
百度 是一个发现雷达。配置后,Oriole 调用百度官方的千帆端点并存储请求级证据。它从不抓取百度结果页面。
Common Crawl 是受控
site:模式的无密钥归档/索引回退方案。它验证公共 URL 曾经存在;它不被视为全文搜索引擎或最终职位来源。公共目录 为权威的国家和地方发布者提供种子数据,包括国家公共就业、高校就业、事业单位、中央国企和政府部门的目录。
雇主网站、官方 ATS 招聘板和政府就业页面 是长期采集目标。一个来源必须通过安全探测和人工审核后,其职位才能进入 Registry。
用户提交 允许另一个 Agent 或操作者提议一个公共 URL,同时保持相同的探测和审核门槛。
采集九个预先批准来源种子或从捆绑的官方目录中发现候选者不需要百度密钥。提供者能力在每个查询任务中是显式的:普通关键词发现仅限百度,因此当百度不可用时,这些任务在 status.discoveryBacklog 和发现运行统计中保持可见的 blocked 状态。Common Crawl 仅适用于受控的 site: 任务;被阻塞的工作永远不会被计为已完成。
公共仓库不附带任何职位记录。npm run init 导入九个经过明确审计的公共来源种子——八个雇主控制的招聘板(包括字节跳动)和一个政府就业来源——因此一个干净的克隆拥有可用的采集目标,而不会发布过时或私有的职位快照。这不是对搜索结果的自动批准:种子清单本身就是一个经过审核的信任决策,所有新发现的来源仍然需要探测和批准。
覆盖率是一份可衡量的差距报告,而非对全国职位完整捕获的声明。在 19 雇主观察名单中,字节跳动是唯一经过审核的引导目标;其他 18 个雇主根节点以未批准的候选者开始,在探测、验证和批准之前无法产生职位。
字节跳动/飞书采集被限制为每次来源调用最多 50 页、5,000 行上游数据和 24 MB。当一次调用无法到达尾部时,已提交的运行会在 source.collection.resume 下存储一个带指纹、经过代次检查的游标;下一个分段刷新一个头部页面,然后以一个有意的重叠页面继续尾部。职位写入和游标推进共享一个原子 Registry 事务。在任一变更之前,Registry 对采集器读取的来源修订版和保存的游标代次执行比较并交换(compare-and-swap);任一冲突都不会写入职位或游标。预览、失败或冲突永远不会推进保存的位置。恢复的尾部段即使在关闭一个轮换周期时仍保持 pagination.complete: false,因为变化的偏移量源不是跨运行快照,不能证明缺失职位的闭合。请分别检查采集运行和 Registry 证据:npm run coverage 衡量来源/渠道/区域状态,不读取分页或恢复进度。
参见 docs/SOURCES.md 了解确切的提供者边界和种子目录。
快速开始
要求:Node.js 22.13+。Oriole 没有运行时依赖,初始化或采集其预先批准来源、从官方目录发现或运行受控的 Common Crawl site: 任务都不需要密钥。
git clone https://github.com/gaofeibilly-maker/oriole-job-engine.git
cd oriole-job-engine
npm test
npm run init
npm run status
npm run coverage
npm run regions -- --province-code 420000init 之后,status 应显示 9 个已批准来源和 0 个捆绑职位。职位只会在真实的已提交采集后出现。
如需对字节跳动当前公开职位进行仅预览、产生证据的检查(无需百度密钥),运行 npm run live-source-check。它验证官方申请 URL 并打印简洁摘要,而非原始响应或职位描述。预览读取适用的窗口,但从不提交职位或推进保存的恢复游标。匹配的 GitHub 工作流可以手动运行,或通过给拉取请求打上 live-source-audit 标签来触发。
无需凭据即可发现捆绑的官方目录:
node scripts/huangque/cli.mjs discover \
--providers official_catalog \
--force
node scripts/huangque/cli.mjs sources
node scripts/huangque/cli.mjs graph发现会创建候选者;它不会静默地将它们变成采集目标。探测一个候选者,检查其证据和当前 Registry 修订版,然后显式批准它:
node scripts/huangque/cli.mjs probe --source <source-id>
node scripts/huangque/cli.mjs review \
--source <source-id> \
--decision approve \
--reviewer <operator-name> \
--reason "Official public recruitment source verified" \
--revision <current-revision> \
--confirm
node scripts/huangque/cli.mjs collect --source <source-id> --commit
node scripts/huangque/cli.mjs jobs --province-code 420000 --city-code 420100默认所有状态均为本地:
.huangque/state.json— 原子可移植 Registry;.huangque/artifacts/— 内容寻址的压缩证据;.huangque/latest-audit.json— 最新的机器可读自审计。
这些路径被 Git 忽略,可以通过环境变量重新定位。
通过 MCP 连接任何 LLM
启动 stdio 服务器:
npm run mcp示例 MCP 客户端配置:
{
"mcpServers": {
"oriole": {
"command": "node",
"args": ["/absolute/path/oriole-job-engine/scripts/huangque/mcp-server.mjs"],
"env": {
"HUANGQUE_REGISTRY_PATH": "/absolute/path/oriole-data/state.json",
"HUANGQUE_ARTIFACT_ROOT": "/absolute/path/oriole-data/artifacts"
}
}
}
}服务器暴露的工具涵盖:流水线运行、运行查找、状态、可衡量的来源覆盖差距、发现、公共来源提交、探测、来源列表、职位列表、区域列表、图谱读取、人工审核、采集、到期工作、审计和可移植投影导出。
huangque.list_regions 报告省级、仅省级和每个二级城市的唯一职位聚合。一个职位在同一省份的两个城市明确提供时,在省级总数中计一次,在每个适用城市中各计一次。
通过 MCP 的来源批准默认禁用。操作者必须有意设置 HUANGQUE_ALLOW_MCP_REVIEW=1;CLI 批准仍然可用,而不会削弱该服务端边界。
可选的百度发现
复制示例配置并在本地或作为 GitHub Actions 密钥设置你的密钥。切勿提交它。
cp .env.example .env
export HUANGQUE_BAIDU_API_KEY="<your-key>"
node scripts/huangque/cli.mjs discover --providers baidu --max-queries 5密钥仅发送到 qianfan.baidubce.com。其他主机上的自定义端点将被拒绝。默认每日预算为 40 个请求,可通过 HUANGQUE_BAIDU_DAILY_BUDGET 降低。
不配置百度不会阻止已批准来源的采集。它只会让基于普通关键词的主动发现任务显式保持阻塞;无密钥的 Common Crawl 继续处理查询计划中的受控 site: 任务。
官方参考:百度千帆 AI 搜索 API。
午夜全国每日更新
捆绑的工作流在 16:00 UTC 运行,即下一个本地日历日的 00:00 Asia/Shanghai:
npm run daily运行器写入一个北京日期的完成标记,因此重试不会重复同一天的运行,除非提供 --force。GitHub 调度可能延迟几分钟启动;本地标记控制业务日期,而非队列时间。参见 docs/SCHEDULING.md。
来源图谱,而非仅仅是列表
每条图谱边都携带证据和观察时间戳。核心关系为:
publisher ← published_by — source — covers_region → region
│
├─ has_entry_point → public page
├─ has_endpoint → collection endpoint
├─ discovered_via → provider/query/run evidence
└─ lists_job → normalized job发布者和区域边遵循最新的权威已批准来源证据:当经过审计的来源身份发生变化时,过时的 published_by 和 covers_region 关系会被剪除,而不会作为误导性的历史事实保留。
这里的"完整图谱"意味着每个已注册来源都以其证据支持的关系表示,且每个关系都是可审计的。它不意味着有限目录已经包含中国的每个雇主或每个空缺职位;Oriole 被设计为持续扩展和重新验证该图谱。
先验证,再信任
npm run verify
npm run audit测试套件覆盖:归一化、全国区域、多地点处理、提供者、有界大源轮换、游标原子性/并发、图谱证据、Registry 保留、MCP 生命周期、SSRF 控制、robots 处理、来源所有权和职位身份。运行时审计单独报告外部提供者和已发布的 GitHub 调度在当前 Registry 中是否具有真实成功的运行证据。Fixtures 和手动每日运行永远不会计为实时提供者或 GitHub Actions 成功。
遵循 docs/VERIFY.md 中的可复现检查清单。
边界
Oriole 处理公开的、无需登录的 Web 来源。它有意排除私有微信群、图像 OCR、电子邮件收件箱、验证码/仅登录页面和其他私有渠道。它不申请职位或做出就业决策。公共 Web 访问不豁免网站的条款、robots 政策、数据库权利、隐私义务或适用法律;部署者仍对来源特定的合规性负责。
项目结构
data/huangque/ verified public seeds, national query plan, and public catalog
scripts/huangque/ CLI, daily runner, MCP server, deterministic core
tests/ Node test suite
docs/ architecture, sources, schedule, verification
.github/workflows/ CI and Beijing-midnight daily update欢迎通过 Apache-2.0 许可贡献内容。请阅读 CONTRIBUTING.md,并通过 SECURITY.md 报告安全问题。
Available Tools
16 toolshuangque.audit运行黄雀自审ARead-onlyIdempotent
运行不变量与外部激活项检查;不会把报告写入任意路径。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states it will not write reports to any path, which is a valuable behavioral disclosure beyond the readOnlyHint and non-destructive annotations. This addresses a common concern about audit tools that might produce output files. Combined with the annotations (readOnly, idempotent, non-destructive), the agent has a clear safety profile. It doesn't describe what the audit returns or whether it can be run concurrently, but that is partially covered by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that communicates the tool's purpose and a key behavioral guarantee. There is no wasted text, and critical information (that no report is written) is front-loaded. Excellent for a zero-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, a clear read-only purpose, and an output schema available, the description covers the essential context. The only gap is that it doesn't explain what the audit report contains or how to interpret the response, but the output schema likely handles that. For a simple, self-contained audit tool, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema has no properties. Since there are no parameters to describe, the baseline is 4 per the rubric. The description adds no parameter semantics because none exist, which is appropriate. The tool's behavior is fully specified by its name and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool runs invariant and external activation checks, which clearly identifies the purpose as an audit operation. It distinguishes from siblings by referencing '自审' (self-audit) rather than source management or pipeline execution, though it doesn't explicitly name an alternative tool for other audit-like operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a standalone audit tool with no parameters, suggesting it should be run to check invariants and external activations. It doesn't explicitly state when to use it versus siblings, but the context of '自审' (self-audit) and the sibling list (which includes pipeline and source management) provides enough distinction. No exclusions or alternatives are named, so it's slightly below a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.collect_jobs采集已批准来源A
仅从 approved 来源采集、标准化、强键去重和更新时效;commit 默认 false,预览不写岗位库。
| Name | Required | Description | Default |
|---|---|---|---|
| commit | No | ||
| source_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, but the description clarifies that commit=false means a preview that does not write to the job repository. This adds behavioral transparency beyond annotations by explaining the default behavior and the write path. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that packs key information: scope, operations, default commit behavior, and effect. No wasted words, front-loaded with the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters, no required fields, and an output schema exists, the description is moderately complete. It explains the default non-write behavior but omits details like how source_id filters or what the output represents. With no annotations on safety, some additional context on idempotency (idempotentHint=false) would help, but the output schema covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 2 parameters (commit, source_id) with zero description coverage. The description mentions commit default but does not explain source_id semantics (e.g., optional filtering). It partially compensates but not fully, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (collect) with a scope (from approved sources) and lists key behaviors (standardize, dedupe, update timeliness). It distinguishes from siblings like run_pipeline and run_due by highlighting the approved-source restriction. However, it does not explicitly name alternatives, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for approved-source collection but does not explicitly state when to use this vs. other tools like run_due or run_pipeline. It mentions commit defaults but no exclusion criteria. The implication is clear but not explicit, so it scores below a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.discover_sources发现招聘信息源C
按查询计划通过官方目录、Common Crawl 和已配置的百度官方 API 发现候选;只写候选和证据。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| city_code | No | ||
| providers | No | ||
| bucket_ids | No | ||
| max_queries | No | ||
| province_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint=false and openWorldHint=true, but no destructive hint. The description says '只写候选和证据' (only writes candidates and evidence), implying side effects. It adds that it queries official, Common Crawl, and Baidu API, which is useful. However, it doesn't mention limits, rate limits, or what happens on failure. Description aligns with openWorldHint but doesn't go beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, one sentence, and front-loads the key action. It could be slightly more structured, but it's efficient with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex (6 parameters, multiple providers, writes side effects) yet the description is minimal. Since there is output schema, return values are covered, but missing parameter semantics and usage guidance leave gaps. The description is not complete enough for an agent to use correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description does not explain any of the six parameters (force, city_code, providers, bucket_ids, max_queries, province_code). It only mentions the three providers in passing, but doesn't describe their values or semantics. The description fails to compensate for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool discovers candidate sources via official catalogs, Common Crawl, and Baidu API, but the main verb 'discover' is somewhat vague about the output. Title '发现招聘信息源' matches. It is clear enough that it finds recruitment information sources, but doesn't sharply contrast with sibling tools like probe_source or list_sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says '按查询计划' (according to query plan) but doesn't explain when to use this tool versus alternatives like probe_source or submit_source. No explicit exclusions or conditions are given, so guidance on when to use this tool is weak.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.export_hosted_projection导出托管投影BIdempotent
把完整 portable Registry 确定性压缩为外部托管系统可同步的有界投影,并返回文件路径与截断清单。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds some behavioral detail (deterministic compression, returns file path and truncation list) beyond the annotations, which already indicate idempotent and non-destructive. It does not contradict annotations, but it omits potential side effects like file system writes or resource usage, which could be relevant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently conveys the core action and output. There is no fluff or unnecessary detail, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions returning a file path and truncation list, but does not elaborate on what these contain or how they relate to the output schema. For a tool with no input parameters, the description is somewhat self-contained, yet it lacks details about the output structure or potential error conditions, making it slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is complete. The description does not need to explain parameters, and it doesn't invent any. Baseline of 3 is appropriate since there is no parameter information to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: deterministic compression of the portable Registry into a bounded projection, with a return of file path and truncation list. This distinguishes it from sibling tools like run_pipeline or audit. However, the term 'hosted projection' is somewhat technical and could be clearer for general use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives. It does not describe typical scenarios, prerequisites, or conditions that would make this tool the appropriate choice. The description lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.get_run查看运行ARead-onlyIdempotent
按 run_id 读取黄雀运行状态、统计、证据索引和错误。
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the specific information returned (status, stats, evidence index, errors) and is consistent with the readOnly and idempotent annotations. However, it does not mention potential error conditions (e.g., run not found) or side effects, though as a read-only operation these are likely minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the action and resource, efficiently conveying the tool's purpose and data returned without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with one parameter, the description sufficiently covers the core functionality. It does not explain the output schema or error handling, but these are likely inferred from the read-only nature and the presence of an output schema, making it complete enough for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly states that run_id is used to identify the run ('按 run_id 读取'), giving clear meaning to the parameter beyond the schema's type and minLength. This fully clarifies the parameter's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool reads run status, statistics, evidence index, and errors by run_id. It uses the verb '读取' (read) and specifies the resource (run) and the data retrieved, making its purpose unambiguous and distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool versus alternatives. It only describes what it does without providing conditions, prerequisites, or comparisons to other tools like 'status' or 'audit', leaving usage guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.get_source_graph读取招聘源图谱 / Read source graphBRead-onlyIdempotent
分页读取发布主体、来源、地区、入口、端点、发现渠道与岗位之间的有证据关系。 Reads evidence-bearing source graph relations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| source_id | No | ||
| relation_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint. The description adds that it is 'paginated' and returns 'evidence-bearing relations', which is useful context about the nature of the output. However, it does not disclose other behavioral aspects like auth requirements, cursor handling behavior, or any specific limitations. Since annotations provide the core safety profile, the description's extra detail is beneficial but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and to the point. It consists of two short sentences (bilingual) that effectively convey the action and resource. No verbose or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has an output schema and involves four optional parameters, the description provides the core idea (reading relations) but lacks explanation of the parameters and pagination logic. It is sufficient for a simple, safe, read-only operation, but for an agent to correctly filter or paginate, more context would be necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions for any of the 4 parameters (schema coverage 0%). The description does not explicitly explain `cursor`, `limit`, `source_id`, or `relation_type`. Although it lists the relation types that likely correspond to `relation_type` values (e.g., source, region, etc.), it does not explicitly instruct the agent on how to use these parameters. The description fails to compensate for the lack of schema-level documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: '分页读取' (paginated read) with a specific resource: the evidence-bearing source graph relations. It enumerates the entity types involved (发布主体、来源、地区、入口、端点、发现渠道与岗位), which distinguishes it from sibling tools like list_sources or discover_sources, which deal with sources themselves rather than relational data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool vs alternatives. It only states what it does, with no mention of scenarios, exclusions, or explicit comparisons to similar readings (e.g., when to use 'source graph' vs 'list_sources'). This leaves the agent to infer the applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.list_jobs查询岗位库BRead-onlyIdempotent
分页读取已由批准来源采集的全国标准化岗位,可按省、市筛选。 Lists normalized China jobs with province/prefecture filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| status | No | ||
| city_code | No | ||
| province_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is known. The description adds that it reads from an approved source and is paginated, but doesn't mention batch limits or any details about what happens with invalid filters. The description does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, one in Chinese and one in English, both conveying similar information. It's efficient, but the duplication is minor. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complexity is moderate with 5 optional parameters and an output schema. The description covers the core purpose and filters but omits parameter details like status filtering and cursor-based pagination. It's acceptable for a read-only list operation but could be enhanced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters are in the schema, but coverage is 0% in the description. The description only mentions province/prefecture filters, ignoring limit, cursor, and status. However, the schema provides enums and defaults, so the baseline is 3, but the description adds minimal value beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool reads normalized China jobs with province/prefecture filters, using '分页读取' and 'Lists normalized China jobs'. It distinguishes itself from siblings like collect_jobs and list_sources, but could be more explicit about what it doesn't do (e.g., it doesn't collect or mutate jobs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for querying job data with optional filters but does not explicitly state when to use this tool versus others like collect_jobs or run_pipeline. No exclusionary guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.list_regions查询全国地区 / List China regionsBRead-onlyIdempotent
读取黄雀使用的省级—地级二级地区目录和岗位计数。 Returns the deterministic province/prefecture taxonomy and job counts.
| Name | Required | Description | Default |
|---|---|---|---|
| province_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover the safety profile. The description adds the deterministic property and the specific content returned, but does not disclose ordering, pagination, or effects of the optional province_code parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two brief sentences with no filler. The description is front-loaded with the action verb and immediately states the resource and returned data, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The high-level purpose is clear and an output schema exists to document return values. However, the lack of any explanation for the optional province_code parameter leaves a significant gap for correct invocation. For a tool with a single optional parameter, this omission is notable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The optional parameter 'province_code' has no description in the schema and is completely absent from the tool description. The agent has no information about its format, meaning, or how it filters the results, making it impossible to invoke the tool with meaningful arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('读取' / 'Returns') and names the exact resource: the province/prefecture two-level region directory and job counts. It also specifies the deterministic nature, distinguishing it from sibling tools like list_sources or list_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention exclusions or preferred contexts. It simply states what the tool does without supporting selection decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.list_sources查询来源图谱BRead-onlyIdempotent
查询持久化来源 Registry;可按生命周期或验证状态过滤。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| city_code | No | ||
| lifecycle | No | ||
| province_code | No | ||
| verification_state | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds that it queries a persistent Registry, but does not disclose details like pagination behavior (though cursor is in schema) or whether results are snapshots. Since annotations cover the safety profile, a 3 is appropriate as the description adds minimal behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the main action and resource. It is efficient and easy to scan, though it could include a little more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (a filtered list operation), the lack of an output schema description is fine, but the missing parameter documentation and lack of guidance on pagination make it borderline. The description provides the basic purpose but not enough for an agent to fully understand filtering parameters and pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fails to explain any parameter semantics beyond mentioning lifecycle and verification_state as filters. The schema has 6 parameters including limit, cursor, city_code, and province_code, but the description does not clarify their purpose or format (e.g., that city_code is a string, or how cursor works). This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists persisted sources in a Registry, with filtering by lifecycle or verification state. It identifies the resource (source Registry) and the action (list/query), but does not explicitly distinguish it from sibling tools like get_source_graph or source_coverage, though the name and description imply a different scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions filtering by lifecycle or verification state, which implies when to use (e.g., when needing to browse sources by state). However, it does not explicitly state when not to use it versus alternatives like source_coverage or get_source_graph, nor does it mention any prerequisites or context for when to list sources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.probe_source安全探测来源A
对 source_id 或公开 URL 执行 DNS/重定向/robots/大小/超时防护下的真实探测;不会自动批准。
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| source_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds some behavioral details (DNS/redirect/robots protections, no auto-approval) beyond annotations, but does not explain side effects, state changes, or what 'probing' entails in terms of system impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the core function without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Does not mention return values or output format, and the tool is likely to produce results (e.g., probe outcomes) that the agent would need to understand. Lacks completeness for a full understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that source_id and url are alternative inputs, which is not evident from the schema alone. However, it does not define what constitutes a valid source_id or the exact format for URL.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs real probing of source_id or URL with DNS/redirect/robots/size/timeout protections, distinguishing it from sibling tools like list_sources or get_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It mentions not auto-approving, but does not clarify the intended workflow or context, leaving the agent uncertain about appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.review_source人工审核来源ADestructive
批准或驳回已探测来源。要求人工确认、审核人、理由和 expected_revision;MCP 端默认禁用,需 operator 显式授权。
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | ||
| decision | Yes | ||
| source_id | Yes | ||
| reviewed_by | Yes | ||
| confirmation | Yes | ||
| expected_revision | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by noting the authorization requirement and the manual confirmation step. It does not contradict the destructiveHint annotation, as approve/reject implies mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and well-structured, containing only essential information without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While it covers purpose and some preconditions, it lacks detail on post-action effects, return value, or the meaning of the 'confirmation' parameter, leaving some gaps for a tool with six required parameters and no schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description partially compensates for the lack of schema descriptions by naming several parameters (reviewer, reason, expected_revision), but leaves others (source_id, decision, confirmation) unexplained or only implicitly covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function ('approve or reject a discovered source'), which is specific and distinguishes it from sibling tools like collect or submit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context by mentioning manual confirmation, required reviewer, and the fact that it's disabled by default, requiring operator authorization. However, it does not explicitly mention alternatives or contrast with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.run_due运行到期任务A
按 cadence 运行到期发现、探测与已批准来源采集;commit 默认 false,只有显式 true 才写岗位库。
| Name | Required | Description | Default |
|---|---|---|---|
| commit | No | ||
| max_probes | No | ||
| max_queries | No | ||
| max_collections | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses the key side-effect behavior: commit defaults to false and only an explicit true writes to the job library. This adds valuable mutation semantics beyond the annotations, which only indicate readOnlyHint=false and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the core operation and then adds the critical commit guard. Every element earns its place; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for basic selection and invocation, especially with an output schema present. However, it lacks detail on what "due" means, how the max_* parameters affect execution, and what happens when commit is false beyond not writing to the library.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only explains the commit parameter. The remaining parameters (max_probes, max_queries, max_collections) are left to be inferred from their names and schema ranges, which is insufficient for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb-resource pairing: it runs due discovery, probing, and approved-source collection by cadence. This clearly distinguishes it from siblings like run_pipeline or discover_sources by naming the exact scope of work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"按 cadence 运行到期任务" implies the tool is for executing tasks that have become due, but it does not explicitly state when to prefer this over alternatives such as run_pipeline, nor does it provide exclusion criteria. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.run_pipeline运行黄雀流水线C
执行发现→安全探测→候选入来源图谱;新来源不会自动批准。可选采集已批准来源。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| commit | No | 仅影响已批准来源;默认预览 | |
| city_code | No | 可选六位地级行政区代码 / optional prefecture code | |
| providers | No | 发现 Provider;默认全部 | |
| bucket_ids | No | ||
| max_probes | No | ||
| max_queries | No | ||
| province_code | No | 可选六位省级行政区代码 / optional province code | |
| collect_approved | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by stating that new sources are not automatically approved and that collection of approved sources is optional. However, it does not disclose side effects like whether commit=true persists changes, whether it modifies the source graph, or potential long-running behavior, which would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and to the point, using two sentences to convey the pipeline flow and a key policy (no auto-approval). No unnecessary words or redundancy, though it could be slightly more detailed without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 optional parameters and no output schema provided, the description is incomplete. It does not explain the difference between preview and commit modes, the meaning of max_probes/max_queries, or the outcome of the pipeline, leaving significant gaps for an agent to understand the full scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not clarify the meaning of undisclosed parameters such as force, bucket_ids, max_probes, max_queries, or collect_approved. It only hints at 'optional collection of approved sources' which likely maps to collect_approved, but leaves other parameters unexplained, failing to complement the schema where coverage is only 44%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool executes a pipeline with a sequence (discovery → security probing → candidate sources into graph) and notes that new sources are not auto-approved, which distinguishes its purpose from simpler sibling tools like run_due or collect_jobs. However, it could be more explicit about being the main pipeline runner.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not indicate when to use this tool versus alternatives such as run_due or collect_jobs. It lacks conditions for running the pipeline, prerequisites, or typical invocation scenarios, leaving the agent without clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.source_coverage检查来源覆盖缺口 / Inspect source coverage gapsARead-onlyIdempotent
按 9 类渠道、19 家有界重点企业、34 个省级与 365 个二级区域计算可审计缺口;不把发现线索冒充已批准来源,也不声称抓全互联网。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the tool's non-mutating, non-exhaustive nature is already signaled. The description adds value by explicitly restricting scope (9 channels, 19 enterprises, 34 provinces, 365 secondary regions) and by warning against misinterpreting results ('不把发现线索冒充已批准来源,也不声称抓全互联网'). This goes beyond the annotations by clarifying the semantic boundary of what the gaps represent (auditable gaps, not approved sources or full internet coverage).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with two clauses, efficiently front-loading the core action (compute gaps) and then adding a critical caveat. It uses compact numeric enumerations to convey scope without wasted words. The only minor weakness is that it doesn't mention any output structure or return format (though an output schema exists), and the Chinese is dense but not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has zero parameters and an output schema, so the description doesn't need to document parameters or return values. The description covers purpose, scope dimensions, and interpretive guardrails. Given the tool's complexity (aggregating across multiple dimensions), the description is sufficient to help an agent decide when to call it and what to expect. However, it doesn't mention any specific use cases or integration with other sibling tools like 'audit' or 'discover_sources', which could be helpful but not strictly necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, so the input schema is trivially complete (coverage 100%). With no parameters to document, the description's job is to explain what the computation is based on and what the output means, which it does by listing the fixed dimensions (9 channels, 19 enterprises, etc.) and the caveat about not representing approved or comprehensive findings. This adds semantic meaning beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource combination: 'calculate auditable gaps' across specified dimensions (9 channels, 19 bounded key enterprises, 34 provinces, 365 secondary regions). It does not explicitly name a sibling alternative but clarifies this is about coverage gaps, distinct from tools like discover_sources or audit, implying a review/compute role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it computes gaps by specific categories and acknowledges limitations. It does not explicitly state when to use vs. alternatives, but the specificity (e.g., 'bounded key enterprises' vs. broader sources) implies a scoped analysis, and the second sentence guards against misusing its outputs as approved sources or claiming exhaustiveness, which helps the agent decide if this tool fits the need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.status查看黄雀状态ARead-onlyIdempotent
读取 Registry 版本、来源/岗位/运行统计、到期查询桶和 Provider 配置状态。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds that it reads specific types of information (Registry version, statistics, buckets, provider config), which is useful context. However, it doesn't disclose any potential side effects (though annotations cover this) or what happens if the Registry is unavailable. With annotations covering the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that lists the key information the tool provides. It is front-loaded with the verb '读取' and covers the main aspects. It could be slightly more structured (e.g., bullet points), but for a simple status tool, it is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, an output schema exists, and annotations are comprehensive, the description is sufficient. It lists the main categories of information returned (Registry version, statistics, buckets, provider config), which gives the agent a good idea of what to expect. The output schema likely provides more detail on the return structure, so the description doesn't need to elaborate further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the schema coverage is 100% (trivially, since there are no properties). The description doesn't need to explain parameters, but it does clarify what the tool returns (Registry version, statistics, etc.), which adds value beyond the empty schema. Since there are no parameters, the baseline is 4, and the description meets this by providing context on the output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads Registry version, source/position/run statistics, expiration query buckets, and Provider configuration status. It uses a specific verb ('读取' - read) and resource (Registry status), which distinguishes it from sibling tools like huangque.audit or huangque.get_run. However, it could be more explicit about what '状态' encompasses and how it differs from similar status-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a read-only status tool, but it does not explicitly state when to use it versus alternatives. It doesn't mention that it's a quick overview vs. more detailed tools like huangque.audit or huangque.source_coverage. The context signals show it has no parameters, suggesting it's a general status check, but this is not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huangque.submit_source提交公开来源 / Submit public sourceA
把一个公开招聘 URL 作为候选写入图谱并保留提交证据;不会自动探测、批准或采集。 Adds a public URL as an evidence-backed candidate without automatic approval.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| note | No | ||
| title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (write, non-idempotent, non-destructive), the description explicitly states that it does not auto-approve or collect, and that it keeps submission evidence. This adds clear behavioral expectations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, conveying the core action and key limitations in two short sentences. No fluff or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately explains the main action and what it does not do, which covers the essential behavior for a submission tool. It does not mention return values or post-submission effects, but given the simple input schema and absence of an output schema, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema lists three parameters (url, note, title) but the description only mentions the URL. No explanation is provided for the optional 'note' or 'title' fields, leaving their purpose and expected content unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool submits a public URL as a candidate into the graph with evidence, and distinguishes it from automatic actions like detection or approval. This is a distinct and well-defined purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides when to use this tool by stating it does not automatically detect, approve, or collect, implying it is the initial submission step. However, it does not explicitly contrast with sibling tools like 'review_source' or 'probe_source', leaving some ambiguity for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
v1.1.1- First observed
huangque.audit - First observed
huangque.collect_jobs - First observed
huangque.discover_sources - First observed
huangque.export_hosted_projection - First observed
huangque.get_run - First observed
huangque.get_source_graph - First observed
huangque.list_jobs - First observed
huangque.list_regions - First observed
huangque.list_sources - First observed
huangque.probe_source - First observed
huangque.review_source - First observed
huangque.run_due - First observed
huangque.run_pipeline - First observed
huangque.source_coverage - First observed
huangque.status - First observed
huangque.submit_source
TDQS
Scored across 16 tools
Most tools have distinct purposes, but run_pipeline and run_due both execute workflows and could be confusing. However, descriptions clarify that run_pipeline is a general discovery-probing pipeline, while run_due runs scheduled tasks. Other pairs like discover_sources/probe_source and submit_source/review_source are clearly separated.
All tools share the 'huangque.' prefix and mostly follow a verb_noun pattern (e.g., list_sources, collect_jobs, get_run). Exceptions like 'status' and 'source_coverage' use nouns, but they are still intuitive and the overall naming is coherent.
With 16 tools, the set is slightly above the ideal 3-15 range but still well-scoped for a comprehensive job-source management system. Each tool covers a distinct aspect, and no tool feels redundant.
The toolset covers the full lifecycle: discovery, submission, probing, review, collection, listing, reporting, and pipeline execution. Minor gaps exist (e.g., no explicit update/delete for sources), but the core workflows are well-supported and agents can work around these limitations.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseCqualityAmaintenanceLocal MCP server for BOSS Zhipin workflows. Exposes 49 tools for job search, welfare filtering, recruiter messaging, pipeline tracking, and resume optimization for AI agents.77475 PyPI2,073MIT
- FlicenseNot gradedqualityDmaintenanceLocal MCP server that exposes fixed tools for GPT, Claude, and Gemini while routing to any OpenAI-compatible chat completions backend with independent configuration per target.1-
- AlicenseNot gradedqualityDmaintenanceMCP server that exposes 108+ omega-cli OSINT tools for reconnaissance, web analysis, threat intelligence, and reporting, enabling AI assistants to perform comprehensive open-source intelligence tasks.MIT
- FlicenseNot gradedqualityDmaintenanceA custom MCP server with 6 utility tools (file search, file reading, math calculation, JSON formatting, time query, system info) that demonstrates MCP protocol workflow and integrates with LangChain agents.-