track_application
Retrieve the current status and details of a job application using its unique ID.
Instructions
Get the current status and details of a job application by its ID.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| application_id | Yes | Job application ID to look up |
Implementation Reference
- index.js:177-190 (schema)Schema definition for the track_application tool. It defines an 'application_id' required string parameter and a description of returning status and history.
{ name: 'track_application', description: 'Get the current status and full history of a job application.', inputSchema: { type: 'object', properties: { application_id: { type: 'string', description: 'Application ID returned by apply_to_job or list_job_applications', }, }, required: ['application_id'], }, }, - index.js:154-236 (registration)The track_application tool is registered as part of the WEEK2_TOOLS array (lines 177-190), which is merged into the tool list via handleToolsList (line 263) and proxied to the backend via handleToolsCall (line 279).
const WEEK2_TOOLS = [ { name: 'apply_to_job', description: 'Submit a job application through Placed. Attaches the candidate\'s resume and optional cover letter, then tracks the application.', inputSchema: { type: 'object', properties: { candidate_id: { type: 'string', description: 'Candidate profile ID (use "me" for the authenticated user)', }, job_id: { type: 'string', description: 'Job listing ID to apply to', }, cover_letter: { type: 'string', description: 'Optional cover letter text. If omitted, a cover letter is auto-generated from the candidate profile.', }, }, required: ['candidate_id', 'job_id'], }, }, { name: 'track_application', description: 'Get the current status and full history of a job application.', inputSchema: { type: 'object', properties: { application_id: { type: 'string', description: 'Application ID returned by apply_to_job or list_job_applications', }, }, required: ['application_id'], }, }, { name: 'post_job', description: 'Post a new job listing to the Placed job board (for employers/recruiters).', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Job title (e.g. "Senior Backend Engineer")', }, description: { type: 'string', description: 'Full job description including responsibilities, requirements, and nice-to-haves', }, stack: { type: 'string', description: 'Required tech stack, comma-separated (e.g. "Node.js,TypeScript,AWS")', }, comp_band: { type: 'string', description: 'Compensation band (e.g. "$120k–$160k", "€80k–€110k")', }, }, required: ['title', 'description', 'stack', 'comp_band'], }, }, { name: 'update_application_stage', description: 'Move a job application to a new stage in the hiring pipeline.', inputSchema: { type: 'object', properties: { application_id: { type: 'string', description: 'Application ID to update', }, stage: { type: 'string', enum: ['applied', 'screening', 'interview', 'technical', 'offer', 'accepted', 'rejected', 'withdrawn'], description: 'New pipeline stage for the application', }, }, required: ['application_id', 'stage'], }, }, ]; - index.js:275-305 (handler)Handler for tools/call that proxies tool invocations to the backend. Since track_application is in NEW_TOOL_NAMES (line 241), if the backend is unreachable, a stub response with 'not_implemented' status is returned (lines 283-300). The actual implementation lives on the backend server.
async function handleToolsCall(id, params) { const toolName = params && params.name; try { const result = await callBackend({ jsonrpc: '2.0', id, method: 'tools/call', params }); send({ ...result, id }); } catch (err) { // If the backend is unreachable and this is a new tool, return a clear stub message if (NEW_TOOL_NAMES.has(toolName)) { send({ jsonrpc: '2.0', id, result: { content: [ { type: 'text', text: JSON.stringify({ status: 'not_implemented', tool: toolName, message: `The '${toolName}' tool is defined in the MCP layer but the backend handler is not yet deployed. Backend error: ${err.message}`, }, null, 2), }, ], isError: false, }, }); } else { send({ jsonrpc: '2.0', id, error: { code: -32000, message: err.message } }); } } }