oriole
Oriole · 黄雀 Job Engine
방대한 웹을 단순히 스크래핑한 채용 목록의 불투명한 더미가 아니라, 추적 가능하고 검토 승인을 거치는 채용 출처 지도로 만드십시오.
Oriole는 오픈소스이며 중국 전역을 대상으로 하는 유형발 지능 에이전트입니다. 공개 채용 게시자를 발견하고, 게시자의 방화벽 확인, 수집 전 인간의 승인을 요구하며, 실제 근무지 기준으로 채용 정보를 정규화하고, 그 결과를 16개의 MCP 도구를 통해 어떤 LLM에든 노출합니다.
이는 의도적으로 단일 웹사이트가 아니라 엔진(engine)으로 설계되었습니다. 명령줄(CLI)에서 실행할 수도 있고, 자정으로 스케줄을 잡을 수도 있으며, 결정적 핵심(core)을 다른 Node.js 서비스에 임베드할 수도 있고, 자격 증명을 그 모델에 넘기지 않은 채 MCP 지원 모델을 연결할 수도 있습니다.
구현된 분류
분류 | 세부 구현 |
전국 단위 지리 분류 | 저장적 2단계 중국 분류 체계: 34개 성급 지역 및 368개 시급/성직할 항목 |
근무지 분류 | 채용 공고가 명시한 근무지를 사용하며, 복수 지역 채용 유지, 성/시 필터 지원, 외국 전용 항목 거부 |
소스 발굴 | 9개 검증된 시드, 제한된 19개 사용자 워치리스트, 공식 디렉토리, Baidu Search API, Common Crawl URL Index, 365개 2단계 지역 작업 및 사용자가 제출한 URL |
안정적인 수집 | 페이지 수를 50페이지·5,100행·24MB로 제한한 ByteDance/Feishu 공개 검색 어뎁터, 블록별 durable offset를 사용하는 던-random 하며, flexible public JSON, JSON, JSON-L, RSS/ALTOM, Sitemap XML, guarded HTML |
출처 그래프 | 게시자, 소스, 지역, 입장점, 엔드포인트, 발간 채널, 작업 전용 데이터 사이의 증거 기반 관계 |
신뢰 프로세스 |
|
증거 정보 | 실행 기록, HTTP 요약, 콘텐츠 해시, 압축된 원시 응답 아티팩트, 소스/작업 데이터 추적, 기계가독 감사 결과 |
에이전트 InterFace | JSON-RPC 2.0 NDJSON stdio에서 동작하는 16개의 이중언어 MCP 도구; 최신 |
일주 작업 | 아이덴포텐트한 베이징 날짜 실행기, GitHub Actions 스케줄 실행 시간 |
안전 | HTTPS 전용 통신, 고정IP DNS 관리, SSRF 방어, 리다이렉트/로봇 가드, 시간·크기·행 제한, 요청률 제한, 그리고 비밀 호스트 관리 |
Related MCP server: OpenAI-Compatible MCP Gateway
소스 모델
발견 채널과 직업에 대한 소스가 서로 다른 역할을 합니다.
Baidu은 감지 radar입니다. 구성 시, Oriole이 Baidu 공식 Qianfan 엔드포인트를 호출하고 요청 시 moot 객체에 대한 proof를 저장합니다. Baidu 결과 페이지를 스크래핑하지 않습니다.
Common Crawl은 특정
site:패턴을 위해 키 없이 사용 가능한 아카이브/인덱스 폴백입니다. 공개 URL이 존재했는지 검증하는 용도지 불 컬러텍스트 검색 엔진이나 최종 채용 정보 소스는 아닙니다.공공 디렉토리은 국가·지방 고용, 대학교 취업, 공공기관, 중앙 국유 기업 및 정부 부처 채용 정보 디렉토리 등 공식 게시자를 시드합니다.
회원사 사이트, 공식 ATS 채널, 정부 고용 페이지는 장기 채용 정보 수집 대상입니다. 소스는 안전 검사와 사람승인 검토를 통과해야만 그 작업이 Registry에 들어올 수 있습니다.
사용자 지금은 다른 Agent나 운영자가 공개 URL을 제출할 수 있도록 하되, 동일한 검사와 승인 절차를 유지합니다.
공식적으로 검증된 소스 시드를 사전 초기화하거나 공식 카테고리에서 후보 결과를 발견하는 데 Baidu API 키가 필요 없습니다. 쿼 가능 플랜별로 각 공급자의 역할이 명확합니다. 즉 일반적인 키워드 발견은 Baidu 전용입니다. Baidu를 사용할 수 없다면 그 작업들은 status.discoveryBacklog와 발견 실행 통계에서 뚜렷이 blocked 상태로 남습니다. Common Crawl은 통제된 site: 작업 대상에서만 허용됩니다. 차단 된 job은 완료 보고로 처리되지 않습니다.
공개 저장소에는 채용 레코드가 0개 포함되어 있습니다. npm run init는 명시적으로 감색된 9개의 공개 소초를 가져옵니다(Bytedance를 포함한 8개의 고용주 통제 채널 + 정부 고용 채널 1개). 따라서 전신 복제(clone)한 경우에도 낡은/비공개 스냅샷을 게시하지 않고도 기능성 수집 대상을 갖게 됩니다. 이것은 검색 결과 자동 승인을 의미하지는 않습니다. 시드 itself는 인가판을 거친 신뢰 판정이고, 모든 새로 발견된 소스는 여전히 검사 후 승인 과정이 필요합니다.
Coverage는 완전한 국가 전체 채용 정보 잡아내기를 나타내는 주장이 아니라, 측정 가능하고 부족한 부분을 보여주는 리포트입니다. 19개 이머전 워치리스트마다 ByteDance만 승인된 초기 운영 대상이며, 나머지 18개 직원 측 루트는 비승인 후보로 시작됩니다. 따라서 프로브, 검증, 승인 전까지는 채용 작업을 생성하지 않습니다.
ByteDance/Feishu 수집은 한 번 호출로의 50 pages, 5,000source rows, 24MB로 상한이 있습니다. 한 번 호출이 파일 끝까지 도달하지 못하면, 커밋된 실행이 source.collection.resume 아래에 지문 및 generation 검증된 커서를 저장합니다. 다음 실행은 head page 하나를 새로고침하면서, 일부러 한 page의 오버랩을 사용하여 tail부터 이어서 쓸어내려갑니다. 채용 정보 쓰기와 커서 옮김은 하나의 결정적(atomic) Registry 트랜잭션으로 갈이 수행됩니다. 커서 이동 전/후에 Registry가 컬렉터가 읽은 source의 revision과 저장된 커서의 generation을 각 각 CSA(compare-and-swap)하며, 어느 한쪽이라도 충돌하면 채용 정보도 커서도 쓰지 않습니다. 프리뷰, 장애/취소는 저장된 위치를 절대 옮겨놓지 않습니다.
재개된 tail 조각는 실제로 회전 완료가 되어도 pagination.complete: false 상태로 남습니다. 이는 offset feed의 내용이 실행마다 바뀔 수 있어, 두 실행 사이의 단일 snapshot처럼 취급하는 채용 누락을 확인할 수 없기 때문입니다. 기존 채용된 작업 결과와 Registry 상태를 별도로 점검하십시오: npm run coverage는 source/channel/region 상태를 체크하며 페이지네이션이나 resume 진행 상태는 읽지 않습니다. 일정하고 정확한 provider 가이드라인과 seed 카탈로그은 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개의 저장 채용 레코드가 나타나야 합니다. 실제 작업은 커밋된 수집 이후에만 나타납니다.
ByteDance의 현재 공개 잡에 대해 미리보기 전용이며 증거를 생성하는 점검을 하려면 (Baidu 키 필요 없음) npm run live-source-check를 실행하십시오. 이 명령은 공식 지원 URL을 검증하고 요약 요약만 출력합니다(원시 응답을 노출하지 않음). 즉시 수용 가능한 시간 창을 읽지만 커밋은 만들지 않으며 저장된 resume 커서도 진전하지 않습니다. 동일한 GitHub Actions workflow는 수동 실행 또는 풀 리퀘스트에 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 revision을 검토하고 승인 절차를 명시하세요:
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— Atomic/Portable Registry;.huangque/artifacts/— 내용 주소가 있는(compensated) 압축 artifact;.huangque/latest-audit.json— 최신의 machine readable 셀프 오딧;
위의 경로는 Git이 무시하며, 환경 변수로 다른 위치로 옮길 수 있습니다.
MCP로 어느 모델에나 연결
stdio 서버를 시작하세요:
npm run mcpMCP 클라이언트 설정 예시:
{
"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"
}
}
}
}서버에서는 다음을 위한 도구를 사용할 수 있습니다: pipeline 실행, run 조회, 상태 확인, 측정 가능한 소스 커버리지 갭, 발견, 공개 소스 등록, 검사(probe), 소스 목록, 채용 목록, 지역 목록, graph 읽기, 사람 검토, 수집, 예약 대기 항목, 감사, 그리고 portable export.
huangque.list_regions는 고유 채용(unique-job) 합계를 Hongo 단위, Hongo 전용 단위, 그리고 각 제2차 도시 단위로 보고합니다. 어느 한 성(province) 안에서 두 도시에 채용이 명시된 채용 정보는 성 합계에 한 번, 각 해당 도시는 별도로 한 번으로 계산됩니다.
MCP를 통한 소스 승인은 기본 off입니다. 운영자가 의도적으로 HUANGQUE_ALLOW_MCP_REVIEW=1을 설정해야 하며, CLI에서의 승인은 그 서버 경계를 느슨하게 하지 않고 활성화되어 있습니다.
선택사항 Baidu 탐지
예제 환경 설정을 복사한 다음 키를 로컬 또는 GitHub Actions의 secret으로 설정하세요. 프로젝트 비밀번호를 커밋하지 마세요.
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로 낮출 수 있습니다.
Baidu를 구성하지 않아도 승인된 소스 수집이 중단되지는 않습니다. 일반적인 키워드 기반 active discovery 작업만 명확히 차단되고, 키가 없는 Common Crawl은 예약된 계획의 통제된 site: 작업을 계속 처리합니다.
관련 공식 문서: Baidu Qianfan AI Search API.
자정 국내 업데이트
번들된 workflow는 매일 16:00 UTC에서 실행되고 이는 한국 시간의 다음 자정에 해당합니다:
npm run daily러너는 베이징 날짜 기준 완료 마커를 쓰므로, --force 플래그로 지정하지 않는 한 재시도해도 해당 일의 중복 실행이 되지 않습니다. GitHub Actions 스케줄이 몇 분 늦게 시작될 수 있습니다. 마커 기준 작업 날짜는로컬 runner가 정하며 큐 시각은 아닙니다. 상세한 것은 docs/SCHEDULING.md을 참조하세요.
그래프를 목록처럼 제공하지 않기
각 그래프 edge에는 증거와 관측 시각이 저장됩니다. edge 구성은:
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 jobPublisher와지역 관계는 최신 research에서 만들어집니다. 검증된 소스의 identity가 바뀌면 기존의 published_by 관계와 covers_region 관계는 잘못된 히스토리 업증으로 남기 않고 제거됩니다.
“완성된 그래프”의 의미는 레지스트리 모든 소스에대해 진단에서 증명된 relationship이 있고, 그 관계가 모든 사람이 감사할 수 있음을 뜻합니다. 등록된 카탈로그만으로 모든 중국 고용주 및 모든 진행 중인 채용이 나타난다는 의미는 아닙니다. Oriole는 이 그래프를 계속 확장하고 다시 무결성하게 확인되도록 설계되어 있습니다.
각성 후 신뢰
npm run verify
npm run audittest suite 코드들은 인반 structural normalization, 지역 등록 분류, 채용 local multiple location, provider별, bounded 단계 large rotation, cursor atomicity/concurrency, 신뢰 그래프 evidence, Registry retention, MCP lifecycle, SSRF 통제, rust/hook 처리, source ownership 과 job의 불변성. 런타임 오딧는 별도로 “현재 Registry에서 외부 provider 및 GitHub 배포 스케줄이 실제 성공적인 run evidence 기록을 보이는지” 대해 보고합니다. 테스트 고정 값/flask와 형식적으로 수동 실행한 일일 구현은 live provider 또는 GitHub Actions의 성공으로 집계되지 않습니다.
재현 가능한 검증 순서는 docs/VERIFY.md 시 따라 따르도록 하세요.
범위
Oriole는 상태 접속 불필요 공개 정보 채널만 처리합니다. 사적인 WeChat 그룹, 이미지 OCR, 이메일의 받은 편지함 GXP CAPTCHA/로그인 전용 웹 페이지 등은 제외합니다. 사용자를 대신해 입구 신청을 하거나 고용 판단을 내리지 않습니다. 공용 웹에 개방해야 하는 대가로 운영𝔰이트는 사이트 이용약관, robots 정책, 데이터베이스권, 개인정보 보호책 규정를 위반하는 것은 아닙니다. 배포자는 각 채널에 따라 법률/규정을 충족할 책임이 있습니다.
프로젝트 layout
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 updateApache-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.-