Skip to content

Connect Deel to ChatGPT: Manage Payroll, Contracts, and Time-Off

Learn how to connect Deel to ChatGPT using a managed MCP server to automate payroll adjustments, time-off requests, and contract management.

Roopendra Talekar Roopendra Talekar · · 8 min read
Connect Deel to ChatGPT: Manage Payroll, Contracts, and Time-Off

If your HR and finance teams use Deel to manage global contractors, EOR employees, and payroll, they spend hours jumping between dashboards to approve time-off, adjust invoices, and verify contracts. You want to connect Deel to ChatGPT so your AI agents can read active contracts, submit off-cycle payments, and parse time-off balances using natural language. If your team uses Claude instead, check out our guide on connecting Deel to Claude, or explore our broader architectural overview on connecting Deel to AI Agents.

Giving a Large Language Model (LLM) read and write access to a sprawling HRIS and payroll platform is an engineering challenge. You either spend weeks building, hosting, and maintaining a custom Model Context Protocol (MCP) server that translates natural language intent into complex REST API payloads, or you use a managed infrastructure layer to handle the boilerplate for you.

This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Deel, connect it natively to ChatGPT, and execute complex payroll and HR workflows using natural language.

The Engineering Reality of the Deel API

A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools, the reality of implementing it against Deel's API is painful. You aren't just integrating a simple CRUD directory - you are integrating an API that strictly separates contract types, utilizes highly dynamic payload requirements, and enforces strict financial guardrails.

If you decide to build a custom MCP server for Deel, you own the entire API lifecycle. Here are the specific integration challenges you will face:

EOR vs Independent Contractor Schisms Deel strictly segregates Employee of Record (EOR) logic from Independent Contractor (IC) logic. You cannot simply hit a /contracts/amendments endpoint. You must route EOR amendments through list_all_deel_eor_contract_amendments and IC amendments through list_all_deel_contract_amendments. If your custom MCP server doesn't clearly delineate these schemas for the LLM, the model will hallucinate payloads, submit an IC schema to an EOR endpoint, and fail with an opaque HTTP 400 error.

Dynamic Bank Transfer Requirements Global payroll requires collecting localized banking information. You cannot hardcode a payout method schema. To add a bank account, your agent must first call a requirements endpoint (list_all_deel_bank_transfers_requirements) passing the specific country and currency. The API returns a dynamic array of required fields (e.g., routing number for US, CLABE for Mexico, IBAN for Germany). If your MCP server does not teach the LLM to recursively discover these requirements before formulating a payload, automated onboarding workflows are impossible.

Rate Limits and 429 Realities Deel enforces rate limits to protect its infrastructure. A critical engineering fact: Truto does not retry, throttle, or apply backoff on rate limit errors. When the upstream Deel API returns an HTTP 429, Truto passes that error directly to the caller. Truto normalizes the upstream rate limit info into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF spec. The caller (your AI agent or orchestration framework) is strictly responsible for handling the retry and backoff logic. If your custom logic ignores these headers, your agent will get stuck in a loop during bulk invoice processing.

How to Generate a Managed MCP Server for Deel

Instead of building a proxy layer from scratch, Truto allows you to generate a secure, self-contained MCP server derived directly from Deel's API documentation and your connected tenant.

Every MCP server is scoped to a single integrated account. The server URL contains a cryptographically hashed token that routes requests, enforces permissions, and handles authentication transparently.

Method 1: Via the Truto UI

For immediate access without writing code, you can generate the MCP server directly from the dashboard.

  1. Navigate to the Integrated Accounts page in your Truto dashboard and select your connected Deel account.
  2. Click the MCP Servers tab.
  3. Click Create MCP Server.
  4. Configure the server parameters. You can restrict the server to specific operations (e.g., selecting the read method filter to prevent the LLM from making payroll changes).
  5. Copy the generated MCP server URL. This URL is fully authenticated and ready for ChatGPT.

Method 2: Via the Truto API

If you are provisioning AI workspaces programmatically, you can generate the MCP server via a simple REST call.

curl -X POST https://api.truto.one/integrated-account/<deel_integrated_account_id>/mcp \
  -H "Authorization: Bearer <your_truto_api_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Deel HR Ops Agent",
    "config": {
      "methods": ["read", "write"],
      "require_api_token_auth": true
    },
    "expires_at": "2026-12-31T23:59:59Z"
  }'

The response returns the server URL containing the auth token:

{
  "id": "mcp_abc123",
  "name": "Deel HR Ops Agent",
  "url": "https://api.truto.one/mcp/d7f8g9h0..."
}

Connecting the Deel MCP Server to ChatGPT

Once you have the URL, you need to expose it to your LLM environment.

Via the ChatGPT UI

OpenAI now supports custom MCP connectors directly in the ChatGPT interface.

  1. Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
  2. Toggle Developer mode on (custom connectors require this flag).
  3. Under MCP servers / Custom connectors, click to add a new server.
  4. Name the connection (e.g., "Deel Production").
  5. Paste the Truto MCP URL into the Server URL field and save.

ChatGPT will immediately perform a handshake with the server, execute the tools/list JSON-RPC method, and inject Deel's API capabilities into its context window.

Via Manual Configuration

If you are building custom AI agents in an orchestrator, testing in Claude Desktop, or using the open-source ChatGPT CLI, you connect using the standard SSE transport configuration. Create or edit your configuration file (e.g., mcp-config.json or claude_desktop_config.json):

{
  "mcpServers": {
    "deel_prod": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "https://api.truto.one/mcp/d7f8g9h0..."
      ]
    }
  }
}

If you generated the server with require_api_token_auth: true, append the Authorization header to your client transport layer to fulfill the secondary authentication requirement.

Core Deel Capabilities Exposed to AI

By connecting this server, ChatGPT gains access to the underlying Deel integration resources, curated by documentation schemas. Here are the highest-leverage tools your agent can now execute.

list_all_deel_contracts

Retrieves a list of all Deel contracts (both IC and EOR), including statuses, termination dates, and worker details. This is the foundation for auditing active headcount.

"Fetch all active contracts in Deel and filter out anyone with a termination date set in the next 30 days. Give me a list of their names, teams, and contract types."

list_all_deel_people

Queries the global HR directory. This returns comprehensive employee profiles, including department, seniority, birth dates, and direct manager hierarchy.

"Pull the directory profile for Jane Doe. Tell me who her direct manager is and what department she currently reports to."

create_a_deel_invoice_adjustment

Submits an invoice adjustment against a contract - such as a performance bonus, commission payout, or expense deduction - before the next payroll cycle.

"Submit a one-time invoice adjustment of $500 for a 'Performance Bonus' to contract ID c_98765. Add a description that says 'Q3 Objectives Achieved'."

list_all_deel_entitlements

Retrieves the time-off balances for an HRIS profile, calculating accrued, used, and available days based on complex local policies.

"Check the time-off entitlements for employee ID p_34567. How many vacation days do they have available, and how many have they already used this year?"

create_a_deel_time_off

Submits a formal time-off request on behalf of a worker, defining the start date, end date, and reason. The request automatically routes to the appropriate approval workflow in Deel.

"Submit a PTO request for profile ID p_34567 starting on October 12th and ending on October 15th. Mark the reason as 'Annual Leave'."

list_all_deel_bank_transfers_requirements

Crucial for automated onboarding. This tool queries the dynamic form requirements for bank payouts based on country and currency before attempting to create a payout method.

"I need to set up a payout method for a contractor in Germany getting paid in EUR. What specific bank fields does Deel require me to collect from them?"

To view the complete inventory of available proxy endpoints and their exact JSON schemas, review the Deel integration page.

Workflows in Action

MCP servers transform single API calls into autonomous workflows. When you give ChatGPT access to Deel, it can chain tool calls together to resolve complex operational tasks.

Scenario 1: Manager Approving an Off-Cycle Bonus

User Prompt:

"I need to give a $1,000 Q4 bonus to Sarah Jenkins. Find her active contract and submit the invoice adjustment so it hits her next payment cycle."

Execution Flow:

  1. ChatGPT calls list_all_deel_contracts passing a search parameter for "Sarah Jenkins".
  2. The agent parses the response to find the active contract ID (e.g., c_45921) and verifies the contract is not terminated.
  3. ChatGPT calls create_a_deel_invoice_adjustment, passing contract_id: "c_45921", amount: 1000, type: "bonus", and description: "Q4 bonus".
sequenceDiagram
    participant User as User
    participant ChatGPT as ChatGPT
    participant DeelAPI as Deel API

    User->>ChatGPT: "Give a $1000 Q4 bonus to Sarah Jenkins."
    ChatGPT->>DeelAPI: Call list_all_deel_contracts (search="Sarah Jenkins")
    DeelAPI-->>ChatGPT: Return contract [id: c_45921, status: active]
    ChatGPT->>DeelAPI: Call create_a_deel_invoice_adjustment (contract_id, amount)
    DeelAPI-->>ChatGPT: Return adjustment [id: adj_888, status: pending]
    ChatGPT-->>User: "Bonus submitted successfully for Sarah Jenkins."

Result: The user confirms the bonus was applied without logging into Deel, clicking through payroll tabs, or manually typing out justifications. The agent handles the lookup and execution.

Scenario 2: Employee Requesting PTO

User Prompt:

"I want to take next Thursday and Friday off. Check my PTO balance first. If I have enough days, submit the time-off request."

Execution Flow:

  1. ChatGPT infers the user's identity (if passed via context) and calls list_all_deel_entitlements to retrieve available balances.
  2. The agent evaluates the response to confirm the user has at least 2 available days under the 'Vacation' policy.
  3. If confirmed, ChatGPT executes create_a_deel_time_off with the exact ISO date ranges for next Thursday and Friday.
flowchart TD
    A["User requests PTO<br>via chat"] --> B["Agent calls<br>list_all_deel_entitlements"]
    B --> C{"Are enough days<br>available?"}
    C -->|Yes| D["Agent calls<br>create_a_deel_time_off"]
    C -->|No| E["Agent rejects request<br>and reports balance"]
    D --> F["Deel initiates<br>manager approval flow"]

Result: The AI agent acts as a unified HR interface, validating policy constraints before hitting write endpoints, keeping your Deel data clean and compliant.

Security and Access Control

Connecting an LLM to your financial and HR infrastructure requires strict governance. Truto's MCP architecture provides multiple layers of access control out of the box:

  • Method Filtering: Limit your MCP server to read-only access. Passing methods: ["read"] during server creation guarantees the LLM can only execute get and list operations, physically blocking it from creating contracts or modifying payroll.
  • Tag Filtering: Group and restrict tools by domain. If you only want an agent to handle time-off requests, use tag filters to expose only time_off resources, omitting sensitive tools like invoice adjustments or banking requirements.
  • API Token Authentication: For internal deployments, setting require_api_token_auth: true means possession of the MCP URL is not enough. The client must also pass a valid Truto API session token to execute tools.
  • Expiration Controls: Issue temporary MCP servers. By setting expires_at, the server and its corresponding tools automatically self-destruct after the deadline. This is ideal for short-lived debugging sessions or temporary contractor access.

Moving Past Manual HR Operations

Building a custom API integration for Deel means dedicating engineering cycles to parsing dynamic schema requirements, handling EOR complexities, and maintaining robust OAuth architectures. By using Truto to generate a managed MCP server, you eliminate the integration boilerplate entirely.

Your engineers can focus on prompt design and AI agent orchestration, while Truto handles the translation layer between natural language execution and strict REST payloads. Give your team the ability to query directories, manage active contracts, and process complex payroll adjustments autonomously.

FAQ

Does Truto automatically handle Deel API rate limits?
No. Truto does not retry, throttle, or apply backoff on rate limit errors. When Deel returns an HTTP 429 error, Truto passes that error directly to the caller (your AI agent). Truto normalizes the upstream rate limit info into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF spec, leaving the retry and backoff logic to the caller.
Can I restrict the ChatGPT agent to read-only Deel access?
Yes. When generating the MCP server, you can pass method filters like methods: ["read"]. This ensures the server only exposes GET and LIST operations to the LLM, preventing it from executing destructive changes like deleting a contract or submitting an invoice adjustment.
How are Deel's dynamic bank transfer requirements handled?
Deel's API requires discovering dynamic fields based on country and currency before submitting a payout method. By exposing both the requirements discovery tool and the creation tool, the LLM can sequentially request the schema requirements, formulate the payload, and submit the method.

More from our Blog