Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Deel MCP server

Vendor MCP
Open markdown

The Deel MCP connector routes your AI agent's tool calls to Deel's own MCP server through Scalekit. Each user signs in to Deel once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 464 tools.

Tools
464
What they doRead · write · destructive
206 · 203 · 55206 read203 write55 destructive
Users sign in with
OAuth app
Your own Deel MCP server app

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Deel MCP connection

    In AgentKit > Connections, create a Deel MCP connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register an OAuth app

    Deel MCP server connections use your own OAuth app. Register one with Deel MCP server and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the Deel MCP connection.

  5. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'deelmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Deel MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'deelmcp_advance_eligibility_get',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • deelmcp_advance_eligibility_getChecks whether the authenticated contractor is eligible for a Deel Advance.Read-only

    Advance Eligibility Get

    Checks whether the authenticated contractor is eligible for a Deel Advance. Evaluates KYC verification, contract type, payment cycle status, termination proximity, and organization standing, returning a detailed breakdown.

    Inputs

    This tool takes no inputs.

  • deelmcp_ats_application_feedback_listReturns a paginated list of feedbacks submitted for activities on the given application, including reviewer profiles, overall recommendations, and form responses.Read-only

    Ats Application Feedback List

    Returns a paginated list of feedbacks submitted for activities on the given application, including reviewer profiles, overall recommendations, and form responses.

    Inputs

    application_idstringrequired
    Unique identifier of the application to retrieve feedbacks for.
    cursorstring
    Pagination cursor returned by a previous response.
    limitinteger
    Maximum number of feedbacks to return per page.
    should_hide_sensitive_fieldsboolean
    When true, form responses marked as sensitive are omitted from the response. Defaults to true.
    statusstring
    Filter feedbacks by submission status.one of SUBMITTEDNOT_SUBMITTEDDISMISSEDREVOKED
  • deelmcp_ats_application_sources_listReturns the available application sources in the Applicant Tracking System.Read-only

    Ats Application Sources List

    Returns the available application sources in the Applicant Tracking System.

    Inputs

    cursorstring
    The cursor for pagination
    limitinteger
    Maximum number of records returned in one response
  • deelmcp_ats_applications_getRetrieves a single application by its application_id, including associated job details, job posting details, and related metadata.Read-only

    Ats Applications Get

    Retrieves a single application by its application_id, including associated job details, job posting details, and related metadata.

    Inputs

    application_idstringrequired
    Application ID
  • deelmcp_ats_applications_listReturns a cursor-paginated list of candidate applications across all open positions for the organization, with filtering by job, interview plan stage, candidate tags, source, stage type, and last-updated timestamp.Read-only

    Ats Applications List

    Returns a cursor-paginated list of candidate applications across all open positions for the organization, with filtering by job, interview plan stage, candidate tags, source, stage type, and last-updated timestamp.

    Inputs

    archivation_reason_idsarray
    Filter by archivation reason IDs (comma-separated); see GET /rest/ats/reasons with reason_group_slug=CANDIDATE_ARCHIVATION
    candidate_tag_idsarray
    Filter by candidate tag IDs (comma-separated)
    candidate_tag_ids_operatorstring
    How candidate_tag_ids are combined: ANY (default) matches candidates with at least one of the tags, ALL requires every tagone of ANYALL
    current_stage_category_type_slugsarray
    Filter applications by current stage category type slugs. Accepted values are lead, active and completed, in either case — the job list reports them uppercase and this filter accepts that form too.
    current_stage_default_type_slugsarray
    Filter applications by current stage default type slugs (e.g. new_lead, application_review, offer, hired, archived), in either case. Use 'others' for custom stages.
    cursorstring
    Cursor for pagination. Use the nextCursor value from the previous response to get the next page of results.
    includearray
    Optional expansions to embed on each item. STAGE_HISTORY adds the full stage timeline with entered/exited timestamps.
    interview_plan_stage_idsarray
    Filter by the CURRENT interview plan stage IDs (comma-separated). Applications that have since moved to another stage are excluded — use reached_interview_plan_stage_ids for those.
    job_criterias_matchingsarray
    Filter applications by job criteria matching state
    job_idstring
    Filter by job ID
    limitinteger
    Maximum number of applications to return per page
    moved_to_current_stage_beforestring
    Return only applications that moved to their current stage strictly before this ISO 8601 datetime (stalled candidates)
    reached_interview_plan_stage_idsarray
    Filter by interview plan stage IDs the application has EVER been in (comma-separated), including applications that have since advanced, been hired or been archived.
    search_textstring
    Search text to filter applications
    sort_bystring
    Field to sort applications byone of APPLICATION_CREATION_DATESTAGE_CREATION_DATE
    sort_orderstring
    Sort order for applicationsone of ASCDESC
    source_slugsarray
    Filter by application source (comma-separated)
    updated_afterstring
    Filter applications updated after this timestamp (ISO 8601 format)
  • deelmcp_ats_attachments_getLists attachment files for a specific ATS entity, scoped by `attachable_type_slug`, `attachable_id`, and `attachment_type_slug`.Read-only

    Ats Attachments Get

    Lists attachment files for a specific ATS entity, scoped by `attachable_type_slug`, `attachable_id`, and `attachment_type_slug`.

    Inputs

    attachable_idstringrequired
    Unique identifier for the attachable entity
    attachable_type_slugstringrequired
    Type of the attachable entityone of CANDIDATECAREER_PAGE_SETTINGJOB_POSTINGNOTEOFFERSENT_CANDIDATE_EMAILEMAIL_MESSAGETEMPORARYEMAIL_TEMPLATEJOB_ACTIVITY
    attachment_type_slugstringrequired
    Type of the attachmentone of CVLOGOOFFER_LETTEROTHER
    cursorstring
    The cursor for pagination
    limitinteger
    Maximum number of records returned in one response
  • deelmcp_ats_candidates_listReturns a paginated list of candidates, optionally filtered by job IDs, department IDs, tag IDs, current stage category or default type slugs, or a timestamp to return only records updated after a given point.Read-only

    Ats Candidates List

    Returns a paginated list of candidates, optionally filtered by job IDs, department IDs, tag IDs, current stage category or default type slugs, or a timestamp to return only records updated after a given point.

    Inputs

    current_stage_category_type_slugsarray
    Filter candidates by current stage category type slugs
    current_stage_default_type_slugsarray
    Filter candidates by current stage default type slugs
    cursorstring
    The cursor for pagination
    department_idsarray
    Filter candidates by department IDs
    job_idsarray
    Filter candidates by job IDs
    limitinteger
    Maximum number of records returned in one response
    searchstring
    Search text for filtering candidates
    tag_idsarray
    Filter candidates by tag IDs
    updated_afterstring
    Filter applications updated after this timestamp (ISO 8601 format)
  • deelmcp_ats_departments_listReturns a paginated list of all departments configured in the ATS.Read-only

    Ats Departments List

    Returns a paginated list of all departments configured in the ATS.

    Inputs

    cursorstring
    Cursor for pagination to get the next set of results
    include_archivedstring
    If true, archived departments are included in the response; they are excluded by default
    limitinteger
    Maximum number of records returned in one response