Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "generate" and "status"
⟨125 unchanged words⟩ : we only rearrange what is already true.NeverUsesinventonly employers, dates, skills, ormetrics.metrics from your resume.
⟨38 unchanged words⟩ : we only rearrange what is already true.NeverUsesinventonly employers, dates, skills, ormetrics.metrics from your resume.
Certificate changed, valid to 2027-02-02
Changed the definition of "generate" and "status"
⟨100 unchanged words⟩ unlock links and saved drafts are temporarily off. While the Kit is on sale, the 402 also carries buyUrl (https://pasteapply.com/kit) and buyNote. Honesty lock: we only rearrange what is already ⟨8 unchanged words⟩
⟨13 unchanged words⟩ "off" and which features are temporarily off. While the Kit is on sale, also kit: its two SKUs and buyUrl for your human. Honesty lock: we only rearrange what is already ⟨8 unchanged words⟩
Removed "confirm_payment", "get_generation", "store_resume" and 1 more; changed the definition of "generate" and "status" (6 tools before, 2 now)
GenerateFreetailoredPasteApplyresumesample
Tailor a resume and cover letter to one job posting. Pass jobPosting text and/or jobUrlFree(publicfixedhttp(s);sampleweonly:
Changed the definition of "unlock_link"
CreatePURCHASES MAY BE PAUSED: while file storage is unavailable this tool returns an error with code purchases_paused (HTTP 503 + retryAfter, nothing charged, no Checkout created). Check status first (purchasesPaused / pricesAvailable) and do not retry in a loop. Otherwise: create a Stripe Checkout URL so a HUMAN can ⟨122 unchanged words⟩
Changed the definition of "generate", "status" and "unlock_link"
⟨197 unchanged words⟩ Bearer pa_… from confirm_payment or POST /api/agent-key. Ladder$3=1/$5=5/$10=50/$20=200.$3=1/$5=5/$10=50/$20=up to 200 (within 2,350 signed-in requests a month). Honesty lock: we only rearrange what is ⟨21 unchanged words⟩
⟨14 unchanged words⟩ Bearer pa_… from confirm_payment or POST /api/agent-key. Ladder$3=1/$5=5/$10=50/$20=200.$3=1/$5=5/$10=50/$20=up to 200 (within 2,350 signed-in requests a month). Honesty lock: we only rearrange what is ⟨9 unchanged words⟩
Changed the definition of "confirm_payment" and "unlock_link"
⟨56 unchanged words⟩ for later status/generate). Or POST /api/agent-key {sessionId, claimToken}. Pass claimToken from unlock_link: without it (and without the paying Google session) only the draft status comes back — no plan link, no apiKey. Never scrape card UI. Never complete Stripe Checkout ⟨10 unchanged words⟩
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"claimToken":{"type":"string"},"sessionId":{"type":"string"}},"required ⟨3 unchanged words⟩
Changed the definition of "generate"
⟨59 unchanged words⟩ teaser only (coverage, fit.recommend skip|weak|apply with mustHavesMissing/impliedOnly and fit.gap naming any missing must-have (exactly one missing must-have ⇒ weak; two or more ⇒ skip; interview % bands follow the verdict: apply 70–95, weak 45–69, skip 0–44), recommendUnlock false when skip / true when ⟨132 unchanged words⟩
Changed the definition of "generate"
⟨102 unchanged words⟩ a paid Bearer pa_… key with unlocks remaining. Free daily cap → HTTP 429 code free_cap + retryAfter; paid month unlock cap → HTTP 402 code unlock_quota (not retry-later). Optional BYOK: modelProvider openai|anthropic as a tool arg; ⟨65 unchanged words⟩
Changed the definition of "generate"
⟨60 unchanged words⟩ only (coverage, fit.recommend skip|weak|apply with mustHavesMissing/impliedOnly, recommendUnlock false when skip / true when weak|apply with optional unlockAdvice, proof, short what-changed, redacted sample). Check recommendUnlock / fit.recommend before unlock_link — do not unlock when skip. Full letter and resume require unlock_link or a ⟨80 unchanged words⟩
Changed the definition of "generate", "store_resume" and "unlock_link"
⟨32 unchanged words⟩ resumeId from store_resume / POST /api/resumes (prefer resumeId over re-pasting; pasted resume still wins if both). Resume or resumeId required unless ⟨26 unchanged words⟩ paid Bearer pa_… key with unlocks remaining. Optionalserver-sideBYOK: modelProvider openai|anthropic+asapiKeya tool arg; send the provider key only in connection header X-PasteApply-BYOK-Key (env-var placeholder — neverloggeda literal key in tool args or chat). Hosted is default. Paid bots: Authorization Bearer pa_… from confirm_payment ⟨33 unchanged words⟩
Changed the definition of "generate"
⟨50 unchanged words⟩ Unpaid generate returns a teaser only (coverage, fit.recommend skip|weak|apply with mustHavesMissing/impliedOnly, proof, short what-changed, redacted sample). Full ⟨64 unchanged words⟩
Added "store_resume"; changed the definition of "confirm_payment", "generate", "get_generation" and 2 more (5 tools before, 6 now)
ConfirmFallback unlock when get_generation still shows paid:false afterathe human paidin Stripe(slowCheckout.webhook). Pass the cs_ session id from the success URL. Happy path: poll get_generation until paid:true — no cs_ required. When paid, returns full coverLetter, structured resume,and short-lived files.pdf/docxfiles.pdf/docx/coverPdf absolute URLs (?dl= token lasts UTC billing month), and apiKey (Authorization Bearer pa_… for later status/generate). Or POST /api/agent-key {sessionId}. Never scrape card UI. Never complete Stripe
Changed the definition of "confirm_payment", "get_generation" and "unlock_link"
⟨10 unchanged words⟩ the cs_ session id from the success URL. When paid, returns full coverLetter, structured resume, and short-lived files.pdf/docx absolute URLs (?dl= token). Never scrape card UI. Never complete Stripe Checkout ⟨10 unchanged words⟩
Poll a generation including paid/unlocked after the human pays. Pass id or generationId (same uuid from generate). When paid:true: full coverLetter, resume, and files.ready/files.pdf/files.docx/files.expiresAt/files.coverLetter/files.resume (pdf/docx are short-lived ?dl= URLs ~2h). On file GET 403, re-call get_generation for a fresh token. Honesty lock: we only rearrange what is already ⟨8 unchanged words⟩
Certificate recorded, valid to 2026-12-02
Authorization not required
Changed the definition of "unlock_link"
⟨13 unchanged words⟩ unlocks, default), $3/mo (1 unlock),or$10/mo Pro (50 unlocks + extras), or $20/mo Unlimited (uncapped + Pro extras). Never scrape card UI. Never complete ⟨28 unchanged words⟩
⟨8 unchanged words⟩ "enum":["monthly","export","pro","unlimited"],"type":"string"}},"type":"object"}
Changed the definition of "unlock_link"
Create a Stripe Checkout URL so a HUMAN can pay$5$5/mo Export (5 unlocks, default),$3/month$3/mo (1 unlock), or$10$10/moPro.Pro (50 unlocks + extras). Never scrape card UI. Never complete Stripe Checkout ⟨26 unchanged words⟩
First tool surface recorded: 5 tools (server version 0.1.0)
Showing the latest 19 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"jobPosting":{"type":"string"},"jobUrl":{"type":"string"},"model":{"type":"string"},"modelProvider":{"enum":["hosted","openai","anthropic"],"type":"string"},"proPasses":{"items":{"type":"string"},"type":"array"},"resume":{"type":"string"},"resumeId":{"type":"string"},"useSample":{"type":"boolean"}},"type":"object"}
Read PasteApplyreadinessstatus:(openaiConfigured,freeModestripeConfigured"samples_only",pricespurchasesOpen,plan/unlocks when Bearer pa_). Paid bots: Authorization Bearer pa_… from confirm_paymentpricesor(emptyPOSTwhile/api/agent-key.purchasesLadderare$3=1/$5=5/$10=50/$20=uppaused),tostorage200"off"(withinand2,350whichsigned-infeaturesrequestsareatemporarilymonth).off. Honesty lock: we only rearrange what is ⟨9 unchanged words⟩
Confirm payment — Fallback unlock when get_generation still shows paid:false after the human paid (slow webhook). Pass the cs_ session id from the success URL. Happy path: poll get_generation until paid:true — no cs_ required. When paid, returns full coverLetter, structured resume, files.pdf/docx/coverPdf absolute URLs (?dl= token lasts UTC billing month), and apiKey (Authorization Bearer pa_… for later status/generate). Or POST /api/agent-key {sessionId, claimToken}. Pass claimToken from unlock_link: without it (and without the paying Google session) only the draft status comes back — no plan link, no apiKey.…
Get generation — Happy path after pay: poll until paid:true (webhook persists the unlock). Poll a generation including paid/unlocked after the human pays. Pass id or generationId (same uuid from generate). When paid:true: full coverLetter, resume, and files.ready/files.pdf/files.docx/files.coverPdf/files.expiresAt/files.coverLetter/files.resume (pdf/docx/coverPdf ?dl= URLs last the UTC billing month; refresh via get_generation anytime in-month). On file GET 403, re-call get_generation for a fresh token. Honesty lock: we only rearrange what is already true. Never invent employers, dates, skills, or metrics.
Store resume text once — Store resume text in the vault and get a resumeId (rs_1.<uuid>) to reuse on generate. Prefer resumeId on later generate over re-pasting the full resume. Pass resume text here. For PDF/DOCX/DOC/TXT/MD files, use HTTP POST /api/resumes multipart field "file" (max ~8MB) — this MCP tool is text-only. Stored text is used as-is (honesty lock; never invent employers). TTL ~30 days. Honesty lock: we only rearrange what is already true. Never invent employers, dates, skills, or metrics.
Unlock link for a human — PURCHASES MAY BE PAUSED: while file storage is unavailable this tool returns an error with code purchases_paused (HTTP 503 + retryAfter, nothing charged, no Checkout created). Check status first (purchasesPaused / pricesAvailable) and do not retry in a loop. Otherwise: create a Stripe Checkout URL so a HUMAN can pay $5/mo Export (5 unlocks, default), $3/mo (1 unlock), $10/mo Pro (50 unlocks + extras), or $20/mo (up to 200 unlocks within 2,350 signed-in requests a month + Pro extras). After the human pays, poll get_generation until paid:true for paid files fields (files.ready, files.pdf, files…
⟨20 unchanged words⟩ (50 unlocks + extras), or $20/mo (up to 200 unlocks within 2,350 signed-in requests a month + Pro extras). After the human pays ⟨86 unchanged words⟩
⟨57 unchanged words⟩ poll stays unpaid (also returns apiKey pa_…).: keep the claimToken from this reply and pass it to confirm_payment — only the Checkout's starter can link the plan or get the key. Never scrape card UI. Never complete Stripe Checkout ⟨26 unchanged words⟩
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"apiKey":{"type":"string"},"jobPosting":{"type":"string"},"jobUrl" ⟨29 unchanged words⟩
⟨8 unchanged words⟩ a resumeId (rs_1.<uuid>) to reuse on generate. Prefer resumeId on later generate over re-pasting the full resume. Pass resume text here. For PDF/DOCX/DOC/TXT/MD files, use ⟨44 unchanged words⟩
⟨9 unchanged words⟩ ":["monthly","export","pro","unlimitedpower"],"type":"string"}},"type":"object"}
Tailor a resume and cover letter to one job posting. Pass jobPosting text and/or jobUrl (public http(s); we fetch+strip HTML; prefer pasted jobPosting if both). Pass resume text and/or resumeId from store_resume / POST /api/resumes (prefer pasted resume if both). Resume or resumeId required unless useSample. Unpaid generate returns a teaser only (coverage, proof, short what-changed, redacted sample). Full letter and resume requireunlock_link.unlock_link or a paid Bearer pa_… key with unlocks remaining. Optional server-side BYOK: modelProvider openai|anthropic + apiKey (never logged). Paid bots: Authorization Bearer pa_… from confirm_payment or POST /api/agent-key. Ladder $3=1/$5=5/$10=50/$20=200. Honesty lock: we only rearrange what is ⟨21 unchanged words⟩
⟨7 unchanged words⟩ ,"jobPosting":{"type":"string"},"jobUrl":{"type":"string"},"model":{"type":"string"},"modelProvider" ⟨9 unchanged words⟩ "string"},"type":"array"},"resume":{"type":"string"},"resumeId":{"type":"string"},"useSample": ⟨4 unchanged words⟩
Happy path after pay: poll until paid:true (webhook persists the unlock). Poll a generation including paid/unlocked after the human ⟨11 unchanged words⟩ paid:true: full coverLetter, resume, andfiles.ready/files.pdf/files.docx/files.expiresAt/files.coverLetter/files.resumefiles.ready/files.pdf/files.docx/files.coverPdf/files.expiresAt/files.coverLetter/files.resume (pdf/docx are short-livedpdf/docx/coverPdf ?dl= URLs~2hlast the UTC billing month; refresh via get_generation anytime in-month). On file GET 403, re-call get_generation ⟨20 unchanged words⟩
Read PasteApply readiness (openaiConfigured, stripeConfigured, prices, plan/unlocks when Bearer pa_). Paid bots: Authorization Bearer pa_… from confirm_payment or POST /api/agent-key. Ladder $3=1/$5=5/$10=50/$20=200. Honesty lock: we only rearrange what is ⟨9 unchanged words⟩
⟨29 unchanged words⟩ Pro extras). After the human pays,confirm_payment /poll get_generationreturnuntilthepaid:truesixfor paid files fields:(files.ready, files.pdf, files.docx, files.coverPdf, files.expiresAt, files.coverLetter,files.resume.files.resume). confirm_payment only if the poll stays unpaid (also returns apiKey pa_…). Never scrape card UI. Never complete Stripe Checkout ⟨26 unchanged words⟩
Store resume text once — Store resume text in the vault and get a resumeId (rs_1.<uuid>) to reuse on generate. Pass resume text here. For PDF/DOCX/DOC/TXT/MD files, use HTTP POST /api/resumes multipart field "file" (max ~8MB) — this MCP tool is text-only. Stored text is used as-is (honesty lock; never invent employers). TTL ~30 days. Honesty lock: we only rearrange what is already true. Never invent employers, dates, skills, or metrics.
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"idgenerationId":{"type":"string"}},"requiredid":[{"idtype"]:"string"}},"type":"object"}
⟨20 unchanged words⟩ (50 unlocks + extras), or $20/moUnlimited(uncapped200 unlocks + Pro extras). After the human pays, confirm_payment / get_generation return the six paid files fields: files.ready, files.pdf, files.docx, files.expiresAt, files.coverLetter, files.resume. Never scrape card UI. Never complete Stripe Checkout ⟨26 unchanged words⟩