MCP server for automating job applications on LinkedIn, Naukri, and external career sites using Playwright browser automation
This server has severe definition quality gaps. Tool descriptions are present but often generic (e.g., 'Retrieve cached LinkedIn job listings' lacks context on when to use it vs fetch-linkedin-jobs). Most critically, input schemas are either missing or inferred from code rather than explicitly registered. Parameters lack type definitions in visible schema declarations. No output schemas are documented. Error handling is absent, tools return raw HTTP errors without recovery guidance. The server conflates multiple concerns (e.g., naukri-auto-apply combines scraping, question-answering, and job logging). Tool names lack clarity: 'log-applied' vs 'log-manual-job' are confusingly similar; 'fetch-linkedin-jobs' vs 'fetch-linkedin-jobs-apify' vs 'get-linkedin-jobs' create ambiguity. No tool declares what it modifies or whether it's idempotent. Security-critical: get-config exposes API keys as tool output.
Automated application handler for external company career sites (Workday, Greenhouse, Lever, etc.) with resume upload and OTP verification
Remove jobs posted more than 30 days ago from linkedin-jobs.json and naukri-external-jobs.json, deduplicate, and rebuild Excel
Fetch latest OTP verification code from Gmail inbox using Gmail API
Read-only extraction of LinkedIn job postings and recruiter feed posts for Java Full Stack and MERN roles from the last 15 days
Fetch LinkedIn job listings using Apify LinkedIn Jobs Scraper actor
Fetch LinkedIn job listings using Apify's LinkedIn Jobs Scraper actor and save to linkedin-jobs.json
Generate PDF resume from HTML template using Playwright
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. get-jobs, get-stats, get-linkedin-jobs return unstructured responses with no field documentation.
Input schemas missing or incomplete for 9+ tools. fetch-linkedin-jobs, cleanup-jobs, generate-resume-pdf, fetch-linkedin-feed-jobs have no visible schema definitions. Cannot validate LLM inputs.
get-config returns API keys as tool output. Credentials must never appear in responses, they enter LLM context and risk logging/leakage. Use server-side secret injection only.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | 2026-07-28+ | v2 |
Retrieve server configuration including API keys
Retrieve unified job list combining LinkedIn jobs, Naukri external jobs, and tracker entries
Retrieve cached LinkedIn job listings from linkedin-feed-jobs.json
Retrieve job application statistics including applied, external, failed, skipped, and pending counts
Log a job application to the tracker with title, company, location, URL, and optional notes
Log a manually applied external job with title, company, location, and optional notes
Automated job application on Naukri.com with chatbot question answering and external job capture
Update server configuration (e.g., Apify API key)
Tool names create ambiguity: 'fetch-linkedin-jobs' vs 'fetch-linkedin-jobs-apify' vs 'get-linkedin-jobs' are confusingly similar. 'log-applied' vs 'log-manual-job' lack clear distinction. LLMs will struggle to pick the right tool.
No error handling or recovery guidance. Tools return raw HTTP errors (500, 400) without actionable messages. LLMs cannot self-correct or retry intelligently.