Coding agent documentation index Fetch the complete documentation index at: https://docs.worklittle.com/docs-agent-manifest.json Use this file to discover all available pages before exploring further.

Job search assistant

Search the market-wide index, enrich only the rows that matter, and paginate on demand.

Job search is free within monthly quotas. Still keep limit and caching intentional so agents do not burn quota.

Use this for job boards and search pages, commute or neighborhood views that plot employers on a map, swipe-to-apply decks that show one job at a time and then start auto-apply, career copilots, matching and ranking services, and research tools that track who is hiring. Your own applicants are not in GET /jobs. They live in Manage candidates.

Call sequence

1. Search. GET /jobs (MCP search_jobs) returns discovery rows: title, company, location, apply_url, can_apply, closed_at. Rows are snippets, not full descriptions. 2. Enrich the rows you will show. GET /jobs/:id (MCP get_job_details) returns responsibilities, qualifications, and salary fields. 3. Extract keywords with MCP get_job_keywords when the next step is document tailoring or skill matching. 4. Paginate with meta.next_cursor only when the user asks for more.

# 1) Search. limit max is 50.
curl -s "https://api.worklittle.com/jobs?q=product+designer&workplace_type=remote&posted_within_days=14&limit=10" \
  -H "Authorization: Bearer $WORKLITTLE_API_KEY"

# 2) Detail for one job.
curl -s "https://api.worklittle.com/jobs/JOB_ID" \
  -H "Authorization: Bearer $WORKLITTLE_API_KEY"

# 3) Next page.
curl -s "https://api.worklittle.com/jobs?q=product+designer&limit=10&cursor=NEXT_CURSOR" \
  -H "Authorization: Bearer $WORKLITTLE_API_KEY"

MCP equivalent:

{ "name": "search_jobs", "arguments": { "query": "product designer", "limit": 10 } }
{ "name": "get_job_details", "arguments": { "job_id": "JOB_ID" } }
{ "name": "get_job_keywords", "arguments": { "job_id": "JOB_ID" } }

MCP search_jobs sends query as the title filter and defaults posted_within_days to 7. Pass 0 for no cutoff. REST GET /jobs has no default cutoff.

Filters that carry their weight

| Parameter | Use it for |
| --- | --- |
| `q` | Title text, or an exact company slug. Substring match on the title, not embeddings |
| `title` | Title-only match. Prefix a term with `-` to exclude it. `-Senior` also removes **Sr.** and **Sr** |
| `location`, `location_or` | City, state, or country text. Every job carries geocoded location data. For radius search use `near_lat`, `near_lng`, `radius_km` |
| `company` | Employer slug(s). `stripe` includes. `-lucid-motors,-tesla` excludes |
| `workplace_type`, `employment_type`, `seniority_level` | Structured narrowing |
| `posted_within_days` | Rolling recency window. `0` means no cutoff |
| `limit`, `cursor` | Pagination, max **50** per page |

Put recency in posted_within_days, never in q. Employer exclusions go in company, not q. Full reference: Search jobs.

Billing and pagination

Job search is free up to 1000 jobs returned per month. Each row in data counts, so limit=50 uses five times the quota of limit=10. GET /jobs/:id returns raw description_text and cached AI for free. First-time AI generation (?summary=true) gets 100 free per org per UTC day, then token rates. GET /jobs/stats is free. Use it for counts instead of paging. See Alerts and market data. closed_at and can_apply can change after a search. See Closed jobs and eligibility.