Skip to main content
Glama

zoho-recruit-mcp-server

An MCP (Model Context Protocol) server that bridges Claude and the Zoho Recruit ATS. It lets Claude search candidates, manage jobs and interviews, run recruitment analytics, send candidate email, and use AI-assist tools — all through natural language.

Claude  ⇄  Model Context Protocol  ⇄  this server  ⇄  Zoho Recruit API v2  ⇄  Recruitment data

Example prompts once connected:

  • "Show me all candidates interviewed for the TPM role this week"

  • "Find candidates with React.js experience"

  • "Move candidate to the Technical Interview stage"

  • "Create a new job opening for a Senior Backend Engineer"

  • "Schedule an interview for candidate 12345 with alice@acme.com on 2026-07-01 at 14:30"

  • "Generate a hiring funnel report for Q2"

  • "Find candidates rejected in the last 30 days"

  • "Send the interview invitation email to candidate 12345"


1. Architecture

zoho-recruit-mcp-server/
├── src/
│   ├── server.py              # FastMCP entrypoint, transport selection
│   ├── config.py              # pydantic settings + region/URL resolution
│   ├── services.py            # wires client + domain APIs together
│   ├── auth/
│   │   └── zoho_auth.py        # OAuth2 refresh-token -> access-token manager
│   ├── zoho/
│   │   ├── client.py           # async httpx client: retry, rate limit, 401 recovery
│   │   ├── common.py           # search-criteria builders, response helpers
│   │   ├── candidates.py       # Candidates module operations
│   │   ├── jobs.py             # Job_Openings module operations
│   │   ├── interviews.py       # Interviews module operations
│   │   ├── reports.py          # analytics (funnel, recruiter, source)
│   │   ├── email.py            # candidate email automation
│   │   └── ai_helpers.py       # resume parsing, match scoring, summaries
│   ├── tools/
│   │   ├── candidate_tools.py  # MCP tool registration (candidates)
│   │   ├── job_tools.py        # MCP tool registration (jobs)
│   │   ├── interview_tools.py  # MCP tool registration (interviews)
│   │   ├── analytics_tools.py  # MCP tool registration (analytics)
│   │   ├── email_tools.py      # MCP tool registration (email)
│   │   └── ai_tools.py         # MCP tool registration (AI assist)
│   ├── models/
│   │   ├── candidate.py        # pydantic input models + Zoho field mapping
│   │   └── job.py
│   └── utils/
│       ├── logger.py           # structured logging + secret/PII redaction
│       └── error_handler.py    # error taxonomy + MCP error formatting
├── tests/                      # pytest unit + integration tests
├── requirements.txt
├── pyproject.toml
├── Dockerfile
├── docker-compose.yml
├── claude_config.json
├── .env.example
└── README.md

Transports

  • STDIO — for Claude Desktop (default).

  • Streamable HTTP — for cloud deployment and the MCP Inspector (endpoint /mcp).


Related MCP server: Lever ATS MCP Server

2. Setup

Prerequisites

  • Python 3.12+

  • A Zoho Recruit account with API access

Install

git clone <your-repo-url> zoho-recruit-mcp-server
cd zoho-recruit-mcp-server

python3.12 -m venv .venv
source .venv/bin/activate          # Windows: .venv\Scripts\activate

pip install -r requirements.txt
cp .env.example .env                # then fill in your Zoho credentials

3. Zoho setup (OAuth)

  1. Register a client at the Zoho API console: https://api-console.zoho.com/

    • Choose Server-based Applications.

    • Note the Client ID and Client Secret.

    • Set an authorized redirect URI (e.g. https://www.zoho.com/recruit or your own callback).

  2. Pick scopes. A broad working scope is:

    ZohoRecruit.modules.ALL,ZohoRecruit.settings.ALL

    For least privilege you can narrow to specific module scopes (e.g. ZohoRecruit.modules.candidates.ALL).

  3. Get an authorization code. In a browser (use the accounts host for your region, e.g. accounts.zoho.in for India):

    https://accounts.zoho.com/oauth/v2/auth?response_type=code
      &client_id=YOUR_CLIENT_ID
      &scope=ZohoRecruit.modules.ALL,ZohoRecruit.settings.ALL
      &redirect_uri=YOUR_REDIRECT_URI
      &access_type=offline
      &prompt=consent

    access_type=offline is required to receive a refresh token. Copy the code value from the redirect URL (it expires within minutes).

  4. Exchange the code for a refresh token:

    curl -X POST "https://accounts.zoho.com/oauth/v2/token" \
      -d "grant_type=authorization_code" \
      -d "client_id=YOUR_CLIENT_ID" \
      -d "client_secret=YOUR_CLIENT_SECRET" \
      -d "redirect_uri=YOUR_REDIRECT_URI" \
      -d "code=PASTE_THE_CODE"

    Save the refresh_token from the response. This server uses only the refresh token at runtime; access tokens are fetched and rotated automatically.

  5. Fill .env:

    ZOHO_CLIENT_ID=...
    ZOHO_CLIENT_SECRET=...
    ZOHO_REFRESH_TOKEN=...
    ZOHO_REGION=com        # com | eu | in | au | jp | ca

    The accounts and API base URLs are derived from ZOHO_REGION. Override with ZOHO_ACCOUNTS_URL / ZOHO_BASE_URL only for custom domains.

Region note: use the accounts host matching the DC where your Zoho account lives (.com, .eu, .in, .com.au, .jp, zohocloud.ca). Using the wrong region produces invalid_code / auth errors.


4. Connecting to Claude

Claude Desktop (STDIO)

Add the server to your Claude Desktop config (claude_desktop_config.json), using the absolute path to your checkout:

{
  "mcpServers": {
    "zoho-recruit": {
      "command": "python",
      "args": ["-m", "src.server"],
      "env": {
        "ZOHO_CLIENT_ID": "your-client-id",
        "ZOHO_CLIENT_SECRET": "your-client-secret",
        "ZOHO_REFRESH_TOKEN": "your-refresh-token",
        "ZOHO_REGION": "com"
      }
    }
  }
}

Run python from the project directory (or set "cwd" / use an absolute interpreter path from your venv). A ready-to-edit claude_config.json ships in this repo. Restart Claude Desktop and the zoho-recruit tools appear.

Test the connection

With the MCP Inspector (HTTP transport):

MCP_TRANSPORT=http python -m src.server --transport http --port 8000
# Inspector connects to: http://localhost:8000/mcp

Or directly over stdio:

python -m src.server          # waits for an MCP client on stdin/stdout

5. Docker

cp .env.example .env          # fill in credentials
docker compose up --build

The container runs the HTTP transport on port 8000; the MCP endpoint is http://localhost:8000/mcp.


6. Available MCP tools

Candidate management

Tool

Purpose

Key inputs

Example prompt

search_candidates

Search candidates

keyword, skills, location, experience, status, job_id

"Find Python developers with 5+ years"

get_candidate_details

Full profile + interview history

candidate_id

"Show me candidate 12345"

create_candidate

Create a candidate

last_name, email, …

"Add a candidate named Rahul Sharma"

update_candidate_status

Change candidate status

candidate_id, status

"Mark candidate 12345 as Rejected"

bulk_candidate_update

Update many candidates

updates[] (each needs id)

"Reject all who failed assessment"

Job management

Tool

Purpose

Key inputs

Example prompt

create_job_opening

Create a job

job_title, department, skills, …

"Open a Senior Backend Engineer role"

search_jobs

Find job openings

keyword, status, department, location, recruiter

"List all open jobs in Engineering"

get_job_pipeline

Candidates on a job

job_id

"Who's in the pipeline for job J-1?"

update_job_status

Change job status

job_id, status

"Put job J-1 on Hold"

move_candidate_in_pipeline

Move candidate within a job's pipeline

job_id, candidate_id, status, comments

"Move candidate to Technical Interview"

Interview management

Tool

Purpose

Key inputs

Example prompt

schedule_interview

Schedule an interview

candidate_id, interviewer, date, time, duration_minutes, meeting_link

"Schedule an interview…"

get_interview_schedule

Upcoming / pending evaluations

from_date, to_date, interviewer, pending_feedback_only

"Show pending interview evaluations"

submit_interview_feedback

Record feedback

candidate_id, interviewer, rating, feedback, recommendation

"Submit feedback for candidate 12345"

Recruitment analytics

Tool

Purpose

Key inputs

hiring_funnel_report

Applicants → joiners + conversion %

date_from, date_to, role, recruiter, department

recruiter_performance_report

Sourced / interviews / offers / closures per recruiter

date_from, date_to

source_analysis

Source breakdown + join rates

date_from, date_to

Email automation

Tool

Purpose

Key inputs

send_candidate_email

Send rejection / invite / follow-up / offer

candidate_id, template, message, subject, template_id

Advanced AI assist

Tool

Purpose

Key inputs

Output

resume_parser

Structure a resume

resume_base64 or resume_text

{skills, experience, companies, education, projects}

candidate_match_score

Candidate vs JD fit

candidate_skills, job_description

{match_percentage, strengths, gaps, recommendation}

interview_summary_generator

Structure a transcript

transcript

{summary, strengths, concerns, questions_asked}


7. Errors

Every tool returns either a result or a stable error object:

{ "error_code": "ZOHO_TOKEN_EXPIRED", "message": "Refresh token is invalid or revoked. ..." }

Common codes: ZOHO_TOKEN_EXPIRED, ZOHO_AUTH_FAILED, ZOHO_RATE_LIMITED, ZOHO_RECORD_NOT_FOUND, INVALID_INPUT, NETWORK_ERROR, ZOHO_API_ERROR, ENDPOINT_NOT_CONFIGURED.

The client retries transient failures (429/5xx/network) with exponential backoff and transparently refreshes the access token on a 401.


8. Security & logging

  • Only the refresh token is stored; access tokens live in memory and rotate.

  • Structured logs capture request id, tool name, execution time, and status.

  • Logs never contain tokens, secrets, candidate emails/phones, or resume text — these are redacted by the logger.

  • A client-side rate limiter caps requests per minute (RATE_LIMIT_PER_MINUTE).

  • All tool inputs are validated (pydantic models / explicit checks).


9. Testing

pip install -r requirements.txt
pytest -q

Tests cover authentication, the HTTP client (retry / 401 / error mapping), domain logic, the AI helpers, and end-to-end flows against a mocked Zoho API (respx). No real Zoho calls are made.


10. Endpoints that may need confirmation for your account

Zoho field/module API names and a few action endpoints vary by edition and by any customisations in your org. These are centralised and clearly commented in the code so you can adjust them in one place:

  • Module namessrc/zoho/common.py (Candidates, Job_Openings, Interviews).

  • Candidate ↔ job association / stage changeJobsAPI.get_pipeline and JobsAPI.change_candidate_stage (/Job_Openings/{id}/associate).

  • Candidate email send actionsrc/zoho/email.py (_SEND_MAIL_PATH).

  • Zoho Resume ParserAIHelpers.resume_parse(use_zoho_parser=True) (the local heuristic parser works out of the box without it).

  • Custom field names (e.g. Hiring_Manager, Start_DateTime, Duration) — adjust in the relevant domain module if your template differs.

The local heuristics (match scoring, transcript summarisation, resume text parsing) work without any Zoho-specific configuration.

Available Tools

20 tools
bulk_candidate_updateA

Update many candidates at once. Each item must include an 'id' plus the fields to change, e.g. [{"id":"123","Candidate_Status":"Rejected"}]. Useful for "reject all candidates who failed assessment".

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose important traits such as atomicity, error handling, idempotency, or rate limits. For a mutation tool, this is insufficient.

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

Conciseness5/5

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

Two sentences plus an example, no wasted words. Efficiently communicates purpose and usage.

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?

An output schema exists (unseen), so return values are covered. However, the input complexity (arbitrary fields) demands more detail on constraints or success behavior; the description is basic.

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?

With 0% schema coverage, the description clarifies that each update object must include an 'id' and fields to change, and provides a JSON example. This adds significant meaning beyond the bare schema.

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?

The description states 'Update many candidates at once,' clearly differentiating from the singular 'update_candidate_status' sibling. It provides a verb and resource, plus an example format.

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?

The description offers a concrete use case ('reject all candidates who failed assessment'), indicating when to use this tool for bulk operations. It lacks explicit when-not or alternatives but is clear enough.

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

candidate_match_scoreB

Score a candidate against a job description. Returns match_percentage, strengths, gaps, and a recommendation.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_descriptionYes
candidate_skillsYes
candidate_summaryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It does not contradict schema but only mentions return fields. Lacks info on side effects, auth needs, or rate limits.

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?

Single sentence that efficiently states purpose and return value. No wasted words, but could benefit from structured separation of purpose vs. output.

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?

Output schema exists and description complements it by naming return fields. However, parameter documentation is weak, and the tool has no usage context. Adequate for simple tools but incomplete for a scoring tool.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no parameter-level details. It does not explain how candidate_skills should be formatted or what candidate_summary is for, despite the schema providing minimal titles.

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?

Description clearly states the tool scores a candidate against a job description and lists specific outputs (match_percentage, strengths, gaps, recommendation). This distinguishes it from siblings like resume_parser or search_candidates.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as get_candidate_details or source_analysis. No prerequisites or context provided.

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

create_candidateC

Create a new candidate profile in Zoho Recruit.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes
phoneNo
skillsNo
last_nameYes
first_nameNo
resume_urlNo
current_employerNo
experience_yearsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the basic function, omitting details such as whether duplicate emails are handled, whether the candidate is automatically added to a pipeline, or what the response contains.

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

Conciseness2/5

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

The description is a single sentence, which is concise but under-specified. It lacks structure and fails to convey necessary details, making it insufficient for effective tool use.

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

Completeness1/5

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

Given the complexity (8 parameters, 2 required, output schema, 19 siblings), the description is grossly incomplete. It does not cover required fields, optional parameters, output, or integration with other tools.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description adds no information about parameters. It does not explain the meaning, constraints, or usage of any of the 8 parameters (e.g., email, resume_url, experience_years).

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?

The description clearly specifies the action (create), the resource (new candidate profile), and the system (Zoho Recruit). This distinguishes it from sibling tools like search_candidates or get_candidate_details.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., bulk_candidate_update, candidate_match_score). There is no mention of prerequisites, typical scenarios, or exclusions.

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

create_job_openingC

Create a new job opening in Zoho Recruit.

ParametersJSON Schema
NameRequiredDescriptionDefault
skillsNo
locationNo
job_titleYes
departmentNo
experienceNo
descriptionNo
hiring_managerNo
number_of_positionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states 'Create', implying a write operation, but omits details like required permissions, idempotency, or side effects.

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

Conciseness3/5

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

The description is a single sentence, achieving conciseness. However, it is too brief and omits necessary details, crossing into under-specification.

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

Completeness2/5

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

Given 8 parameters (1 required) and an output schema not referenced, the description is incomplete. It does not mention return values or the effect of optional parameters.

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

Parameters1/5

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

The description does not explain any of the 8 parameters (e.g., skills, location, department). With 0% schema description coverage, the description should compensate but fails to add any meaning beyond parameter names.

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 clearly states the action ('Create') and the resource ('a new job opening in Zoho Recruit'). It is specific and distinct from other tools like 'update_job_status', though it does not explicitly differentiate from siblings.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as 'search_jobs' or 'update_job_status'. The description lacks contextual usage instructions.

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

get_candidate_detailsB

Get a candidate's full profile: contact info, experience, skills, current company, status, and interview history.

ParametersJSON Schema
NameRequiredDescriptionDefault
candidate_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Description lists what the tool returns (contact info, experience, etc.), which is transparent about output. However, with no annotations provided, it lacks disclosure of side effects, rate limits, authentication needs, or data sensitivity. The description partially compensates for missing annotations by stating the return fields.

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

Conciseness5/5

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

Single sentence that is front-loaded with the primary action and resource. No extraneous words; every part provides value.

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?

The tool has one parameter and an output schema, so the description adequately covers expected return. However, it does not mention error cases, rate limits, or any special behaviors. Given no annotations, the description could be more complete but meets basic needs.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain the candidate_id parameter beyond its name. The description implies the parameter is the candidate's ID, but offers no additional semantics like format, source, or relation to other tools.

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?

Description clearly states the tool retrieves a candidate's full profile and enumerates specific fields like contact info, experience, skills, current company, status, and interview history. It uses a specific verb 'Get' and resource 'candidate's full profile', distinguishing it from sibling tools like search_candidates which return lists.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., search_candidates). It does not mention prerequisites such as requiring a candidate_id or context like needing full detail vs summary.

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

get_interview_scheduleB

List upcoming interviews and pending evaluations. Set pending_feedback_only=true to show interviews awaiting feedback.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateNo
from_dateNo
interviewerNo
pending_feedback_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description should fully disclose behavior. It states 'List' implying read-only, but does not confirm safety, auth requirements, or any side effects. The only extra info is the pending_feedback_only parameter effect.

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

Conciseness5/5

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

Two sentences with no wasted words. The purpose is front-loaded and the parameter hint is concise. The description is appropriately sized for the tool's complexity.

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

Completeness2/5

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

Although an output schema exists (handling return values), the description is incomplete for a 4-parameter tool with zero parameter documentation. It covers only one parameter and lacks details on date range and interviewer filtering, which are typical filtering needs.

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

Parameters2/5

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

With 0% schema description coverage, the description must explain all parameters. Only pending_feedback_only is explained (as a filter for awaiting feedback). No meaning is added for to_date, from_date, or interviewer, leaving three parameters undocumented.

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 clearly states it lists upcoming interviews and pending evaluations, with a specific verb ('List') and a distinct resource. However, it does not differentiate from sibling tools like get_candidate_details or get_job_pipeline, which also deal with schedules.

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 for viewing upcoming interviews and pending feedback, but provides no guidance on when not to use or alternatives. No exclusion criteria or context for filtering are mentioned beyond the boolean parameter.

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

get_job_pipelineC

List the candidates currently associated with a job opening.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose behavioral traits such as authentication requirements, read-only nature, or pagination. The term 'list' implies read-only, but further details are missing.

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 extremely concise at 8 words, with no wasted text. However, it lacks structure or front-loading of key information.

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?

Given the low complexity and presence of an output schema, the description is minimally adequate. However, it does not mention constraints (e.g., only 'currently associated' candidates) or typical use cases relative to the many sibling tools.

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

Parameters2/5

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

The single parameter 'job_id' has no description in the schema (0% coverage) and the tool description does not clarify its format or purpose beyond the property name. This adds no value beyond the schema.

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 clearly states it lists candidates for a job opening, which distinguishes it from sibling tools like 'search_candidates' (general search) and 'get_candidate_details' (single candidate). However, it does not explicitly differentiate from siblings.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description only states what it does, leaving the agent to infer usage context.

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

hiring_funnel_reportC

Generate a hiring funnel: applicants, screening, interview, offers, joiners, rejections, and conversion percentages. Dates are YYYY-MM-DD.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNo
date_toNo
date_fromNo
recruiterNo
departmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose whether the tool is read-only, requires permissions, or has any side effects. The behavioral characteristics are left entirely implicit.

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 concise with two sentences, front-loading the core purpose. However, it omits important details, but the brevity is appropriate given the tool's straightforward nature.

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

Completeness2/5

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

Despite having an output schema, the description does not reference the return structure. With 5 parameters and multiple sibling report tools, the description lacks sufficient context to fully understand the tool's scope and relationship to others.

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

Parameters2/5

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

With 0% schema coverage, the description should compensate by explaining each parameter's role. It only specifies the date format (YYYY-MM-DD) but does not clarify what role, recruiter, department, or the date range parameters do as filters.

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?

The description clearly states the tool generates a hiring funnel including specific stages (applicants, screening, interview, offers, joiners, rejections) and conversion percentages, which distinguishes it from siblings like recruiter_performance_report or get_job_pipeline.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as recruiter_performance_report or get_job_pipeline. It does not mention exclusions, prerequisites, or context for its use.

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

interview_summary_generatorC

Turn an interview transcript into structured feedback: summary, strengths, concerns, and questions asked.

ParametersJSON Schema
NameRequiredDescriptionDefault
transcriptYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only says it generates structured feedback, but does not disclose behavioral traits like idempotency, authentication needs, or processing limits.

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 that is front-loaded with the verb 'Turn'. It is efficient with no wasted words.

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 tool with one required parameter and an existing output schema, the description is minimally adequate. However, it does not mention expected transcript format or how the output relates to sibling tools.

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

Parameters2/5

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

The single parameter 'transcript' has no description in the schema (0% coverage). The tool description implies it is an interview transcript but adds no format or length details.

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 clearly states the verb 'Turn' and resource 'interview transcript', and lists output components. However, it does not differentiate from sibling tool 'submit_interview_feedback', which may be related.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., 'submit_interview_feedback'). No when/when-not instructions are provided.

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

move_candidate_in_pipelineB

Move a candidate to a new stage within a specific job's pipeline, e.g. "Move candidate to Technical Interview stage".

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
statusYes
commentsNo
candidate_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided. The description only mentions moving a candidate, implying a state change, but lacks details on side effects (e.g., notifications, permission requirements, idempotency). For a mutation tool, more behavioral context is needed.

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 brief—two sentences—and front-loads the key action. Could be slightly more concise by removing the example, but overall efficient.

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

Completeness2/5

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

Given the tool has 4 parameters (3 required), no enums, and an output schema, the description is incomplete. It does not explain the output schema or return value, does not mention prerequisites (e.g., candidate must be in a valid pipeline stage), and leaves ambiguity about whether the status is a stage name or ID.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It hints that 'status' refers to a stage name (e.g., 'Technical Interview'), but does not explain valid values, format, or relationship to the pipeline. Other parameters (job_id, candidate_id, comments) have no additional meaning beyond their names.

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?

The description clearly states the action ('Move a candidate'), the resource ('candidate'), and the context ('within a specific job's pipeline'), with an example ('Move candidate to Technical Interview stage'). It effectively distinguishes from sibling tools like get_job_pipeline (read-only) and update_candidate_status (general status update).

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 provides a usage example but does not explicitly state when to use this tool versus alternatives like update_candidate_status or when not to use it. The example implies a typical use case but lacks explicit guidance on exclusions or prerequisites.

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

recruiter_performance_reportB

Per-recruiter metrics: candidates sourced, interviews, offers, closures.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, and description provides minimal behavioral context beyond stating it returns metrics. Does not disclose whether it's read-only, real-time, or any side effects, which is inadequate for a tool with no annotations.

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

Conciseness5/5

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

Single sentence, no wasted words. Essential information front-loaded. Ideal for quick scanning.

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?

Given the tool has 2 optional params and an output schema, the description is adequate for a simple metrics report. However, it lacks context on how recruiters are identified or if the date range is inclusive, leaving minor gaps for nuanced use.

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

Parameters2/5

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

Schema description coverage is 0%, so description must compensate. It only adds 'date_to' and 'date_from' implied from parameter names, but no format, required state, or behavior. Fails to add value beyond the schema itself.

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?

Description clearly states the tool returns per-recruiter metrics for candidates sourced, interviews, offers, closures. This is specific and distinguishes it from sibling tools like hiring_funnel_report (aggregate) or source_analysis (channel-based).

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?

Description implies usage for recruiter-level performance data, but does not explicitly state when to use vs. alternatives. No guidance on prerequisites or exclusions, leaving some ambiguity.

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

resume_parserB

Parse a resume into structured JSON (skills, experience, companies, education, projects). Provide a base64-encoded PDF or raw text.

ParametersJSON Schema
NameRequiredDescriptionDefault
resume_textNo
resume_base64No
use_zoho_parserNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It states the output is structured JSON but does not explain error handling, input format validation, or the effect of the use_zoho_parser flag. The phrase 'Provide a base64-encoded PDF or raw text' is ambiguous about which parameter corresponds to which input and whether one or both must be supplied.

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, clearly front-loaded with the purpose. It contains no filler. However, the phrase 'Provide a base64-encoded PDF or raw text' could be more tightly integrated into parameter guidance, and the sentence structure is slightly awkward. Still, it is concise and wastes no words.

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

Completeness2/5

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

Given 3 parameters (none required), 0% schema coverage, and an output schema (not described), the description is insufficient. It does not specify that at least one of resume_text or resume_base64 should be provided, nor does it explain the meaning of use_zoho_parser. The return value is partially indicated ('structured JSON with skills, experience...') but no details about the output schema shape. This leaves an agent likely to misuse the tool.

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 0%, so the description must compensate. It adds meaning by indicating that input can be base64-encoded PDF or raw text, which correlates to the two string parameters. However, it does not clarify that resume_text and resume_base64 are alternatives, nor does it explain the use_zoho_parser boolean. The description adds some value but leaves key semantics unexplained.

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?

The description clearly states the tool parses a resume into structured JSON, listing the extracted fields (skills, experience, companies, education, projects). It uses a specific verb ('Parse') and resource ('resume'), and is distinct from all sibling tools which focus on candidate/job management rather than document parsing.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives, nor any conditions or prerequisites. The description does not mention that the tool expects either resume_text or resume_base64, nor when to set use_zoho_parser to true. Given the sibling tools include candidate_match_score which might also process resumes, the lack of comparative guidance is a gap.

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

schedule_interviewC

Schedule an interview. date is YYYY-MM-DD and time is HH:MM (24h, with optional timezone offset, e.g. 14:30:00+05:30).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
timeYes
interviewerYes
candidate_idYes
meeting_linkNo
interview_nameNo
duration_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It only specifies date/time formats but omits critical behavioral traits like whether it sends notifications, checks for conflicts, or requires specific permissions. This is insufficient for an API that likely performs side effects.

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

Conciseness5/5

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

Two sentences with front-loaded action verb. Every word serves a purpose. No unnecessary repetition or irrelevant details.

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

Completeness2/5

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

The tool has 7 parameters (4 required), no annotations, and an output schema. The description only addresses 2 parameters' formats and ignores the rest. It does not explain the overall effect (e.g., creates a calendar event, updates system). Given the complexity, the description is incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only explains the format for 'date' and 'time', leaving 'candidate_id', 'interviewer', 'meeting_link', 'interview_name', and 'duration_minutes' unexplained. While date/time format is helpful, most parameters lack semantic context.

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 'Schedule an interview' clearly states the action and resource. It distinguishes itself from sibling tools like get_interview_schedule (read-only) and submit_interview_feedback (post-interview action), though not explicitly. The verb+resource combination is specific.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It only states what it does without context on appropriate scenarios.

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

search_candidatesC

Search candidates in Zoho Recruit.

Filter by free-text keyword, comma-separated skills, location, minimum years of experience, candidate status, or an associated job id. Example: "Find Python developers with 5+ years experience".

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
job_idNo
skillsNo
statusNo
keywordNo
locationNo
per_pageNo
experienceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral details. It fails to mention pagination behavior (though page and per_page parameters exist), sorting, or whether the search is exact or fuzzy. This is a significant gap for a search tool.

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

Conciseness5/5

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

The description is two sentences plus an example, with no redundant information. It is front-loaded with the purpose and efficiently lists filters, making it concise and well-structured.

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

Completeness2/5

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

Given 8 optional parameters and no annotations, the description is incomplete. It does not explain pagination or default behaviors, which are critical for a search tool. The presence of an output schema does not compensate for missing parameter explanations and usage guidance.

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 0%, so the description must compensate. It explains the keyword, skills (comma-separated), location, experience, status, and job_id filters, and provides an example. However, it does not explain page, per_page, or the specific formats for keyword, location, or status, leaving some parameters undocumented.

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 clearly states the tool searches candidates and lists applicable filters. It distinguishes from sibling tools like get_candidate_details (which retrieves a single candidate) and search_jobs. However, it could be more explicit about the scope, e.g., returning a list of matching candidates.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as get_candidate_details for a specific candidate. It also lacks prerequisites or context for appropriate use, which is essential for an agent to choose correctly among siblings.

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

search_jobsA

Search job openings. Returns open positions, status, and the assigned recruiter. Use get_job_pipeline for the candidate pipeline of a job.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
statusNo
keywordNo
locationNo
per_pageNo
recruiterNo
departmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must reveal behavioral traits. It states the tool returns 'open positions, status, and the assigned recruiter', but does not mention pagination behavior (page, per_page) despite the schema including those parameters. This is a notable gap in transparency.

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

Conciseness5/5

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

The description is extremely concise with two sentences: one stating the purpose, the other providing an alternative usage. Every word serves a purpose, no fluff.

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

Completeness2/5

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

Given the tool has 7 parameters and an output schema, the description is insufficient. It mentions what is returned (open positions, status, recruiter) but omits how to filter (keyword, location, etc.) and pagination details. Users would need extra documentation to use the tool effectively.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description adds no information about individual parameters. The tool has 7 parameters (keyword, location, status, etc.) but the description only says 'Search job openings', leaving their meanings entirely inferred. This fails to compensate for the schema's lack of descriptions.

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?

The description starts with a clear verb+resource: 'Search job openings', specifying the tool's primary function. It distinguishes itself from sibling tool get_job_pipeline by directing users to use that tool for candidate pipeline needs, preventing confusion.

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?

The description explicitly tells users when to use an alternative (get_job_pipeline for candidate pipeline), providing clear context. However, it does not address other siblings like search_candidates or create_job_opening, leaving some usage ambiguity.

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

send_candidate_emailB

Send an email to a candidate. template is one of rejection, interview_invitation, follow_up, offer (used to derive a subject), or pass a Zoho template_id for a branded template. Provide message for an ad-hoc body.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNo
subjectNo
templateNo
template_idNo
candidate_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the action (send email) without disclosing behavioral traits such as side effects, authentication needs, error handling, or return value expectations. Lacks sufficient transparency for an action tool.

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

Conciseness5/5

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

The description is two sentences, front-loaded with purpose, and every sentence adds value. No redundant or irrelevant information. Excellent conciseness.

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

Completeness2/5

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

Given the tool has 5 parameters with zero schema coverage, the description should provide comprehensive guidance. It covers template and message but omits subject and the output/return behavior. Although an output schema exists, the description does not reference it, leaving gaps.

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?

With 0% schema description coverage, the description adds meaning by explaining that 'template' can be a predefined enum string or a Zoho template_id, and that 'message' is for ad-hoc body. However, the 'subject' parameter is not described, and the interaction between template and message is unclear, partially compensating but incomplete.

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?

Clearly states 'Send an email to a candidate' with a specific verb and resource. Distinguishes from sibling tools like create_candidate or update_candidate_status, though no explicit differentiation is made.

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?

Explains how to use the tool (template options, ad-hoc message) but does not specify when to use vs alternatives or any exclusions. Since no alternative email tool exists, the guidance is adequate but not explicit.

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

source_analysisC

Analyse candidate sources (LinkedIn, Naukri, Referral, Careers page) with per-source counts and join rates.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It only states what the tool does (analyze sources, counts, join rates) without mentioning side effects, permissions, data freshness, or pagination. This is insufficient for a production tool.

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

Conciseness5/5

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

The description is a single, well-structured sentence that conveys the core functionality without extraneous words. It is front-loaded and easy to parse.

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?

Given the complexity (output schema exists, parameters optional), the description provides basic understanding but lacks detail on return values and parameter effects. It is adequate for a simple tool but could be more complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain parameter semantics. It does not mention the two parameters (date_from, date_to) or their role in filtering results. The phrase 'per-source counts and join rates' implies date-range filtering but does not clarify format, default behavior, or how null values are handled.

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 clearly states the tool's function: analyzing candidate sources with per-source counts and join rates. It mentions specific sources (LinkedIn, Naukri, Referral, Careers page), which adds specificity. However, it does not explicitly differentiate from sibling tools like 'hiring_funnel_report' or 'recruiter_performance_report', which might also involve source analysis.

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

Usage Guidelines2/5

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

No guidelines are provided on when to use this tool versus alternatives. There is no information about prerequisites, ideal use cases, or when not to use it. Sibling tools offer related functionality (e.g., hiring_funnel_report) but the description does not help the agent choose.

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

submit_interview_feedbackA

Submit interview feedback. recommendation is typically one of Hire / No Hire / Hold. Pass interview_id to update an existing interview record instead of creating one.

ParametersJSON Schema
NameRequiredDescriptionDefault
ratingYes
feedbackYes
interviewerYes
candidate_idYes
interview_idNo
recommendationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It reveals that the tool can create or update records based on `interview_id`, which is useful. However, it does not disclose side effects (e.g., overwriting behavior), error states, authentication needs, or what happens on success. The description lacks sufficient behavioral detail for a tool with no annotations.

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

Conciseness5/5

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

The description is concise with two sentences, each adding distinct value. It is front-loaded with the core action and uses backticks to highlight parameter names, improving readability. No redundant or extraneous information is present.

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?

The description covers the tool's main action and key parameter behaviors, but for a tool with 6 parameters (5 required) and an output schema, it omits critical details like the rating scale, feedback format, and success response. The output schema exists but is not described, so agents may lack context on return values. Overall, it meets basic needs but has notable gaps.

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?

The description adds meaning to two parameters: `recommendation` (typical values) and `interview_id` (use to update). The schema has 0% description coverage, so the description partly compensates. However, it does not explain `rating`, `feedback`, `interviewer`, or `candidate_id`. More parameter-specific guidance would be beneficial.

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?

The description clearly states the tool's purpose: 'Submit interview feedback.' It also specifies the typical values for `recommendation` (Hire/No Hire/Hold), adding specificity. The tool name itself is unambiguous, and the sibling tools are distinct (e.g., schedule_interview, interview_summary_generator), so no confusion arises.

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 provides some context on when to use the tool: it can create or update feedback via the `interview_id` parameter. However, it does not explicitly compare to alternatives or state when not to use this tool. More guidance on prerequisites or differentiation from similar tools (e.g., interview_summary_generator) would improve this score.

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

update_candidate_statusB

Move a candidate to a new stage (e.g. Applied, Screening, Assessment, Interview, Offer, Joined, Rejected).

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
candidate_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

The description implies a state change ('move') but does not disclose any behavioral traits like side effects, permissions needed, idempotency, or result format. Without annotations, this is insufficient.

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

Conciseness5/5

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

The description is a single, efficient sentence that covers the core purpose without any wasted words.

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?

While the output schema exists (not shown), the description omits important context like error conditions, case sensitivity, and differentiation from similar tools. It is minimally adequate but incomplete.

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?

The description adds meaning to the 'status' parameter by listing example stages, but the 'candidate_id' parameter is left unexplained. With 0% schema coverage, the description partially compensates but needs more detail.

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 clearly states the action ('move a candidate to a new stage') and provides concrete examples of stages, making the tool's purpose understandable. However, it does not differentiate from the sibling 'move_candidate_in_pipeline', which may cause confusion.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus its alternatives, such as 'move_candidate_in_pipeline'. The description lacks context on prerequisites or preferred use cases.

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

update_job_statusB

Update a job opening's status (e.g. Open, Hold, Closed).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
statusYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states it updates the status, but does not mention what happens with invalid statuses, required permissions, side effects, or rate limits. The description does not compensate for the lack of annotations.

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 very concise (one sentence) and front-loaded with the action and resource. While it could benefit from additional detail, it is not verbose and communicates the core purpose efficiently.

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?

Given the tool's simplicity (2 required parameters) and the presence of an output schema, the description is minimally adequate. However, it lacks parameter details and usage context, which are needed especially with 0% schema coverage.

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

Parameters2/5

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

Schema coverage is 0%, so the description must add meaning beyond the schema. It lists example valid statuses ('Open, Hold, Closed') but does not specify whether these are exhaustive, nor does it explain the format of 'job_id'. The description provides limited value for parameter understanding.

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?

The description clearly states the action ('Update') and the specific resource ('a job opening's status') with example statuses ('Open, Hold, Closed'). It easily distinguishes from sibling tools like 'create_job_opening' (create) and 'update_candidate_status' (different resource).

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 when needing to change a job's status but lacks explicit guidance on when to use this tool vs alternatives, prerequisites, or scenarios where it is not appropriate. Given the number of sibling tools, some indication would be beneficial.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 20 tool updatesv1.0.0
    • First observedbulk_candidate_update
    • First observedcandidate_match_score
    • First observedcreate_candidate
    • First observedcreate_job_opening
    • First observedget_candidate_details
    • First observedget_interview_schedule
    • First observedget_job_pipeline
    • First observedhiring_funnel_report
    • First observedinterview_summary_generator
    • First observedmove_candidate_in_pipeline
    • First observedrecruiter_performance_report
    • First observedresume_parser
    • First observedschedule_interview
    • First observedsearch_candidates
    • First observedsearch_jobs
    • First observedsend_candidate_email
    • First observedsource_analysis
    • First observedsubmit_interview_feedback
    • First observedupdate_candidate_status
    • First observedupdate_job_status

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes, but update_candidate_status and move_candidate_in_pipeline overlap in moving candidates through stages, though the latter is job-specific. Some tools like get_job_pipeline and hiring_funnel_report relate to pipelines but are clarified by descriptions.

Naming Consistency4/5

Tools predominantly follow verb_noun pattern (create, get, search, update, schedule, send, submit, move). A few use noun_noun (interview_summary_generator, source_analysis) but remain descriptive. Overall consistent and predictable.

Tool Count5/5

20 tools cover candidate management, job openings, interviews, email, and reporting without feeling excessive. Each tool serves a clear purpose within the recruiting domain.

Completeness4/5

Core recruiting lifecycle is well-covered: create/update/search candidates and jobs, schedule/submit feedback, reports. Missing delete operations (candidates, jobs) and explicit offer management, but these are minor gaps.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Integrates Lever ATS with Claude Desktop to manage hiring pipelines through natural language, offering tools for candidate search, pipeline management, file and application handling, and advanced sourcing.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects your Ashby recruiting data to Claude, enabling natural language queries and management of candidates, applications, jobs, interviews, offers, and team information.
    16
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI tools like Claude and Codex to access and manage Recruit CRM data including candidates, jobs, companies, tasks, meetings, notes, and call logs through natural language.
    69
    43
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yogeshsraju-max/zoho-recruit-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server