justbacked

developers

MCP server and REST API

Every open role at startups that raised venture money in the last six months, plus the member's application tracker, company lists and saved searches. For AI assistants (MCP) and scripts (REST). Members only. Setup guides for specific assistants are on /agents.

Authentication

Create a key at Account, AI agents & API. Keys start with jb_live_, are shown once, and are stored only as a SHA-256 fingerprint. Up to 5 keys per member; revoking one stops it immediately.

Send the key as Authorization: Bearer jb_live_... (or X-Api-Key). For MCP connector screens that only take a URL, put the key in the path: https://justbacked.com/api/mcp/jb_live_...

  • 401 missing, malformed or revoked key, with WWW-Authenticate: Bearer resource_metadata="https://justbacked.com/.well-known/oauth-protected-resource/api/mcp" (RFC 9728).
  • 403 the key's owner is not a member (membership lapsed). 429 over 1,000 requests today (UTC, summed across the member's keys).
  • The key acts as the member: searches include roles posted in the last 48 hours, and writes only touch the member's own tracker, lists and searches.

MCP server

Stateless Streamable HTTP at https://justbacked.com/api/mcp: POST one JSON-RPC message (or a batch of up to 20) and get JSON back. No sessions or SSE. Protocol versions 2025-06-18, 2025-03-26 and 2024-11-05. initialize and tools/list work without a key; tools/call needs one.

Claude Code
claude mcp add --transport http justbacked https://justbacked.com/api/mcp \
  --header "Authorization: Bearer jb_live_YOUR_KEY"
curl
curl -s https://justbacked.com/api/mcp \
  -H "Authorization: Bearer jb_live_YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_jobs","arguments":{"functions":["design"],"cities":["nyc"],"stages":["a"],"min_pay_usd":150000}}}'

search_jobsread-only

Search open roles at startups that raised venture money in the last six months. Same filters as the justbacked.com board. Members see roles the day they are posted. Returns jobs with title, company, location, pay, latest round, investors and apply link, plus total matches and a board_url to share.

query, search_descriptions, cities, location, countries, work_modes, functions, seniority, stages, raised_within_days, min_raise_usd, min_pay_usd, has_pay, company_sizes, industries, investors, posted_within_hours, hiring_fast, employment, exclude_title_words, list_id, include_non_venture, sort, limit, offset

get_jobread-only

Full detail for one role: description, pay, the company's latest round and investors, hiring velocity, apply URL, which hiring system (ATS) it uses, and whether it is already in the user's tracker.

job

get_application_formread-only

The role's application questions (labels, types, required, options) read from the company's public Greenhouse, Lever or Ashby job board, so you can draft answers for the user to review. Read-only: it never submits anything. The user applies at apply_url.

job

get_companyread-only

A startup's profile: latest round, amount, date, lead investors, headcount, HQ, hiring velocity by function, and every open role.

company

track_applicationwrites to the member's account

Add a role to the user's JustBacked tracker (shown at justbacked.com/saved) or update its status. Statuses: saved, applied, interviewing, offer, rejected, withdrawn, archived. Use "saved" for roles the user is considering; use "applied" only after the user confirms they submitted. For a role found elsewhere, pass title + company + apply_url instead of job.

job, status, notes, applied_at, title, company, apply_url

list_applicationsread-only

The user's application tracker: every saved or applied role with status, applied date and notes, plus counts by status.

status, limit

update_applicationwrites to the member's account

Change a tracked role's status (e.g. interviewing, offer, rejected, withdrawn), replace its notes, or append a dated note.

job, status, notes, append_note, applied_at

list_listsread-only

The user's company lists (target companies) with each company's open roles and new roles this week. A list id also works as list_id in search_jobs.

add_to_listwrites to the member's account

Add a startup to one of the user's lists. Pass list_id, or list_name (an existing list's name, or a new list to create). Lists with alerts on email the user when a company posts a role or raises.

company, list_id, list_name

remove_from_listwrites to the member's account

Remove a startup from one of the user's lists.

company, list_id

list_saved_searchesread-only

The user's saved searches (email alerts) with their filters and board links.

save_searchwrites to the member's account

Save a search with the same filters as search_jobs. JustBacked emails new matching roles daily (or weekly).

name, alert, query, search_descriptions, cities, location, countries, work_modes, functions, seniority, stages, raised_within_days, min_raise_usd, min_pay_usd, has_pay, company_sizes, industries, investors, posted_within_hours, hiring_fast, employment, exclude_title_words, list_id, include_non_venture

delete_saved_searchwrites to the member's account

Delete one of the user's saved searches by id.

id

get_accountread-only

The user's membership, API usage today and tracker/list/search counts.

JustBacked never submits job applications. get_application_form reads a role's public questions so an assistant can help the member prepare; the member applies on the company's site.

REST API

Base URL https://justbacked.com/api/v1. JSON in and out. OpenAPI 3.1: /api/v1/openapi.json.

GET/me

Membership, API usage today, counts.

GET/jobs

Search roles. Same query string as justbacked.com/jobs (q, metro, fn, lvl, mode, stage, raised, min, minpay, pay, size, ind, inv, posted, fast, emp, not, list, all, desc, sort) plus limit (1-50) and offset.

GET/jobs/{slug}

One role: description, pay, round, investors, hiring velocity, apply URL, ATS, tracker status.

GET/jobs/{slug}/application-form

The role's public application questions (Greenhouse, Lever, Ashby). Read-only.

GET/companies/{slug}

Startup profile and every open role.

GET/applications

The tracker (?status=applied).

POST/applications

Track a role: {job, status, notes, applied_at}, or {title, company, apply_url} for a role found elsewhere.

PATCH/applications

Update: {job, status?, notes?, append_note?, applied_at?}.

GET/lists

Company lists with each company's open roles.

POST/lists

{company, list_id | list_name}: add a company (creates the list by name if needed).

GET/saved-searches

Saved searches (email alerts).

POST/saved-searches

{name, alert: daily|weekly|off, ...search_jobs filter fields}.

DELETE/saved-searches?id=

Delete one.

Search
curl -s "https://justbacked.com/api/v1/jobs?fn=engineering&mode=remote&raised=30&limit=10" \
  -H "Authorization: Bearer jb_live_YOUR_KEY"
Track an application
curl -s -X POST https://justbacked.com/api/v1/applications \
  -H "Authorization: Bearer jb_live_YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"job":"<job slug>","status":"applied","notes":"Referred by Sam"}'

Data notes

  • Roles come from each company's own hiring system, read daily, for startups whose latest venture round is under six months old. Closed roles drop out.
  • posted_at is null for roles that were already open when we first read the company's board; those carry on_board_since instead.
  • Pay appears only when the posting publishes it. min_pay_usd compares annualized USD pay.
  • Questions or a higher limit: [email protected].