post_job
Create a new job listing as an employer, adding it to the tracker with title, description, tech stack, compensation, and company details.
Instructions
Post a new job listing (employer-side). Creates a job entry in the tracker as an employer-posted listing.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Job title | |
| description | Yes | Full job description | |
| stack | Yes | Required tech stack (comma-separated) | |
| comp_band | No | Compensation band | |
| location | No | Job location or 'Remote' | |
| company | No | Company name |
Implementation Reference
- index.js:192-216 (schema)Input schema definition for the post_job tool, specifying required fields: title, description, stack, comp_band.
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'], }, }, - index.js:191-216 (registration)Tool registration in the WEEK2_TOOLS array, defining the tool name 'post_job' and its input schema.
{ 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'], }, }, - index.js:275-305 (handler)Handler for tool calls: handleToolsCall proxies all tool calls (including post_job) to the backend via callBackend(). Since the backend handler is not yet deployed, it returns a 'not_implemented' stub.
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 } }); } } }