Organize job applications and tailor LaTeX resumes from the CLI or an MCP client.
Erga MCP exhibits severe definition quality gaps across most tools. Of 37 tools, only 4-5 have complete input schemas with typed parameters and descriptions (e.g., search_keryx_jobs, application_tracker, update_application_status). The majority (28+) have empty input schemas {} or are inferred from file references without visible schema definitions. Descriptions vary widely: some are excellent (intake_job_url at ~500 chars with clear intent), but many are generic or missing entirely (install_mail_monitor_scripts, discover_job_research, create_research_brief lack parameter details). No tool declares output schemas. Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. Tool naming is inconsistent: some follow verb_noun (update_application_status, search_keryx_jobs), others are vague (research_navigator, manage_portfolio_roots). Many tools appear to have overlapping responsibilities (multiple refresh_project_catalogue, update_skill_inventory, confirm_application_submission entries suggest incomplete registration or duplication). Security concerns: no visible permission gates, audit trails, or secret injection patterns despite tools modifying sensitive recruiting data.
Render the aggregate Applied-to-outcome funnel without setup states or model calls.
Render or search every local tracker cycle with stable pagination.
Confirm local application submission and résumé use.
Apply one explicit user confirmation to the local tracker and, when selected, record the exact validated generated résumé version used. The package is resolved from Erga's configured output root; callers cannot provide a filesystem path.
Create a research brief for a job opportunity.
Create a resume tailoring plan for a job opportunity.
23 of 37 tools have empty or missing input schemas ({}). Examples: install_mail_monitor_scripts, export_data, research_navigator, discover_job_research, create_research_brief, sync_recruiting_mail, research_git_worktrees, manage_portfolio_roots, create_tailoring_plan, execute_tailoring_plan, record_token_usage.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., application_id, cycle, status) without knowing response structure. This violates the pattern:tool-description and pattern:response-shaper baselines (100% of A+ tools document return types).
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Discover job research opportunities.
Return the compact, versioned local MCP compatibility contract.
Display Erga settings configuration card.
Execute a tailoring plan to generate a resume.
Export Erga data bundle.
Display Git skill review card.
Install mail monitoring scripts for recruiting email integration.
Install update monitoring script.
Primary job-link intake tool. Use this tool immediately when the user provides a job-posting URL, including a bare URL, a Markdown or chat link, or a URL followed by an unfurled title and job-description preview. Pass the complete original HTTP(S) URL unchanged as job_url, including its query string. This is the first action for Ashby, Greenhouse, Lever, Workday, LinkedIn, Indeed, and company careers links; do not browse or merely summarize the posting first. The tool performs the complete local intake: it fetches an untrusted snapshot, creates cited posting research, selects only approved career evidence, creates an isolated job package and local application record, ranks approved projects, researches attributable Git changes, and—when the connected MCP client enables sampling—asks that host model to synthesize role-specific project bullets with per-bullet evidence IDs. Deterministic validators reject unsupported metrics, cross-project citations, duplicate lead verbs, unsafe LaTeX, and rendered overflow before the tool writes a reviewable proposal/diff/per-claim provenance report, compiles and page-validates the exact attachment PDF, and synchronizes an enabled local Obsidian tracker. Clients without sampling use a deterministic approved-copy fallback. It never submits an application, sends a message, changes the master resume, or writes to a remote service. If the user explicitly asks to summarize only or not to run intake, respect that request and do not call this tool.
List local application records; no external system is queried.
List pending mail reconciliation reviews.
Manage portfolio root directories.
Check onboarding status and next steps.
Return counts for local-only recruiting records.
Browse the project catalogue.
Record token usage for an application.
Refresh and browse the private GitHub project catalogue.
Use the already-authorized GitHub CLI to refresh owned/collaborator repository metadata in Erga's private local cache, then return the shared project catalogue. This never approves evidence or changes a resume.
Research Git worktrees and commits for evidence.
Navigate job research stages and materials.
Resolve mail reconciliation review.
Retry mail reconciliation for failed events.
Review Git-based evidence drafts.
Review and approve Git skill groups.
Search a user-enabled local cache of Keryx's public US internships and new-graduate roles. This tool performs no network request, sends no query or Erga private data, and creates no application record. To act on one returned posting, the user must separately request the ordinary intake_job_url workflow with its URL.
Synchronize recruiting email events.
Set the status of one existing application in Erga's private local database. Allowed statuses are draft, applied, oa, assessment, interview, interview-2, interview-3, final-interview, offer, accepted, rejected, and withdrawn. This records a local audit event when the value changes; it never contacts an employer, submits an application, or mutates a remote service.
Update orbit visualization preferences.
Update skill inventory from CSV.
Update skill inventory from CSV seed file.
Update an existing tailoring plan.
Tool duplication and unclear composition: update_skill_inventory appears twice (lines 10, 25), confirm_application_submission appears twice (lines 8, 35), refresh_project_catalogue appears twice (lines 9, 31). This suggests incomplete tool registration or inferred definitions.
Vague tool names reduce LLM clarity: research_navigator, manage_portfolio_roots, discover_job_research do not start with clear action verbs (get_, list_, create_, update_, search_). LLMs cannot infer intent from these names alone. Baseline: 90% of A+ tools start with action verbs.
No error handling or recovery guidance in any tool description. Tools like update_application_status, intake_job_url, and sync_recruiting_mail modify state but provide no guidance on retryability, failure modes, or next steps. Violates pattern:recovery-guide and pattern:error-classification.