[{"slug":"ZV-2026-1990","server_name":"pasteapply.com","severity":"breaking","title":"pasteapply.com: Tool confirm_payment was removed.","summary":"[breaking] Tool confirm_payment was removed. [breaking] Tool get_generation was removed. [breaking] Tool store_resume was removed. [breaking] Tool unlock_link was removed. [risky] Description of generate changed (81% word delta). [breaking] Field model was removed from generate input; consumers still sending it may be rejected or silently ignored. [breaking] Field jobUrl was removed from generate input; consumers still sending it may be rejected or silently ignored. [breaking] Field resume was removed from generate input; consumers still sending it may be rejected or silently ignored. [breaking] Field resumeId was removed from generate input; consumers still sending it may be rejected or silently ignored. [breaking] Field proPasses was removed from generate input; consumers still sending it may be rejected or silently ignored. [breaking] Field jobPosting was removed from generate input; consumers still sending it may be rejected or silently ignored. [breaking] Field modelProvider was removed from generate input; consumers still sending it may be rejected or silently ignored. [risky] Description of status changed (72% word delta).","changes":[{"kind":"tool_removed","tool":"confirm_payment","detail":"Tool `confirm_payment` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"get_generation","detail":"Tool `get_generation` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"store_resume","detail":"Tool `store_resume` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"unlock_link","detail":"Tool `unlock_link` was removed.","severity":"breaking"},{"kind":"description_changed","tool":"generate","after":"Free fixed sample only: call with useSample:true to see what a tailored resume and cover letter look like (a fixed example, not the user's resume; no AI runs; nothing charged). Free on PasteApply is a fixed sample right now: it shows what a tailored resume and cover letter look like, and no AI runs on free requests. Tailoring your own resume needs a plan. Any other call answers HTTP 402 code free_samples_only with nothing charged. A human tailors their own resume on https://pasteapply.com after signing in with Google and choosing a plan; agent keys, the resume vault, unlock links and saved drafts are temporarily off. Honesty lock: we only rearrange what is already true. Never invent employers, dates, skills, or metrics.","before":"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 resumeId over re-pasting; pasted resume still wins if both). Resume or resumeId required unless useSample. Unpaid generate returns a 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 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 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; send the provider key only in connection header X-PasteApply-BYOK-Key (env-var placeholder — never a literal key in tool args or chat). Hosted is default. Paid bots: Authorization Bearer pa_… from confirm_payment or POST /api/agent-key. Ladder $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 already true. Never invent employers, dates, skills, or metrics. If the posting wants something not on the source resume, omit it.","detail":"Description of `generate` changed (81% word delta).","severity":"risky","descriptionDelta":0.8095238095238095},{"kind":"input_property_removed","path":"inputSchema.properties.model","tool":"generate","before":{"type":"string"},"detail":"Field `model` was removed from `generate` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.jobUrl","tool":"generate","before":{"type":"string"},"detail":"Field `jobUrl` was removed from `generate` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.resume","tool":"generate","before":{"type":"string"},"detail":"Field `resume` was removed from `generate` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.resumeId","tool":"generate","before":{"type":"string"},"detail":"Field `resumeId` was removed from `generate` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.proPasses","tool":"generate","before":{"type":"array","items":{"type":"string"}},"detail":"Field `proPasses` was removed from `generate` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.jobPosting","tool":"generate","before":{"type":"string"},"detail":"Field `jobPosting` was removed from `generate` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.modelProvider","tool":"generate","before":{"enum":["hosted","openai","anthropic"],"type":"string"},"detail":"Field `modelProvider` was removed from `generate` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"status","after":"Read PasteApply status: freeMode \"samples_only\", purchasesOpen, prices (empty while purchases are paused), storage \"off\" and which features are temporarily off. Honesty lock: we only rearrange what is already true. Never invent employers, dates, skills, or metrics.","before":"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=up to 200 (within 2,350 signed-in requests a month). Honesty lock: we only rearrange what is already true. Never invent employers, dates, skills, or metrics.","detail":"Description of `status` changed (72% word delta).","severity":"risky","descriptionDelta":0.7246376811594203}],"published_at":"2026-10-09T03:17:12.843Z"},{"slug":"ZV-2026-1091","server_name":"pasteapply.com","severity":"breaking","title":"pasteapply.com: Field apiKey was removed from generate input; consumers still sending it may be rejected or silently ignored.","summary":"[safe] Description of generate changed (21% word delta). [breaking] Field apiKey was removed from generate input; consumers still sending it may be rejected or silently ignored. [safe] Description of store_resume changed (9% word delta). [breaking] Enum value unlimited removed from price on unlock_link. [risky] Enum value power added to price on unlock_link.","changes":[{"kind":"description_changed","tool":"generate","after":"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 resumeId over re-pasting; pasted resume still wins if both). Resume or resumeId required unless useSample. Unpaid generate returns a teaser only (coverage, fit.recommend skip|weak|apply with mustHavesMissing/impliedOnly, proof, short what-changed, redacted sample). Full letter and resume require unlock_link or a paid Bearer pa_… key with unlocks remaining. Optional BYOK: modelProvider openai|anthropic as a tool arg; send the provider key only in connection header X-PasteApply-BYOK-Key (env-var placeholder — never a literal key in tool args or chat). Hosted is default. 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 already true. Never invent employers, dates, skills, or metrics. If the posting wants something not on the source resume, omit it.","before":"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, fit.recommend skip|weak|apply with mustHavesMissing/impliedOnly, proof, short what-changed, redacted sample). Full letter and resume require 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 already true. Never invent employers, dates, skills, or metrics. If the posting wants something not on the source resume, omit it.","detail":"Description of `generate` changed (21% word delta).","severity":"safe","descriptionDelta":0.2109375},{"kind":"input_property_removed","path":"inputSchema.properties.apiKey","tool":"generate","before":{"type":"string"},"detail":"Field `apiKey` was removed from `generate` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"store_resume","after":"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.","before":"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.","detail":"Description of `store_resume` changed (9% word delta).","severity":"safe","descriptionDelta":0.09090909090909094},{"kind":"enum_value_removed","path":"inputSchema.properties.price","tool":"unlock_link","before":"unlimited","detail":"Enum value `unlimited` removed from `price` on `unlock_link`.","severity":"breaking"},{"kind":"enum_value_added","path":"inputSchema.properties.price","tool":"unlock_link","after":"power","detail":"Enum value `power` added to `price` on `unlock_link`.","severity":"risky"}],"published_at":"2026-09-15T21:56:18.509Z"}]