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. Get 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.
An agent can also ask for its own key, with one approval from the person, the way a TV asks you to enter a code:
curl -X POST https://applyapply.xyz/agent/connect -H "Content-Type: application/json" -d '{"name":"Claude"}'
# -> { "code": "H4KP-92QB", "poll_token": "...", "verification_url": "https://applyapply.xyz/connect?code=H4KP-92QB" }
# Ask the person to open that URL and approve, then:
curl -X POST https://applyapply.xyz/agent/token -H "Content-Type: application/json" -d '{"code":"H4KP-92QB","poll_token":"..."}'
# 428 until approved, then -> { "api_key": "aa_live_..." }
Codes last 15 minutes and work once. The person sees what the agent will be able to do before approving, and can revoke it later in Profile and settings.
2. Set up the account
New accounts start with free credits. Call get_account first: it says what is missing. A resume matters most, since every tailored resume is built from it, so send its full text with update_profile along with target roles and location. Buying more credits needs a card, so an agent cannot do it: when the balance runs out the API answers 402 with a link for the person.
3. Connect over MCP
In an assistant with a connectors screen (Claude, ChatGPT, Grok and others), add a custom connector and paste https://applyapply.xyz/mcp. It signs you in here, you approve once, and its tools appear. Nothing to copy.
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: The account: email, credit balance, and whether it is ready to write applications (a resume and target roles are set). Check this first: without a resume the kits are weak.
- 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.
- list_corrections: The user's corrections: short statements about themselves that override their resume, bio and saved answers in every piece of writing. Read these before writing anything about the user.
- add_correction: Record a correction the user states about themselves, e.g. that a claim appearing in their applications is not true. It applies to every kit, tailored resume and answer from then on. Use it whenever the user contradicts something in their own materials.
- remove_correction: Drop a correction by its id, from list_corrections.
- set_job_status: Move a pipeline job to a status, e.g. applied after the user submits.
4. 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.