{"url_pattern":"^https?://(www\\.)?zhipin\\.com(/.*)?$","site_name":"boss","allowed_domains":["zhipin.com"],"tools":[{"name":"boss_detail","description":"获取 BOSS直聘职位详情（JD、公司信息）","inputSchema":{"type":"object","properties":{"securityId":{"type":"string","description":"Job securityId (from boss/search results)"}},"required":["securityId"]},"handler":"(params) => {\n  const run = async function(args) {\n\n      if (!args.securityId) return {error: 'Missing argument: securityId', hint: 'Run boss/search first to get securityId'};\n      const resp = await fetch('/wapi/zpgeek/job/detail.json?securityId=' + encodeURIComponent(args.securityId), {credentials: 'include'});\n      if (!resp.ok) return {error: 'HTTP ' + resp.status};\n      const d = await resp.json();\n      if (d.code !== 0) return {error: d.message || 'API error', code: d.code};\n      const job = d.zpData?.jobInfo || {};\n      const brand = d.zpData?.brandComInfo || {};\n      const boss = d.zpData?.bossInfo || {};\n      return {\n        job: {\n          name: job.jobName, salary: job.salaryDesc, experience: job.experienceName,\n          degree: job.degreeName, location: job.locationName, address: job.address,\n          skills: job.showSkills, description: job.postDescription, status: job.jobStatusDesc,\n          url: job.encryptId ? `https://www.zhipin.com/job_detail/${job.encryptId}.html` : undefined\n        },\n        company: {\n          name: brand.brandName, stage: brand.stageName, scale: brand.scaleName,\n          industry: brand.industryName, intro: brand.introduce\n        },\n        boss: {\n          name: boss.name, title: boss.title\n        }\n      };\n  };\n  return run(params || {});\n}"},{"name":"boss_search","description":"BOSS直聘搜索职位","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search keyword (e.g. AI agent, 前端)"},"city":{"type":"string","description":"City code (default 101010100=北京, 101020100=上海, 101280100=广州, 101210100=杭州, 101280600=深圳)"},"page":{"type":"string","description":"Page number (default 1)"},"experience":{"type":"string","description":"Experience filter (e.g. 101=在校, 102=应届, 103=1年以内, 104=1-3年, 105=3-5年, 106=5-10年, 107=10年以上)"},"degree":{"type":"string","description":"Degree filter (e.g. 209=高中, 208=大专, 206=本科, 203=硕士, 201=博士)"}},"required":["query"]},"handler":"(params) => {\n  const run = async function(args) {\n\n      if (!args.query) return {error: 'Missing argument: query', hint: 'Provide a job search keyword'};\n      const city = args.city || '101010100';\n      const page = parseInt(args.page) || 1;\n      const params = new URLSearchParams({\n        scene: '1', query: args.query, city, page: String(page), pageSize: '15',\n        experience: args.experience || '', degree: args.degree || '',\n        payType: '', partTime: '', industry: '', scale: '', stage: '',\n        position: '', jobType: '', salary: '', multiBusinessDistrict: '', multiSubway: ''\n      });\n      const resp = await fetch('/wapi/zpgeek/search/joblist.json?' + params.toString(), {credentials: 'include'});\n      if (!resp.ok) return {error: 'HTTP ' + resp.status};\n      const d = await resp.json();\n      if (d.code !== 0) return {error: d.message || 'API error', code: d.code};\n      const zpData = d.zpData || {};\n      const jobs = (zpData.jobList || []).map(j => ({\n        name: j.jobName, salary: j.salaryDesc, company: j.brandName,\n        city: j.cityName, area: j.areaDistrict, district: j.businessDistrict,\n        experience: j.jobExperience, degree: j.jobDegree,\n        skills: j.skills, welfare: j.welfareList,\n        boss: j.bossName, bossTitle: j.bossTitle, bossOnline: j.bossOnline,\n        industry: j.brandIndustry, scale: j.brandScaleName, stage: j.brandStageName,\n        jobId: j.encryptJobId, securityId: j.securityId,\n        url: j.encryptJobId ? `https://www.zhipin.com/job_detail/${j.encryptJobId}.html` : undefined\n      }));\n      return {query: args.query, city, page, total: zpData.totalCount, count: jobs.length, jobs};\n  };\n  return run(params || {});\n}"}]}