Ashby · Capability

Ashby — Candidates

Ashby Candidates CRM capability. Core candidate lifecycle: create, info, list, update, search, anonymize, plus notes, projects, tags, file uploads, and referrals.

Ashby — Candidates is a Naftiko capability published by Ashby, one of 19 capabilities the APIs.io network indexes for this provider. It bundles 11 operations across the POST method.

The capability includes 3 read-only operations and 8 state-changing operations. Lead operation: List candidates. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Ashby, Recruiting, ATS, and Candidates.

Run with Naftiko AshbyRecruitingATSCandidates

What You Can Do

POST
Candidate list — List candidates
/v1/candidate.list
POST
Candidate info — Get candidate info
/v1/candidate.info
POST
Candidate create — Create a candidate
/v1/candidate.create
POST
Candidate update — Update a candidate
/v1/candidate.update
POST
Candidate search — Search candidates
/v1/candidate.search
POST
Candidate anonymize — Anonymize a candidate
/v1/candidate.anonymize
POST
Candidate add tag — Add a tag to a candidate
/v1/candidate.addTag
POST
Candidate add project — Add a candidate to a project
/v1/candidate.addProject
POST
Candidate create note — Add a note to a candidate
/v1/candidate.createNote
POST
Candidate upload resume — Upload a candidate resume
/v1/candidate.uploadResume
POST
Candidate upload file — Upload an arbitrary file to a candidate
/v1/candidate.uploadFile

MCP Tools

ashby-candidate-list

List candidates

read-only idempotent
ashby-candidate-info

Get candidate info

read-only idempotent
ashby-candidate-create

Create a candidate

ashby-candidate-update

Update a candidate

idempotent
ashby-candidate-search

Search candidates

read-only idempotent
ashby-candidate-anonymize

Anonymize a candidate

ashby-candidate-add-tag

Add a tag to a candidate

ashby-candidate-add-project

Add a candidate to a project

ashby-candidate-create-note

Add a note to a candidate

ashby-candidate-upload-resume

Upload a candidate resume

ashby-candidate-upload-file

Upload an arbitrary file to a candidate

Capability Spec

candidates-candidates.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: "Ashby \u2014 Candidates"
  description: 'Ashby Candidates CRM capability. Core candidate lifecycle: create, info, list, update, search, anonymize, plus notes, projects, tags, file uploads, and referrals.'
  tags:
  - Ashby
  - Recruiting
  - ATS
  - Candidates
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
- namespace: env
  keys:
    ASHBY_API_KEY: ASHBY_API_KEY
capability:
  consumes:
  - type: http
    namespace: candidates-candidates
    baseUri: https://api.ashbyhq.com
    description: 'Ashby Candidates CRM capability. Core candidate lifecycle: create, info, list, update, search, anonymize, plus notes, projects, tags, file uploads, and referrals. Backed by the Ashby public REST API.'
    resources:
    - name: candidate-list
      path: /candidate.list
      operations:
      - name: candidate-list
        method: POST
        description: List candidates
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    - name: candidate-info
      path: /candidate.info
      operations:
      - name: candidate-info
        method: POST
        description: Get candidate info
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    - name: candidate-create
      path: /candidate.create
      operations:
      - name: candidate-create
        method: POST
        description: Create a candidate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    - name: candidate-update
      path: /candidate.update
      operations:
      - name: candidate-update
        method: POST
        description: Update a candidate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    - name: candidate-search
      path: /candidate.search
      operations:
      - name: candidate-search
        method: POST
        description: Search candidates
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    - name: candidate-anonymize
      path: /candidate.anonymize
      operations:
      - name: candidate-anonymize
        method: POST
        description: Anonymize a candidate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    - name: candidate-add-tag
      path: /candidate.addTag
      operations:
      - name: candidate-add-tag
        method: POST
        description: Add a tag to a candidate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    - name: candidate-add-project
      path: /candidate.addProject
      operations:
      - name: candidate-add-project
        method: POST
        description: Add a candidate to a project
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    - name: candidate-create-note
      path: /candidate.createNote
      operations:
      - name: candidate-create-note
        method: POST
        description: Add a note to a candidate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    - name: candidate-upload-resume
      path: /candidate.uploadResume
      operations:
      - name: candidate-upload-resume
        method: POST
        description: Upload a candidate resume
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    - name: candidate-upload-file
      path: /candidate.uploadFile
      operations:
      - name: candidate-upload-file
        method: POST
        description: Upload an arbitrary file to a candidate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON). See https://developers.ashbyhq.com/reference for the schema of each operation.
          required: false
        headers:
        - name: Accept
          value: application/json; version=1
        - name: Content-Type
          value: application/json
    authentication:
      type: basic
      username: '{{env.ASHBY_API_KEY}}'
      password: ''
      description: 'HTTP Basic Auth: Ashby API key as username, blank password.'
  exposes:
  - type: rest
    namespace: candidates-candidates-rest
    port: 8080
    description: "REST adapter for Ashby \u2014 Candidates. One Spectral-compliant resource per consumed operation, prefixed with /v1."
    resources:
    - path: /v1/candidate.list
      name: candidate-list
      description: REST surface for candidate-list.
      operations:
      - method: POST
        name: candidate-list
        description: List candidates
        call: candidates-candidates.candidate-list
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/candidate.info
      name: candidate-info
      description: REST surface for candidate-info.
      operations:
      - method: POST
        name: candidate-info
        description: Get candidate info
        call: candidates-candidates.candidate-info
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/candidate.create
      name: candidate-create
      description: REST surface for candidate-create.
      operations:
      - method: POST
        name: candidate-create
        description: Create a candidate
        call: candidates-candidates.candidate-create
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/candidate.update
      name: candidate-update
      description: REST surface for candidate-update.
      operations:
      - method: POST
        name: candidate-update
        description: Update a candidate
        call: candidates-candidates.candidate-update
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/candidate.search
      name: candidate-search
      description: REST surface for candidate-search.
      operations:
      - method: POST
        name: candidate-search
        description: Search candidates
        call: candidates-candidates.candidate-search
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/candidate.anonymize
      name: candidate-anonymize
      description: REST surface for candidate-anonymize.
      operations:
      - method: POST
        name: candidate-anonymize
        description: Anonymize a candidate
        call: candidates-candidates.candidate-anonymize
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/candidate.addTag
      name: candidate-add-tag
      description: REST surface for candidate-add-tag.
      operations:
      - method: POST
        name: candidate-add-tag
        description: Add a tag to a candidate
        call: candidates-candidates.candidate-add-tag
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/candidate.addProject
      name: candidate-add-project
      description: REST surface for candidate-add-project.
      operations:
      - method: POST
        name: candidate-add-project
        description: Add a candidate to a project
        call: candidates-candidates.candidate-add-project
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/candidate.createNote
      name: candidate-create-note
      description: REST surface for candidate-create-note.
      operations:
      - method: POST
        name: candidate-create-note
        description: Add a note to a candidate
        call: candidates-candidates.candidate-create-note
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/candidate.uploadResume
      name: candidate-upload-resume
      description: REST surface for candidate-upload-resume.
      operations:
      - method: POST
        name: candidate-upload-resume
        description: Upload a candidate resume
        call: candidates-candidates.candidate-upload-resume
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/candidate.uploadFile
      name: candidate-upload-file
      description: REST surface for candidate-upload-file.
      operations:
      - method: POST
        name: candidate-upload-file
        description: Upload an arbitrary file to a candidate
        call: candidates-candidates.candidate-upload-file
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: candidates-candidates-mcp
    port: 9090
    transport: http
    description: "MCP adapter for Ashby \u2014 Candidates. One tool per consumed operation, routed inline through this capability's consumes block."
    tools:
    - name: ashby-candidate-list
      description: List candidates
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: candidates-candidates.candidate-list
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: ashby-candidate-info
      description: Get candidate info
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: candidates-candidates.candidate-info
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: ashby-candidate-create
      description: Create a candidate
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: candidates-candidates.candidate-create
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: ashby-candidate-update
      description: Update a candidate
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: candidates-candidates.candidate-update
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: ashby-candidate-search
      description: Search candidates
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: candidates-candidates.candidate-search
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: ashby-candidate-anonymize
      description: Anonymize a candidate
      hints:
        readOnly: false
        destructive: true
        idempotent: false
      call: candidates-candidates.candidate-anonymize
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: ashby-candidate-add-tag
      description: Add a tag to a candidate
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: candidates-candidates.candidate-add-tag
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: ashby-candidate-add-project
      description: Add a candidate to a project
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: candidates-candidates.candidate-add-project
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: ashby-candidate-create-note
      description: Add a note to a candidate
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: candidates-candidates.candidate-create-note
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: ashby-candidate-upload-resume
      description: Upload a candidate resume
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: candidates-candidates.candidate-upload-resume
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: ashby-candidate-upload-file
      description: Upload an arbitrary file to a candidate
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: candidates-candidates.candidate-upload-file
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.