MCP server for managing job search pipeline, including companies, job postings, applications, and tracking metrics
Two tools with complete input schemas and descriptions. add_company has clear, concise description (79 chars) and well-typed parameters with enums for size/remote_policy. add_job_posting is more complex with 16 parameters, comprehensive descriptions, and proper enum constraints (source, priority). Both tools lack output schema documentation, responses are inferred from code (JSON success objects). Error handling returns isError flag with text messages but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Naming follows verb_noun pattern correctly. Parameter descriptions are generally good (50-150 chars each) but some lack format/constraint details (e.g., posted_date/closing_date mention YYYY-MM-DD but no validation shown).
Add a company to track in your job search.
Add or update a job posting. If a URL is provided and already exists, the posting is updated (upsert). Optionally provide company_name to look up or auto-create a company.
Output schemas not documented. Tool responses inferred from code (JSON objects with success/message/data fields). LLMs cannot plan downstream calls or extract fields reliably without explicit response schema.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are WRITE operations but lack destructiveHint. add_job_posting performs upsert (idempotent) but lacks idempotentHint annotation.
Error responses lack recovery guidance. Errors return isError=true with text message but do not suggest next steps (e.g., 'Company lookup failed' does not suggest retry or alternative action).
Date parameters (posted_date, closing_date) mention YYYY-MM-DD format in description but no regex pattern or validation constraint visible in schema. LLMs may pass invalid dates.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
add_job_posting has 16 parameters; 'created_by' is required but 'created_by_reason' is optional. Dependency between these fields not documented. LLMs may omit created_by_reason without understanding its purpose.