job_info
Retrieve detailed information about a specific job posting using its unique ID to access hiring requirements, responsibilities, and application details.
Instructions
Get details of a single job by its ID.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The job ID (UUID) |
Implementation Reference
- src/ashby/server.py:407-434 (handler)The generic tool handler in src/ashby/server.py uses the TOOL_ENDPOINT_MAP to route the 'job_info' tool call to the corresponding Ashby API endpoint.
@server.call_tool() async def handle_call_tool(name: str, arguments: dict[str, Any]) -> list[types.TextContent]: """Route tool calls to the correct Ashby endpoint, passing arguments directly.""" endpoint = TOOL_ENDPOINT_MAP.get(name) if not endpoint: return [types.TextContent(type="text", text=f"Unknown tool: {name}")] try: # Pass arguments straight through -- tool schemas already use Ashby's # camelCase param names so no translation is needed. response = ashby.post(endpoint, data=arguments if arguments else None) return [types.TextContent(type="text", text=json.dumps(response, indent=2))] except requests.exceptions.HTTPError as e: error_body = "" if e.response is not None: try: error_body = e.response.text except Exception: pass return [ types.TextContent( type="text", text=f"Ashby API error on {endpoint}: {e}\n{error_body}", ) ] except Exception as e: return [types.TextContent(type="text", text=f"Error calling {endpoint}: {e}")] - src/ashby/server.py:88-98 (schema)The tool registration and input schema definition for 'job_info'.
types.Tool( name="job_info", description="Get details of a single job by its ID.", inputSchema={ "type": "object", "properties": { "id": {"type": "string", "description": "The job ID (UUID)"}, }, "required": ["id"], }, ), - src/ashby/server.py:374-376 (registration)The mapping that associates the tool name 'job_info' with the Ashby API endpoint '/job.info'.
TOOL_ENDPOINT_MAP = { "job_list": "/job.list", "job_info": "/job.info",