Ashby
Arcade.dev tools for interacting with Ashby
0.1.0Ashby is an all-in-one recruiting platform. This toolkit lets Arcade agents read and write recruiting data in Ashby — candidates, applications, jobs, notes, feedback, and interview stage progression.
Capabilities
- Candidate management: Search candidates by name/email, retrieve full profiles (with application IDs), and add plain-text notes (e.g. agent handoffs or summaries).
- Application lifecycle: List applications filtered by job or status, move applications forward or backward through named interview stages, and read submitted feedback/scorecards.
- Job listings: Enumerate the organization's roles, optionally filtered by status.
- Debrief aggregation: Pull a candidate's profile, all notes, and all interview feedback across applications in a single call — no manual chaining required.
Secrets
-
ASHBY_API_KEY— An Ashby API key scoped to the permissions required by the tools you use. Generate one in your Ashby account under Settings → Integrations → API Keys. Each key carries granular permissions; the tools in this toolkit require the following depending on usage:- Candidates read — searching, reading profiles, listing notes, listing feedback, listing applications, debrief aggregation.
- Candidates write — adding notes, changing application stage.
- Interviews read — changing application stage (stage plan lookup).
- Jobs read — listing jobs.
Create and scope the key from the Ashby API Keys settings page. Note that Ashby API keys are organization-scoped; the key holder can read or write across all candidates and jobs in the org, so apply least-privilege scoping.
See the Arcade secrets guide for how to store secrets, or manage them directly at https://api.arcade.dev/dashboard/auth/secrets.
Available tools(9)
| Tool name | Description | Secrets | |
|---|---|---|---|
Add a plain-text note to a candidate (e.g. an agent handoff or summary).
Creates a new note each time it runs. Requires the Candidates write permission
on the API key. | 1 | ||
Move an application to a named interview stage, in either direction.
Resolves the stage name to its id inside the application's own interview plan,
then moves the application — you do not look up stage ids yourself. Works to
advance or to move a candidate back; if the name does not match, the error lists
the plan's available stage names, and an ambiguous name (two stages share it)
errors rather than guessing. Records a transition each time it runs. It cannot
move an application into an archived/rejected stage (Ashby requires an archive
reason this tool does not collect). Requires the Candidates write and Interviews
read permissions on the API key. | 1 | ||
Get a candidate's profile and the ids of their applications.
Use the returned application ids with feedback or application tools; the Ashby
API does not list a candidate's applications directly. Requires the Candidates
read permission on the API key. | 1 | ||
Gather everything about a candidate for a debrief in one call.
Pulls the candidate's profile, the notes on file, and the interview feedback and
scorecards across each of their applications, then returns them together — you do
not chain the candidate, note, and feedback reads yourself. Feedback covers up to
the candidate's first applications when there are many; an application whose
feedback can't be read is counted in `feedback_failed` rather than failing the
whole call. Requires the Candidates read permission on the API key. | 1 | ||
Read the feedback and interview scorecards submitted on an application.
Useful for synthesizing what reviewers said about a candidate before a debrief.
Requires the Candidates read permission on the API key. | 1 | ||
List the organization's applications, optionally filtered by job and/or status.
The Ashby API does not filter applications by candidate; to find a specific
candidate's applications, read the candidate first and use its application ids.
Requires the Candidates read permission on the API key. | 1 | ||
Read the notes recorded on a candidate, paginated via the cursor.
Requires the Candidates read permission on the API key. | 1 | ||
List the organization's jobs (roles), optionally filtered by status.
A job is the role record; headcount slots ("openings") are a separate concept
not exposed here. Requires the Jobs read permission on the API key. | 1 | ||
Search the organization's candidates by name and/or email.
Intended for narrowing to a small set of known candidates (e.g. re-engaging a
past applicant). Returns at most 100 matches; provide at least one of name or
email, each at least 3 characters. Requires the Candidates read permission on
the API key. | 1 |
Selected tools
No tools selected.
Click "Show all tools" to add tools.
Requirements
Select tools to see requirements
Ashby.AddCandidateNote
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Add a plain-text note to a candidate (e.g. an agent handoff or summary). Creates a new note each time it runs. Requires the Candidates write permission on the API key.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
candidate_id | string | Required | The id of the candidate to add the note to. |
note | string | Required | The note text to add. Sent as plain text; do not pass HTML markup. |
send_notifications | boolean | Optional | Whether users subscribed to the candidate are notified of the note. Default is false. |
Requirements
Output
json— The created note.Ashby.ChangeApplicationStage
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Move an application to a named interview stage, in either direction. Resolves the stage name to its id inside the application's own interview plan, then moves the application — you do not look up stage ids yourself. Works to advance or to move a candidate back; if the name does not match, the error lists the plan's available stage names, and an ambiguous name (two stages share it) errors rather than guessing. Records a transition each time it runs. It cannot move an application into an archived/rejected stage (Ashby requires an archive reason this tool does not collect). Requires the Candidates write and Interviews read permissions on the API key.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
application_id | string | Required | The id of the application to move. |
to_stage | string | Required | The NAME of the destination interview stage, e.g. 'Onsite'. Resolved to the stage id for you within the application's interview plan. |
Requirements
Output
json— The application after the stage change.Ashby.GetCandidate
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Get a candidate's profile and the ids of their applications. Use the returned application ids with feedback or application tools; the Ashby API does not list a candidate's applications directly. Requires the Candidates read permission on the API key.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
candidate_id | string | Required | The id of the candidate to fetch. |
Requirements
Output
json— The candidate's profile and the ids of their applications.Ashby.GetCandidateDebrief
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Gather everything about a candidate for a debrief in one call. Pulls the candidate's profile, the notes on file, and the interview feedback and scorecards across each of their applications, then returns them together — you do not chain the candidate, note, and feedback reads yourself. Feedback covers up to the candidate's first applications when there are many; an application whose feedback can't be read is counted in `feedback_failed` rather than failing the whole call. Requires the Candidates read permission on the API key.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
candidate_id | string | Required | The id of the candidate to gather a debrief for. |
Requirements
Output
json— The candidate's profile, notes, and interview feedback across their applications.Ashby.ListApplicationFeedback
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Read the feedback and interview scorecards submitted on an application. Useful for synthesizing what reviewers said about a candidate before a debrief. Requires the Candidates read permission on the API key.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
application_id | string | Required | The id of the application whose feedback and interview scorecards to read. |
cursor | string | Optional | Pagination cursor from a previous call's next_cursor. Omit for the first page. |
limit | integer | Optional | Maximum number of feedback items to return on this page (1-100). Defaults to 50. |
Requirements
Output
json— Feedback / scorecards submitted on the application.Ashby.ListApplications
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List the organization's applications, optionally filtered by job and/or status. The Ashby API does not filter applications by candidate; to find a specific candidate's applications, read the candidate first and use its application ids. Requires the Candidates read permission on the API key.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
job_id | string | Optional | Return only applications to this job. Omit to return applications across all jobs. |
status | string | Optional | Filter by application status. Omit for any status.ActiveHiredArchivedLead |
cursor | string | Optional | Pagination cursor from a previous call's next_cursor. Omit for the first page. |
limit | integer | Optional | Maximum number of applications to return on this page (1-100). Defaults to 50. |
Requirements
Output
json— A page of the organization's applications.Ashby.ListCandidateNotes
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Read the notes recorded on a candidate, paginated via the cursor. Requires the Candidates read permission on the API key.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
candidate_id | string | Required | The id of the candidate whose notes to read. |
cursor | string | Optional | Pagination cursor from a previous call's next_cursor. Omit for the first page. |
limit | integer | Optional | Maximum number of notes to return on this page (1-100). Defaults to 50. |
Requirements
Output
json— A page of the candidate's notes.Ashby.ListJobs
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List the organization's jobs (roles), optionally filtered by status. A job is the role record; headcount slots ("openings") are a separate concept not exposed here. Requires the Jobs read permission on the API key.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
status | array<string> | Optional | Filter to jobs with these statuses. Omit to return jobs of every status.OpenClosedArchivedDraft |
cursor | string | Optional | Pagination cursor from a previous call's next_cursor. Omit for the first page. |
limit | integer | Optional | Maximum number of jobs to return on this page (1-100). Defaults to 50. |
Requirements
Output
json— A page of the organization's jobs.Ashby.SearchCandidates
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Search the organization's candidates by name and/or email. Intended for narrowing to a small set of known candidates (e.g. re-engaging a past applicant). Returns at most 100 matches; provide at least one of name or email, each at least 3 characters. Requires the Candidates read permission on the API key.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
name | string | Optional | Full or partial candidate name to match. Combined with email using AND when both are given. Omit to search by email only. |
email | string | Optional | Candidate email address to match. Combined with name using AND when both are given. Omit to search by name only. |
Requirements
Output
json— Candidates across the organization matching the search (capped at 100 by the API).