workatastartup-mcp
The server allows you to fetch job postings and company information from Work at a Startup (Y Combinator's job board) using your logged-in session cookie.
Get a job (
get_job): Given a numeric job ID (from a URL like/jobs/<id>), retrieves detailed job info: title, company, location, job type, experience level, salary & equity ranges, visa policy, required skills, location eligibility, and full description.Get a company (
get_company): Given a company slug (from a URL like/companies/<slug>), retrieves company details (name, YC batch, tagline, website, location, team size, industry, founders) and all currently open roles (title, ID, URL, role type, location, experience, salary/equity, visa policy, skills).Batch CLI: You can run the server with job IDs to fetch multiple jobs from the command line, outputting JSON lines suitable for piping into
jqor other tools.Authentication: Requires your
WAAS_COOKIEto access full content behind login.
Provides tools to read job postings and company details from Y Combinator's Work at a Startup platform, including structured job data (title, company, location, salary, etc.) and company profiles with open roles.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@workatastartup-mcpGet job 100105 from Work at a Startup"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
workatastartup-mcp
An MCP server that reads Work at a Startup (Y Combinator) job postings through your own logged-in session.
Work at a Startup keeps its job pages behind a login, so tools that only fetch public URLs get a title and nothing else. This server signs the request with your session cookie, so an AI assistant can pull the full job description the same way you'd see it in the browser.
What it does
It exposes two tools:
get_job(jobId)— takes the numeric id from a/jobs/<id>URL and returns the job as structured data: title, company, location, whether it's remote, employment type, role family, minimum experience, salary and equity ranges, visa policy, skills, when the posting went up, whether your account's location is eligible for the role, and the full description. It also hands back the company's slug and URL, so a job can be followed straight toget_company.get_company(slug)— takes the slug from a/companies/<slug>URL (e.g.siphox-health) and returns the company's details — name, batch, tagline, website, location, team size, industry, and founders — along with every role it currently has open (title, id, url, role family, employment type, location, remote flag, experience, salary and equity ranges, visa policy, and skills).
Related MCP server: jd-intel-mcp
Requirements
Node.js 18 or newer
A Work at a Startup account you're logged into
Install
npm install -g workatastartup-mcpOr run it straight from npm without installing:
npx workatastartup-mcpGetting your session cookie
The server reuses your existing session instead of storing your password. You give it your cookie once:
Log in to https://www.workatastartup.com in your browser.
Open the developer tools (
F12), go to the Network tab, and reload the page.Click the first request, find the Cookie request header, and copy its whole value.
Put that value in a
WAAS_COOKIEenvironment variable.
The cookie expires after a while. When the server starts returning "session expired", repeat the steps above for a fresh one.
Connecting it to an MCP client
Add the server to your client's MCP config. For a Claude-style config it looks like this:
{
"mcpServers": {
"workatastartup": {
"command": "npx",
"args": ["workatastartup-mcp"],
"env": {
"WAAS_COOKIE": "paste-your-cookie-here"
}
}
}
}Once it's connected, ask your assistant to fetch a posting by id, for example: "Get Work at a Startup job 100105." — or ask for a company's open roles: "What is siphox-health hiring for on Work at a Startup?"
How it works
The job pages are an Inertia.js app: instead of server-rendering the content, they ship the whole page as JSON inside a data-page attribute and let the browser draw it. The server reads that JSON straight from the attribute, so you get clean structured fields rather than scraped text — and it needs nothing heavier than a single authenticated HTTP request per job, no headless browser.
The same job is serialised differently depending on which page you land on: camelCase on a job page (minExperience), snake_case with pretty_* display variants inside a company's payload (pretty_min_experience). The parser accepts either spelling and prefers the display variant when both are there, since that's the string the site itself would show — Remote (US only) rather than a bare office city.
Batch mode from the command line
Run with one or more job ids and the same binary works as a plain CLI instead of the MCP server — handy for scripting, a saved queue of ids, or a quick check without wiring up a client. Each job streams to stdout as it's fetched, one JSON record per line, so you can pipe it straight into jq:
WAAS_COOKIE=... npx workatastartup-mcp --json 100105 100106 | jq .titleWithout --json each record is pretty-printed. A bad id doesn't stop the run — it prints an { "jobId": ..., "error": ... } record and the command exits non-zero if any id failed. Run it with --help for the full usage.
Draining a staged queue
If you collect postings as you browse, put them in a file and let --from chew through it:
WAAS_COOKIE=... npx workatastartup-mcp --json --from queue.txt > jobs.jsonlOne entry per line, in whatever shape you copied it — a bare id, a /jobs/<id> path, or the whole URL out of the address bar. Blank lines and # comments are skipped, so the file can carry notes:
# worth a closer look
100105
https://www.workatastartup.com/jobs/100106?utm_source=share # remote, hardwareA job listed twice is fetched once, the ids are fetched in the order you staged them, and a line that isn't an id is reported on stderr and skipped rather than ending the run. --from - reads the queue from stdin, so grep, jq or a browser export can pipe straight in. Ids on the command line work the same way and are fetched first.
Development
npm testThe tests run the parsers against saved pages in test/fixtures — trimmed copies of what the site serves, payload and all — so the whole extraction path is covered without a session cookie or a network call. If Work at a Startup changes its markup, save a fresh page into test/fixtures and the tests will show what moved.
GitHub Actions runs the same suite on every push and pull request, across Node 18 through 24 — see .github/workflows/ci.yml.
Limitations
Only reads public-to-you postings — anything your account can't see, the server can't see either.
Field extraction is best-effort against the current page markup; if Work at a Startup restructures a page, the selectors in
src/job-client.jsmay need a small update.Through the MCP tools it's one posting per call; use the batch CLI above to fetch several ids at once.
The CLI fetches one job at a time, on purpose — it's your own session doing the reading, so a queue of a few hundred takes a few minutes.
License
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI assistants to interact with LinkedIn by scraping profiles, companies, job postings, and getting personalized job recommendations using authenticated browser automation.173,083Apache 2.0
- Alicense-qualityAmaintenanceEnables AI assistants to fetch and structure job postings from major ATS platforms (Greenhouse, Lever, Ashby, etc.) directly, eliminating copy-paste and context loss.352MIT
- Flicense-qualityCmaintenanceEnables AI agents to pull live job listings from major ATS platforms (Greenhouse, Lever, Ashby, Workable), Hacker News hiring threads, and detect hiring signals on company career pages.
- AlicenseAqualityBmaintenanceEnables AI assistants to search and apply for jobs on Handshake, track applications, and research employers using your browser session.121MIT
Related MCP Connectors
Search AI-native jobs, inspect application forms, and fetch free interview-prep resources.
AI job search for Claude, ChatGPT, Cursor. 170K+ jobs, 3,800+ companies. OAuth or stdio.
Job platform for AI agents. Track tech jobs from companies that match your stack.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/moutasem-isentemiz/workatastartup-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server