Metadata-Version: 2.5
Name: llama-index-tools-carejobs
Version: 0.1.0
Summary: llama-index tools carejobs integration: open US healthcare jobs, pay and employers from CareJobs.Now
Project-URL: Homepage, https://carejobs.now
Project-URL: Repository, https://github.com/yumaheymans/llama-index-tools-carejobs
Project-URL: Issues, https://github.com/yumaheymans/llama-index-tools-carejobs/issues
Author-email: "CareJobs.Now" <hello@carejobs.now>
Maintainer: yumaheymans
License-Expression: MIT
License-File: LICENSE
Keywords: agent,healthcare,jobs,llama-index,mcp,nursing,tools
Requires-Python: <4.0,>=3.10
Requires-Dist: llama-index-core<0.15,>=0.13.0
Requires-Dist: requests>=2.31.0
Description-Content-Type: text/markdown

# LlamaIndex Tools Integration: CareJobs.Now

[CareJobs.Now](https://carejobs.now) is a free US healthcare job board. It reads the open jobs of
more than 2,000 hospitals, health systems, clinic groups and care companies: nurses, CNAs, doctors,
NPs and PAs, therapists, imaging and lab techs, pharmacy, caregivers, front office and more.

This tool spec gives a LlamaIndex agent live access to those jobs, their posted pay, the employers
and the job-market numbers, through the public CareJobs.Now remote MCP endpoint. **No API key or
account is needed.** Every job in an answer links to its page on CareJobs.Now, where the person
applies.

This package is maintained in its own repository and published to PyPI independently of the
`llama_index` monorepo.

## Installation

```bash
pip install llama-index-tools-carejobs
```

## Usage with an agent

```python
from llama_index.tools.carejobs import CareJobsToolSpec
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import OpenAI

carejobs_tool = CareJobsToolSpec()

agent = FunctionAgent(
    tools=carejobs_tool.to_tool_list(),
    llm=OpenAI(model="gpt-4.1"),
)

print(
    await agent.run(
        "Find night-shift ICU nursing jobs in Texas that pay at least $45 an hour, "
        "and tell me which employers post the most for nurses."
    )
)
```

## Available functions

| Function | What it returns |
| --- | --- |
| `search_healthcare_jobs` | Open jobs filtered by keyword, kind of job, employer, state, remote only, minimum hourly pay and sort order, with a link to each. |
| `get_healthcare_pay` | The median and typical hourly pay open jobs post, for every kind of job, one kind, one employer, or an employer and a kind. |
| `get_healthcare_job_market` | How many healthcare jobs are open and new this week, by kind of job, state and employer. |
| `get_healthcare_jobs_by_state` | Every state's open jobs, or one state's jobs by kind, pay, towns, employers and newest jobs. |
| `list_healthcare_employers` | Employers, AI-training programs and job boards by name, kind of care, state or kind of job, with the slugs the other functions take. |
| `get_healthcare_employer` | One employer: where it hires, its open jobs by kind, posted pay, newest and best-paid jobs. |

The `kind` argument takes one of `nurses`, `nurse-practitioners`, `physicians`,
`nursing-assistants`, `caregivers`, `therapy-rehab`, `mental-health`, `pharmacy`, `imaging`, `lab`,
`surgical-techs`, `emts-paramedics`, `medical-assistants`, `dental`, `admin`, `allied-health` or
`ai-training`. The `state` argument takes a two-letter code (`TX`) or a name (`Texas`). Employers
are identified by a slug such as `kaiser-permanente` or by name.

### Example without an agent

```python
from llama_index.tools.carejobs import CareJobsToolSpec

carejobs_tool = CareJobsToolSpec()

print(carejobs_tool.search_healthcare_jobs(kind="nurses", state="TX", limit=5))
print(carejobs_tool.get_healthcare_pay(kind="nursing-assistants"))
print(carejobs_tool.get_healthcare_employer("kaiser-permanente"))
```

Each function returns the service's readable summary as a string. To get the structured data that
comes with it, call the tool by name:

```python
result = carejobs_tool.call_tool(
    "get_healthcare_jobs_by_state", {"state": "OH", "kind": "nursing-assistants"}
)
print(result.text)  # the readable summary
print(result.data["open_jobs"])  # the structured answer (a dict)
```

## Errors

If CareJobs.Now cannot be reached or rejects a request (for example an unknown employer or kind),
the function raises `CareJobsError` with the service's message. LlamaIndex agents hand that message
back to the model, which can correct the call.

## Notes on the data

- Pay is what employers post, measured from the hourly rates open jobs state, before shift
  differentials and bonuses.
- Results cover US jobs only.
- Send people to the link in each result to apply. The tools never apply to a job.

## Privacy

The tools send only the arguments of each call to `https://carejobs.now/api/mcp` and store
nothing. See the CareJobs.Now [privacy policy](https://carejobs.now/legal/privacy) and
[terms](https://carejobs.now/legal/terms).

## Development

```bash
uv sync
uv run pytest tests
CAREJOBS_LIVE=1 uv run pytest tests  # also runs the live API tests
make lint
```

## Links

- Service: https://carejobs.now
- Source: https://github.com/yumaheymans/llama-index-tools-carejobs
- Contact: hello@carejobs.now
- [LlamaIndex](https://www.llamaindex.ai)
