search_talents_by_filters tool lets your AI assistant search the Kalent talent database with structured Kalent filters — the same filter model used by the Kalent app and by the POST /v1/search/talents API. Your assistant builds the filter array itself (from your request, from a previous search_talents_by_prompt call, or from a skill you maintain), so you keep precise control over every criterion. It returns up to 5 matching profiles with full career details.
This tool was previously available in development environments as
search_talents_with_filters. It is now exposed to every MCP client under the
name search_talents_by_filters.How it works
- You describe the talent you need, or hand your assistant an explicit list of criteria.
- The AI builds a
filtersarray, choosing the filter types, values, and modifiers (isRequired,isExcluded,isExactMatch,radius,history). - The MCP server executes the search and returns matching profiles.
- The AI presents a formatted table and can answer follow-up questions using the full profile data.
Every criterion you mention is treated as a requirement by default
(
isRequired: true). If you want a criterion to be a nice-to-have rather than
mandatory, say so explicitly (e.g., “ideally with experience in fintech” or
“bonus if they speak Spanish”) — the AI then sets isRequired: false on
that filter, and it becomes a preference: profiles that do not match it
can still be returned, and matching profiles come first.When to use this tool vs. search_talents_by_prompt
Input
Filter Types
The AI selects from the following filter types based on your prompt:Filter Modifiers
Each filter supports the following modifiers that the AI sets based on your prompt:Response
Each search returns two content blocks:1. Structured JSON
Complete profile data for each matching talent, including:searchTransactionId— unique identifier for this search (used for pagination)estimationCount— the total estimated number of talents matching the filters in the database, not just the ones returned in this batchpendingRefreshCount— number of matching profiles in the current batch that are currently being updated and were excluded from this response; retry shortly to retrieve them once readycredits— credits consumed by this search and remaining balance- Full name, location, headline
- Current job title and organization
- Work experiences (company, title, dates, description)
- Education (school, degree, major, dates)
- Skills
- Languages and proficiency levels
- Professional certifications
- LinkedIn profile URL
searchTransactionId is used internally for pagination (see below). The estimationCount helps convey how large the overall talent pool is for the given criteria. When pendingRefreshCount is greater than zero, the tool explains that some matching profiles are still being updated and a retry is recommended.
Only ready profiles are returned: talents that are already up to date, or that were synchronously refreshed and passed refiltering. Profiles currently being updated asynchronously are excluded from the current response.
2. Markdown Summary Table
A formatted table displayed directly in the conversation:Errors
If the search engine times out, the tool returnsisError: true with a message asking you to try again and a ref: line containing the request debugTrackingCode for support.
If a LinkedIn relationship filter is used but no LinkedIn account is connected, the tool returns an error asking you to connect LinkedIn in Kalent settings before filtering by your network.
Credits
Each search consumes API search credits. The number of credits consumed corresponds to the number of profiles returned (up to 5 per search). The response includes acredits object showing how many credits were used and how many remain.
If you run out of credits, the tool will return an error prompting you to purchase more at https://app.kalent.ai/settings/billing.
Pagination
When you ask for more results, the AI automatically handles pagination by passing previoussearchTransactionId values via the relatedSearchTransactionIds parameter. relatedSearchTransactionIds is an array of searchTransactionId strings from previous search_talents_by_filters calls — talents already returned in those earlier searches are excluded from the new results, so you always see fresh profiles.
You: Find me React developers in Paris. [5 results displayed — estimationCount: 120] You: Show me more. [5 new, different results displayed — no duplicates from the first batch]The AI collects
searchTransactionId values from each response and passes them in subsequent requests so you never see the same talent twice. The estimationCount tells you how many total matches exist, helping you decide whether to paginate further.
Non-deterministic Results
Example Conversations
Finding engineers with specific company experience
You: Find software engineers who have worked at OpenAI for at least 3 years. Assistant: I’ll search for software engineers with OpenAI experience and at least 3 years in the role. [Results displayed as a table with 5 matching profiles] I found 5 software engineers who match your criteria. Would you like me to look into any of these profiles in more detail, or would you like to refine the search?
Location-based search with skills
You: I need to find talent in Paris (within 20km radius) with expertise in SEO and marketing strategies. Assistant: Let me search for marketing professionals near Paris with SEO expertise. [Results displayed] Here are 5 professionals in the Paris area with SEO and marketing strategy skills. Several of them also have experience in content marketing and digital analytics.
Combining experience, role, and company type
You: Find talent with 10+ years of experience as a UX designer who has worked for a YC startup. Assistant: I’ll search for senior UX designers with Y Combinator startup experience. [Results displayed] I found 5 UX designers with 10+ years of experience and ties to Y Combinator startups. Want me to narrow down by location or specific skills?
Tips for Better Results
Be specific about requirements
Mention specific job titles, companies, locations, and skills. The more
precise you are, the better the results.
Mark nice-to-haves explicitly
All criteria are treated as mandatory by default. Use words like “ideally”,
“bonus”, or “nice-to-have” for optional preferences.
Use follow-up prompts
Refine your search iteratively. Ask to narrow down by adding criteria, or
broaden by relaxing constraints.
Combine multiple filters
You can combine as many criteria as needed in a single prompt: job title +
location + skills + experience + company type.

