Skip to main content
Glama

100Hires - AI ATS & Recruitment Software

Search candidates

hires_list_candidates
Read-only

List candidates filtered by job, stage, email, name, LinkedIn or dates. Prefer size <= 10.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNoPartial match on name or email
pageNo
sizeNo
viewNosummary omits the profile answers arraysummary
emailNoExact match
job_idNo
includeNoEmbed: applications (job titles and stages)
linkedinNoLinkedIn profile URL or alias
stage_idNoPipeline stage id; combine with job_id
full_nameNo
company_idNo
created_afterNoUnix seconds or ISO-8601
updated_afterNoUnix seconds or ISO-8601; for incremental sync

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedInput schema / additionalProperties
      Removed value: -false
    • removedInput schema / properties / company_id / description
      Removed value: -"Filter by company ID. Required only when the API key has access to multiple companies."
    • changedInput schema / properties / created_after / description
      Previous value: -"Return only candidates created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."New value: +"Unix seconds or ISO-8601"
    • changedInput schema / properties / email / description
      Previous value: -"Exact candidate email filter."New value: +"Exact match"
    • removedInput schema / properties / full_name / description
      Removed value: -"Candidate full-name filter."
    • changedInput schema / properties / include / description
      Previous value: -"Comma-separated related data. Supported: `applications` — embeds each candidate's application summaries with job titles and pipeline stages. Recommended when the caller needs stage/pipeline context (e.g. UI rendering, candidate-status questions)."New value: +"Embed: applications (job titles and stages)"
    • removedInput schema / properties / job_id / description
      Removed value: -"Filter candidates by job ID."
    • changedInput schema / properties / linkedin / description
      Previous value: -"Search by LinkedIn profile URL or alias (e.g. 'johndoe' or full URL)."New value: +"LinkedIn profile URL or alias"
    • removedInput schema / properties / page / description
      Removed value: -"Page number (1-based)."
    • changedInput schema / properties / q / description
      Previous value: -"Plain-text search by name or email. Supports partial matches."New value: +"Partial match on name or email"
    • removedInput schema / properties / size / description
      Removed value: -"Number of items per page."
    • changedInput schema / properties / stage_id / description
      Previous value: -"Filter candidates by pipeline stage ID. Best used together with job_id."New value: +"Pipeline stage id; combine with job_id"
    • changedInput schema / properties / updated_after / description
      Previous value: -"Return only candidates updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Useful for incremental sync."New value: +"Unix seconds or ISO-8601; for incremental sync"
    • changedInput schema / properties / view / description
      Previous value: -"Response shape. Default `summary` excludes the `profile` array (custom profile-form answers). Use `full` only when those answers are genuinely needed; call hires_get_candidate for a single full record."New value: +"summary omits the profile answers array"
  2. Changed4 schema fields changed
    • changedInput schema / properties / created_after / description
      Previous value: -"Return only candidates created after this Unix timestamp (seconds)."New value: +"Return only candidates created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated."
    • changedInput schema / properties / created_after / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • changedInput schema / properties / updated_after / description
      Previous value: -"Return only candidates updated after this Unix timestamp (seconds). Useful for incremental sync."New value: +"Return only candidates updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Useful for incremental sync."
    • changedInput schema / properties / updated_after / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / include / description
      Previous value: -"Comma-separated list of optional related data to include in the response."New value: +"Comma-separated related data. Supported: `applications` — embeds each candidate's application summaries with job titles and pipeline stages. Recommended when the caller needs stage/pipeline context (e.g. UI rendering, candidate-status questions)."
  4. Changed1 schema field changed
    • addedInput schema / properties / view
      Added value: +{
      +  "default": "summary",
      +  "description": "Response shape. Default `summary` excludes the `profile` array (custom profile-form answers). Use `full` only when those answers are genuinely needed; call hires_get_candidate for a single full record.",
      +  "enum": [
      +    "summary",
      +    "full"
      +  ],
      +  "type": "string"
      +}
  5. First observed

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'Prefer size <= 10' behavioral hint, which is useful for performance expectations. However, it doesn't disclose other behavioral traits such as default pagination, result ordering, or whether filters are ANDed/ORed. With annotations covering safety, a 3 is appropriate.

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?

The description is a single sentence plus a short pagination hint, which is efficient and front-loaded with the core action and filter dimensions. It earns its place without redundancy. It could be slightly more structured by separating the pagination hint, but it is appropriately concise.

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

Completeness3/5

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

For a read-only list tool with 13 optional parameters and no output schema, the description is adequate but not complete. It doesn't explain the default view behavior, how filters combine, or what the response contains. The annotations cover safety, and the schema covers parameters, but an agent might still be uncertain about pagination defaults and filter semantics. Given the tool's complexity, a 3 is fair.

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

Parameters3/5

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

Schema description coverage is 62%, so the schema documents many parameters (q, email, view, include, linkedin, stage_id, created_after, updated_after). The description adds a high-level summary of filter dimensions but doesn't add meaning beyond the schema for most parameters. The 'Prefer size <= 10' is a useful hint for the size parameter. Baseline 3 is appropriate since the schema does most of the work.

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

Purpose4/5

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

The description states a clear verb ('List') and resource ('candidates') and enumerates the filter dimensions (job, stage, email, name, LinkedIn, dates). It distinguishes itself from sibling list tools by focusing on candidate search/filtering, though it doesn't explicitly name a sibling alternative. The title 'Search candidates' reinforces the purpose.

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

Usage Guidelines3/5

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

The description implies usage context: it is a search/list operation with multiple optional filters, and the 'Prefer size <= 10' gives a pagination hint. However, it does not explicitly state when to use this tool versus alternatives like hires_list_applications or hires_get_candidate, nor does it mention any exclusions or prerequisites. The guidance is implied rather than explicit.

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.