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.
Search jobs
Search Worklittle's open-role index, paginate results, and fetch enriched job details for agents and job boards.
Search
Worklittle maintains a market-wide index of millions of open roles, enriched with location, salary, and company data, alongside jobs employers publish on Worklittle. GET /jobs searches that index and returns one page of matching jobs. Requires the jobs:read scope.
curl -s "https://api.worklittle.com/jobs?q=product+designer&workplace_type=remote&limit=10" \
-H "Authorization: Bearer $WORKLITTLE_API_KEY"
{
"data": [
{
"id": "…",
"title": "Senior Product Designer",
"company": { "name": "Example Co" },
"apply_url": "https://…",
"can_apply": true,
"closed_at": null
}
],
"meta": { "next_cursor": "…" }
}
Rows are snippets without the full description. Pass meta.next_cursor as cursor to get the next page, and stop when it is null. limit defaults to 20 and maxes out at 50.
MCP: search_jobs. SDK: wl.jobs.search(). CLI: worklittle jobs search.
Get a job
GET /jobs/:id returns the full posting. Use the id from a search row.
curl -s "https://api.worklittle.com/jobs/JOB_ID" \
-H "Authorization: Bearer $WORKLITTLE_API_KEY"
description_text is plain text, never HTML. Headings and bold become bold, lists become - bullets, and links become [label](url). Bold is for display only. For resume keywords, use keywords or MCP get_job_keywords.
By default the response returns the raw description plus any AI enrichment that is already cached. Add ?summary=true (MCP get_job_details with summary: true) to generate the AI summary the first time. Later reads use the cached result.
MCP: get_job_details.
Filters
| Parameter | Description | | --- | --- | | `q` | Match on title or company text. | | `title` | Match on title only. Comma-separated values are ORed. Prefix a value with `-` to exclude it. `-Senior` also excludes "Sr." and "Sr" titles. The same applies to `-Principal`, `-Lead`, `-Staff`, `-Director`, `-Executive`, `-VP`, `-Head`, `-Chief`, and `-Group`. | | `company` | Company slug or slugs. `stripe` or `meta,google` includes. A leading `-` excludes (`-lucid-motors,-tesla`). See [Search companies](/jobs/api/search-companies). | | `location`, `location_or` | Location filters. | | `workplace_type` | Workplace type, such as `remote`. | | `employment_type` | Comma-separated values are ORed, for example `full_time,part_time`. | | `seniority_level` | Comma-separated values are ORed, for example `internship,entry,new_grad`. | | `posted_within_days` | Rolling lookback in days. `0` or omitted means no cutoff on REST. | | `since` | Unix timestamp lower bound. Wins over `posted_within_days` when both are set. | | `limit`, `cursor` | Page size (max 50) and pagination cursor. | | `visa_sponsorship` | `yes` or `no`. `yes` includes US jobs whose company filed certified H-1B / E-3 visas for that kind of title in the last 12 months (US Department of Labor LCA data, refreshed quarterly), unless the posting says it does not sponsor. Each row's `visa_sponsorship_source` is `posting` or `h1b_filings`, and `h1b_filings` is the matching filing count. | | `include_total` | `true` sets `meta.total` to the number of matching jobs. Works on the first page of a `title` search without `near_lat`/`near_lng` or `company`, otherwise `total` stays null. Add `exclude_remote=true` to leave remote roles out of the count. |
MCP search_jobs takes the role as query and exposes a smaller set: place (location, location_or, near_lat, near_lng, radius_km), company, posted_within_days, seniority_level, employment_type, and visa_sponsorship. Its limit defaults to 10. When posted_within_days is omitted, MCP defaults to 7 (no default when visa_sponsorship is set), and 0 means no cutoff. Salary and workplace filters (salary_min, workplace_type) are REST-only. Put recency in posted_within_days, never in the query text.
Closed jobs and applying
Search never returns closed jobs, so closed_at is always null in list rows and there is no closes_at filter. To read the ATS deadline, fetch closes_at from GET /jobs/:id. See Closed jobs and eligibility.
Use can_apply to decide whether POST /jobs/apply can run for a job. Do not infer it from source_name or apply_url. Roles with can_apply: false still carry an employer apply_url. See Apply for jobs.
Salary average
GET /jobs/salary-average returns the average annual pay for jobs that match a query. It takes the same filters as GET /jobs, including negative title tokens.
curl -s "https://api.worklittle.com/jobs/salary-average?title=Product+Manager,+-Senior,+-Principal,+-Director&workplace_type=remote&country=US" \
-H "Authorization: Bearer $WORKLITTLE_API_KEY"
| Parameter | Description | | --- | --- | | `q` or `title` | Required. Role query with the same syntax as above. | | `currency` | ISO 4217 code for the salary rows included. Defaults to `USD`. | | `location`, `company`, `workplace_type`, … | Same as [Filters](/jobs/api/search-jobs). |
data contains matching_jobs, jobs_with_salary, jobs_in_average, average_salary, salary_min, and salary_max. Hourly and monthly pay is annualized first. Only jobs with annualized pay between $30k and $1M count toward the average.
Routes, scopes, and billing
| Route | Method | Scope | Billing | | --- | --- | --- | --- | | `/jobs` | GET | `jobs:read` | Free within the monthly quota (1000 jobs returned) | | `/jobs/:id` | GET | `jobs:read` | Free within the monthly quota | | `/stats` | GET | `jobs:read` | Free | | `/jobs/map` | GET | `jobs:read` | Free within the monthly quota (1000 requests) | | `/jobs/salary-average` | GET | `jobs:read` | Free within the monthly quota (1000 requests) |
Search is not billed per job returned. See Pricing and Rate limits. For aggregate counts, use GET /stats or MCP get_market_overview instead of paginating search.
Agent REST tools
| Method | Path | Purpose | | --- | --- | --- | | GET | `/v1/agent/tools` | List REST agent tools and JSON schemas | | POST | `/v1/agent/tool` | Run `search_jobs`, `get_job_details`, `create_resume`, or `create_cover_letter` (legacy wrapper) |
Requires agent:tools scope. Prefer POST /jobs/resumes and POST /jobs/cover-letters for documents. Full ATS is on MCP.