Ambuj Systems - Career Workspace
Integrates with Google Gemini API (3.5 Flash Lite) for evidence-grounded cover letter generation and claim validation.
Integrates with MongoDB Atlas for telemetry and observability data storage.
๐ฏ The Engineering Philosophy
โ The "Toy AI Generator" Fallacy
99% of cover letter tools on the internet are simple prompt wrappers that cause immediate disqualification during technical recruiter screens:
Hallucinated Metrics: They invent fake quantitative claims ("Increased revenue by 43% using Docker" when the candidate only listed Docker under skills).
Fluff & Sycophancy: They inject generic, embarrassing praise ("I have long admired your revolutionary, industry-defining synergy").
Zero Company Grounding: They have no real-time awareness of recent engineering pivots, active tech stacks, or corporate subsidiaries.
Hidden Third-Party Traps: They fail to detect when a job posting is a third-party staffing/payroll agency disguised as a direct employer.
โ The CoverCraft Architecture: Verifiable Evidence Graph
CoverCraft is not a template filler. It is an Evidence-Grounded Career Workspace & Claim-Validation Engine designed for senior engineers and discerning hiring teams.
Candidate Resume (PDF) Job Description (JD) Live Web (Tavily + Jina AI)
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ
โ Deterministic โ โ Deterministic โ โ 8-Page Multi-Board โ
โ Text & Evidence โ โ Fallback Regex โ โ Crawl & Markdown โ
โ Extraction Layer โ โ & Vendor Auditor โ โ Deep Extraction โ
โโโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโโ โโโโโโโโโโโฌโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Human-in-the-Loop Gateway โ
โ (Source Approval & Selection) โ
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Evidence-Grounded Generator โ
โ โข Strict Verbatim Anchors โ
โ โข Evidence-Grounded Claim Validation โ
โ โข Citation Footnotes [1], [2] โ
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Interview-Defensible Output โ
โ (Every claim backed by facts) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโRelated MCP server: JobFindsMe
โก Core Architectural Pillars
1. Multi-Source Real-Time Intelligence & Deep Markdown Crawling
Tavily 8-Page Authoritative Crawl: Queries live enterprise footprints targeting
careers,linkedin,naukri, andambitionbox.Jina AI Reader (
r.jina.ai) Deep Scraping: Strips HTML clutter, popups, and cookie walls, returning clean, high-fidelity markdown with an exponential timeout fallback.Three-Tier Domain Classifier: Categorizes incoming intelligence into Company Official, Job Portals & Reviews, and External Engineering News.
2. Deterministic Fallback Regex & 4-Tier Company Intelligence
When LLM JSON structures are delayed or partially populated, a deterministic regex pipeline extracts ground truth directly from raw JD tokens:
๐ Job Context Sub-Tab (Default): Extracts Role, Work Model (Remote / Hybrid / On-Site), Experience Band, and Disclosed Salary Status.
โ ๏ธ Third-Party / Staffing Detection: Flags staffing vendors, C2H (Contract-to-Hire), and payroll intermediaries with verbatim quotes directly extracted from the JD.
๐ข Company Identity Sub-Tab: Verifies whether the firm is a Direct Employer, Services Vendor, GCC (Global Capability Center), or Product Company. Missing fields strictly report
"Not verified from available sources".โก Hiring Signals Sub-Tab: Isolates technology focuses, active initiatives, and recent hiring surges with cited references
[1],[2].๐ Sources Coverage Sub-Tab: Displays full URL citations and scrape statuses.
3. Evidence-Grounded Generation, UX & Claim Validation Policy
Evidence-Grounded Synthesizer: System instructions enforce that every single achievement claim in the cover letter must map directly to a verified bullet in the candidate's resume.
Interactive In-Line Evidence Markers with Clean Submission Export: On-screen interactive badges (
[Resume Anchor]&[Source Citation]) allow candidates to hover and verify exact source quotes with a live[Evidence Markers: ON/OFF]toggle. When candidates click Copy to Clipboard or Download Markdown/PDF, internal citation tags are automatically stripped to deliver 100% clean, submission-ready letters for recruiters.Adversarial Overclaim Red-Teamer (Veracity Audit Gate): Scans generated text against candidate resume verbs to catch senior inflation (e.g., resume states "assisted team with Kubernetes rollout" vs draft stating "spearheaded enterprise migration"). The engine automatically softens unverified verbs to authentic baseline evidence and records an audit log.
Live Step Progress Tracker & Dynamic Elapsed Timer: An event-driven 4-phase execution tracker (
01. Competency Matchโ02. MCP Company Researchโ03. Human Approvalโ04. Evidence Synthesis) with a live counting timer (00:04s) and active tool indicator so candidates clearly follow live execution without confusion or perceived stalls.Human-in-the-Loop (HITL) Gate: Users explicitly inspect, evaluate credibility scores, and toggle on/off scraped web sources before any external intelligence enters the LLM generation prompt.
4. Native Model Context Protocol (MCP) Integration (8 Production Tools)
๐ก๏ธ Triple-Registry Verified FastMCP Server (Glama ยท Smithery ยท M8ven):
CoverCraft's FastMCP server and its 8 registered tools have been independently audited and verified across leading registries with Glama Grade A - A, M8ven Trust Score 89/100 (Grade B), and Smithery Verified (8 Tools) with continuous live monitoring and 0 security vulnerabilities.
Contains a standalone Anthropic Model Context Protocol (MCP) server written in Python 3.11 (
mcp-server/).Exposes 8 Registered Tools via standard Model Context Protocol stdio transport and Streamable HTTP SSE transport:
company_research: Real-time web search via Tavily with traceable source citations.evidence_validator: Claim Ledger validation against source data returningVERIFIED/PARTIAL/UNSUPPORTED.jd_analyzer: Evidence-backed JD matching against resume with actual proof anchors.ats_readiness: Deterministic heuristic audit on keyword coverage, format integrity, and length.source_filter: Algorithmic domain authority tiering, noise suppression, and Outdated News & Stale Tech Filter (<9m company initiatives, <18m engineering stack, [Historical Context] tag).cover_letter_generator: Evidence-grounded synthesis with structured in-line citation markers and zero-overclaim enforcement.github_proofer: Real-time candidate GitHub portfolio & commit history verification engine ($0 free tier PAT, 5,000 req/hr). Inspects public repositories, extracts commit SHAs and messages, and anchors resume technical claims directly into verifiable code evidence with zero overclaiming.huggingface_proofer: Autonomous GenAI model & weights verification engine ($0 free tier HF Token, 30,000 req/hr). Inspects candidate's public Hugging Face models, spaces, datasets, and aggregate download metrics (e.g. 700+ model downloads, qLoRA fine-tuning, GGUF quantization), cross-referencing AI claims against verifiable weights.
Dual-transport support: run locally with Claude Desktop/Cursor via
stdio_serveror deploy as an independent streaming microservice using--transport=sse.
5. Live GitHub Code Proof & Commit Auditor (MCP Tool #7)
Verifiable Public Code Evidence: Connects to candidate GitHub profile via official GitHub MCP tool (
mcp-server/tools/github_proofer.py) and Next.js route/api/github-verify.Commit-Level Hashing: Extracts real-time commit SHAs (e.g.
sha: 7f2a1b9), commit messages, repository descriptions, and architecture files to ground technical claims in verifiable code history.Zero-Cost Free Tier: Powered by a GitHub Personal Access Token (PAT) with read-only public scope, unlocking 5,000 req/hr at $0 cost with 100% reliable rate limit isolation.
Adversarial Overclaim Sentinel: If a candidate claims a framework without public repository or commit proof, CoverCraft flags the gap and prompts the applicant for clarification rather than hallucinating fictitious enterprise experience.
6. Autonomous Hugging Face Weights & Model Auditor (MCP Tool #8)
Verifiable Open-Source Weights & Models: Connects to candidate Hugging Face profile via official MCP tool (
mcp-server/tools/huggingface_proofer.py) and Next.js route/api/hf-verify.Real-World Download & Community Proof: Audits real community adoption metrics (e.g. 726+ model downloads, 39 community likes/stars), cross-referencing GenAI claims (fine-tuning, LoRA, QLoRA, GGUF quantization, Legal AI) against verifiable downloadable weights.
Interactive AI Demo Grounding (Gradio Spaces): Inspects candidate's live interactive Gradio spaces (e.g.
ambuj-ai-chatbot,legal-india-chatbot), mathematically verifying live model deployment and edge inference capabilities.Zero-Cost Free Tier API: Powered by Hugging Face user access tokens ($0 free tier) delivering 30,000 req/hr with 5-minute stale-while-revalidate caching and high-availability fallback.
Anti-Overclaim Sentinel: Distinguishes candidates who merely prompt commercial APIs from true AI engineers who fine-tune, quantize, and ship real weights with community traction.
7. Candidate Privacy-First Architecture & Dual Auto-Extraction Engine
PII Hardening & Phone Number Removal: Mobile phone numbers have been completely removed from the UI and backend schemas to preserve applicant privacy.
Dual Intelligent Auto-Extraction:
Resume Ingestion Auto-Fill (
/api/parse-resume): Auto-extracts candidate Name, Email, LinkedIn URL, and GitHub Profile URL from uploaded PDF resumes via regex + LLM extraction, pre-filling the generator form.Job Description Auto-Detection (
InputForm.jsx): Automatically detects target Role and Company Name as soon as a user pastes a Job Description, eliminating redundant manual typing.
8. Production Observability: Langfuse LLM Tracing & MongoDB Atlas
Langfuse LLM Observability & Tracing: Full-trace telemetry capturing end-to-end generation latency, prompt/completion token consumption, Gemini model parameters, and span-level child traces across all 8 MCP tool operations.
Resilient Non-Blocking Execution: Observability spans execute in protected async try/catch blocks; if network limits occur, generation continues seamlessly with zero user latency impact.
MongoDB Atlas Telemetry: Logs anonymized generation latency, token volume, tone selections, and error distributions.
5. Production Observability & Multi-Stage Containerization
MongoDB Atlas Telemetry: Logs anonymized generation latency, token volume, tone selections, and error distributions.
Production Docker Architecture: Next.js 16 standalone build reduces Docker image size from 1.2 GB to ~120 MB, running under an unprivileged
nextjs:nodejsuser for zero root vulnerabilities.
๐ ๏ธ Complete Tech Stack
Layer | Technologies / Services | Purpose |
Frontend Framework | Next.js 16.1.6 (App Router) + React 19 | Server Components, Streaming SSR, High-Performance Hydration |
Styling & Motion | Vanilla Tailwind CSS v4 + HSL Design Tokens | Modern dark mode, frosted glass surfaces, tactile spring micro-interactions |
Language Model | 3-Tier Multi-Provider Cascade: Primary | Circuit breaker, exponential backoff, zero-downtime resilience |
Web Crawling | Tavily AI Search API (8-Page Crawl) | Real-time portal & news search with domain filtering |
Page Extractor | Jina AI Reader ( | Deep page markdown conversion with Bearer token authentication |
Agent Protocols | Anthropic Model Context Protocol (MCP) | Python 3.11 stdio server for external LLM agent invocation (8 Tools) |
Code Verification | GitHub REST API & MCP Proofer | Real-time public commit SHA and repository grounding ($0 Free Tier) |
Model & Weights Verification | Hugging Face Hub API & MCP Proofer | Real-time open-source weights, GGUF/LoRA quants, community downloads ($0 Free Tier) |
LLM Observability | Langfuse Node SDK | Full-trace latency, token consumption, and multi-agent child spans |
Authentication | NextAuth.js v4 (Google OAuth 2.0 Provider) | Secure session management & OAuth callback flow |
Database & Telemetry | MongoDB Atlas (Mongoose Driver) | Persistent telemetry schema, audit trails, usage tracking |
Deployment | Vercel Serverless Edge + Docker Standalone | 0-second cold starts, global CDN caching, container portability |
๐ End-to-End System Sequence
sequenceDiagram
autonumber
actor Candidate as User / Recruiter
participant Web as Next.js 16 Frontend
participant API as Route Handlers (/api/*)
participant Tavily as Tavily Search Engine
participant Jina as Jina AI Reader
participant GitHub as GitHub MCP Proofer
participant Langfuse as Langfuse Observability
participant LLM as Google Gemini 2.5 Flash Lite
participant DB as MongoDB Atlas
Candidate->>Web: Upload Resume (PDF) & Paste Job Description
Web->>API: POST /api/parse-resume & /api/analyze
API->>API: Auto-Extract Candidate Name, Email, LinkedIn & GitHub Handle
API->>API: Auto-Detect Target Role & Company from JD
API->>GitHub: GET /api/github-verify (MCP Tool #7 Commit Auditor)
GitHub-->>API: Verified Public Repositories, Commit SHAs & Timestamps
API->>LLM: Schema-Enforced Extraction (Skills & Match Matrix)
LLM-->>API: Structured Match Matrix & Vendor Indicators
API->>Langfuse: Log Trace & Child Spans (Latency, Tokens, Model)
API-->>Web: Render Evidence Match, GitHub Code Proof, Hugging Face Proof & 4-Tier Job Context Tabs
Candidate->>Web: Trigger Real-Time Research
Web->>API: POST /api/research { company, role }
API->>Tavily: Crawl 8 Authoritative URLs (Careers, News, Reviews)
Tavily-->>API: Raw Search Results
API->>Jina: Deep Scrape Top URLs to Clean Markdown
Jina-->>API: High-Fidelity Content
API-->>Web: Display HITL Source Cards (User Approves Sources)
Candidate->>Web: Select Tone & Click "Generate Cover Letter"
Web->>API: POST /api/generate { approvedSources, evidenceMap }
API->>LLM: Evidence-Grounded Generation Prompt (Claim Validation)
LLM-->>API: Streamed Verified Cover Letter + Citations
API->>DB: Log Telemetry & Audit Record
API-->>Web: Render Final Letter with Copy, Download & Interview Defense๐ Project Directory Structure
career-workspace-ambujsystems/
โโโ web/ # Next.js 16 Fullstack Application
โ โโโ public/ # Static assets & SVG icons
โ โโโ src/
โ โ โโโ app/
โ โ โ โโโ api/
โ โ โ โ โโโ analyze/ # Resume parsing & JD matching handler
โ โ โ โ โโโ auth/ # NextAuth Google OAuth endpoints
โ โ โ โ โโโ generate/ # Evidence-grounded generation pipeline
โ โ โ โ โโโ research/ # Tavily 8-page crawl + Jina Reader pipeline
โ โ โ โโโ docs/ # Interactive Architectural Documentation
โ โ โ โโโ generate/ # Main interactive workspace interface
โ โ โ โโโ globals.css # Design system tokens, tactile spring curves & glow utilities
โ โ โ โโโ layout.js # Root layout with NextAuth Provider
โ โ โ โโโ page.js # High-conversion Obsidian Black landing page
โ โ โโโ components/
โ โ โ โโโ ResultsPanel.jsx # 4-tier tabbed intel & vendor verification UI
โ โ โ โโโ SourceCard.jsx # Human-in-the-loop approved source cards
โ โ โ โโโ ... # Reusable UI component modules
โ โ โโโ lib/
โ โ โ โโโ gemini.js # Resilient Google Gemini client with retry
โ โ โ โโโ mongodb.js # Production connection-cached MongoDB client
โ โ โโโ prompts/ # Strict system prompts & JSON schemas
โ โโโ Dockerfile # Multi-stage standalone Next.js container (~120MB)
โ โโโ next.config.mjs # Standalone output configuration
โ โโโ package.json # Dependencies & build scripts
โโโ mcp-server/ # Anthropic Model Context Protocol (MCP)
โ โโโ server.py # Stdio protocol handler with analysis tools
โ โโโ Dockerfile # Python 3.11-slim container definition
โ โโโ requirements.txt # MCP protocol SDK & utilities
โโโ docker-compose.yml # Multi-service local orchestrator
โโโ README.md # Production Engineering Specification๐ Getting Started Locally
Prerequisites
Node.js:
v20.xorv22.xDocker & Docker Compose (Optional, for containerized run)
API Keys: Google Gemini API, Tavily Search API, Jina AI API, MongoDB Atlas URI
1. Clone the Repository
git clone https://github.com/Ambuj123-lab/career-workspace-ambujsystems.git
cd career-workspace-ambujsystems/web2. Configure Environment Variables
Create .env.local inside the web/ folder (or copy .env.example from repository root):
# --- Core AI & Grounding Search (Required) ---
GEMINI_API_KEY=your_gemini_api_key_here
TAVILY_API_KEY=your_tavily_api_key_here
# --- Authentication & Security (NextAuth.js) ---
GOOGLE_CLIENT_ID=your_google_client_id_here
GOOGLE_CLIENT_SECRET=your_google_client_secret_here
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_random_32_character_secret_here
# --- Candidate Proofing & Verification (Optional) ---
GITHUB_TOKEN=your_github_token_here
HF_TOKEN=your_huggingface_token_here
JINA_API_KEY=your_jina_api_key_here
# --- LLM Provider Fallback & Telemetry (Optional) ---
OPENROUTER_API_KEY=your_openrouter_api_key_here
MONGODB_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/?appName=CoverCraft
MONGODB_DB_NAME=covercraft_dbCredential Audit & Transparency (M8ven Verified)
Credential / Variable | Scope | Requirement | Purpose & Audit Description |
| Server / LLM | Required | Primary synthesis engine (Google AI Studio Gemini 2.5 / Flash) |
| Server / Web Search | Required | Live web grounding & target company intelligence crawler |
| NextAuth OAuth | Required for Auth | Google OAuth 2.0 client secret for candidate sign-in |
| NextAuth OAuth | Required for Auth | Google OAuth 2.0 client ID |
| Web Security | Required for Auth | Cryptographic signing secret for JWT session cookies |
| MCP / API | Optional | Higher rate limits for candidate public GitHub repository audits |
| MCP / API | Optional | Candidate Hugging Face ML models, spaces, and dataset proofing |
| Web Crawler | Optional | Markdown parser fallback for target company landing pages |
| LLM Fallback | Optional | Multi-model provider fallback if primary Gemini API quota is throttled |
| Telemetry / DB | Optional | Telemetry, generation audit logs, and user feedback persistence |
3. Install Dependencies & Launch
npm install
npm run devOpen http://localhost:3000 in your browser.
๐ณ Docker Production Deployment
Build and run the multi-stage standalone container locally:
# Build multi-stage image (~120MB footprint)
docker build -t covercraft-web:latest ./web
# Run standalone container
docker run -p 3000:3000 --env-file ./web/.env.local covercraft-web:latestOr deploy both the Next.js app and the Python MCP server via Docker Compose:
docker compose up -d --build๐ Production Deployments & Links
Asset | Link | Status |
๐ Production App | ||
๐ Interactive Architecture Docs | ||
๐ป GitHub Repository | ||
๐ค Engineering Portfolio | ||
๐ฐ Official UptimeRobot Feature |
๐จโ๐ป Architect & Author
Ambuj Kumar Tripathi
Generative AI Engineer & Production Systems Specialist
Building production-grade agentic architectures, deterministic extraction pipelines, and high-reliability LLM systems.
Other Flagship Engineering Projects by Ambuj:
๐๏ธ Agentic Financial Parser โ 11-node LangGraph StateGraph financial pipeline with WhatsApp bot & hybrid RAG.
๐ก๏ธ Citizen Safety Awareness AI โ Real-time PII-masked linear RAG assistant for Indian legal & citizen protection.
โ๏ธ Constitution of India AI Expert โ Resilient Qdrant + Jina AI parent-child chunking legal RAG system.
๐ License
This project is open-source and licensed under the MIT License.
Architected with โค๏ธ by Ambuj Kumar Tripathi โข Powered by Google Gemini 3.5 & 3-Tier Multi-Provider Cascade (OpenRouter Nemotron 550B) โข Langfuse Telemetry โข Tavily AI โข Jina AI โข Next.js 16
Available Tools
8 toolsats_readinessARead-onlyIdempotentInspect
Honest ATS readiness check (NOT a fake score). Returns individual checks: keyword coverage, skills, evidence, length. Includes disclaimer: heuristic analysis, not actual ATS vendor score.
| Name | Required | Description | Default |
|---|---|---|---|
| jd_text | Yes | Job description text | |
| letter_text | Yes | Generated cover letter text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely useful context beyond them: it discloses the four returned checks and, importantly, that the analysis is heuristic rather than a real ATS vendor score. This manages expectations in a way no annotation does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core promise and the honesty caveat. Every clause carries information, though the disclaimer framing is slightly redundant with the 'heuristic analysis' clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only analysis tool with no output schema, the description usefully enumerates what comes back and its limits, which is what an agent most needs. It stops short of explaining how the checks are computed or whether a pass/fail verdict is issued.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (jd_text, letter_text) are already documented in the schema. The description adds no format, length, or content guidance beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('readiness check') and resource ('ATS'), and enumerates the four checks it returns (keyword coverage, skills, evidence, length). The parenthetical 'NOT a fake score' differentiates it from generic ATS scorers, though it does not name or contrast with its actual sibling tools such as evidence_validator or jd_analyzer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to use this tool versus the siblings (e.g. evidence_validator, jd_analyzer) or of prerequisites such as needing a generated letter first. Usage is only weakly implied by the required letter_text/jd_text inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_researchARead-onlyIdempotentInspect
Search the web for company information using Tavily. Returns grounded data with source citations. Every claim is traceable to a source URL.
| Name | Required | Description | Default |
|---|---|---|---|
| focus_areas | No | Optional focus: tech_stack, culture, recent_news | |
| company_name | Yes | Target company name (max 200 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuine behavioral context about the output: grounded data with source citations and traceability to a source URL, which tells the agent what kind of result to expect from an open-world search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero waste, with the primary action front-loaded and the return-value guarantee following directly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries return-value disclosure and does so briefly (grounded, cited, traceable). Combined with full schema coverage and complete annotations, an agent has enough to invoke it correctly; only pagination/rate-limit behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the schema (company_name with char limit, focus_areas with example values). The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Search the web") and resource ("company information"), and even names the underlying engine (Tavily). It is clear what the tool does, though it does not explicitly differentiate itself from the research-adjacent siblings like source_filter or evidence_validator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the action (research a company when you need company info). There is no explicit when-to-use, when-not-to-use, or mention of an alternative sibling, and no prerequisites or sequencing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cover_letter_generatorARead-onlyIdempotentInspect
Generate an evidence-grounded cover letter strictly bounded by candidate's verified skills and approved company research. Returns structured paragraphs with in-line citation markers.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| tone | No | Tone: professional, technical, or conversational | |
| company | Yes | ||
| candidate_name | Yes | ||
| matched_skills | Yes | List of matched skills with evidence quotes | |
| approved_company_facts | No | Optional list of verified company facts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context the annotations do not: output shape ('structured paragraphs with in-line citation markers') and a hard grounding constraint against unverified content, which is the key risk an agent should know about for a generation tool. Required permissions for company facts remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the grounding constraint front-loaded and the return format second. Each sentence earns its place, especially the return-format line since there is no output schema. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generation tool with no output schema and only 50% parameter documentation, the description covers output format and grounding well but omits the tone parameter's effect, the ordering dependency on evidence_validator/company_research, and expected behavior when matched_skills is thin. Adequate but with visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, so the description must carry more weight. It constrains two parameters conceptually โ matched_skills ('verified skills') and approved_company_facts ('approved company research') โ but does not explain the tone parameter's effect, the shape of matched_skills objects, or which of the 6 parameters are required versus optional. Baseline 3 given partial schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Generate) and resource (cover letter), plus a scope qualifier ('evidence-grounded', 'strictly bounded by verified skills and approved company research') that separates it from siblings like evidence_validator and company_research. However, it never names those siblings explicitly, so differentiation is inferred from the constraint rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'strictly bounded by candidate's verified skills and approved company research' implies the prerequisites (validation and research must happen first), which is useful implicit routing. But there is no explicit when-to-use/when-not statement and no named alternative tool, so the agent must infer the workflow ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evidence_validatorARead-onlyIdempotentInspect
Validate AI-generated claims against actual source data. Implements Claim Ledger pattern. Returns VERIFIED / PARTIAL / UNSUPPORTED per claim.
| Name | Required | Description | Default |
|---|---|---|---|
| claims | Yes | List of claims to validate | |
| sources | Yes | Source data to validate against |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is fully covered. The description adds useful output semantics (per-claim VERIFIED / PARTIAL / UNSUPPORTED verdicts) but says nothing about what on its own makes a claim PARTIAL vs UNSUPPORTED, or about any matching/threshold behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler; the core action, the pattern, and the return taxonomy each earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly supplies the return values, and the two required inputs are conceptually clear from the name and schema. Slightly incomplete on how sources are consumed (url vs content) and any size limits, but adequate for a two-parameter read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in the schema, so the baseline is 3. The description's phrase 'against actual source data' loosely reinforces the sources parameter but adds no format or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Validate AI-generated claims against actual source data') and even states the domain pattern (Claim Ledger). It does not explicitly differentiate itself from siblings, but the sibling set (filter, proofer, generator tools) is far enough away that no real ambiguity exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is for checking claims against sources, but there is no statement of when to prefer it over alternatives, no preconditions, and no exclusions (e.g. claim count limits or source format requirements).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_prooferARead-onlyIdempotentInspect
Inspect a candidate's public GitHub profile and repositories. Cross-references technical resume claims with verifiable production code commits.
| Name | Required | Description | Default |
|---|---|---|---|
| technical_claims | No | Optional list of technical skills or claims to verify against code repos | |
| candidate_github_or_resume | Yes | GitHub profile URL, username handle, or resume text containing GitHub link |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that only public GitHub data is inspected and that the operation is a claims-vs-commits cross-reference, but it omits practical traits like GitHub API rate limits, auth/token needs, or behavior when a handle has no public activity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core action (inspect public GitHub profile/repos) is front-loaded and the differentiating behavior (cross-reference resume claims with commits) follows immediately, so every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should carry more of the return-value burden; it only implies that evidence-backed verification results come back, without indicating what an agent receives (per-claim verdicts, matched commits, confidence). What it does convey about inputs and read-only public scope is otherwise adequate for a two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the schema already documents the required identifier and the optional technical_claims list. The phrase 'technical resume claims' loosely echoes the technical_claims parameter but adds no format, cardinality, or matching semantics beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States two specific actions on a specific resource: inspecting a candidate's public GitHub profile/repos and cross-referencing resume claims against production code commits. The 'GitHub' scope naturally distinguishes it from the sibling huggingface_proofer, and the verification framing separates it from jd_analyzer, ats_readiness, and evidence_validator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the cross-referencing framing (use it when you need to verify a candidate's technical claims), but there is no explicit when-to-use statement, no exclusions, and no direction toward huggingface_proofer or evidence_validator as alternatives for adjacent verification tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
huggingface_prooferBRead-onlyIdempotentInspect
Inspect a candidate's public Hugging Face profile, models, spaces, and datasets. Cross-references GenAI resume claims (fine-tuning, LoRA, GGUF, Quantization, Legal AI) with verifiable Hugging Face model weights, spaces, and real-world downloads.
| Name | Required | Description | Default |
|---|---|---|---|
| ai_technical_claims | No | Optional list of GenAI claims or models to verify against Hugging Face | |
| candidate_hf_or_resume | Yes | Hugging Face profile URL, handle (e.g. 'invincibleambuj'), or resume text containing Hugging Face link |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile of this external read operation is fully covered structurally. The description adds that it inspects only *public* data and that it performs cross-referencing, but says nothing about authentication requirements, HF rate limits, or behavior when a profile/handle cannot be resolved โ a real gap for an open-world external lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the core action front-loaded ('Inspect a candidate's public Hugging Face profile') followed by the verification purpose. No filler or repetition, though the parenthetical claim list is slightly list-heavy for a two-sentence description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining what comes back; it gestures at this ('verifiable Hugging Face model weights, spaces, and real-world downloads') but never describes the response shape, scoring, or handling of unverifiable claims. Adequate for a simple two-param tool, but thin for a verification tool with no structured output contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented (handle/URL/resume text, and the optional claims list). The description indirectly explains what ai_technical_claims is for by enumerating claim categories (LoRA, GGUF, Quantization), but adds no format or syntax detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (Inspect, Cross-references) and resources (Hugging Face profile, models, spaces, datasets), and enumerates the claim types it validates (fine-tuning, LoRA, GGUF, Quantization, Legal AI). It names the domain explicitly, but never distinguishes itself from the near-identical sibling github_proofer, leaving the agent to infer which proofer applies to which artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Cross-references GenAI resume claims ... with verifiable Hugging Face model weights' โ i.e., use this to verify a candidate's HF presence against resume claims. However, no explicit when-to-use, when-not-to-use, or alternative (e.g., github_proofer for repos, evidence_validator for general claims) is given, so routing between siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jd_analyzerARead-onlyIdempotentInspect
Evidence-backed JD matching. Extracts skills from JD, matches each against resume with ACTUAL evidence. Returns STRONG_MATCH / PARTIAL_MATCH / TRANSFERABLE / MISSING per skill.
| Name | Required | Description | Default |
|---|---|---|---|
| jd_text | Yes | Full job description text (max 10000 chars) | |
| resume_text | Yes | User's resume/experience text (max 15000 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real value by disclosing the result taxonomy (STRONG_MATCH / PARTIAL_MATCH / TRANSFERABLE / MISSING) and the evidence-backed matching behavior, though it says nothing about determinism, cost, or handling of empty/extreme input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler, and the core purpose is front-loaded in the opening clause. The first sentence is slightly redundant with the second, which keeps it just short of ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is responsible for conveying return values, and it does so via the four match categories. Missing only secondary detail such as how evidence is surfaced per skill or what the agent should do with MISSING results, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters documented including their character limits, so the schema does the heavy lifting. The description adds only an indirect mapping ('from JD' / 'against resume') and no format or syntax guidance beyond that, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource: extracts skills from a JD and matches each against a resume, and it even names its output taxonomy. It's clear what the tool does, though it never explicitly separates itself from closely related siblings like evidence_validator or ats_readiness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied โ the two required inputs (jd_text, resume_text) make the scenario obvious, but there's no statement of when to reach for this tool versus cover_letter_generator or ats_readiness, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_filterARead-onlyIdempotentInspect
Evaluate, rank, and filter web research sources based on domain credibility and outdated news & stale tech filtering. Tier 1: Official company domains & verified newsrooms, Tier 2: Job boards & tech media, Tier 3: Noise/scrapers.
| Name | Required | Description | Default |
|---|---|---|---|
| sources | Yes | List of source objects with url, title, and optional snippet | |
| company_domain | No | Optional primary domain of target company |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds useful context about the tiering logic and filtering criteria, which goes beyond structured data. However, it doesn't disclose how the ranking works (scoring algorithm, ordering of output) or any limitations (e.g., what happens with unknown domains).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then provides a compact tier breakdown. It is efficient and wastes no words, though the tier definitions could be slightly clearer (e.g., what exactly qualifies as 'noise/scrapers').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should ideally explain return values (e.g., filtered list, ranked order, tier labels). It also doesn't clarify how 'outdated news & stale tech filtering' works or what happens to sources that don't fit a tier. For a filtering/ranking tool with no output schema, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the input schema. The description does not add any parameter-level details (e.g., expected structure of source objects, how company_domain influences filtering). Baseline 3 is appropriate when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb triple (evaluate, rank, filter) and names the resource (web research sources). It also names the specific criteria (domain credibility, outdated news, stale tech), which distinguishes it clearly from siblings like evidence_validator or company_research that deal with research but not source ranking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (filtering research sources), but it does not explicitly say when to call this tool vs. alternatives like evidence_validator or company_research. The tier system gives implicit guidance on what it does, but not on when an agent should invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
ats_readiness - First observed
company_research - First observed
cover_letter_generator - First observed
evidence_validator - First observed
github_proofer - First observed
huggingface_proofer - First observed
jd_analyzer - First observed
source_filter
TDQS
Scored across 8 tools
Most tools have clearly distinct purposes across the job-application pipeline (research, proofing, validation, generation). The two proofers (github_proofer vs huggingface_proofer) and the grounding-related tools (source_filter, company_research, evidence_validator) are conceptually adjacent but each targets a distinct stage, so confusion is limited.
All names use consistent snake_case and a predictable descriptor-noun convention (source_filter, evidence_validator, jd_analyzer, ats_readiness). Minor stylistic variation between agent-noun (proofer) and object-noun (generator) patterns, but readable and uniform overall.
Eight tools is well-scoped for a career workspace, with each tool mapping to a discrete step in a resume/JD/application workflow. Nothing appears redundant or bloated.
The surface covers research, JD matching, ATS checks, evidence validation, and cover letter generation with strong grounding. Minor gaps exist: no resume parsing/tailoring or interview-prep tool, but the core application lifecycle is largely covered.
Maintenance
Related MCP Connectors
AI-powered career tools: job search, skills intelligence, career roadmaps, and resume building.
AI workspace โ shared knowledge, skills, and tools for AI agents
Resume and CV parsing, candidate matching and ranking for recruiting and ATS AI agents.
Agent-native security, trust, reliability, data and procurement tools for AI workflows.
Related MCP Servers
AlicenseAqualityAmaintenanceResume tailoring, cover letter generation, CV PDF export, and job search tools for AI agents. 18 tools powered by the Laddro Career API.1849 npmMIT- AlicenseNot gradedqualityAmaintenanceEnables AI agents to discover, filter, and track job openings based on the user's local resume, without uploading data to the cloud.24MIT
- AlicenseNot gradedqualityBmaintenanceEnables an AI agent to work inside a resume workspace where it can search job postings and propose edits grounded in user-recorded facts, while the interface constrains its tools and requires human approval before any change or application is prepared.15 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to search and analyze job listings from verified company boards privately, matching resumes to roles with evidence and suggesting resume improvements.560 npmMIT