Skip to main content
Glama

Search candidates

search_candidates
Read-onlyIdempotent

Search and filter candidates across all job positions. Supports text search by name, skills or experience; direct search by email address, LinkedIn URL or candidate name; and semantic natural-language queries such as "candidates with React experience in Buenos Aires". Can filter by job position and by pipeline stage ID. The response shape depends on the path: filter-only queries (no query) include totalMatching, filterOptions and appliedFilters; text and semantic queries return candidates, searchType and returnedCount, with no global match count. Paginated with cursor (from pageInfo.nextCursor) and incremental with updatedSince; semantic results are ranked by relevance and report pageInfo.cursorSupported: false.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "search_candidates"
  }
}

Input Schema

NameRequiredDescriptionDefault
tagsNoFilter by candidate tags (e.g., ["senior", "frontend"])
limitNoRecords per page (default: 20, max: 1000). Values above ~50 are meant for programmatic syncing, not for reasoning over the results.
queryNoSearch query (name, email, LinkedIn URL, skills, natural language description, etc.)
stageNoDEPRECATED — use `stageId`. Kept for backward compatibility; ignored if `stageId` is also provided.
cursorNoOpaque cursor from the previous page (`pageInfo.nextCursor`). Omit for the first page. Treat it as a token — do not construct or modify it.
sortByNoSort field (default: createdAt).
stageIdNoFilter by pipeline stage ID (a stable UUID from the position pipeline).
sortOrderNoSort order (default: desc).
updatedSinceNoISO 8601 timestamp. Returns only records modified strictly after it, for incremental syncing. Deleted records are never returned.
jobDescriptionIdNoFilter by specific job position ID

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / stageId / description
      Previous value: -"Filter by pipeline stage ID (stable UUID, obtain via get_pipeline)."New value: +"Filter by pipeline stage ID (a stable UUID from the position pipeline)."
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent/non-destructive, and the description goes well beyond them: the response shape diverges by path (filter-only returns `totalMatching`, `filterOptions`, `appliedFilters`; text/semantic return `candidates`, `searchType`, `returnedCount` with no global count), and semantic results are relevance-ranked with `pageInfo.cursorSupported: false`. Those are exactly the behaviors an agent must know before choosing a path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then modes, then response shapes and pagination in a logical order. It is dense and one long block, with some schema-redundant phrasing ('filter by pipeline stage ID', the semantic query example), but almost every clause carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 10 optional parameters, the description carries the return-value burden and does so: it documents divergent response shapes, the absence of a global match count on text/semantic paths, and cursor support limits. Nothing an agent needs to call this correctly, or to interpret what comes back, appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema cannot: the presence or absence of `query` changes which code path and response shape you get, and semantic phrasing is accepted in `query`. Pagination via `cursor` from `pageInfo.nextCursor` and incremental use of `updatedSince` are reinforced in context rather than merely restated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search and filter candidates across all job positions') and enumerates the three distinct search modes (text, direct, semantic NL). An agent can tell this apart from single-record readers like get_candidate or scored variants like get_candidates_with_scores without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear mode-selection guidance: filter-only when no `query` is supplied, text/direct when a name, email, LinkedIn URL or skill is known, semantic for natural-language descriptions. It also signals the incremental-sync path via `updatedSince`. It does not explicitly exclude or route to sibling tools such as get_candidate, so it stops short of full when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources