CONNECT APP
Build with Deel
Human Resources
- OAuth
MCP
Give your agent Deel tools
Every Deel action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Deel account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "deel",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Amend EOR Contract:
const result = await mcp.callTool({
name: "deel-amend-eor-contract",
arguments: {
contractId: "Contract ID",
effectiveDate: "Effective Date",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "deel",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Amend EOR Contract:
result = await session.call_tool("deel-amend-eor-contract", {
"contractId": "Contract ID",
"effectiveDate": "Effective Date",
})API PROXY
Call the Deel API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Deel API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.letsdeel.com/rest/v2/contracts",
})
// Any allowed Deel endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.letsdeel.com/rest/v2/contracts
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkubGV0c2RlZWwuY29tL3Jlc3QvdjIvY29udHJhY3Rz?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Deel actions from your backend
Connect a user's Deel account once, then run Amend EOR Contract on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "deel-amend-eor-contract",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
deel: { authProvisionId: "apn_xxxxxxx" },
contractId: "Contract ID",
effectiveDate: "Effective Date",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="deel-amend-eor-contract",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"deel": {"authProvisionId": "apn_xxxxxxx"},
"contractId": "Contract ID",
"effectiveDate": "Effective Date",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "deel-amend-eor-contract",
"configured_props": {
"deel": { "authProvisionId": "apn_xxxxxxx" },
"contractId": "Contract ID",
"effectiveDate": "Effective Date"
}
}'TOOLS
Deel actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Amend EOR Contract
actionCreate a new amendment for an EOR (employer of record) Deel contract — change salary, currency, job title, employment type, work hours, holidays, or notice period. All amendment fields are optional; provide only the fields you want to change.effective_dateandstart_datemust be in ISO 8601 format (e.g.,2026-09-01). Use List Contracts to find the contract ID. See the documentationWritev0.0.2 -
Amend IC Contract
actionUpdate an independent contractor (IC) contract in Deel — change the rate, currency, payment scale, frequency, job title, or scope of work. All amendment fields are optional; provide only the fields you want to change.effective_dateis required — use today's date or earlier (ISO 8601 format, e.g.,2026-06-01). The amendment takes effect immediately but is recorded with the given date. Use List Contracts to find the contract ID. See the documentationWritev0.0.2 -
Create Adjustment
actionCreate a payroll line-item adjustment for an EOR or GP contract in Deel (bonus, deduction, expense, etc.). This uses multipart/form-data and supports an optional file attachment (e.g., a receipt).countrymust be an ISO 3166-1 alpha-2 code (e.g.,US,DE).adjustment_category_idis required — retrieve valid category IDs fromGET /adjustments/categoriesor ask your Deel administrator. Use List Contracts to find the contract ID. See the documentationWritev0.0.2 -
Create Contract Task
actionAdd a task or milestone to a Deelpayg_taskscontractor contract. Tasks represent discrete deliverables with a defined amount and submission date. The contract must be inactivestatus (fully signed by both parties) to accept tasks. Setis_auto_approvedtotrueto automatically approve the task without manual review; otherwise the task will require review via Review Contract Task. Use List Contracts to find the contract ID. See the documentationWritev0.0.2 -
Create EOR Contract
actionCreate an EOR (employer of record) contract quote in Deel to hire a full-time employee in a country where your company doesn't have a legal entity. Use Get EOR Hiring Guide first to understand mandatory fields and compliance requirements for the target country.employee_nationalityandemployment_countrymust be ISO 3166-1 alpha-2 codes (e.g.,DE,US).employment_typemust be one of:Full-time,Part-time.seniority_idis a numeric seniority level:1=Junior,2=Mid,3=Senior,4=Lead,5=Principal/Staff,6=Director,7=Head of Dept,8=VP,9=SVP,34=Not applicable.scope_of_workmust be at least 100 characters long. See the documentationWritev0.0.2 -
Create Global Payroll Contract
actionCreate a Global Payroll (GP) contract in Deel to add an employee to your domestic payroll system. Use this when the employee works in a country where your company already has a legal entity.employment_typemust be one of:Full-time,Part-time(case-sensitive).compensation_scalemust be one of:YEAR,MONTH(uppercase).address_countrymust be an ISO 3166-1 alpha-2 code (e.g.,US,DE).client_team_idandclient_legal_entity_idare required — retrieve from your Deel organization settings. For US-based employees:work_location_state(2-letter state code, e.g.,OR),work_location_is_wfh, and (if not WFH)work_location_name(office name) are required. See the documentationWritev0.0.2 -
Create IC Contract
actionCreate a new independent contractor (IC) contract in Deel. Use this to hire a contractor with a fixed rate, pay-as-you-go, or milestone-based arrangement.typemust be one of:ongoing_time_based(recurring fixed rate),payg_tasks(per-task),payg_milestones(milestones),pay_as_you_go_time_based(hourly/daily pay-as-you-go).compensationScalemust be one of:hourly,daily,weekly,monthly,biweekly,semimonthly,custom.compensationFrequencymust be one of:weekly,biweekly,semimonthly,monthly.clientTeamIdandclientLegalEntityIdare required — ask the user to provide these from their Deel organization settings. See the documentationWritev0.0.2 -
Create Invoice Adjustment
actionAdd a bonus, deduction, commission, expense, or other financial adjustment to an IC contractor's Deel invoice.typemust be one of:bonus,commission,deduction,expense,other,overtime,time_off,vat. Setis_auto_approvedtotrueto auto-approve without manual review. Use List Contracts to find the contract ID. See the documentationWritev0.0.2 -
Create Shift Rate
actionCreate a named shift rate for GP (Global Payroll) time tracking in Deel. Shift rates define how time-tracked work is compensated.external_idis a unique identifier you assign (e.g.,rate-overtime-001); use this ID when creating shifts via Create Shifts.typemust be one of:MULTIPLIER_PERCENTAGE(e.g., 150 = 1.5x pay),PER_HOUR_FLAT_RATE(fixed hourly amount),PER_UNIT_FLAT_RATE(fixed per-unit amount). See the documentationWritev0.0.2 -
Create Shifts
actionCreate one or more time tracking shifts for a GP (Global Payroll) contract in Deel. Each shift records worked time with a date, duration, and associated shift rate.shiftsmust be a JSON array of shift objects. Each shift requires:description(string),external_id(your unique ID),shift_type(REGULAR,CORRECTION_ABSOLUTE, orCORRECTION_DELTA),date_of_work(ISO 8601 date),summary.time_unit(HOURorDAY),summary.time_amount(number),summary.shift_rate_external_id(the external_id from Create Shift Rate). Example:[{"description": "Regular work", "external_id": "shift-001", "shift_type": "REGULAR", "date_of_work": "2026-07-15", "summary": {"time_unit": "HOUR", "time_amount": 8, "shift_rate_external_id": "rate-overtime-001"}}]Use List Contracts to find the contract ID. See the documentationWritev0.0.2 -
Get Contract
actionRetrieve full details for a specific Deel contract by ID, including worker info, compensation, status, and timeline. Works for IC, EOR, and GP contract types. Use List Contracts to find contract IDs. See the documentationRead-onlyv0.0.2 -
Get Contract Preview
actionRetrieve the full contract agreement text as HTML for a specific Deel contract. Use this when the user wants to read, review, or summarize the actual contract document. Works for IC and EOR contracts. Use List Contracts to find contract IDs. See the documentationRead-onlyv0.0.2 -
Get EOR Benefits
actionList available EOR (employer of record) benefits offered through Deel for a specific country and employment context. Returns benefit names, types, descriptions, and availability. Use this when a user asks about what benefits they can offer EOR employees in a specific country.country_codemust be an ISO 3166-1 alpha-2 code (e.g.,DE,US).employment_typemust be one of:Full-time,Part-time.work_hours_per_weekis the number of hours worked per week (e.g.,40).work_visaistrueif the employee requires a work visa.team_idandlegal_entity_idare required — retrieve from your Deel organization settings. See the documentationRead-onlyv0.0.2 -
Get EOR Contract Form
actionRetrieve the EOR contract form field definitions for a specific country, including field names, types, validation rules, and required vs optional fields. Use this to understand exactly what data is needed before creating an EOR contract.country_codemust be an ISO 3166-1 alpha-2 code (e.g.,DEfor Germany,GBfor UK). See the documentationRead-onlyv0.0.2 -
Get EOR Hiring Guide
actionRetrieve the mandatory fields, compliance requirements, and hiring constraints for creating an EOR (employer of record) contract in a specific country. Use this before creating an EOR contract to understand what information is required and what restrictions apply (e.g., minimum salary, mandatory benefits, work visa rules).country_codemust be an ISO 3166-1 alpha-2 code (e.g.,DEfor Germany,GBfor UK,USfor United States). See the documentationRead-onlyv0.0.2 -
List Contract Adjustments
actionList all adjustments (bonuses, deductions, expenses, etc.) for a specific Deel contract. Works for both IC and EOR contracts. Optionally filter by date range. Use List Contracts to find the contract ID. See the documentationRead-onlyv0.0.2 -
List Contract Tasks
actionList all tasks for a specific Deel IC contract. Returns task IDs, descriptions, amounts, statuses, and submission dates. Use task IDs with Review Contract Task to approve or decline pending tasks. Use List Contracts to find the contract ID. See the documentationRead-onlyv0.0.2 -
List Contracts
actionList and search all contracts in Deel across IC (independent contractor), EOR (employer of record), and GP (global payroll) types. Use this to find contract IDs, check statuses, or browse the contractor/employee roster. Supports filtering by search term, status, contract type, team, and country. Returns contract ID, title, type, status, worker name, and start date. See the documentationRead-onlyv0.0.2 -
List EOR Payslips
actionList payslips for a specific EOR (employer of record) employee in Deel. Returns payslip IDs, pay periods, gross/net amounts, and download links. Use Get Contract to find the worker ID from a contract's worker details. See the documentationRead-onlyv0.0.2 -
List GP Payslips
actionList payslips for a specific GP (Global Payroll) employee in Deel. Returns payslip IDs, pay periods, gross/net amounts, and download links. Use Get Contract to find the worker ID from a contract's worker details. See the documentationRead-onlyv0.0.2 -
List Timesheets
actionList IC contractor timesheets in Deel with optional filters for contract, status, date range, and contract type. Returns timesheet IDs, contract info, hours worked, status, and pay period. Use List Contracts to find contract IDs for filtering. See the documentationRead-onlyv0.0.2 -
Review Contract Task
actionApprove or decline a contractor task on a Deel IC contract.statusmust beapprovedordeclined. If declining, provide areasonexplaining why. Use List Contract Tasks to find task IDs. Use List Contracts to find the contract ID. See the documentationWritev0.0.2 -
Send Contract Invitation
actionSend a contract invitation email to a worker for a specific Deel contract. Use this after creating a contract to notify the worker and prompt them to sign. Use List Contracts to find the contract ID. See the documentationWritev0.0.2 -
Sign Contract
actionSign a Deel contract as the client/employer. Use this to countersign a contract that has been sent to and signed by the contractor.client_signatureis typically the full legal name of the signing party. Use List Contracts to find the contract ID. See the documentationWritev0.0.2
No Deel triggers are available yet.
- App slug
- deel
- Authentication
- OAuth
- Categories
- Human Resources
- Actions
- 24
- Triggers
- 0
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed Deel OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- contracts:read
- contracts:write
- tasks:read
- tasks:write
- adjustments:read
- adjustments:write
- timesheets:read
- forms:read
- payslips:read
- time-tracking:read
- time-tracking:write
- invoice-adjustments:write
- benefits:read