naftiko: 1.0.0-alpha2 info: label: Ashby API — Candidate description: 'Ashby API — Candidate. 19 operations. Lead operation: candidate.addEmailMessage. Self-contained Naftiko capability covering one Ashby business surface.' tags: - Ashby - Candidate created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: ASHBY_API_KEY: ASHBY_API_KEY capability: consumes: - type: http namespace: ashby-candidate baseUri: https://api.ashbyhq.com description: Ashby API — Candidate business capability. Self-contained, no shared references. resources: - name: candidate.addEmailMessage path: /candidate.addEmailMessage operations: - name: candidateaddemailmessage method: POST description: candidate.addEmailMessage outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: candidate.addProject path: /candidate.addProject operations: - name: candidateaddproject method: POST description: candidate.addProject outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: candidate.addTag path: /candidate.addTag operations: - name: candidateaddtag method: POST description: candidate.addTag outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.anonymize path: /candidate.anonymize operations: - name: candidateanonymize method: POST description: candidate.anonymize outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.create path: /candidate.create operations: - name: candidatecreate method: POST description: candidate.create outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.createNote path: /candidate.createNote operations: - name: candidatecreatenote method: POST description: candidate.createNote outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.info path: /candidate.info operations: - name: candidateinfo method: POST description: candidate.info outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: candidate.list path: /candidate.list operations: - name: candidatelist method: POST description: candidate.list outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.listClientInfo path: /candidate.listClientInfo operations: - name: candidatelistclientinfo method: POST description: candidate.listClientInfo outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.listFraudChecks path: /candidate.listFraudChecks operations: - name: candidatelistfraudchecks method: POST description: candidate.listFraudChecks outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: candidate.listNotes path: /candidate.listNotes operations: - name: candidatelistnotes method: POST description: candidate.listNotes outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.listProjects path: /candidate.listProjects operations: - name: candidatelistprojects method: POST description: candidate.listProjects outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.removeProject path: /candidate.removeProject operations: - name: candidateremoveproject method: POST description: candidate.removeProject outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: candidate.removeTag path: /candidate.removeTag operations: - name: candidateremovetag method: POST description: candidate.removeTag outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.search path: /candidate.search operations: - name: candidatesearch method: POST description: candidate.search outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.setFraudStatus path: /candidate.setFraudStatus operations: - name: candidatesetfraudstatus method: POST description: candidate.setFraudStatus outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: candidate.update path: /candidate.update operations: - name: candidateupdate method: POST description: candidate.update outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: candidate.uploadFile path: /candidate.uploadFile operations: - name: candidateuploadfile method: POST description: candidate.uploadFile outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: candidate.uploadResume path: /candidate.uploadResume operations: - name: candidateuploadresume method: POST description: candidate.uploadResume outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true authentication: type: apikey key: Ashby-Signature value: '{{env.ASHBY_API_KEY}}' placement: header exposes: - type: rest namespace: ashby-candidate-rest port: 8080 description: REST adapter for Ashby API — Candidate. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/candidate-addemailmessage name: candidate-addemailmessage description: REST surface for candidate.addEmailMessage. operations: - method: POST name: candidateaddemailmessage description: candidate.addEmailMessage call: ashby-candidate.candidateaddemailmessage with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-addproject name: candidate-addproject description: REST surface for candidate.addProject. operations: - method: POST name: candidateaddproject description: candidate.addProject call: ashby-candidate.candidateaddproject with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-addtag name: candidate-addtag description: REST surface for candidate.addTag. operations: - method: POST name: candidateaddtag description: candidate.addTag call: ashby-candidate.candidateaddtag 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: candidateanonymize description: candidate.anonymize call: ashby-candidate.candidateanonymize 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: candidatecreate description: candidate.create call: ashby-candidate.candidatecreate with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-createnote name: candidate-createnote description: REST surface for candidate.createNote. operations: - method: POST name: candidatecreatenote description: candidate.createNote call: ashby-candidate.candidatecreatenote 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: candidateinfo description: candidate.info call: ashby-candidate.candidateinfo with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-list name: candidate-list description: REST surface for candidate.list. operations: - method: POST name: candidatelist description: candidate.list call: ashby-candidate.candidatelist with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-listclientinfo name: candidate-listclientinfo description: REST surface for candidate.listClientInfo. operations: - method: POST name: candidatelistclientinfo description: candidate.listClientInfo call: ashby-candidate.candidatelistclientinfo with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-listfraudchecks name: candidate-listfraudchecks description: REST surface for candidate.listFraudChecks. operations: - method: POST name: candidatelistfraudchecks description: candidate.listFraudChecks call: ashby-candidate.candidatelistfraudchecks with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-listnotes name: candidate-listnotes description: REST surface for candidate.listNotes. operations: - method: POST name: candidatelistnotes description: candidate.listNotes call: ashby-candidate.candidatelistnotes with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-listprojects name: candidate-listprojects description: REST surface for candidate.listProjects. operations: - method: POST name: candidatelistprojects description: candidate.listProjects call: ashby-candidate.candidatelistprojects with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-removeproject name: candidate-removeproject description: REST surface for candidate.removeProject. operations: - method: POST name: candidateremoveproject description: candidate.removeProject call: ashby-candidate.candidateremoveproject with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-removetag name: candidate-removetag description: REST surface for candidate.removeTag. operations: - method: POST name: candidateremovetag description: candidate.removeTag call: ashby-candidate.candidateremovetag 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: candidatesearch description: candidate.search call: ashby-candidate.candidatesearch with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-setfraudstatus name: candidate-setfraudstatus description: REST surface for candidate.setFraudStatus. operations: - method: POST name: candidatesetfraudstatus description: candidate.setFraudStatus call: ashby-candidate.candidatesetfraudstatus 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: candidateupdate description: candidate.update call: ashby-candidate.candidateupdate with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-uploadfile name: candidate-uploadfile description: REST surface for candidate.uploadFile. operations: - method: POST name: candidateuploadfile description: candidate.uploadFile call: ashby-candidate.candidateuploadfile with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidate-uploadresume name: candidate-uploadresume description: REST surface for candidate.uploadResume. operations: - method: POST name: candidateuploadresume description: candidate.uploadResume call: ashby-candidate.candidateuploadresume with: body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: ashby-candidate-mcp port: 9090 transport: http description: MCP adapter for Ashby API — Candidate. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: candidate-addemailmessage description: candidate.addEmailMessage hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidateaddemailmessage with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-addproject description: candidate.addProject hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidateaddproject with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-addtag description: candidate.addTag hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidateaddtag with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-anonymize description: candidate.anonymize hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidateanonymize with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-create description: candidate.create hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidatecreate with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-createnote description: candidate.createNote hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidatecreatenote with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-info description: candidate.info hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidateinfo with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-list description: candidate.list hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidatelist with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-listclientinfo description: candidate.listClientInfo hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidatelistclientinfo with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-listfraudchecks description: candidate.listFraudChecks hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidatelistfraudchecks with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-listnotes description: candidate.listNotes hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidatelistnotes with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-listprojects description: candidate.listProjects hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidatelistprojects with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-removeproject description: candidate.removeProject hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidateremoveproject with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-removetag description: candidate.removeTag hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidateremovetag with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-search description: candidate.search hints: readOnly: true destructive: false idempotent: false call: ashby-candidate.candidatesearch with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-setfraudstatus description: candidate.setFraudStatus hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidatesetfraudstatus with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-update description: candidate.update hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidateupdate with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-uploadfile description: candidate.uploadFile hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidateuploadfile with: body: tools.body outputParameters: - type: object mapping: $. - name: candidate-uploadresume description: candidate.uploadResume hints: readOnly: false destructive: false idempotent: false call: ashby-candidate.candidateuploadresume with: body: tools.body outputParameters: - type: object mapping: $.