[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CKWC0MJ9SCV5YNXBC25P2J":3,"skill-same:01M6CKWC0MJ9SCV5YNXBC25P2J":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":48,"install":49,"resources":62},"01M6CKWC0MJ9SCV5YNXBC25P2J","Job Search MCP",null,"Search for jobs across LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs using the JobSpy MCP server.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Famoghpurohit\u002Fjob-search-mcp\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,5,26,27,28,29,30,31,32,33],"MCP","search","Job Search","google","mcp server","server","linkedin","jobs","job-search","career","jobspy","2026-11-10 10:12:30",false,"---\nname: Job Search MCP\ndescription: Search for jobs across LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs using the JobSpy MCP server.\nslug: job-search-mcp\ntags:\n  - job-search\n  - career\n  - mcp\n  - jobspy\n---\n# Job Search MCP Skill\n\nThis skill enables AI agents to search for jobs across multiple job boards using the **JobSpy MCP Server**. JobSpy aggregates job listings from LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs into a unified interface.\n\n## When to Use This Skill\n\nUse this skill when the user asks you to:\n- Find job listings matching specific criteria (role, location, company, etc.)\n- Search for remote or on-site positions\n- Compare job opportunities across different platforms\n- Get salary information for job postings\n- Find recently posted jobs (within X hours)\n- Search for jobs with \"Easy Apply\" options\n\n## Prerequisites\n\n- **Python 3.10+**\n- **Node.js 16+** (for some server implementations)\n- The JobSpy MCP server installed and configured\n\n---\n\n## Installation & Setup\n\n### Option 1: Python MCP Server (Recommended)\n\n```bash\n# Install with pip\npip install mcp>=1.1.0 python-jobspy>=1.1.82 pandas>=2.1.0 pydantic>=2.0.0\n\n# Or install with uv (faster)\nuv add mcp python-jobspy pandas pydantic\n```\n\n### Option 2: Clone a Pre-built Server\n\n```bash\n# Clone the jobspy-mcp-server repository\ngit clone https:\u002F\u002Fgithub.com\u002Fchinpeerapat\u002Fjobspy-mcp-server.git\ncd jobspy-mcp-server\n\n# Install dependencies\nuv sync\n# or\npip install -e .\n```\n\n### Claude Desktop Configuration\n\nAdd the following to your Claude Desktop config file (`~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json` on macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"jobspy\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"jobspy-mcp-server\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\n**Alternative configuration (Node.js server):**\n\n```json\n{\n  \"mcpServers\": {\n    \"jobspy\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fpath\u002Fto\u002Fjobspy-mcp-server\u002Fsrc\u002Findex.js\"],\n      \"env\": {\n        \"ENABLE_SSE\": \"0\"\n      }\n    }\n  }\n}\n```\n\n---\n\n## MCP Tool Schemas\n\n### 1. `scrape_jobs_tool` (Primary Tool)\n\nSearch for jobs across multiple job boards with comprehensive filtering.\n\n**Parameters:**\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `search_term` | string | ✅ Yes | - | Job keywords (e.g., \"software engineer\", \"data scientist\") |\n| `location` | string | No | - | Job location (e.g., \"San Francisco, CA\", \"Remote\") |\n| `site_name` | array | No | `[\"indeed\", \"linkedin\", \"zip_recruiter\", \"google\"]` | Job boards to search |\n| `results_wanted` | integer | No | 15 | Number of results (1-1000) |\n| `job_type` | string | No | - | Employment type: `fulltime`, `parttime`, `internship`, `contract` |\n| `is_remote` | boolean | No | false | Filter for remote jobs only |\n| `hours_old` | integer | No | - | Filter by posting recency in hours |\n| `distance` | integer | No | 50 | Search radius in miles (1-100) |\n| `easy_apply` | boolean | No | false | Filter jobs with easy apply option |\n| `country_indeed` | string | No | \"usa\" | Country for Indeed\u002FGlassdoor searches |\n| `linkedin_fetch_description` | boolean | No | false | Fetch full LinkedIn descriptions (slower) |\n| `offset` | integer | No | 0 | Pagination offset |\n| `verbose` | integer | No | 1 | Logging level (0=errors, 1=warnings, 2=all) |\n\n**Supported Values for `site_name`:**\n- `linkedin` - Professional networking platform (rate limited)\n- `indeed` - Largest job search engine (most reliable)\n- `glassdoor` - Jobs with company reviews and salaries\n- `zip_recruiter` - Job matching for US\u002FCanada\n- `google` - Aggregated job listings\n- `bayt` - Middle East job portal\n- `naukri` - India's leading job portal\n- `bdjobs` - Bangladesh job portal\n\n**Supported Values for `job_type`:**\n- `fulltime`\n- `parttime`\n- `internship`\n- `contract`\n\n### 2. `get_supported_countries`\n\nReturns the complete list of supported countries for job searches. No parameters required.\n\n### 3. `get_supported_sites`\n\nReturns detailed information about all supported job board sites. No parameters required.\n\n### 4. `get_job_search_tips`\n\nReturns tips and best practices for effective job searching. No parameters required.\n\n---\n\n## Job Post Response Schema\n\nWhen jobs are returned, each job post contains the following fields:\n\n```typescript\ninterface JobPost {\n  \u002F\u002F Core fields (all platforms)\n  title: string;                    \u002F\u002F Job title\n  company: string;                  \u002F\u002F Company name\n  company_url?: string;             \u002F\u002F Company website URL\n  job_url: string;                  \u002F\u002F Direct link to job posting\n  location: {\n    country?: string;\n    city?: string;\n    state?: string;\n  };\n  is_remote: boolean;               \u002F\u002F Whether job is remote\n  description?: string;             \u002F\u002F Job description (markdown format)\n  job_type?: \"fulltime\" | \"parttime\" | \"internship\" | \"contract\";\n  \n  \u002F\u002F Salary information\n  salary?: {\n    interval?: \"yearly\" | \"monthly\" | \"weekly\" | \"daily\" | \"hourly\";\n    min_amount?: number;\n    max_amount?: number;\n    currency?: string;\n    salary_source?: \"direct_data\" | \"description\";  \u002F\u002F Parsed from posting\n  };\n  \n  date_posted?: string;             \u002F\u002F ISO date string\n  emails?: string[];                \u002F\u002F Contact emails if available\n  \n  \u002F\u002F LinkedIn specific\n  job_level?: string;               \u002F\u002F Seniority level\n  \n  \u002F\u002F LinkedIn & Indeed specific\n  company_industry?: string;\n  \n  \u002F\u002F Indeed specific\n  company_country?: string;\n  company_addresses?: string[];\n  company_employees_label?: string;\n  company_revenue_label?: string;\n  company_description?: string;\n  company_logo?: string;\n  \n  \u002F\u002F Naukri specific\n  skills?: string[];\n  experience_range?: string;\n  company_rating?: number;\n  company_reviews_count?: number;\n  vacancy_count?: number;\n  work_from_home_type?: string;\n}\n```\n\n---\n\n## Example Prompts → MCP Calls → Outputs\n\n### Example 1: Basic Job Search\n\n**User Prompt:**\n> \"Find me 10 software engineer jobs in San Francisco\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"scrape_jobs_tool\",\n  \"params\": {\n    \"search_term\": \"software engineer\",\n    \"location\": \"San Francisco, CA\",\n    \"results_wanted\": 10,\n    \"site_name\": [\"indeed\", \"linkedin\"]\n  }\n}\n```\n\n**Expected Output:**\n```json\n{\n  \"jobs\": [\n    {\n      \"title\": \"Software Engineer\",\n      \"company\": \"TechCorp Inc.\",\n      \"location\": { \"city\": \"San Francisco\", \"state\": \"CA\" },\n      \"job_url\": \"https:\u002F\u002Findeed.com\u002Fviewjob?jk=abc123\",\n      \"salary\": { \"min_amount\": 120000, \"max_amount\": 180000, \"interval\": \"yearly\" },\n      \"job_type\": \"fulltime\",\n      \"is_remote\": false\n    }\n    \u002F\u002F ... more jobs\n  ],\n  \"total_found\": 10\n}\n```\n\n---\n\n### Example 2: Remote Jobs Search\n\n**User Prompt:**\n> \"Search for remote Python developer positions from Indeed and ZipRecruiter\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"scrape_jobs_tool\",\n  \"params\": {\n    \"search_term\": \"Python developer\",\n    \"location\": \"Remote\",\n    \"is_remote\": true,\n    \"site_name\": [\"indeed\", \"zip_recruiter\"],\n    \"results_wanted\": 20\n  }\n}\n```\n\n---\n\n### Example 3: Recent Jobs with Filters\n\n**User Prompt:**\n> \"Find data scientist jobs in Boston posted in the last 24 hours\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"scrape_jobs_tool\",\n  \"params\": {\n    \"search_term\": \"data scientist\",\n    \"location\": \"Boston, MA\",\n    \"hours_old\": 24,\n    \"site_name\": [\"linkedin\", \"glassdoor\", \"indeed\"],\n    \"linkedin_fetch_description\": true\n  }\n}\n```\n\n---\n\n### Example 4: Entry-Level with Easy Apply\n\n**User Prompt:**\n> \"Look for entry-level marketing jobs in New York with easy apply options\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"scrape_jobs_tool\",\n  \"params\": {\n    \"search_term\": \"junior marketing\",\n    \"location\": \"New York, NY\",\n    \"job_type\": \"fulltime\",\n    \"easy_apply\": true,\n    \"site_name\": [\"indeed\", \"zip_recruiter\"],\n    \"results_wanted\": 30\n  }\n}\n```\n\n---\n\n### Example 5: International Job Search\n\n**User Prompt:**\n> \"Find software jobs in Germany on Indeed\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"scrape_jobs_tool\",\n  \"params\": {\n    \"search_term\": \"software developer\",\n    \"location\": \"Berlin\",\n    \"country_indeed\": \"germany\",\n    \"site_name\": [\"indeed\"],\n    \"results_wanted\": 15\n  }\n}\n```\n\n---\n\n### Example 6: Getting Helper Information\n\n**User Prompt:**\n> \"What job sites are supported?\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"get_supported_sites\",\n  \"params\": {}\n}\n```\n\n**Expected Output:**\n```json\n{\n  \"sites\": [\n    { \"name\": \"indeed\", \"description\": \"Largest job search engine, most reliable\" },\n    { \"name\": \"linkedin\", \"description\": \"Professional networking platform, rate limited\" },\n    { \"name\": \"glassdoor\", \"description\": \"Jobs with company reviews and salaries\" },\n    { \"name\": \"zip_recruiter\", \"description\": \"Job matching for US\u002FCanada\" },\n    { \"name\": \"google\", \"description\": \"Aggregated job listings\" },\n    { \"name\": \"bayt\", \"description\": \"Middle East job portal\" },\n    { \"name\": \"naukri\", \"description\": \"India's leading job portal\" },\n    { \"name\": \"bdjobs\", \"description\": \"Bangladesh job portal\" }\n  ]\n}\n```\n\n---\n\n## Error Handling Examples\n\n### Error 1: Rate Limiting\n\n**Scenario:** LinkedIn returns a rate limit error.\n\n**Error Response:**\n```json\n{\n  \"error\": \"RateLimitError\",\n  \"message\": \"LinkedIn rate limit exceeded. Try again later or use different sites.\",\n  \"suggestion\": \"Switch to Indeed or ZipRecruiter which have more lenient rate limits.\"\n}\n```\n\n**How to Handle:**\n- Reduce `results_wanted` to a smaller number (10-15)\n- Remove `linkedin` from `site_name` temporarily\n- Add delays between searches\n- Use proxy configuration if available\n\n---\n\n### Error 2: No Results Found\n\n**Scenario:** Search returns empty results.\n\n**Error Response:**\n```json\n{\n  \"jobs\": [],\n  \"total_found\": 0,\n  \"message\": \"No jobs found matching your criteria\"\n}\n```\n\n**How to Handle:**\n- Broaden search terms (e.g., \"engineer\" instead of \"senior principal software engineer\")\n- Increase `distance` radius\n- Remove restrictive filters like `hours_old` or `job_type`\n- Try different `site_name` options\n- Check if location spelling is correct\n\n---\n\n### Error 3: Invalid Country Code\n\n**Scenario:** User specifies an unsupported country for Indeed.\n\n**Error Response:**\n```json\n{\n  \"error\": \"ValidationError\",\n  \"message\": \"Invalid country_indeed value. Use get_supported_countries to see valid options.\"\n}\n```\n\n**How to Handle:**\n- Call `get_supported_countries` to get valid country codes\n- Use the exact country name (e.g., \"usa\" not \"US\", \"united kingdom\" not \"UK\")\n\n---\n\n### Error 4: Platform-Specific Limitation Conflict\n\n**Scenario:** User tries to use conflicting filters.\n\n**Known Limitations:**\n- **Indeed:** Only ONE of these can be used: `hours_old`, `job_type & is_remote`, `easy_apply`\n- **LinkedIn:** Only ONE of these can be used: `hours_old`, `easy_apply`\n\n**How to Handle:**\n- Inform user of the limitation\n- Prioritize the most important filter\n- Run separate searches if multiple filters are needed\n\n---\n\n## Anti-Patterns (What NOT to Do)\n\n### ❌ DO NOT: Request Excessive Results\n\n```json\n\u002F\u002F BAD - Will likely timeout or get rate limited\n{\n  \"search_term\": \"engineer\",\n  \"results_wanted\": 1000,\n  \"site_name\": [\"linkedin\", \"indeed\", \"glassdoor\", \"zip_recruiter\", \"google\"]\n}\n```\n\n**Why:** Requesting too many results from too many sites simultaneously will trigger rate limits and cause timeouts.\n\n**✅ DO INSTEAD:**\n```json\n{\n  \"search_term\": \"software engineer\",\n  \"results_wanted\": 20,\n  \"site_name\": [\"indeed\", \"linkedin\"]\n}\n```\n\n---\n\n### ❌ DO NOT: Use LinkedIn Extensively\n\n```json\n\u002F\u002F BAD - LinkedIn is heavily rate limited\n{\n  \"search_term\": \"developer\",\n  \"site_name\": [\"linkedin\"],\n  \"results_wanted\": 100,\n  \"linkedin_fetch_description\": true\n}\n```\n\n**Why:** LinkedIn has the strictest rate limits. Using `linkedin_fetch_description: true` multiplies requests.\n\n**✅ DO INSTEAD:**\n- Use Indeed as primary source\n- Limit LinkedIn to 10-15 results\n- Only enable `linkedin_fetch_description` when specifically needed\n\n---\n\n### ❌ DO NOT: Use Conflicting Filters\n\n```json\n\u002F\u002F BAD - Indeed limitation: only one filter group allowed\n{\n  \"search_term\": \"developer\",\n  \"site_name\": [\"indeed\"],\n  \"hours_old\": 24,\n  \"job_type\": \"fulltime\",\n  \"is_remote\": true\n}\n```\n\n**Why:** Indeed only supports one of: `hours_old`, `job_type & is_remote`, or `easy_apply`.\n\n**✅ DO INSTEAD:**\n```json\n\u002F\u002F Either filter by recency\n{\n  \"search_term\": \"developer\",\n  \"site_name\": [\"indeed\"],\n  \"hours_old\": 24\n}\n\n\u002F\u002F OR filter by job type\n{\n  \"search_term\": \"developer\",\n  \"site_name\": [\"indeed\"],\n  \"job_type\": \"fulltime\",\n  \"is_remote\": true\n}\n```\n\n---\n\n### ❌ DO NOT: Make Vague Searches Without Context\n\n```json\n\u002F\u002F BAD - Too generic, will return irrelevant results\n{\n  \"search_term\": \"job\"\n}\n```\n\n**Why:** Vague searches return poor quality results and waste API calls.\n\n**✅ DO INSTEAD:**\n- Always include specific job titles or skills\n- Include location when known\n- Use filters to narrow results\n\n---\n\n### ❌ DO NOT: Ignore Error Responses\n\n**Why:** Rate limits, network issues, and invalid parameters require appropriate handling.\n\n**✅ DO INSTEAD:**\n- Check for error responses before processing results\n- Implement retry logic with backoff for rate limits\n- Provide helpful messages to users when searches fail\n\n---\n\n### ❌ DO NOT: Use Wrong Country Codes\n\n```json\n\u002F\u002F BAD - Wrong country code format\n{\n  \"search_term\": \"developer\",\n  \"country_indeed\": \"UK\"  \u002F\u002F Wrong! Use \"united kingdom\"\n}\n```\n\n**✅ DO INSTEAD:**\n- Use `get_supported_countries` to verify valid country codes\n- Common codes: \"usa\", \"united kingdom\", \"canada\", \"germany\", \"india\"\n\n---\n\n## Rate Limiting & Best Practices\n\n### Platform Reliability Ranking\n\n1. **Indeed** - Most reliable, good for large searches\n2. **ZipRecruiter** - Reliable for US\u002FCanada\n3. **Google Jobs** - Good aggregation, stable\n4. **Glassdoor** - Reliable with company insights\n5. **LinkedIn** - Most restrictive, use sparingly\n\n### Recommended Approach\n\n1. **Start Small:** Begin with 10-15 results to test filters\n2. **Use Indeed First:** Most reliable for job data\n3. **Be Specific:** Use targeted search terms\n4. **Filter Wisely:** Use one filter group at a time for Indeed\u002FLinkedIn\n5. **Paginate:** Use `offset` for getting more results instead of high `results_wanted`\n\n---\n\n## Supported Countries\n\nCall `get_supported_countries` for the complete list. Common countries include:\n\n| Country | Code for `country_indeed` |\n|---------|---------------------------|\n| USA | `usa` |\n| United Kingdom | `united kingdom` |\n| Canada | `canada` |\n| Germany | `germany` |\n| France | `france` |\n| India | `india` |\n| Australia | `australia` |\n| Singapore | `singapore` |\n| Japan | `japan` |\n| Netherlands | `netherlands` |\n\n---\n\n## Troubleshooting\n\n### \"Browser\u002FChromium not installed\"\n\nRun: `playwright install chromium` (some scrapers use Playwright)\n\n### \"No module named 'jobspy'\"\n\nRun: `pip install python-jobspy>=1.1.82`\n\n### \"Rate limit exceeded\"\n\n- Reduce results_wanted\n- Remove LinkedIn from site_name\n- Wait 60 seconds before retrying\n- Consider using a proxy\n\n---\n\n## Quick Reference\n\n| User Intent | Key Parameters |\n|-------------|----------------|\n| Find jobs in a specific city | `search_term`, `location` |\n| Remote jobs only | `is_remote: true` |\n| Recent postings | `hours_old: 24` (or 48, 72) |\n| Full-time only | `job_type: \"fulltime\"` |\n| Quick apply jobs | `easy_apply: true` |\n| Search specific platform | `site_name: [\"indeed\"]` |\n| International search | `country_indeed: \"germany\"` |\n| More results | `results_wanted: 25` |\n| Paginate results | `offset: 25` (after first 25) |\n","# Job Search MCP Skill\n\nThis skill enables AI agents to search for jobs across multiple job boards using the **JobSpy MCP Server**. JobSpy aggregates job listings from LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs into a unified interface.\n\n## When to Use This Skill\n\nUse this skill when the user asks you to:\n- Find job listings matching specific criteria (role, location, company, etc.)\n- Search for remote or on-site positions\n- Compare job opportunities across different platforms\n- Get salary information for job postings\n- Find recently posted jobs (within X hours)\n- Search for jobs with \"Easy Apply\" options\n\n## Prerequisites\n\n- **Python 3.10+**\n- **Node.js 16+** (for some server implementations)\n- The JobSpy MCP server installed and configured\n\n---\n\n## Installation & Setup\n\n### Option 1: Python MCP Server (Recommended)\n\n```bash\n# Install with pip\npip install mcp>=1.1.0 python-jobspy>=1.1.82 pandas>=2.1.0 pydantic>=2.0.0\n\n# Or install with uv (faster)\nuv add mcp python-jobspy pandas pydantic\n```\n\n### Option 2: Clone a Pre-built Server\n\n```bash\n# Clone the jobspy-mcp-server repository\ngit clone https:\u002F\u002Fgithub.com\u002Fchinpeerapat\u002Fjobspy-mcp-server.git\ncd jobspy-mcp-server\n\n# Install dependencies\nuv sync\n# or\npip install -e .\n```\n\n### Claude Desktop Configuration\n\nAdd the following to your Claude Desktop config file (`~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json` on macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"jobspy\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"jobspy-mcp-server\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\n**Alternative configuration (Node.js server):**\n\n```json\n{\n  \"mcpServers\": {\n    \"jobspy\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fpath\u002Fto\u002Fjobspy-mcp-server\u002Fsrc\u002Findex.js\"],\n      \"env\": {\n        \"ENABLE_SSE\": \"0\"\n      }\n    }\n  }\n}\n```\n\n---\n\n## MCP Tool Schemas\n\n### 1. `scrape_jobs_tool` (Primary Tool)\n\nSearch for jobs across multiple job boards with comprehensive filtering.\n\n**Parameters:**\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `search_term` | string | ✅ Yes | - | Job keywords (e.g., \"software engineer\", \"data scientist\") |\n| `location` | string | No | - | Job location (e.g., \"San Francisco, CA\", \"Remote\") |\n| `site_name` | array | No | `[\"indeed\", \"linkedin\", \"zip_recruiter\", \"google\"]` | Job boards to search |\n| `results_wanted` | integer | No | 15 | Number of results (1-1000) |\n| `job_type` | string | No | - | Employment type: `fulltime`, `parttime`, `internship`, `contract` |\n| `is_remote` | boolean | No | false | Filter for remote jobs only |\n| `hours_old` | integer | No | - | Filter by posting recency in hours |\n| `distance` | integer | No | 50 | Search radius in miles (1-100) |\n| `easy_apply` | boolean | No | false | Filter jobs with easy apply option |\n| `country_indeed` | string | No | \"usa\" | Country for Indeed\u002FGlassdoor searches |\n| `linkedin_fetch_description` | boolean | No | false | Fetch full LinkedIn descriptions (slower) |\n| `offset` | integer | No | 0 | Pagination offset |\n| `verbose` | integer | No | 1 | Logging level (0=errors, 1=warnings, 2=all) |\n\n**Supported Values for `site_name`:**\n- `linkedin` - Professional networking platform (rate limited)\n- `indeed` - Largest job search engine (most reliable)\n- `glassdoor` - Jobs with company reviews and salaries\n- `zip_recruiter` - Job matching for US\u002FCanada\n- `google` - Aggregated job listings\n- `bayt` - Middle East job portal\n- `naukri` - India's leading job portal\n- `bdjobs` - Bangladesh job portal\n\n**Supported Values for `job_type`:**\n- `fulltime`\n- `parttime`\n- `internship`\n- `contract`\n\n### 2. `get_supported_countries`\n\nReturns the complete list of supported countries for job searches. No parameters required.\n\n### 3. `get_supported_sites`\n\nReturns detailed information about all supported job board sites. No parameters required.\n\n### 4. `get_job_search_tips`\n\nReturns tips and best practices for effective job searching. No parameters required.\n\n---\n\n## Job Post Response Schema\n\nWhen jobs are returned, each job post contains the following fields:\n\n```typescript\ninterface JobPost {\n  \u002F\u002F Core fields (all platforms)\n  title: string;                    \u002F\u002F Job title\n  company: string;                  \u002F\u002F Company name\n  company_url?: string;             \u002F\u002F Company website URL\n  job_url: string;                  \u002F\u002F Direct link to job posting\n  location: {\n    country?: string;\n    city?: string;\n    state?: string;\n  };\n  is_remote: boolean;               \u002F\u002F Whether job is remote\n  description?: string;             \u002F\u002F Job description (markdown format)\n  job_type?: \"fulltime\" | \"parttime\" | \"internship\" | \"contract\";\n  \n  \u002F\u002F Salary information\n  salary?: {\n    interval?: \"yearly\" | \"monthly\" | \"weekly\" | \"daily\" | \"hourly\";\n    min_amount?: number;\n    max_amount?: number;\n    currency?: string;\n    salary_source?: \"direct_data\" | \"description\";  \u002F\u002F Parsed from posting\n  };\n  \n  date_posted?: string;             \u002F\u002F ISO date string\n  emails?: string[];                \u002F\u002F Contact emails if available\n  \n  \u002F\u002F LinkedIn specific\n  job_level?: string;               \u002F\u002F Seniority level\n  \n  \u002F\u002F LinkedIn & Indeed specific\n  company_industry?: string;\n  \n  \u002F\u002F Indeed specific\n  company_country?: string;\n  company_addresses?: string[];\n  company_employees_label?: string;\n  company_revenue_label?: string;\n  company_description?: string;\n  company_logo?: string;\n  \n  \u002F\u002F Naukri specific\n  skills?: string[];\n  experience_range?: string;\n  company_rating?: number;\n  company_reviews_count?: number;\n  vacancy_count?: number;\n  work_from_home_type?: string;\n}\n```\n\n---\n\n## Example Prompts → MCP Calls → Outputs\n\n### Example 1: Basic Job Search\n\n**User Prompt:**\n> \"Find me 10 software engineer jobs in San Francisco\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"scrape_jobs_tool\",\n  \"params\": {\n    \"search_term\": \"software engineer\",\n    \"location\": \"San Francisco, CA\",\n    \"results_wanted\": 10,\n    \"site_name\": [\"indeed\", \"linkedin\"]\n  }\n}\n```\n\n**Expected Output:**\n```json\n{\n  \"jobs\": [\n    {\n      \"title\": \"Software Engineer\",\n      \"company\": \"TechCorp Inc.\",\n      \"location\": { \"city\": \"San Francisco\", \"state\": \"CA\" },\n      \"job_url\": \"https:\u002F\u002Findeed.com\u002Fviewjob?jk=abc123\",\n      \"salary\": { \"min_amount\": 120000, \"max_amount\": 180000, \"interval\": \"yearly\" },\n      \"job_type\": \"fulltime\",\n      \"is_remote\": false\n    }\n    \u002F\u002F ... more jobs\n  ],\n  \"total_found\": 10\n}\n```\n\n---\n\n### Example 2: Remote Jobs Search\n\n**User Prompt:**\n> \"Search for remote Python developer positions from Indeed and ZipRecruiter\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"scrape_jobs_tool\",\n  \"params\": {\n    \"search_term\": \"Python developer\",\n    \"location\": \"Remote\",\n    \"is_remote\": true,\n    \"site_name\": [\"indeed\", \"zip_recruiter\"],\n    \"results_wanted\": 20\n  }\n}\n```\n\n---\n\n### Example 3: Recent Jobs with Filters\n\n**User Prompt:**\n> \"Find data scientist jobs in Boston posted in the last 24 hours\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"scrape_jobs_tool\",\n  \"params\": {\n    \"search_term\": \"data scientist\",\n    \"location\": \"Boston, MA\",\n    \"hours_old\": 24,\n    \"site_name\": [\"linkedin\", \"glassdoor\", \"indeed\"],\n    \"linkedin_fetch_description\": true\n  }\n}\n```\n\n---\n\n### Example 4: Entry-Level with Easy Apply\n\n**User Prompt:**\n> \"Look for entry-level marketing jobs in New York with easy apply options\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"scrape_jobs_tool\",\n  \"params\": {\n    \"search_term\": \"junior marketing\",\n    \"location\": \"New York, NY\",\n    \"job_type\": \"fulltime\",\n    \"easy_apply\": true,\n    \"site_name\": [\"indeed\", \"zip_recruiter\"],\n    \"results_wanted\": 30\n  }\n}\n```\n\n---\n\n### Example 5: International Job Search\n\n**User Prompt:**\n> \"Find software jobs in Germany on Indeed\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"scrape_jobs_tool\",\n  \"params\": {\n    \"search_term\": \"software developer\",\n    \"location\": \"Berlin\",\n    \"country_indeed\": \"germany\",\n    \"site_name\": [\"indeed\"],\n    \"results_wanted\": 15\n  }\n}\n```\n\n---\n\n### Example 6: Getting Helper Information\n\n**User Prompt:**\n> \"What job sites are supported?\"\n\n**MCP Tool Call:**\n```json\n{\n  \"tool\": \"get_supported_sites\",\n  \"params\": {}\n}\n```\n\n**Expected Output:**\n```json\n{\n  \"sites\": [\n    { \"name\": \"indeed\", \"description\": \"Largest job search engine, most reliable\" },\n    { \"name\": \"linkedin\", \"description\": \"Professional networking platform, rate limited\" },\n    { \"name\": \"glassdoor\", \"description\": \"Jobs with company reviews and salaries\" },\n    { \"name\": \"zip_recruiter\", \"description\": \"Job matching for US\u002FCanada\" },\n    { \"name\": \"google\", \"description\": \"Aggregated job listings\" },\n    { \"name\": \"bayt\", \"description\": \"Middle East job portal\" },\n    { \"name\": \"naukri\", \"description\": \"India's leading job portal\" },\n    { \"name\": \"bdjobs\", \"description\": \"Bangladesh job portal\" }\n  ]\n}\n```\n\n---\n\n## Error Handling Examples\n\n### Error 1: Rate Limiting\n\n**Scenario:** LinkedIn returns a rate limit error.\n\n**Error Response:**\n```json\n{\n  \"error\": \"RateLimitError\",\n  \"message\": \"LinkedIn rate limit exceeded. Try again later or use different sites.\",\n  \"suggestion\": \"Switch to Indeed or ZipRecruiter which have more lenient rate limits.\"\n}\n```\n\n**How to Handle:**\n- Reduce `results_wanted` to a smaller number (10-15)\n- Remove `linkedin` from `site_name` temporarily\n- Add delays between searches\n- Use proxy configuration if available\n\n---\n\n### Error 2: No Results Found\n\n**Scenario:** Search returns empty results.\n\n**Error Response:**\n```json\n{\n  \"jobs\": [],\n  \"total_found\": 0,\n  \"message\": \"No jobs found matching your criteria\"\n}\n```\n\n**How to Handle:**\n- Broaden search terms (e.g., \"engineer\" instead of \"senior principal software engineer\")\n- Increase `distance` radius\n- Remove restrictive filters like `hours_old` or `job_type`\n- Try different `site_name` options\n- Check if location spelling is correct\n\n---\n\n### Error 3: Invalid Country Code\n\n**Scenario:** User specifies an unsupported country for Indeed.\n\n**Error Response:**\n```json\n{\n  \"error\": \"ValidationError\",\n  \"message\": \"Invalid country_indeed value. Use get_supported_countries to see valid options.\"\n}\n```\n\n**How to Handle:**\n- Call `get_supported_countries` to get valid country codes\n- Use the exact country name (e.g., \"usa\" not \"US\", \"united kingdom\" not \"UK\")\n\n---\n\n### Error 4: Platform-Specific Limitation Conflict\n\n**Scenario:** User tries to use conflicting filters.\n\n**Known Limitations:**\n- **Indeed:** Only ONE of these can be used: `hours_old`, `job_type & is_remote`, `easy_apply`\n- **LinkedIn:** Only ONE of these can be used: `hours_old`, `easy_apply`\n\n**How to Handle:**\n- Inform user of the limitation\n- Prioritize the most important filter\n- Run separate searches if multiple filters are needed\n\n---\n\n## Anti-Patterns (What NOT to Do)\n\n### ❌ DO NOT: Request Excessive Results\n\n```json\n\u002F\u002F BAD - Will likely timeout or get rate limited\n{\n  \"search_term\": \"engineer\",\n  \"results_wanted\": 1000,\n  \"site_name\": [\"linkedin\", \"indeed\", \"glassdoor\", \"zip_recruiter\", \"google\"]\n}\n```\n\n**Why:** Requesting too many results from too many sites simultaneously will trigger rate limits and cause timeouts.\n\n**✅ DO INSTEAD:**\n```json\n{\n  \"search_term\": \"software engineer\",\n  \"results_wanted\": 20,\n  \"site_name\": [\"indeed\", \"linkedin\"]\n}\n```\n\n---\n\n### ❌ DO NOT: Use LinkedIn Extensively\n\n```json\n\u002F\u002F BAD - LinkedIn is heavily rate limited\n{\n  \"search_term\": \"developer\",\n  \"site_name\": [\"linkedin\"],\n  \"results_wanted\": 100,\n  \"linkedin_fetch_description\": true\n}\n```\n\n**Why:** LinkedIn has the strictest rate limits. Using `linkedin_fetch_description: true` multiplies requests.\n\n**✅ DO INSTEAD:**\n- Use Indeed as primary source\n- Limit LinkedIn to 10-15 results\n- Only enable `linkedin_fetch_description` when specifically needed\n\n---\n\n### ❌ DO NOT: Use Conflicting Filters\n\n```json\n\u002F\u002F BAD - Indeed limitation: only one filter group allowed\n{\n  \"search_term\": \"developer\",\n  \"site_name\": [\"indeed\"],\n  \"hours_old\": 24,\n  \"job_type\": \"fulltime\",\n  \"is_remote\": true\n}\n```\n\n**Why:** Indeed only supports one of: `hours_old`, `job_type & is_remote`, or `easy_apply`.\n\n**✅ DO INSTEAD:**\n```json\n\u002F\u002F Either filter by recency\n{\n  \"search_term\": \"developer\",\n  \"site_name\": [\"indeed\"],\n  \"hours_old\": 24\n}\n\n\u002F\u002F OR filter by job type\n{\n  \"search_term\": \"developer\",\n  \"site_name\": [\"indeed\"],\n  \"job_type\": \"fulltime\",\n  \"is_remote\": true\n}\n```\n\n---\n\n### ❌ DO NOT: Make Vague Searches Without Context\n\n```json\n\u002F\u002F BAD - Too generic, will return irrelevant results\n{\n  \"search_term\": \"job\"\n}\n```\n\n**Why:** Vague searches return poor quality results and waste API calls.\n\n**✅ DO INSTEAD:**\n- Always include specific job titles or skills\n- Include location when known\n- Use filters to narrow results\n\n---\n\n### ❌ DO NOT: Ignore Error Responses\n\n**Why:** Rate limits, network issues, and invalid parameters require appropriate handling.\n\n**✅ DO INSTEAD:**\n- Check for error responses before processing results\n- Implement retry logic with backoff for rate limits\n- Provide helpful messages to users when searches fail\n\n---\n\n### ❌ DO NOT: Use Wrong Country Codes\n\n```json\n\u002F\u002F BAD - Wrong country code format\n{\n  \"search_term\": \"developer\",\n  \"country_indeed\": \"UK\"  \u002F\u002F Wrong! Use \"united kingdom\"\n}\n```\n\n**✅ DO INSTEAD:**\n- Use `get_supported_countries` to verify valid country codes\n- Common codes: \"usa\", \"united kingdom\", \"canada\", \"germany\", \"india\"\n\n---\n\n## Rate Limiting & Best Practices\n\n### Platform Reliability Ranking\n\n1. **Indeed** - Most reliable, good for large searches\n2. **ZipRecruiter** - Reliable for US\u002FCanada\n3. **Google Jobs** - Good aggregation, stable\n4. **Glassdoor** - Reliable with company insights\n5. **LinkedIn** - Most restrictive, use sparingly\n\n### Recommended Approach\n\n1. **Start Small:** Begin with 10-15 results to test filters\n2. **Use Indeed First:** Most reliable for job data\n3. **Be Specific:** Use targeted search terms\n4. **Filter Wisely:** Use one filter group at a time for Indeed\u002FLinkedIn\n5. **Paginate:** Use `offset` for getting more results instead of high `results_wanted`\n\n---\n\n## Supported Countries\n\nCall `get_supported_countries` for the complete list. Common countries include:\n\n| Country | Code for `country_indeed` |\n|---------|---------------------------|\n| USA | `usa` |\n| United Kingdom | `united kingdom` |\n| Canada | `canada` |\n| Germany | `germany` |\n| France | `france` |\n| India | `india` |\n| Australia | `australia` |\n| Singapore | `singapore` |\n| Japan | `japan` |\n| Netherlands | `netherlands` |\n\n---\n\n## Troubleshooting\n\n### \"Browser\u002FChromium not installed\"\n\nRun: `playwright install chromium` (some scrapers use Playwright)\n\n### \"No module named 'jobspy'\"\n\nRun: `pip install python-jobspy>=1.1.82`\n\n### \"Rate limit exceeded\"\n\n- Reduce results_wanted\n- Remove LinkedIn from site_name\n- Wait 60 seconds before retrying\n- Consider using a proxy\n\n---\n\n## Quick Reference\n\n| User Intent | Key Parameters |\n|-------------|----------------|\n| Find jobs in a specific city | `search_term`, `location` |\n| Remote jobs only | `is_remote: true` |\n| Recent postings | `hours_old: 24` (or 48, 72) |\n| Full-time only | `job_type: \"fulltime\"` |\n| Quick apply jobs | `easy_apply: true` |\n| Search specific platform | `site_name: [\"indeed\"]` |\n| International search | `country_indeed: \"germany\"` |\n| More results | `results_wanted: 25` |\n| Paginate results | `offset: 25` (after first 25) |\n",{"name":5,"slug":39,"tags":40,"description":7},"job-search-mcp",[31,32,41,33],"mcp","main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Famoghpurohit\u002Fjob-search-mcp",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add kbarbel640-del\u002Fskills --skill \"Job Search MCP\"",{"tool":55,"command":56},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill \"Job Search MCP\"",{"tool":58,"command":59},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill \"Job Search MCP\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Famoghpurohit\u002Fjob-search-mcp\u002FSKILL.md",true,[63,69],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"_meta.json","REFERENCE","参考文档",460,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Famoghpurohit\u002Fjob-search-mcp\u002F_meta.json",{"path":70,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":71,"sourceHtmlUrl":72},"example_calls.md",2916,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Famoghpurohit\u002Fjob-search-mcp\u002Fexample_calls.md",[74,105,130,151,157,177],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":85,"publishedAt":34},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],"crowd prompting","prompting","api","with","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":112,"publishedAt":34},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[111],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[113,88,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,93,129],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking","use",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":139,"publishedAt":34},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[136],{"categoryNo":137,"categoryName":138,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",[140,141,142,143,144,145,146,89,147,127,129,148,88,149,150],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":152,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":156,"publishedAt":34},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[155],{"categoryNo":137,"categoryName":138,"taxonomyType":20,"taxonomyTypeDesc":21},[143,142,141,140,150,145,146,89,144,127,129,147,148,88,149],{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":34},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[164,165,166,167,168,169,170,171,172,173,174,175,176],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":187,"publishedAt":34},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[183,184],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":185,"categoryName":186,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000037","律师与法务",[188,189,190,191,89,192,193,42,194,148,195,196,197,198,199,102,200,201,202],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]