Connect Taleez to ChatGPT: Manage recruitment and candidates via MCP
Learn how to connect Taleez to ChatGPT using Truto's MCP server. A complete engineering guide to automating candidate sourcing, job applications, and ATS pipelines.
If you need to connect Taleez to ChatGPT so your AI agents can source candidates, parse resumes, orchestrate hiring pipelines, and update recruitment stages, you need a Model Context Protocol (MCP) server. This server acts as the secure translation layer between ChatGPT's function calls and the Taleez REST API. You can either spend weeks building, hosting, and maintaining this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate an authenticated MCP server URL.
If your team uses Claude, check out our guide on connecting Taleez to Claude or explore our broader architectural overview on connecting Taleez to AI Agents.
Giving a Large Language Model (LLM) read and write access to an Applicant Tracking System (ATS) like Taleez is a significant engineering challenge. You must handle separated entity schemas, complex file upload mechanisms for resumes, and strict pagination rules. Every time the hiring team updates a candidate property or modifies the recruitment workflow, your custom server code must be updated, redeployed, and tested to prevent the LLM from hallucinating payloads.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Taleez, connect it natively to ChatGPT, and execute complex recruitment workflows using natural language.
The Engineering Reality of the Taleez API
A custom MCP server is essentially a self-hosted integration layer. While the open MCP standard provides a predictable way for models like GPT-4o to discover tools, implementing it against Taleez's highly specific ATS architecture is exceptionally painful.
If you decide to build a custom MCP server for Taleez, you own the entire API lifecycle. Here are the specific integration challenges that break standard CRUD assumptions when working with Taleez:
Decoupled Candidates, Pools, and Applications
Unlike simpler CRMs where a "Contact" holds all relevant data, Taleez strictly decouples the human being (Candidate) from their engagement with the company (Application, Pool, Spontaneous Application). If an LLM needs to add a candidate to a specific role, it cannot just update a "job" field on the candidate object. The AI must first call the endpoint to create or fetch the candidate, retrieve the candidate's ID, and then construct a separate payload to create a Job Application linking that candidate ID to a specific Job ID. If your MCP tool schemas do not explicitly enforce this multi-step relational logic, the LLM will hallucinate single-step endpoints that do not exist.
Two-Stage Document Uploads for Resumes
Taleez handles documents differently depending on the context. If you want an AI agent to upload a resume or cover letter, it often requires a two-step process involving the tmp_documents endpoint before attaching the file to a candidate record. Handling multipart/form-data for file uploads via standard JSON-RPC MCP tool calls requires your server to decode base64 file payloads from the LLM, buffer them, and stream them correctly to Taleez.
Custom Candidate Properties
Every organization customizes their Taleez instance with bespoke candidate_properties. The API exposes these as dynamic key-value pairs. A custom MCP server must dynamically read the list_all_taleez_candidate_properties endpoint, parse the metadata, and inject those exact property IDs into the LLM's prompt context so it knows how to format the update_a_taleez_candidate_property_value_by_id payload. Without this dynamic schema resolution, the LLM will guess the field names and the API will reject the request.
Taleez to ChatGPT Quickstart Guide
If you want the fastest path from a fresh Truto account to ChatGPT successfully calling the Taleez API, follow these steps. We will cover two methods for creating the MCP server (UI and API) and two methods for connecting it to ChatGPT (UI and CLI).
What you need:
- A Truto account with API access.
- Taleez API credentials (API key) with appropriate permissions.
- A ChatGPT Pro, Plus, Business, Enterprise, or Education seat with Developer mode enabled.
Step 1: Connect Taleez as an Integrated Account
First, establish the baseline connection in Truto. In the Truto dashboard, navigate to Integrated Accounts -> New Integrated Account, select Taleez, and input your API key. Truto manages the secure credential storage and handles all necessary authorization headers for downstream requests.
Make a note of your integrated_account_id. You can copy it directly from the Truto UI or retrieve it via the API:
curl https://api.truto.one/integrated-account \
-H "Authorization: Bearer $TRUTO_API_TOKEN"Step 2: Generate the Taleez MCP Server
Truto dynamically generates MCP tools based on the active API documentation for your connected integration. You can provision a server scope to this specific Taleez account via the UI or the API.
Method A: Via the Truto UI
- Navigate to the integrated account page for your Taleez connection.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration (e.g., restrict to
readmethods only, or filter by tags likecandidatesandjobs). - Click Save and copy the generated MCP server URL (formatted as
https://api.truto.one/mcp/<token>).
Method B: Via the API You can programmatically provision the MCP server by making a POST request. This is ideal for orchestrating agent infrastructure in code.
curl -X POST https://api.truto.one/integrated-account/$INTEGRATED_ACCOUNT_ID/mcp \
-H "Authorization: Bearer $TRUTO_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Taleez Recruitment Agent",
"config": {
"methods": ["read", "write"],
"tags": ["candidates", "jobs", "applications"]
}
}'The response will return a url field containing your secure MCP endpoint. Treat this URL as a secret - it contains a cryptographically hashed token that inherently authenticates the request to your Taleez account.
Step 3: Connect the MCP Server to ChatGPT
Now that you have your Truto MCP URL, you need to expose it to your LLM environment.
Method A: Via the ChatGPT UI (Developer Mode)
- Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
- Toggle Developer mode to ON.
- Under MCP servers / Custom connectors, click to add a new server.
- Name: "Taleez ATS"
- Server URL: Paste your Truto MCP URL (
https://api.truto.one/mcp/<token>). - Click Save. ChatGPT will perform a handshake, run the
tools/listprotocol, and immediately understand how to interact with Taleez.
Method B: Via Manual Config File (SSE Transport)
If you are using a local development environment, an agent framework, or testing via the Claude Desktop app before moving to ChatGPT, you can connect using a standard JSON config file leveraging the official @modelcontextprotocol/server-sse package.
{
"mcpServers": {
"taleez-truto": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"https://api.truto.one/mcp/YOUR_TOKEN_HERE"
]
}
}
}Hero Tools for Taleez Automation
Truto automatically generates comprehensive tool schemas for the Taleez API. Below are the highest-leverage hero tools your AI agent will use to automate recruitment ops.
list_all_taleez_jobs
This tool retrieves the list of open requisitions in your ATS. It handles Taleez's pagination system automatically. The LLM can use this to figure out which job_id it needs before attempting to assign a candidate to a role.
"Fetch all open engineering roles in Taleez. I need the exact job IDs and their current status."
create_a_taleez_candidate
This is the core write operation for adding new talent to the database. It accepts standard fields like first name, last name, email, and phone number.
"Add a new candidate named Sarah Jenkins. Her email is sarah.jenkins@example.com and she is based in London."
create_a_taleez_job_application
Once a candidate exists and a job ID is known, the LLM uses this tool to explicitly link the two together, moving the candidate into the active hiring pipeline for that specific requisition.
"Take candidate ID 14059 and apply them to the Senior Frontend Developer role (Job ID 832)."
list_all_taleez_job_steps
Before an AI agent can advance a candidate through the pipeline, it needs to know what the pipeline looks like. This tool returns the custom workflow stages (e.g., "Phone Screen", "Technical Interview", "Offer") configured for a specific job.
"What are the hiring stages for the Marketing Director position? List them in order."
update_a_taleez_candidate_property_value_by_id
This tool allows the LLM to update custom metadata on a candidate record. If a recruiter asks the AI to update a custom "Willing to relocate" flag, the AI will use this tool to patch the specific property ID.
"Update the 'willing_to_relocate' custom property to 'true' for candidate ID 9931."
list_all_taleez_candidates
This tool allows the LLM to search the ATS for existing talent. It can filter by email or name to prevent creating duplicate candidate records when processing inbound resumes.
"Search Taleez to see if we already have a candidate with the email alex.smith@domain.com. If so, return their candidate ID."
To view the complete schema definitions and the full list of available Taleez proxy APIs, visit the Taleez integration page.
Workflows in Action
When you give ChatGPT access to these tools, it stops acting as a simple text generator and becomes an autonomous recruitment operations agent. Here are two real-world workflows demonstrating how the LLM orchestrates multiple Taleez endpoints.
Scenario 1: End-to-End Candidate Sourcing and Pipeline Assignment
An internal recruiter finds a great profile on LinkedIn, copies their basic details, and asks the AI to put them into the system for a specific role.
"I found a great prospect named Marcus Wright (marcus.w@example.com, phone 555-0192). Add him to Taleez as a candidate, and then apply him to the open Backend Engineer role."
Step-by-step Execution:
- ChatGPT calls
list_all_taleez_jobswith a search filter for "Backend Engineer" to locate the correct Job ID. - ChatGPT calls
list_all_taleez_candidatessearching for "marcus.w@example.com" to ensure the candidate doesn't already exist. - Finding no duplicate, ChatGPT calls
create_a_taleez_candidateusing the provided name, email, and phone number, receivingcandidate_id: 4501in return. - ChatGPT calls
create_a_taleez_job_applicationusingcandidate_id: 4501and the previously discovered Job ID.
Outcome: The user receives a confirmation that Marcus is now in the system and actively applied to the Backend Engineer pipeline.
sequenceDiagram
participant User as User
participant ChatGPT as ChatGPT
participant TrutoMCP as Truto MCP
participant TaleezAPI as Taleez API
User->>ChatGPT: "Add Marcus Wright to the Backend role"
ChatGPT->>TrutoMCP: Call list_all_taleez_jobs
TrutoMCP->>TaleezAPI: GET /jobs?search=Backend
TaleezAPI-->>TrutoMCP: Job ID 802
TrutoMCP-->>ChatGPT: Job ID 802
ChatGPT->>TrutoMCP: Call create_a_taleez_candidate
TrutoMCP->>TaleezAPI: POST /candidates
TaleezAPI-->>TrutoMCP: Candidate ID 4501
TrutoMCP-->>ChatGPT: Candidate ID 4501
ChatGPT->>TrutoMCP: Call create_a_taleez_job_application(4501, 802)
TrutoMCP->>TaleezAPI: POST /applications
TaleezAPI-->>TrutoMCP: Success
TrutoMCP-->>ChatGPT: Application Created
ChatGPT-->>User: "Marcus has been added and applied to the role."Scenario 2: Pipeline Audit and Custom Property Update
A hiring manager wants to do a bulk review of candidates in a specific stage and flag them for a follow-up action based on custom properties.
"Find all candidates currently in the 'Technical Assessment' stage for the DevOps role. For any candidate who has been in this stage for more than a week, update their 'Needs Follow-Up' custom property to true."
Step-by-step Execution:
- ChatGPT calls
list_all_taleez_jobsto find the DevOps Job ID. - ChatGPT calls
list_all_taleez_job_stepsusing the Job ID to find the exact Step ID corresponding to "Technical Assessment". - ChatGPT calls
list_all_taleez_candidate_applicationsfiltered by that specific Step ID, returning a list of candidates. - ChatGPT analyzes the timestamp of when they entered the stage.
- For candidates exceeding the 7-day mark, ChatGPT calls
list_all_taleez_candidate_propertiesto locate the property ID for "Needs Follow-Up". - ChatGPT loops through the flagged candidates, calling
update_a_taleez_candidate_property_value_by_idfor each one.
Outcome: The hiring manager gets a plain-English summary of which candidates were flagged, while the underlying ATS database is cleanly updated without human data entry.
Security and Access Control
Exposing an ATS to an autonomous AI agent introduces strict compliance and security requirements. Truto's MCP server architecture provides several mechanisms to lock down what ChatGPT can read or write in Taleez.
- Method Filtering: When generating the MCP server, you can restrict it via
config.methods. Passing["read"]ensures the LLM can only query candidates and jobs, completely neutralizing the risk of the AI accidentally modifying data or creating bogus applicants. - Tag Filtering: You can use
config.tagsto limit the server's surface area. For example, restricting tags to["jobs"]prevents the LLM from accessing candidate PII entirely. - API Token Authentication: By default, the Truto MCP URL acts as a bearer token. By enabling
require_api_token_auth: true, you force the client to pass an explicit Truto API token in the authorization header. This means even if the MCP URL leaks in a slack channel, it cannot be used without valid environment credentials. - Ephemeral Servers: You can pass an
expires_atISO datetime when creating the server. Truto will automatically destroy the MCP token and its background durable object at the specified time - perfect for granting an AI agent temporary access during a specific hiring sprint. - Rate Limits: Truto does not silently retry or absorb HTTP 429 rate limit errors from Taleez. It passes them directly back to the caller while normalizing the
ratelimit-limit,ratelimit-remaining, andratelimit-resetheaders per the IETF standard, ensuring the LLM or client framework is explicitly aware of API capacity.
Rethinking ATS Integrations for AI
Connecting Taleez to ChatGPT transforms how recruitment teams interact with their data. Instead of navigating complex ATS UIs, clicking through tabs to find custom properties, or manually linking applicants to jobs, operators can simply instruct the system in natural language.
By leveraging Truto to generate the MCP server, engineering teams bypass the grueling work of managing ATS API schemas, handling multipart document uploads, and maintaining custom server infrastructure. You define the access scope, Truto handles the protocol translation, and your AI agents get to work immediately.
FAQ
- How do I connect Taleez to ChatGPT?
- You can connect Taleez to ChatGPT by generating a Model Context Protocol (MCP) server URL via Truto. Once generated, add this URL to ChatGPT's Custom Connectors in Developer Mode to allow the AI to interact with your Taleez ATS data.
- Can I prevent ChatGPT from modifying my Taleez candidate data?
- Yes. When creating the Truto MCP server, you can apply method filtering (e.g., config.methods: ["read"]) so the AI agent only has permission to query data, completely blocking write operations like creating or deleting candidates.
- How does Truto handle Taleez API rate limits?
- Truto passes HTTP 429 rate limit errors directly back to the caller (ChatGPT) and normalizes the rate limit information into standardized IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). The caller is responsible for implementing retry and backoff logic.
- Does Truto support uploading resumes to Taleez via ChatGPT?
- Yes. Truto exposes the necessary Taleez endpoints (like create_a_taleez_candidate_document) as MCP tools, allowing the LLM to format and execute the proper payload to attach files and documents to candidate records.