{"name":"StillOpen","description":"Remote job listings, each re-checked against the employer's own applicant tracking system (ATS). Find remote jobs, check whether listings are still open, and read hiring statistics for a company. Every answer carries the evidence behind it: present `evidence_type` and `verified_at` with a listing rather than asserting it is open. Send a `data` part {\"skill\": <id>, \"arguments\": {...}}, or plain text for a keyword search. Read-only, no key.","supportedInterfaces":[{"url":"https://stillopen.work/api/v1/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"},{"url":"https://stillopen.work/api/v1/a2a/rest","protocolBinding":"HTTP+JSON","protocolVersion":"1.0"}],"provider":{"organization":"StillOpen","url":"https://stillopen.work"},"version":"1.0.0","documentationUrl":"https://stillopen.work/agents","iconUrl":"https://stillopen.work/static/favicon.png","capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":false},"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"skills":[{"id":"search_jobs","name":"Search remote jobs","description":"Find fully-remote job listings, each re-checked against the employer's own job board. Returns a summary record per role — no job descriptions, because twenty ads would fill your context with roles the reader did not choose. Call `get_job` for the ad once one looks worth reading. Every record carries `evidence_type` and `verified_at`: present those with the listing rather than asserting it is open.","tags":["jobs","remote","search"],"examples":["{\"skill\": \"search_jobs\", \"arguments\": {\"q\": \"python\", \"loc\": \"de\"}}","senior python developer"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"get_job","name":"Read one listing","description":"One listing in full, including the employer's own ad. Use it after `search_jobs` rather than instead of it: this returns thousands of characters of advertisement. The id is the number in a listing URL — /job/9620-company-title is 9620. A listing that was folded into another answers under the id you asked for and reports `merged_into`.","tags":["jobs","remote","job-ad"],"examples":["{\"skill\": \"get_job\", \"arguments\": {\"id\": 12345}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"check_job_status","name":"Check whether listings are still open","description":"Whether each of up to 100 listings is still open, and on what evidence — in one call. The most useful tool here: given a link to a role somebody is about to apply for, this is what separates a live posting from a filled one, with a date and a kind of evidence attached. A closed listing reports whether the closure was **observed** (a source was asked and said the posting was gone) or **inferred** (it aged out, which is a guess about the employer rather than an answer from one). This reads evidence already stored: it reports the result of our most recent check, and does not perform a live check against the employer's board at the moment you call it. Two dates come back and they answer different questions: **`verified_at`** is when we last asked the employer's system and it said yes, and it is the one to show a reader; `last_seen_at` is when a source last carried the posting, which happens far more often and is normally the newer of the two. `last_seen_at` being newer is ordinary, not a contradiction. **`status: unknown` means we have never held this id** — it is not-found, not un-checked. The value for 'nothing has proved it gone but no source has carried it lately' is `unconfirmed`.","tags":["jobs","verification","status"],"examples":["{\"skill\": \"check_job_status\", \"arguments\": {\"ids\": [12345, 67890]}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_company_stats","name":"What an employer's listings show","description":"What one employer's listings on this site add up to: how many roles are open, where they hire, what they hire for, and what their listings disclose about pay. Takes a `company_slug` from any search record. Answers only for employers whose board identity we have confirmed, because a page asserting one company's vacancies under another company's name is the failure this gate exists to prevent.","tags":["companies","hiring","statistics"],"examples":["{\"skill\": \"get_company_stats\", \"arguments\": {\"company_slug\": \"gitlab\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]}]}