{"name":"io.roleset/jobs","slug":"roleset-jobs","title":"Roleset — job postings index","description":"Search 690k open jobs from official ATS feeds, and what changed since your last check.","url":"https://mcp.market/server/roleset-jobs","rating":null,"grade":"C","score":67,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":7,"ok":7,"last_checked_at":"2026-09-21T06:10:59.112Z","last_ok_at":"2026-09-21T06:10:59.112Z","latency_ms":185},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://roleset.io","version":"0.1.0","remotes":[{"type":"streamable-http","url":"https://mcp.roleset.io/mcp","headers":[{"description":"Bearer <key>. Get a free key with no account: POST https://api.roleset.io/v1/keys with {\"accept_terms\": true}","isRequired":true,"isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"company_jobs","description":"Every open posting at one company. Accepts a domain (acme.com), an ATS board slug, or the company name. Use when the company is already known and you want its roles; use search_jobs when you are looking across companies. For whether the company is growing rather than what it has open, use hiring_signal.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"identifier":{"description":"Domain, ATS board slug, or company name.","title":"Identifier","type":"string"},"include_description":{"default":false,"title":"Include Description","type":"boolean"},"limit":{"default":50,"maximum":100,"minimum":1,"title":"Limit","type":"integer"}},"required":["identifier"],"title":"company_jobs_toolArguments"}},{"name":"get_job","description":"Fetch a single posting by its Roleset id, including the full description text and HTML. Use after search_jobs or job_changes when you need the body of a specific posting — for summarising requirements, or checking whether a role matches a candidate's constraints. The id comes from an earlier result.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"job_id":{"description":"Roleset job id (UUID) from an earlier result.","title":"Job Id","type":"string"}},"required":["job_id"],"title":"get_job_toolArguments"}},{"name":"hiring_signal","description":"Whether a company is hiring, and where. Returns open roles broken down by department plus how many opened and closed over the last 7 and 30 days, and the net change. Use for sales and research questions — 'is this company growing', 'are they building out engineering', 'did they stop hiring' — where counts and trend matter more than the individual postings. One call, not per record.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"identifier":{"description":"Domain, ATS board slug, or company name.","title":"Identifier","type":"string"}},"required":["identifier"],"title":"hiring_signal_toolArguments"}},{"name":"job_changes","description":"What has opened, changed, closed or reopened in the index. This is the tool to poll: pass `since` (ISO-8601) the first time, then keep passing the returned `meta.next_cursor` and you will see each event exactly once, with no gaps or repeats. Filter it the same way you would a search — by department, country, remote, title, company or ATS — to subscribe to one slice of the market. Each event carries the event type, when it happened, a `diff` showing which fields changed and their before/after values, and the job record itself. Use this to track a hiring market over time, to answer 'what's new since yesterday', or to keep a downstream store in sync. Defaults to the last 24 hours.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"since":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO-8601; ignored when cursor is set.","title":"Since"},"event":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"opened | updated | closed | reopened","title":"Event"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Company"},"ats":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Ats"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Department, partial match.","title":"Department"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO-3166 alpha-2, e.g. US.","title":"Country"},"remote":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only remote, or only non-remote.","title":"Remote"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Match on the job title.","title":"Title"},"include_job":{"default":true,"title":"Include Job","type":"boolean"},"limit":{"default":50,"maximum":100,"minimum":1,"title":"Limit","type":"integer"},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Cursor"}},"title":"job_changes_toolArguments"}},{"name":"search_jobs","description":"Search the index of open job postings. Use for a one-off question about the job market: who is hiring for a role, what is open in a city or country, which companies have remote positions. Returns a page of job records plus a `meta.next_cursor` to continue; each record has title, company, structured locations, remote flag, employment type, salary when the board publishes one, and an apply URL. Descriptions are omitted unless `include_description` is set, because they are large. To find what has *changed* since you last looked, use job_changes instead — do not poll this tool in a loop.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Free text over title and description.","title":"Q"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Match on the job title.","title":"Title"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Company name, partial match.","title":"Company"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"City or region.","title":"Location"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO-3166 alpha-2, e.g. US, DE.","title":"Country"},"remote":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only remote, or only non-remote.","title":"Remote"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Department"},"employment_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"full_time | part_time | contract | intern | temporary | volunteer","title":"Employment Type"},"ats":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one ATS platform.","title":"Ats"},"posted_after":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO-8601 timestamp.","title":"Posted After"},"listed_since_after":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO-8601. When the company last put the role on the market — it moves when a posting is reopened, so this is the filter for what is on the market now.","title":"Listed Since After"},"include_description":{"default":false,"title":"Include Description","type":"boolean"},"limit":{"default":25,"maximum":100,"minimum":1,"title":"Limit","type":"integer"},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"From a previous meta.next_cursor.","title":"Cursor"}},"title":"search_jobs_toolArguments"}},{"name":"stats","description":"Size and freshness of the whole index: companies, boards per ATS, open and total postings, events in the last 24 hours, and when the oldest active board was last crawled. Free. Use to tell a user how much coverage stands behind an answer, or to check the index is current before relying on it.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"stats_toolArguments"}}],"scan":{"score":67,"grade":"C","scanned_at":"2026-09-20T00:27:14.515Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:27:14.436Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1678ms"]},"poisoning":{"score":15,"max":15,"notes":["6 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://mcp.roleset.io/mcp","reachable":true,"authRequired":false,"latencyMs":1678,"serverInfo":{"name":"roleset","version":"0.1.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' fill='%23f2f4ef'/%3E%3Crect y='8' width='32' height='5' fill='%23e6ede4'/%3E%3Crect y='19' width='32' height='5' fill='%23e6ede4'/%3E%3Ccircle cx='16' cy='16' r='5' fill='%2316704a'/%3E%3C/svg%3E","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}