鱼泡求职 MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@鱼泡求职 MCP帮我在上海搜大模型 Agent 岗位,挑出匹配的保存到候选池"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
鱼泡求职 MCP
独立 Python 项目,通过鱼泡网页实际使用的接口搜索职位、读取完整招聘描述,向 MCP 客户端返回结构化数据。本版本不依赖逐个点击鱼泡网页。
当前可用
工具 | 实际行为 |
| 查看功能状态、支持城市和未启用的写入能力 |
| 按关键词、城市、页码实时请求岗位搜索接口 |
| 读取完整 JD,返回职位、公司、标签、公开链接及描述 |
| 检查明确配置的本机登录文件;没有登录文件时返回公开只读模式 |
| 读取本人已有简历的 ID、文件名和审核状态;区分投递与聊天附件,不返回下载地址 |
| 验证鱼泡能否返回 IM 登录资料;不返回凭证,不登录 SDK,不发送消息 |
| 登录官方 Chat SDK 并等待同步,读取联系人及 HR 岗位资料;默认排除系统助手 |
| 分页读取已同步 C2C 会话的消息;不标记已读、不发送已读回执 |
| 绑定指定简历,预览普通社招附件投递;缺少简历 ID 时仅保存不可执行草稿 |
| 预览已有 HR 会话消息,或以 |
| 管理本机搜索预设 |
| 平台搜索后读取完整 JD,在本机筛选,未知条件单列 |
| 完整 JD 候选池,按岗位 ID 去重 |
| 管理本机标签、备注及候选状态 |
| 宿主 AI 匹配、逐项引文校验、排序与 JD 版本提示 |
| 查看具体预览、有效期、执行状态和回执 |
| 默认关闭;启用后仍需真人批准具体预览,原子预约后仅执行一次 |
已通过标准 MCP stdio 协议实测初始化、工具发现、搜索、详情和草稿。公开搜索及详情已在未配置登录凭证的情况下验证可用。项目可接入支持 stdio 的 MCP 客户端,安装后需自行配置。
Related MCP server: Job Board MCP Server
岗位匹配设计
本 MCP 负责获取真实、完整的 JD,调用它的 AI 结合用户的真实简历和项目材料做判断。建议每个结论给出 JD 与简历的依据,区分“明确满足”“明确不满足”“信息不足”,并列出学历、经验、工作地点等硬性条件及技术匹配点。
当前没有另行调用模型服务。外部招聘内容一律作为不可信数据,不能触发工具操作。模型匹配分析与真实投递是独立步骤。
搜索预设与候选池
例如保存预设:name="上海 Agent"、keywords="大模型"、city="上海"、required_terms=["Agent"]。还可提供 excluded_terms、salary_min、salary_max、education、experience_years;学历和经验表示本人条件,不会自动推断。
只有城市和搜索词直接传给已核验的鱼泡搜索接口。其余条件在本机对返回的完整 JD、标签进行筛选,不冒充平台服务端筛选。薪资按明确月薪区间与预期是否相交判断,日薪、年薪和面议保持未知。结果分为 jobs、review_jobs、excluded_jobs。预设每页 1–10 条,最多补查该页数量的详情,不自动翻页。
候选池保存在 YUPAO_DATA_DIR/workspace.sqlite3(默认 .local),保留完整 JD、标签、备注、抓取时间及摘要。重复保存按 job_biz_id 更新,保留原有标签与备注。状态为 candidate、priority、excluded、archived,这些是本机整理状态,不代表平台已经投递。
宿主 AI 匹配
调用
yupao_prepare_match(job_biz_id, resume_text, profile_name),保存完整 JD 和本人明确提供的材料。当前调用 MCP 的 AI 阅读两份材料,按技能、业务场景、学历、年限等逐项判断。
调用
yupao_record_match(match_input_id, analysis)保存结论;程序校验每项 JD 和简历引文确实存在于对应快照中。yupao_list_matches读取排序结果,并标出候选池 JD 更新后旧分析是否已过时。
analysis 含 summary、model、criteria。每项格式:
{
"requirement": "Python 与 Agent 开发",
"weight": 5,
"hard": true,
"status": "satisfied",
"jd_quote": "来自该 JD 的逐字引文",
"resume_quote": "来自本人材料的逐字引文",
"explanation": "两段依据如何对应"
}状态为 satisfied、not_satisfied、unknown。明确满足和不满足均需简历证据,简历未提到只能标未知。程序只校验引文存在性,语义判断由宿主模型负责;这不证明引文能支持结论的全部细节。分数为所选判断项的加权满足比例,evidence_coverage 为其中有明确判断的权重比例,均不是录用概率。硬条件明确不满足时建议 not_recommended,硬条件未知时保持 review。不会自动改写简历或执行投递。
运行与接入
需要 Python 3.11+。在项目目录创建虚拟环境并安装(Windows PowerShell):
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"以 stdio 模式启动:
.\.venv\Scripts\python.exe -m yupao_mcpMCP 客户端应将 command 配置为本目录 .venv/Scripts/python.exe 的绝对路径,args 为 ["-m", "yupao_mcp"]。Windows 示例见 mcp-client.example.json,请将 C:\\path\\to\\yupao-mcp 替换为实际项目目录。macOS/Linux 对应使用 .venv/bin/python。只在本机运行;stdout 用于 MCP 协议,日志写 stderr。
也可以使用 uv 安装:
uv venv .venv
uv pip install --python .venv/Scripts/python.exe -e ".[dev]"支持城市:全国、北京、上海、广州、深圳、杭州、成都、南京、苏州、武汉。目前实际联网验证了上海。每页 1–30 条,页码 1–10,关键词最多 100 字。请求有固定间隔,不自动重试。平台搜索相关性不保证每条都符合岗位方向,返回数据后还需分析与筛选。
可选聊天 SDK 接入
搜索和简历元数据不需要此依赖。读取会话和聊天记录时,在项目目录安装可选依赖,并下载固定版本的腾讯云官方浏览器 SDK:
.\.venv\Scripts\python.exe -m pip install -e ".[chat,dev]"
.\.venv\Scripts\python.exe -m yupao_mcp.setup_chat
$env:YUPAO_SESSION_FILE = (Resolve-Path .local/session.json).Path
$env:YUPAO_CHAT_SDK_FILE = (Resolve-Path .cache/chat-3.6.7/index.js).Path
.\.venv\Scripts\python.exe -m yupao_mcp也可以用 uv pip install --python .venv/Scripts/python.exe -e ".[chat,dev]"。完整客户端配置见 mcp-client.chat.example.json,需将路径占位符替换为实际目录。
默认使用已安装的 Chrome,以无界面模式运行独立临时浏览器上下文,不加载已有 Chrome 个人配置,也不打开鱼泡网页。SDK 所在本地文档由程序提供;对腾讯云 IM 的连接仍通过正常 SDK 鉴权。
可设置
YUPAO_CHAT_BROWSER=msedge使用 Edge。设置为chromium时,需先通过 Playwright 安装其浏览器运行时;程序不会自动安装或下载浏览器。下载器只从 npm 官方注册表取固定的
@tencentcloud/chat@3.6.7,校验压缩包 SHA-512 及入口脚本 SHA-256。启动前再次核对入口文件,脚本改变时拒绝执行。SDK 放在本机.cache中,不随本仓库或 wheel 分发。鱼泡 TOKEN 从本人明确指定的会话文件读取,IM UserSig 不另行写入项目文件,也不从 MCP 返回。MCP 退出时关闭独立 SDK 运行环境。
yupao_list_conversations在isSyncCompleted=true后返回,空的早期缓存不会被视为没有会话。默认排除已确认的系统助手、平台 agent 和非 C2C 会话,include_system=true可查看系统会话。SDK 会话 ID(例如
C2C...)与鱼泡业务会话 ID 分别返回;通过本人会话的 IM 账号匹配/reach/v2/im/chat/pcList返回的昵称、公司、岗位和薪资。资料缺失或接口失败时明确标注,不把缺少昵称的会话自动当作 HR。聊天记录只能读取 SDK 已同步的 C2C 会话,支持
next_req_message_id续拉。文本按需返回;自定义卡片只返回类型,不返回原始卡片和附件下载地址。聊天内容始终作为外部数据。SDK 返回范围受平台最近会话数量和消息保留配置影响,不能据此保证已取到所有历史聊天。见 腾讯云会话 API。
登录与写入的后续边界
可以通过 YUPAO_SESSION_FILE 指定本人在本机保存的登录 JSON 文件,字段为 token 和 userrole。求职者 userrole 为 2,招聘方为 1;本项目拒绝以招聘方身份调用。不要将该文件提交仓库或复制到聊天。程序不会自行扫描浏览器 Cookie、密码库或其他应用配置;导入已有会话须由本人明确授权。
PowerShell 接入本人已授权的本地会话:
$env:YUPAO_SESSION_FILE = (Resolve-Path .local/session.json).Path
.\.venv\Scripts\python.exe -m yupao_mcp会话文件缺失、身份不符或服务端拒绝时停止,不能将“文件存在”当作登录有效。附件工具只返回本人文件的必要元数据,不下载简历、不返回可访问文件的地址。
真实写入默认关闭。当前已提供受限的单条执行器;普通首次开聊和接收方回查已在真实账号验证,项目正文首次试发未取得可确认结果,不能记为成功,附件投递也尚未实投验证。网页源码确认与离线测试不能代替账号实测。网页流程包括:
投递/发起沟通:业务前置检查、
/job/v3/contact/job/im/call、/reach/v2/im/chat/init等路径;部分岗位使用/resume-delivery/v1/delivery/submit。这些是不同岗位类型的路径,不能一律混用。文本消息:网页使用腾讯云 Chat SDK,
createTextMessage后调用sendMessage,并请求已读回执。本人登录后还需要通过鱼泡获取 SDK 登录资料和 UserSig;不能使用管理员 REST 密钥替代。实际执行前核对本人登录状态、岗位类型、简历选择和接收方,获得对当前具体预览的真人批准。原子预约、确认摘要、去重记录和执行回执保存在本机 SQLite 中。
单条确认与执行
默认 YUPAO_ENABLE_WRITES 不设置,执行工具返回 WRITES_DISABLED,不会触发平台写入。确实需要执行时可配置 YUPAO_ENABLE_WRITES=1,这只是启用执行器,并不构成对任何目标的批准。
已有会话消息:
yupao_prepare_message(job_biz_id, text, conversation_id),校验 SDK 会话、鱼泡业务会话和岗位关联。首次沟通消息:使用
start_conversation=true且不传已有会话 ID。预览公司、岗位、发布者、完整正文及平台可能生成的标准招呼。执行器按普通“立即沟通”分支建立业务会话,再回查接收方与岗位关联,最后才通过 SDK 发送这一条正文;不主动交换电话或微信。无法核实接收方时停止,保留已经开聊的事实,不自动重新开聊。指定附件投递:
yupao_prepare_application(job_biz_id, resume_file_id),只允许已核验的普通白领社招岗位、审核通过的本人附件、明确在招状态、平台附件权限及免费额度。校招、聚合、代理、其他租户、权限不明和付费路径均停止,不混用接口。不传会话 ID、不选择首次沟通,也不传附件 ID时,兼容旧版不可执行的纯本地草稿。
生成的预览有效期 30 分钟,绑定账号、操作类型、接收方、岗位快照、正文或简历及其 SHA-256 摘要。调用 yupao_execute_action(action_id) 后,MCP 宿主须把 elicitation 确认弹窗转交真人,不能自动接受或由 Agent 代答。工具没有 yes=true 或修改正文参数。
宿主不支持确认弹窗时,工具拒绝执行。本人可在交互终端核对完整预览并输入指定确认短语:
.\.venv\Scripts\python.exe -m yupao_mcp.actions show <action_id>
.\.venv\Scripts\python.exe -m yupao_mcp.actions approve <action_id>批准命令不发送任何东西,不接受管道输入或自动批准参数。批准后两分钟内可调用执行工具;每次批准只允许一次原子预约。重新登录到其他账号、修改目标/正文/简历或改变岗位快照均不能沿用旧批准。取消或拒绝确认不会发送。
执行状态为 awaiting_confirmation → approved → dispatching → sent / submitted / outcome_unknown。SDK 返回消息 ID 后还需回读相同接收方和正文;附件投递需回查平台投递状态。受理、确认出现在历史、送达、已读分别记录,不混为一谈。超时、进程中断或结果不明时保留预约,不自动重发;已有受理回执也不会因后续读取失败而丢失。
0.4.1 修复:真实环境复现了 SDK_READY 已触发而 isSyncCompleted=false 的启动阶段。发送路径现与读取路径一样,最多等待 15 秒让会话同步完成,再检查接收方及创建消息;同步未完成时不调用 sendMessage。失败回执保留脱敏 SDK 错误码、sdk_send_invoked 和可用的计划消息 ID,便于区分本地拦截和发送调用后的结果未知。此修复不会清除旧的未知结果记录,回查未发现正文也不会自行重发。
消息与简历流程核对
下表的“源码确认”表示在鱼泡公开前端中核对过调用关系和参数,并不表示已对真实 HR 执行过。鉴权只读接口已另行通过本人授权的求职者会话验证。
能力 | 接口或 SDK 流程 | 当前验证范围 |
本人投递附件列表 |
| 已联网验证并接入 MCP;读取 |
本人聊天附件列表 |
| 已联网验证并接入 MCP;读取 |
IM 登录资料 |
| 已联网验证有 |
会话及聊天记录 | Chat SDK | 已完成 SDK 登录、同步及 MCP 联网读取验证;未发送已读回执 |
HR 对应的岗位资料 |
| 已验证非空会话的姓名、公司、岗位、薪资和业务会话关联 |
业务会话接收方核对 |
| 已用现有会话验证接收方和岗位身份;不会据此自动发送 |
发送文本 | Chat SDK | 已实现确认、预约、单次发送及历史核对;仅离线测试,真实发送待明确批准 |
普通首次沟通 |
| 已完成真实开聊及业务会话、岗位接收方核对;平台自动招呼不等于自定义正文已发出 |
普通社招附件投递 | 前置检查 → 联系 → | 已实现权限检查与回读;真实投递待明确批准 |
聊天中申请交换附件简历 |
| 源码确认;尚未发送实测 |
处理对方的附件简历交换请求 |
| 源码确认;尚未发送实测 |
面试邀请后补发附件 |
| 源码确认;只适用于对应邀请流程 |
某些岗位类型的正式投递 |
| 源码确认;尚未投递实测 |
上传新的附件简历 | 上传组件 → | 尚未核对完整上传凭证、存储与绑定链路;未实现 |
调用约束:
IM 登录:将鱼泡返回的
imAccount用作 SDKuserID,imToken用作userSig;获取资料不等于 SDK 登录成功,必须等待 SDK 就绪。生产环境 SDKAppID 来源为公开前端的环境配置,不能使用开发者自己新建的 IM 应用替代。文本:网页使用 C2C 会话,接收方为对方的 IM 账号,并设置
needReadReceipt=true。成功要核对 SDK 返回的消息 ID、接收方及内容,并回查记录;发送受理、送达、已读是不同状态。主动交换附件:参数为
{conversationId, exchangeType: "EXCHANGE_RESUME_FILE", extData: {resumeFileId}}。这里的业务conversationId不能直接拿腾讯云的conversationID或岗位 ID 替代。需要确认所选文件属于本人,并核对平台审核状态和该会话的业务权限。接受附件请求:使用
exchangeMsgId、agree、exchangeType和所选附件,不能当作主动发送流程调用。面试邀请:
{inviteId, fileId}只适用于对应邀请,不是通用发简历接口。校招等投递分支的源码参数包括
jobIds、resumeSubUuid、infoKind、type、infoId。必须按真实岗位类型走相应分支,不能只传一个 job ID。chat/init、im/call和投递预检查不在只读工具的允许列表中,只能由获确认的单条执行器调用。交换简历接口尚未接入执行器;不能为了探测参数而对真实招聘方执行。
腾讯云 SDK 官方参考:消息发送、客户端 API。SDK 支持通用文件消息,不代表鱼泡接受用通用文件消息代替业务简历交换流程。
验证
.\.venv\Scripts\python.exe -m pytest -q --basetemp .tmp/pytest-run
# JavaScript 适配层的离线测试(开发环境需 Node.js):
node --test tests/chat_reader.test.cjs
# 显式联网,只读搜索、详情及本地草稿,不投递或发送:
.\.venv\Scripts\python.exe -X utf8 tests/smoke_stdio.py
# 需先明确授权并配置 YUPAO_SESSION_FILE;仅核验账号、简历列表和 IM 资料:
.\.venv\Scripts\python.exe -X utf8 tests/smoke_authenticated.py
# 已安装 chat 可选依赖、下载 SDK 并明确授权读取当前账号的会话后:
.\.venv\Scripts\python.exe -X utf8 tests/smoke_chat.py
# 本人明确指定项目/简历文本文件,只读搜索、本机存储与匹配材料准备:
$env:YUPAO_MATCH_TEXT_FILE = "C:\path\to\private-profile.txt"
.\.venv\Scripts\python.exe -X utf8 tests/smoke_workflows.py2026-10-30:MCP 发现 23 个工具,82 项 Python 测试、10 项 JavaScript 测试通过。真实只读验证覆盖搜索、完整 JD、账号、附件、SDK 会话与消息、本地预设筛选、候选池、宿主 AI 分析保存和消息预览;写入关闭时执行工具确实返回拒绝。经明确批准的首次真实尝试验证了开聊及接收方回查,但正文发送结果仍未确认;修复后的正文发送尚待新的明确批准,附件投递未实测。离线回归另覆盖 SDK_READY 之后的会话同步等待和发送调用阶段记录。
联网验证脚本会将本机结果保存到 .local/live-smoke-result.json、.local/authenticated-mcp-smoke.json、.local/chat-mcp-result.json。会话名单与消息仅保存在本机,不随仓库分发。账号文件、草稿、虚拟环境和缓存均在 .gitignore 中排除。
接口来源与限制
接口依据为当日鱼泡官方网页加载的公开构建 1029202661437 / release 9.40.0,主要模块为 70859(请求格式)、21550(HTTP 客户端)和岗位推荐页中的搜索参数构造。
搜索:
POST https://yupao-prod.yupaowang.com/job/v2/search/job/search公开详情:
POST https://yupao-prod.yupaowang.com/job/v3/detail/infoSeo
请求格式按公开客户端实现独立改写,含嵌套对象排序、timestamp、nonce 与摘要;这是普通请求格式,不代替账号认证。没有修改网站脚本或关闭安全检查。公开前端版本变动可能影响兼容性;接口返回失败、验证或限流时停止,不能将空数据或缓存冒充实时成功。
开源许可
本项目代码采用 MIT License。这是独立社区项目,与鱼泡官方无隶属关系。鱼泡名称、服务和返回的招聘内容不属于本项目的授权范围。
Available Tools
23 toolsyupao_annotate_jobC
修改本机岗位标签、备注及 candidate/priority/excluded/archived 状态。
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | ||
| tags | Yes | ||
| status | No | candidate | |
| job_biz_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is partly covered. However, the description does not disclose the critical mutation semantics: whether 'tags' and 'note' (both required) replace or merge existing values, whether omitted 'status' resets to the default 'candidate', or what the call returns. For an overwrite-style annotation tool this gap is significant.
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?
A single compact sentence with the resource and the affected fields front-loaded and no filler. Brevity is not wasteful, though it tips toward under-specification rather than crispness.
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?
This is a mutation tool with no output schema, 0% parameter description coverage, and no annotation detail beyond generic hints. The description supplies the status enum but omits replace-vs-merge behavior, job identifier semantics, and any result expectation, leaving an agent insufficiently equipped to call it safely.
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% across 4 parameters, so the description carries real weight. It usefully enumerates the allowed status values (candidate/priority/excluded/archived), which the schema does not (no enum, only a default of 'candidate'). It says nothing about 'job_biz_id' or the expected shape/format of the tags array and note string, so compensation is only partial.
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?
States a specific verb ('修改' / modify) and resource ('本机岗位' local job annotations) with the concrete field set (tags, note, status). An agent can tell this is an annotation/status-writing tool rather than a search or save tool, though it does not name a sibling such as yupao_save_job to delineate the boundary.
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 guidance on when this tool should be used instead of yupao_save_job, yupao_remove_saved_job, or the preset tools, and no prerequisites (e.g. whether the job must first be found via yupao_search_jobs or yupao_get_job_detail). Usage is only inferable from the field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_capabilitiesARead-only
查看已实现、已验证及尚未启用的能力,不请求鱼泡。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds operational context beyond them: this tool makes no request to 鱼泡, which means no authentication, no rate-limit exposure, and no remote side effects. It does not say whether the capability list is static or reflects runtime state, which is a minor remaining gap.
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?
It is one compact sentence in two clauses, front-loading the three capability states and then the key constraint. Nothing is wasted, and nothing important is buried.
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, full annotation coverage, and no output schema, the definition is nearly complete: it says what is enumerated and that no remote call occurs. The one thing an agent cannot infer is the shape of the returned data, such as whether capabilities come back as names with status flags; the description does not close that gap, but the gap is small for an introspection tool.
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 takes zero parameters, so the baseline is 4 and there is no parameter semantics to document. The description correctly spends no words on inputs, which 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 gives a specific verb ('查看') and a specific resource (capabilities), broken down into three concrete states: implemented, verified, and not-yet-enabled. It clearly does not overlap with the action-oriented sibling tools, so an agent can distinguish it. It falls just short of 5 because it never states whose capabilities these are, namely the MCP server's own feature set, although the clause '不请求鱼泡' strongly implies that they are local.
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?
'不请求鱼泡' tells the agent that this tool is a cheap local call with no network round trip, which implicitly makes it safe to call before other operations. However, the description never says when to prefer this tool over simply attempting a sibling action, and it names no alternatives or prerequisites. The usage is therefore implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_check_messaging_sessionARead-only
核对鱼泡能否提供 IM 登录资料,不返回凭证;未登录 SDK,不读取聊天或发送消息。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, but the description adds real behavioral guarantees beyond them: it does not return credentials, does not read chats, and does not send messages. These negative guarantees are exactly the context an agent needs to trust a call with openWorldHint=true, though return behavior is not described.
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?
A single dense sentence with two clauses, front-loading the purpose and immediately following with the safety scope. No filler, nothing repeated.
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 no output schema and no parameters, the description carries the full disclosure burden, yet it never says what the check returns (e.g., a boolean availability flag, an error, a status field). The negative disclosures are strong, but the positive result shape is missing for a diagnostic tool whose value is entirely in its answer.
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 takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter text is needed.
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?
States a specific verb+resource: check whether Yupao can supply IM login material, with an explicit scope limit (no credentials returned). It does not name or differentiate from the sibling yupao_check_session, leaving the agent to infer the distinction, so it stops short of 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 phrasing '核对...能否提供 IM 登录资料' implies a preflight check before messaging, and '未登录 SDK' hints at a prerequisite state. However, there is no explicit when-to-use/when-not statement and no named alternative such as yupao_check_session or yupao_prepare_message, so the guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_check_sessionARead-only
检查明确配置的本机鱼泡登录文件,不读取浏览器凭证,不返回 token。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, non-destructive, and open-world; the description adds useful behavioral constraints by stating it does not read browser credentials and does not return tokens. It still does not describe the return status or error behavior, but the privacy and scope disclosures are valuable.
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 compact sentence with the core action front-loaded and two relevant exclusions following. Every clause earns its place, with no filler or repetition.
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 and no output schema, the description carries the full burden of explaining selection and behavior. It explains scope and exclusions, but it does not say what a successful check returns (for example, status, account identity, or expiration), leaving operational ambiguity.
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 no input parameters, so there is nothing for the description to clarify at the parameter level. With zero parameters and 100% schema coverage, baseline 4 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 names a specific verb (检查) and resource (本机鱼泡登录文件) and narrows scope to explicitly configured files while excluding browser credentials. It is clear, but it does not explicitly distinguish itself from session-related siblings such as yupao_check_messaging_session.
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 verifying a locally configured Yupao login file and explicitly rules out browser-credential lookup. However, it gives no explicit when/when-not guidance or named alternative, so the agent must infer selection from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_execute_actionA
执行已预览的单条操作;必须由真人确认。没有自动批准参数;默认关闭,结果不明不重发。
| Name | Required | Description | Default |
|---|---|---|---|
| action_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say readOnly=false, openWorld=true, destructive=false; the description adds real value on top with its human-in-the-loop requirement, the absence of an auto-approve flag, the default-off stance, and the idempotency warning against resending on ambiguous results. It does not say what a given action actually does or whether it can be irreversible despite destructiveHint=false, which is a notable remaining gap.
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?
Four short clauses, front-loaded with the core instruction and each carrying behavioural content — no filler. '默认关闭' is slightly telegraphic (default off for what — the tool, or an auto-approve switch?), which keeps it from a 5.
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 one-parameter mutating tool with no output schema and zero schema coverage, the safety story is well covered, but two things an agent needs are missing: how to resolve action_id, and what a success vs. failure response means. Adequate but with clear gaps.
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 single parameter action_id has 0% schema description coverage, so the description must compensate, and it does not — nothing explains what an action id is or where to obtain it (presumably from yupao_get_action or a yupao_prepare_* call). '已预览的' hints at provenance but gives no format or sourcing guidance.
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 names a concrete verb (执行/execute) and a bounded resource (a single, already-previewed action), making clear this is the confirmation step rather than preparation. It does not name a sibling, so it falls short of a 5, but the phrase '已预览' implicitly separates it from the yupao_prepare_* and yupao_get_action 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?
It sets clear conditions: the action must already have been previewed, and a real human must confirm it — no auto-approval parameter exists. It also gives explicit retry guidance ('结果不明不重发' — don't resend when the outcome is unclear). It stops short of naming alternatives such as yupao_get_action for fetching the action id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_get_actionARead-only
读取具体操作的完整预览、确认摘要、执行状态和回执,不执行任何发送。
| Name | Required | Description | Default |
|---|---|---|---|
| action_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine context beyond them: it enumerates what is returned (preview, confirmation summary, execution status, receipt) and restates the non-sending guarantee, which matters for a tool sitting next to an execute sibling.
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?
One sentence, front-loaded with the resource and the returned artifacts, closing with the key constraint. Nothing is redundant.
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 no output schema, the description usefully names the return contents and the non-mutating behavior. It falls short only on the provenance of action_id and error behavior for invalid ids.
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 single parameter action_id has 0% schema description coverage, so the description must carry the burden. '具体操作' only loosely implies that action_id identifies an action; it says nothing about where the id comes from (presumably the prepare_* tools) or what happens with an unknown id.
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 pairs a specific verb with its resource: '读取具体操作' (read a specific action) plus the enumerated artifacts it returns (preview, confirmation summary, status, receipt). The closing clause '不执行任何发送' implicitly separates it from yupao_execute_action, though it never names that sibling.
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?
Usage is only implied: an agent can infer this is the read-side counterpart to yupao_execute_action, but there is no explicit when-to-use statement, no mention of calling it before executing, and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_get_job_detailARead-only
根据搜索结果的 job_biz_id 读取完整 JD,供调用方 AI 进行岗位分析。
| Name | Required | Description | Default |
|---|---|---|---|
| job_biz_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that the return is a full JD intended for analysis, but says nothing about failure behavior when the ID is invalid or stale, or about payload size.
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?
A single front-loaded sentence with no filler. The precondition and the purpose are both packed into one clause without repetition of the tool name.
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 one-parameter read-only fetch with no output schema, the description covers what is fetched (full JD) and why it exists (job analysis). Only edge-case behavior for a bad job_biz_id is left unaddressed.
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 coverage is 0%, so the schema carries no semantics for job_biz_id. The description compensates by specifying the parameter's provenance (it comes from search results) and its expected form as an ID string, which is exactly what an agent needs to source it correctly.
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?
States a specific verb and resource: read the complete JD for a given job_biz_id, plus its intended downstream use (岗位分析). This clearly separates it from yupao_search_jobs, though it does not name that sibling explicitly.
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 phrase '根据搜索结果的 job_biz_id' implies the prerequisite that this tool is used after a search, but there is no explicit when-to-use/when-not guidance and no named alternative when the caller already has a full JD.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_get_messagesBRead-only
分页读取已同步会话的聊天记录;不发送消息或已读回执,不返回附件下载地址。
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | ||
| next_req_message_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive/openWorld, but the description adds real behavior: results are paginated, only already-synced conversations are readable, reading does not trigger read receipts, and attachment download URLs are omitted from results. These are meaningful side-effect disclosures beyond the 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?
A single front-loaded sentence with the core action first and exclusions after; every clause earns its place with 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?
No output schema and 0% parameter coverage mean the description should explain the cursor parameter and at least sketch the returned message shape; instead it omits both, leaving an agent unsure how to page or what fields come back.
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% for both parameters, so the description must compensate, yet it never explains conversation_id's origin or how next_req_message_id acts as a pagination cursor (where it comes from, how to continue). It only says 'paginated' generically.
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?
States a specific verb+resource: paginated read of synced conversation chat history. The negative clauses ('does not send messages or read receipts') distinguish it from send/prepare_message siblings, though no sibling is named directly.
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?
Implies usage (read history of an already-synced conversation) and lists what it won't do, but never says when to call it versus alternatives like yupao_list_conversations to obtain a conversation_id or yupao_check_messaging_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_list_conversationsARead-only
通过官方 SDK 同步会话并读取 HR 联系人资料;默认排除系统助手。需要 chat 依赖,不标记已读。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| include_system | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/non-destructive, and the description adds genuinely new behavioral context: it syncs via the official SDK, requires the chat dependency, and notably does NOT mark messages as read. These are meaningful traits beyond structured fields, though return format and pagination remain undisclosed.
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?
A single front-loaded sentence with three clauses, each carrying distinct information (sync source, default exclusion, no read-marking). Zero waste.
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 read-only list tool with no output schema, the description conveys enough to call it correctly but omits pagination semantics for limit/offset and any sense of the returned structure. Adequate but with clear gaps around the parameters.
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%, so the description must compensate. It only explains the include_system behavior ('默认排除系统助手'), leaving limit and offset entirely undocumented in both schema and description. Partial compensation is insufficient for a list tool with 3 paginated parameters.
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?
States a specific verb (sync/list conversations) and resource (conversations + HR contact profiles), which distinguishes it from yupao_get_messages. It's clear what the tool does, though it doesn't explicitly name a sibling alternative to route the agent.
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?
Implies usage (requires the chat dependency, excludes system assistants by default) but never states when to use this over yupao_get_messages or yupao_check_messaging_session. The prerequisite note is useful but not an explicit when/when-not guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_list_matchesBRead-only
读取和排序本机匹配分析,标明保存的 JD 是否已更新;分数不是录用概率。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| job_biz_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare that the tool is a safe read operation (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description adds limited but real behavioral context: results are sorted, saved JD entries are flagged as updated, and the score is explicitly not a hiring probability, which is a useful expectation to set. However, it does not mention pagination, the default limit of 100, or what the data reflects locally.
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 compact sentence with a front-loaded action. Every part carries information: it states the action, the sorting, the update flag, and the caveat about scores. 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?
For a read-only listing tool with no output schema and rich annotations, the description largely covers what the tool returns: match analyses and JD-update flags. The main gap is that it does not explain the two undocumented parameters, so an agent cannot know how to filter results by job or control the result count.
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%, so the description carries the full burden of explaining the two parameters, both of which lack any description in the schema. The description does not mention 'limit' or 'job_biz_id' at all, so an agent could not infer the meaning of 'job_biz_id' (a filter by job) or the default cap of 100 results.
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 specific verb and resource: '读取和排序本机匹配分析' (read and sort local match analyses). That clearly distinguishes this read-only listing tool from its siblings yupao_prepare_match and yupao_record_match, which prepare or create matches. The purpose is clear, though the scope (all matches vs. filtered by job) is not stated explicitly.
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 gives no guidance on when to use this tool instead of yupao_prepare_match or yupao_record_match. It never states when this listing should be preferred, nor when it should not be used. Only the phrase '读取' implies a listing use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_list_presetsARead-only
读取本机保存的搜索预设,不请求鱼泡。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description reinforces the no-network trait (useful but largely duplicative of openWorldHint=false) and says nothing about what is returned or whether presets persist between sessions.
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?
A single short sentence with the core action front-loaded and the scoping caveat second. No filler or restatement of the tool name.
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 no output schema, the description could usefully say what a returned preset looks like (names, IDs, search criteria) or that an empty list is possible. For a 0-parameter local read tool this is minor, but the return shape is left entirely unspecified.
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?
Zero parameters with 100% schema coverage, so there is nothing for the description to disambiguate. Baseline 4 applies.
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?
States a specific verb and resource ('读取本机保存的搜索预设' – read locally saved search presets) and adds a scope qualifier ('不请求鱼泡') that separates it from network-touching siblings like yupao_search_preset. It never names those siblings directly, so differentiation is implicit rather than explicit.
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 'local only, no network request' clause implies when to prefer this over yupao_search_preset (e.g., offline or avoid session requirements), but the choice is left to inference. There is no explicit 'use this when… / use X instead when…' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_list_resume_attachmentsARead-only
列出本人已上传的附件简历元数据。for_chat=true 用于聊天附件;不下载或发送简历。
| Name | Required | Description | Default |
|---|---|---|---|
| for_chat | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true and destructive=false; the description adds that only metadata is returned and that no download/send occurs, which is meaningful behavioral context beyond the annotations. Return field details are absent but the safety profile is well covered.
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 compact sentences with the main purpose front-loaded and the param hint plus negative scope following directly. 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?
For a simple read-only single-param listing tool with no output schema, the description covers purpose, param meaning, and what is not done. It could mention what metadata fields are returned, but that is a minor gap against annotations that already carry the safety profile.
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?
With 0% schema coverage, the description carries the param burden and does so: it explains that for_chat=true targets chat attachments, complementing the schema's default of false. One param, one clear semantic addition.
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?
States a specific verb (list) and resource (uploaded resume attachment metadata) with an explicit scope of '本人已上传'. The negative clause clarifies it is not a download/send tool, though no direct sibling is named for differentiation.
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?
Explains that for_chat=true selects chat attachments and explicitly states it does not download or send resumes, giving clear when-to-use context. It stops short of naming an alternative tool for downloading or sending, but the scope is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_list_saved_jobsCRead-only
按标签、状态读取本机候选池,不请求平台。
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No | ||
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=false, so safety and locality are known. The description reinforces this with '不请求平台', which is consistent and mildly useful, but it omits any behavioral detail such as whether an empty result means no saved jobs, how limit truncates, or whether the data can be stale relative to the platform.
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?
A single compact sentence with no filler, and the filter information is front-loaded before the locality note. It is efficient, though the terseness comes partly from omitted information rather than discipline.
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 three undocumented parameters, no output schema, and no enum constraints, an agent cannot know what valid tag/status strings are or what limit does. The description does not fill that gap.
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%, so all three parameters must be explained here. The description covers tag and status only at the level of naming them, and says nothing about the limit parameter (default 100) or accepted tag/status values (no enums in 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 names the resource (本机候选池, the local candidate pool) and two filters (tag, status), and the 'does not request platform' clause signals it is a local read. However, it never says this returns *saved jobs*, so the relationship to the tool name and to the sibling yupao_list_matches remains ambiguous.
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?
There is no indication of when to pick this over yupao_list_matches or yupao_search_jobs, nor any prerequisite. The only usage-adjacent signal is that it works offline against the local pool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_prepare_applicationB
预览单条指定附件投递,显示发布者、简历及权限;准备阶段不发起沟通或投递。
| Name | Required | Description | Default |
|---|---|---|---|
| job_biz_id | Yes | ||
| resume_file_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply the safety profile (destructiveHint=false, openWorldHint=true), and the description usefully clarifies that no communication or application is actually sent. But readOnlyHint=false implies some server-side state change during 'preparation', and the description's '预览' framing never reconciles that tension or says what, if anything, gets persisted.
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?
A single dense sentence with the scope and the non-mutating guarantee front-loaded; no filler. It is arguably too short for the amount of undocumented behavior it must carry.
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 no output schema and 0% parameter documentation, the description carries the full burden. It does say what the preview returns (publisher, resume, permissions) and what it does not do, but omits identifier sourcing and permission-failure behavior, leaving real gaps for a two-param tool.
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% for both parameters, so the description must compensate. It only alludes to '指定附件' (the resume_file_id) and says nothing about job_biz_id — its format, source, or whether it comes from yupao_search_jobs results — nor about the empty-string default on resume_file_id.
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?
A clear verb (预览/prepare-preview) plus a specific resource (单条指定附件投递 — a single application with a specified attachment resume), and it lists what the preview surfaces (publisher, resume, permissions). It is distinguishable from the mutation siblings like yupao_execute_action, though the 'prepare' prefix family (prepare_match, prepare_message) is not explicitly contrasted.
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?
'准备阶段不发起沟通或投递' signals this is a dry-run/preflight step, which implies 'use before committing'. However, it never names the follow-up tool (e.g. yupao_execute_action) or states when a preview is unnecessary, so the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_prepare_matchB
保存完整 JD 与本人提供的简历材料,生成供当前宿主 AI 分析的材料与引文要求;不另调模型。
| Name | Required | Description | Default |
|---|---|---|---|
| job_biz_id | Yes | ||
| resume_text | Yes | ||
| profile_name | No | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the write nature is known. The description adds genuine context beyond annotations: that it does not call an external model and that it emits citation requirements. It still omits where materials are stored, side effects, and what the generated output contains.
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?
A single front-loaded sentence that opens with the primary action and packs the non-model-call caveat and citation-requirements detail without filler. Efficient and appropriately sized.
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?
This is a mutating tool with no output schema, 0% schema coverage, and 3 parameters. The description leaves profile_name undocumented and never explains the generated materials/citation structure or the persisted side effects, so it is not complete enough for an agent to invoke confidently.
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%, so the description must carry parameter meaning. It loosely maps '完整 JD' to job_biz_id and '简历材料' to resume_text, but gives no format or constraints, and profile_name (with default 'default') is never mentioned at all.
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?
States specific verbs (保存/generate) and a specific resource (full JD plus user-provided resume materials), and adds that it produces materials and citation requirements for the host AI. This clearly distinguishes it from record_match (which would persist results), though it does not name siblings explicitly.
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?
Usage is implied: it is a preparation step that readies material for the host AI to analyze ('供当前宿主 AI 分析'), with '不另调模型' clarifying that it does not invoke a model. However, it never states when to use this versus alternatives like record_match or prepare_application, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_prepare_messageB
预览单条消息;已有会话须核验关联,start_conversation=true 可预览免费首次开聊。准备阶段不发送。
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| job_biz_id | Yes | ||
| conversation_id | No | ||
| start_conversation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish destructiveHint=false and openWorldHint=true, so the bar is lower, and the description usefully adds that nothing is sent at this stage plus a constraint about verifying association for existing threads. It omits what is persisted or returned by the preparation step, and "预览" sits in mild tension with readOnlyHint=false if it does create a prepared record.
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 compact clauses with the core action front-loaded and zero filler. Brevity shades into obscurity in spots, since "须核验关联" is terse to the point of being unclear, but nothing is wasted.
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?
This is a non-read-only tool with no output schema and four undocumented parameters, so the description carries the full burden — yet it never says what the preparation returns (an id? previewed content?) that the agent would need in order to execute it later. For a two-stage prepare/execute flow, that is a substantial gap.
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% — all four parameters carry only titles — so the description must compensate and largely does not. It does explain start_conversation's meaning (free first chat) and gestures at conversation_id via the association-verification clause, but job_biz_id (where it comes from) and text are undocumented anywhere.
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?
States a specific verb and resource ("预览单条消息" — preview a single message) and removes the biggest ambiguity by declaring "准备阶段不发送" (preparation does not send). It does not differentiate itself from siblings such as yupao_execute_action, which presumably consumes the prepared message, so an agent cannot fully route between them from this text alone.
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?
Gives conditional guidance for two cases: existing conversations require association verification, and start_conversation=true covers the free first-time chat. However it never names an alternative tool or says when NOT to use this one, and the path from preview to actually sending (yupao_execute_action) is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_record_matchB
保存宿主 AI 的逐项匹配分析;校验 JD/简历引文,区分未知与不满足并汇总权重。
| Name | Required | Description | Default |
|---|---|---|---|
| analysis | Yes | ||
| match_input_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-destructive, closed-world write. The description usefully adds that validation of citations occurs and that 'unknown' is distinct from 'not satisfied' — real behavioral context. It does not say what happens when validation fails (reject, repair, or store anyway) or whether re-recording overwrites prior analysis, which are the biggest open questions for a write tool.
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?
A single dense sentence that front-loads the action and then the processing behaviors. Nothing is wasted, though the two clauses are separated only by a semicolon, making it easy to skim past the behavioral 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?
Given a nested, undocumented object payload, no output schema, and only 0% schema coverage, the description should define the analysis object's expected contents and the validation outcome. It hints at these but leaves an agent unable to call the tool correctly without trial and error.
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 core parameter `analysis` is a free-form nested object with additionalProperties:true, so the schema provides essentially no guidance. The description gestures at the payload's semantics (per-item analysis, citations, unknown vs unmet, weighted aggregation) but gives no field names or structure, leaving the agent to guess the object shape.
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 gives a concrete verb+resource: persisting the host AI's item-by-item match analysis, plus the extra processing it performs (validating JD/resume citations, separating unknown from unmet, aggregating weights). This separates it from yupao_list_matches and yupao_prepare_match, though it never names those siblings explicitly.
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 phrase '宿主 AI 的逐项匹配分析' implies it is called after analysis has been produced (i.e., downstream of yupao_prepare_match), but no when/when-not condition or alternative is stated. An agent can infer the lifecycle position but not the boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_remove_presetC
移除指定本机搜索预设,不操作平台。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says the tool removes a preset and only affects the local machine, but the annotations declare destructiveHint=false. Since removing a saved preset is a deletion of local persisted data, this directly contradicts the non-destructive annotation.
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 front-loaded sentence with no wasted text. It is appropriately terse for a simple one-parameter tool, though the terseness contributes to missing behavioral and parameter 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 mutation tool with one undocumented parameter and no output schema, the description should clarify success/failure behavior and deletion semantics. It states the local-only scope, but the destructiveHint contradiction and missing parameter semantics leave important gaps.
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?
There is one required parameter, name, with 0% schema description coverage. The description implies that the parameter identifies the preset to remove, but it does not clarify matching behavior, exactness, or what happens if the name does not exist.
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 names a specific verb and resource: removing a specified local search preset. It also scopes the action to the local machine rather than the platform, which helps distinguish it from platform-side operations, though it does not explicitly name sibling preset 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?
Usage is implied by the verb 'remove' plus the local-preset scope, but the description does not say when to use this versus save_preset, search_preset, or list_presets, nor does it state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_remove_saved_jobA
移除指定本机候选岗位,不撤销平台投递或沟通。
| Name | Required | Description | Default |
|---|---|---|---|
| job_biz_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only but also not destructive in the platform sense. The description adds valuable behavioral context by clarifying that removal is local and does not undo platform submissions or communications, which aligns with destructiveHint=false and prevents a serious misunderstanding.
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?
One short sentence, front-loaded with the core action and immediately followed by the key scope clarification. There is no wasted wording.
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 one-parameter removal tool, the description covers purpose and important non-effects, but it leaves the only parameter undocumented and does not describe what a successful removal returns or how to obtain the job_biz_id. Given no output schema and zero parameter coverage, this is only minimally complete.
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 sole parameter job_biz_id has 0% schema description coverage, and the description does not mention it or explain its format, source, or meaning. The phrase '指定' implies a specific job must be identified, but provides no compensating semantics for the undocumented parameter.
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?
States a specific verb and resource: remove a specified local candidate job. It also clarifies that this does not revoke platform applications or communications, which meaningfully scopes the operation, though it does not name sibling tools that could be alternatives.
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 says when to use it by describing the operation as local saved-job removal and explicitly excludes platform application/communication changes. However, it does not provide explicit when-to-use guidance versus related tools like yupao_save_job, yupao_list_saved_jobs, or yupao_remove_preset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_save_jobB
读取完整 JD 保存到本机候选池,按 job_biz_id 去重,保留备注和标签。
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| tags | No | ||
| job_biz_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered; the description adds genuinely useful behavior beyond that by disclosing dedupe by job_biz_id and preservation of note/tags. It stops short of saying what happens when the job is already saved (overwrite vs merge of existing note/tags), which is the key ambiguity for a repeat call.
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?
A single compact sentence with the primary action front-loaded and no filler. The density is high but each clause (full JD, local pool, dedupe key, note/tags) contributes distinct 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?
For a 3-parameter mutation with no output schema and zero schema description coverage, the description should say what a successful call returns (e.g., saved record id or created-vs-existing flag) and confirm whether tags/note replace prior values. Those gaps remain, though the core action and dedupe semantics are covered.
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%, so the description carries the burden, and it does name all three parameters in effect: job_biz_id as the dedupe key, plus note and tags as preserved values. It adds no format, length, or defaulting detail (tags nullable, note defaulting to empty), so it partially but not fully compensates for the schema 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 names a concrete verb and resource: it reads the full JD and writes it into the local saved-job pool, with dedupe key and preserved fields called out. That is enough to distinguish it from yupao_list_saved_jobs or yupao_remove_saved_job, though it never explicitly contrasts itself with the nearby yupao_annotate_job, which also touches note/tags.
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?
There is no statement of when to call this instead of yupao_get_job_detail (which also fetches the JD) or yupao_annotate_job (which also manages note/tags), and no prerequisites or preconditions are given. Usage is only inferable from the verb 'save'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_save_presetC
保存搜索条件;薪资为元/月,学历与经验表示本人条件。平台未核实的过滤在本机执行。
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | 上海 | |
| name | Yes | ||
| keywords | Yes | ||
| education | No | ||
| page_size | No | ||
| salary_max | No | ||
| salary_min | No | ||
| excluded_terms | No | ||
| required_terms | No | ||
| experience_years | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the mutation and safety profile are partly covered. The description adds that unverified platform filters run locally ('平台未核实的过滤在本机执行'), which is useful behavioral context, but it does not explain persistence, overwrite behavior, or whether an existing preset name is replaced.
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 definition is compact and front-loaded, with purpose stated first and parameter semantics following. It is efficient, though the terse phrasing leaves important behavior implicit.
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 mutation tool with 10 parameters and no output schema, the description is incomplete. It omits key details such as whether the preset requires a unique name, whether saving overwrites an existing preset, what is returned, and session requirements.
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% with 10 parameters, so the description must carry the burden. It clarifies salary units ('元/月') and that education/experience refer to the person's own conditions, but leaves name, keywords, excluded_terms, required_terms, page_size, and city semantics undocumented.
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 a specific verb and resource: '保存搜索条件' (save search criteria). It is distinguishable from siblings like yupao_search_preset, yupao_list_presets, and yupao_remove_preset, though it does not explicitly name or contrast them.
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?
There is no guidance on when to use this tool versus alternatives such as yupao_search_jobs or yupao_search_preset. It also does not state prerequisites, exclusions, or typical scenarios for saving a preset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_search_jobsARead-only
按关键词与城市实时搜索鱼泡岗位,分页返回结构化结果。不会投递或打招呼。
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | 上海 | |
| page | No | ||
| keywords | Yes | ||
| page_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds useful behavioral context by stating it searches in real time, returns paginated structured results, and will not apply or greet, which reinforces the safe read-only nature of the tool.
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 two short sentences with no wasted language. The core purpose and the non-action constraint are front-loaded and easy to scan.
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 covers the basic search behavior and explicitly rules out application/greeting side effects. For a search tool with four parameters, no schema descriptions, and no output schema, it could do more to explain pagination behavior, defaults, and result characteristics.
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%, so the description must carry parameter meaning. It mentions keyword and city search as well as pagination, which maps conceptually to all four parameters, but it does not explain defaults, page-size limits, or expected formats.
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 names a specific verb and resource: real-time job search by keyword and city. It distinguishes itself from action-oriented siblings by explicitly saying it will not apply or greet, though it does not explicitly separate itself from detail or saved-job 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 the tool is for searching jobs and clarifies that it performs no application or greeting actions. However, it does not explicitly state when to use this instead of alternatives such as getting job details or listing saved jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yupao_search_presetARead-only
按预设搜索并读取完整 JD 后本机筛选;每页最多 10 个详情,未知条件单列待核实。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's job is to add operational context, which it does: it discloses that each page yields at most 10 full JD reads and that unmatched criteria are surfaced separately as items to verify. That volume pacing and the 'unknown conditions' handling are real behavioral traits not present in the 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 tight clauses separated by a semicolon, with the core action front-loaded and no filler. Density comes at some cost to parseability for non-Chinese readers, but every clause carries 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?
With no output schema, the description should say more about what comes back (a result list plus a separate unresolved-criteria bucket is only hinted at via '单列待核实'). It also omits prerequisites such as session validity or what happens if the named preset does not exist, which matters given the sibling yupao_check_session and yupao_list_presets tools.
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%, so the description bears the burden. It implies `name` is a preset identifier ('按预设') and that `page` controls paging with '每页最多 10 个详情', but it never explicitly defines either parameter, give the page-size constant in relation to the param, or state whether page is 1-indexed.
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?
States a specific verb and resource ('按预设搜索' = search by preset) plus concrete follow-on behavior (reads full JD, local filtering). An agent can tell this is a preset-driven search rather than a raw keyword search, though the distinction from the sibling yupao_search_jobs is never made explicit.
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 phrase '按预设' implies the precondition that a preset must exist (matching the required `name` param), and '读取完整 JD 后本机筛选' implies this is the heavyweight search to use when local filtering of full postings is wanted. But there is no explicit when-to-use, no exclusions, and no pointer to yupao_search_jobs or yupao_list_presets as alternatives.
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.
23 tool updates
v0.4.1- First observed
yupao_annotate_job - First observed
yupao_capabilities - First observed
yupao_check_messaging_session - First observed
yupao_check_session - First observed
yupao_execute_action - First observed
yupao_get_action - First observed
yupao_get_job_detail - First observed
yupao_get_messages - First observed
yupao_list_conversations - First observed
yupao_list_matches - First observed
yupao_list_presets - First observed
yupao_list_resume_attachments - First observed
yupao_list_saved_jobs - First observed
yupao_prepare_application - First observed
yupao_prepare_match - First observed
yupao_prepare_message - First observed
yupao_record_match - First observed
yupao_remove_preset - First observed
yupao_remove_saved_job - First observed
yupao_save_job - First observed
yupao_save_preset - First observed
yupao_search_jobs - First observed
yupao_search_preset
TDQS
Scored across 23 tools
Tools are mostly grouped into clear workflows: job search/detail, match preparation/recording, presets, saved jobs, sessions, messaging, and action preview/execution. A few boundaries require careful reading, especially check_session vs check_messaging_session, and prepare_message/prepare_application vs execute_action, but descriptions generally clarify them.
All tools share the yupao_ prefix and snake_case style, with near-uniform verb_noun naming such as search_jobs, get_job_detail, save_preset, and remove_saved_job. The noun-only capabilities tool is a minor exception but remains unambiguous.
The 23-tool surface covers many subdomains, and most tools are distinct, but it is heavy for an MCP server. Several CRUD/lifecycle groups, especially presets and saved jobs, could potentially be consolidated without losing much capability.
Coverage is broad: search, JD retrieval, matching, presets, saved jobs, sessions, conversations, message/application previews, and gated execution are all represented. Minor gaps remain, such as no explicit single-match retrieval/update path and limited resume attachment operations beyond listing metadata.
Maintenance
Related MCP Connectors
Public MCP server for discovering open jobs. Search, filter, and get application links.
Search jobs, review confirmed CV facts and prepare documents with scoped OAuth access.
A jobs data API and MCP server. Every listing comes from the employer's own career site, an ATS feed or a government employment service, never resold from another board. Each row names its source and when we last confirmed the vacancy existed, and a role that disappears keeps a closure date and a reason. Six tools: search_jobs, get_job, company_hiring, market_signals, coverage, changes_since.
GetJobzi MCP server for job search, application tracking, and career forecasting.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceProvides MCP tools for job search, inbound recruiter activity triage, conversation inbox access, and guarded profile updates.-
- AlicenseAqualityBmaintenanceEnables searching and retrieving job listings from multiple platforms through MCP.2MIT
- AlicenseAqualityCmaintenanceEnables MCP-compatible agents to search live job postings, score resumes against specific postings, and create or update tracked applications through their pipeline.4MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants to search jobs, retrieve job details, and view or update career-profile data such as experiences, job summaries, career goals, and technical skills through MCP tools.-