Use applyapply from your agent
Give your own agent (Claude, ChatGPT, Cursor, or anything that speaks MCP or HTTP) an applyapply API key, and it can search current job listings, run sourcing, and write tailored application kits for you. It spends your credits the same way the website and extension do, and like them it never submits an application: you review and submit.
1. Create a key
Sign in, open Profile & settings, and create a key under Agent access. Keys start with aa_live_, are shown once, and can be revoked there at any time.
2. Connect over MCP
Claude Code:
claude mcp add --transport http applyapply https://applyapply.xyz/mcp --header "Authorization: Bearer aa_live_..."
Any client that takes an MCP config file:
{
"mcpServers": {
"applyapply": {
"type": "http",
"url": "https://applyapply.xyz/mcp",
"headers": {
"Authorization": "Bearer aa_live_..."
}
}
}
}
Then ask it something like "find Head of Product roles posted today and write a kit for the best one".
Tools
- get_account: Your applyapply account: email and credit balance.
- get_profile: Your saved profile: contact details, target roles, location preference, work authorization, background.
- update_profile: Update profile fields. Only the fields you pass change.
- search_listings: Search applyapply's ledger of current public job listings (a16z and Sequoia portfolio boards, Himalayas, We Work Remotely, Hacker News Who is hiring). Free. Matches titles by words against your target roles unless you pass roles.
- list_sources: Sources a sourcing run can use, with their credit cost.
- start_sourcing_run: Start a sourcing run: find new matching roles, check their location against your preference, and add them to your pipeline. Costs credits per source (see list_sources). Runs in the background; poll get_sourcing_status.
- get_sourcing_status: Whether a sourcing run is active, how the last one ended, and pipeline counts.
- list_pipeline: Jobs in your pipeline, newest first.
- generate_application_kit: Write a tailored application kit for a job URL: resume, cover note, why-this-role, and answers to the form's questions. Costs 10 credits; returns the saved kit without charge if one exists. applyapply never submits applications; the user reviews and submits.
- get_application_kit: The saved kit for a job URL, if one exists. Free.
- get_kit_link: A private page for a kit that the person can open on a phone without signing in, plus direct links to their tailored resume and cover letter as PDFs. Free. Hand this to the person you are working for.
- list_resume_questions: What the tailored resume for a job still cannot evidence: the questions worth asking the person, with any answers they have already given. Free.
- answer_resume_question: Save the person's answer to one of those questions. It is stored on their profile and strengthens every future application, not just this one. Free. Use their own words; do not invent experience.
- rewrite_resume: Rewrite the tailored resume for a job using everything the person has told us, and report the new match. Costs credits (see list_sources pricing in get_account). Ask them first.
- list_saved_answers: Everything the person has told us about their work, saved from earlier questions. Free. Read this before asking them something they have already answered.
- send_feedback: Report something broken or missing in applyapply (a job link that produced a bad kit, a wrong question). It reaches the people building it.
- set_job_status: Move a pipeline job to a status, e.g. applied after the user submits.
Or call the HTTP API
Every tool is a plain HTTP route. Send the key as Authorization: Bearer aa_live_....
curl https://applyapply.xyz/auth/me -H "Authorization: Bearer $APPLYAPPLY_KEY"
curl -X POST https://applyapply.xyz/generate -H "Authorization: Bearer $APPLYAPPLY_KEY" \
-H "Content-Type: application/json" -d '{"url":"https://jobs.ashbyhq.com/company/job-id"}'
GET /auth/me: email and creditsGET /profile,POST /profile: read or update profile fieldsGET /source/catalog,POST /source/run,GET /source/status: sourcingGET /sourced?status=new,POST /sourced/status: your pipelinePOST /generate(10 credits),GET /application?url=: application kits
Machine-readable
The same actions as OpenAPI: /openapi.json. Tool descriptions and this page are generated from the server, so they cannot drift from what it does.
Limits
60 requests a minute per account. Keys cannot create other keys, export the account, or delete it; those need a signed-in session.