candidate_search
Find candidates in Ashby ATS using email or name search to locate specific applicant profiles for hiring pipeline management.
Instructions
Search candidates by email and/or name. Not paginated.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| No | Email to search for | ||
| name | No | Name to search for |
Implementation Reference
- src/ashby/server.py:123-133 (registration)Tool definition for candidate_search.
types.Tool( name="candidate_search", description="Search candidates by email and/or name. Not paginated.", inputSchema={ "type": "object", "properties": { "email": {"type": "string", "description": "Email to search for"}, "name": {"type": "string", "description": "Name to search for"}, }, }, ), - src/ashby/server.py:407-418 (handler)The general tool handler that routes 'candidate_search' to the /candidate.search 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))]