Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 61 additions & 61 deletions public/llms.txt

Large diffs are not rendered by default.

72 changes: 36 additions & 36 deletions toolkit-docs-generator/data/toolkits/apollo.json

Large diffs are not rendered by default.

134 changes: 67 additions & 67 deletions toolkit-docs-generator/data/toolkits/asana.json

Large diffs are not rendered by default.

46 changes: 23 additions & 23 deletions toolkit-docs-generator/data/toolkits/ashby.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "Ashby",
"label": "Ashby",
"version": "1.0.2",
"version": "1.0.3",
"description": "Arcade.dev tools for interacting with Ashby",
"metadata": {
"category": "productivity",
Expand All @@ -18,7 +18,7 @@
{
"name": "AddCandidateNote",
"qualifiedName": "Ashby.AddCandidateNote",
"fullyQualifiedName": "Ashby.AddCandidateNote@1.0.2",
"fullyQualifiedName": "Ashby.AddCandidateNote@1.0.3",
"description": "Add a plain-text note to a candidate (e.g. an agent handoff or summary).\n\nCreates a new note each time it runs. Requires the Candidates write permission\non the API key.",
"parameters": [
{
Expand All @@ -41,7 +41,7 @@
"name": "send_notifications",
"type": "boolean",
"required": false,
"description": "Whether users subscribed to the candidate are notified of the note. Default is false.",
"description": "Whether users subscribed to the candidate are notified of the note. Defaults to False.",
"enum": null,
"inferrable": true
}
Expand Down Expand Up @@ -102,7 +102,7 @@
{
"name": "ArchiveApplication",
"qualifiedName": "Ashby.ArchiveApplication",
"fullyQualifiedName": "Ashby.ArchiveApplication@1.0.2",
"fullyQualifiedName": "Ashby.ArchiveApplication@1.0.3",
"description": "Archive (reject) an application, recording why.\n\nThis is how Ashby rejects a candidate for a job: the application moves to its\ninterview plan's archived stage with an archive reason. Resolves the reason name\nto the organization's configured reason id for you — an unknown name errors with\nthe available reasons, and an ambiguous one errors rather than guessing. Does NOT\nemail the candidate. The application's data is preserved, and it can later be\nmoved back to an active stage to un-archive it — though anything the rejection\nalready triggered (notifications, a status visible to humans) is not undone.\nRequires the Candidates write, Interviews read, and hiring-process-metadata read\npermissions on the API key.",
"parameters": [
{
Expand Down Expand Up @@ -173,7 +173,7 @@
{
"name": "ChangeApplicationStage",
"qualifiedName": "Ashby.ChangeApplicationStage",
"fullyQualifiedName": "Ashby.ChangeApplicationStage@1.0.2",
"fullyQualifiedName": "Ashby.ChangeApplicationStage@1.0.3",
"description": "Move an application to a named interview stage, in either direction.\n\nResolves the stage name to its id inside the application's own interview plan,\nthen moves the application — you do not look up stage ids yourself. Works to\nadvance or to move a candidate back; if the name does not match, the error lists\nthe plan's available stage names, and an ambiguous name (two stages share it)\nerrors rather than guessing. Records a transition each time it runs. It cannot\nmove an application into an archived/rejected stage (Ashby requires an archive\nreason this tool does not collect). Requires the Candidates write and Interviews\nread permissions on the API key.",
"parameters": [
{
Expand Down Expand Up @@ -244,7 +244,7 @@
{
"name": "GetCandidate",
"qualifiedName": "Ashby.GetCandidate",
"fullyQualifiedName": "Ashby.GetCandidate@1.0.2",
"fullyQualifiedName": "Ashby.GetCandidate@1.0.3",
"description": "Get a candidate's profile and the ids of their applications.\n\nUse the returned application ids with feedback or application tools; the Ashby\nAPI does not list a candidate's applications directly. Requires the Candidates\nread permission on the API key.",
"parameters": [
{
Expand Down Expand Up @@ -302,7 +302,7 @@
{
"name": "GetCandidateDebrief",
"qualifiedName": "Ashby.GetCandidateDebrief",
"fullyQualifiedName": "Ashby.GetCandidateDebrief@1.0.2",
"fullyQualifiedName": "Ashby.GetCandidateDebrief@1.0.3",
"description": "Gather everything about a candidate for a debrief in one call.\n\nPulls the candidate's profile, the notes on file, and the interview feedback and\nscorecards across each of their applications, then returns them together — you do\nnot chain the candidate, note, and feedback reads yourself. Feedback covers up to\nthe candidate's first applications when there are many; an application whose\nfeedback can't be read is counted in `feedback_failed` rather than failing the\nwhole call. Requires the Candidates read permission on the API key.",
"parameters": [
{
Expand Down Expand Up @@ -360,7 +360,7 @@
{
"name": "ListApplicationFeedback",
"qualifiedName": "Ashby.ListApplicationFeedback",
"fullyQualifiedName": "Ashby.ListApplicationFeedback@1.0.2",
"fullyQualifiedName": "Ashby.ListApplicationFeedback@1.0.3",
"description": "Read the feedback and interview scorecards submitted on an application.\n\nUseful for synthesizing what reviewers said about a candidate before a debrief.\nRequires the Candidates read permission on the API key.",
"parameters": [
{
Expand All @@ -375,7 +375,7 @@
"name": "cursor",
"type": "string",
"required": false,
"description": "Pagination cursor from a previous call's next_cursor. Omit for the first page.",
"description": "Pagination cursor from a previous call's next_cursor. Defaults to the first page.",
"enum": null,
"inferrable": true
},
Expand Down Expand Up @@ -444,22 +444,22 @@
{
"name": "ListApplications",
"qualifiedName": "Ashby.ListApplications",
"fullyQualifiedName": "Ashby.ListApplications@1.0.2",
"fullyQualifiedName": "Ashby.ListApplications@1.0.3",
"description": "List the organization's applications, optionally filtered by job and/or status.\n\nThe Ashby API does not filter applications by candidate; to find a specific\ncandidate's applications, read the candidate first and use its application ids.\nRequires the Candidates read permission on the API key.",
"parameters": [
{
"name": "job_id",
"type": "string",
"required": false,
"description": "Return only applications to this job. Omit to return applications across all jobs.",
"description": "Return only applications to this job. Defaults to all jobs.",
"enum": null,
"inferrable": true
},
{
"name": "status",
"type": "string",
"required": false,
"description": "Filter by application status. Omit for any status.",
"description": "Filter by application status. Defaults to any status.",
"enum": [
"Active",
"Hired",
Expand All @@ -472,7 +472,7 @@
"name": "cursor",
"type": "string",
"required": false,
"description": "Pagination cursor from a previous call's next_cursor. Omit for the first page.",
"description": "Pagination cursor from a previous call's next_cursor. Defaults to the first page.",
"enum": null,
"inferrable": true
},
Expand Down Expand Up @@ -546,7 +546,7 @@
{
"name": "ListCandidateNotes",
"qualifiedName": "Ashby.ListCandidateNotes",
"fullyQualifiedName": "Ashby.ListCandidateNotes@1.0.2",
"fullyQualifiedName": "Ashby.ListCandidateNotes@1.0.3",
"description": "Read the notes recorded on a candidate, paginated via the cursor.\n\nRequires the Candidates read permission on the API key.",
"parameters": [
{
Expand All @@ -561,7 +561,7 @@
"name": "cursor",
"type": "string",
"required": false,
"description": "Pagination cursor from a previous call's next_cursor. Omit for the first page.",
"description": "Pagination cursor from a previous call's next_cursor. Defaults to the first page.",
"enum": null,
"inferrable": true
},
Expand Down Expand Up @@ -630,15 +630,15 @@
{
"name": "ListJobs",
"qualifiedName": "Ashby.ListJobs",
"fullyQualifiedName": "Ashby.ListJobs@1.0.2",
"fullyQualifiedName": "Ashby.ListJobs@1.0.3",
"description": "List the organization's jobs (roles), optionally filtered by status.\n\nA job is the role record; headcount slots (\"openings\") are a separate concept\nnot exposed here. Requires the Jobs read permission on the API key.",
"parameters": [
{
"name": "status",
"type": "array",
"innerType": "string",
"required": false,
"description": "Filter to jobs with these statuses. Omit to return jobs of every status.",
"description": "Filter to jobs with these statuses. Defaults to every status.",
"enum": [
"Open",
"Closed",
Expand All @@ -651,7 +651,7 @@
"name": "cursor",
"type": "string",
"required": false,
"description": "Pagination cursor from a previous call's next_cursor. Omit for the first page.",
"description": "Pagination cursor from a previous call's next_cursor. Defaults to the first page.",
"enum": null,
"inferrable": true
},
Expand Down Expand Up @@ -723,22 +723,22 @@
{
"name": "SearchCandidates",
"qualifiedName": "Ashby.SearchCandidates",
"fullyQualifiedName": "Ashby.SearchCandidates@1.0.2",
"fullyQualifiedName": "Ashby.SearchCandidates@1.0.3",
"description": "Search the organization's candidates by name and/or email.\n\nIntended for narrowing to a small set of known candidates (e.g. re-engaging a\npast applicant). Returns at most 100 matches; provide at least one of name or\nemail, each at least 3 characters. Requires the Candidates read permission on\nthe API key.",
"parameters": [
{
"name": "name",
"type": "string",
"required": false,
"description": "Full or partial candidate name to match. Combined with email using AND when both are given. Omit to search by email only.",
"description": "Full or partial candidate name to match. Combined with email using AND when both are given. Defaults to searching by email only.",
"enum": null,
"inferrable": true
},
{
"name": "email",
"type": "string",
"required": false,
"description": "Candidate email address to match. Combined with name using AND when both are given. Omit to search by name only.",
"description": "Candidate email address to match. Combined with name using AND when both are given. Defaults to searching by name only.",
"enum": null,
"inferrable": true
}
Expand Down Expand Up @@ -796,6 +796,6 @@
"customImports": [],
"subPages": [],
"curationSourceHash": "da70ed30d9201488046d1ae1b04dc45cf6378210501e24b53236a4aa02f1ef89",
"generatedAt": "2026-10-07T21:24:45.437Z",
"summary": "Ashby is a recruiting platform; this toolkit lets Arcade agents read and write recruiting data — candidates, applications, jobs, notes, feedback, and interview stages — via the Ashby REST API.\n\n## Capabilities\n\n- **Candidate management**: Search candidates by name/email, fetch full profiles, read and add plain-text notes, and pull a combined debrief bundle (profile + notes + scorecards) in one call.\n- **Application lifecycle**: List applications (filtered by job and/or status), move applications forward or backward through named interview stages, and archive/reject applications with a resolved reason.\n- **Feedback & scorecards**: Read submitted interview feedback and scorecards on any application — useful for pre-debrief synthesis.\n- **Job listing**: Enumerate the organization's job records, optionally filtered by status.\n\n## Secrets\n\n`ASHBY_API_KEY` — An Ashby API key scoped to the permissions your agent needs. Ashby issues API keys per organization; generate one in **Settings → Integrations → API Keys** inside your Ashby admin panel. Each key carries explicit permission grants — the tools in this toolkit require combinations of **Candidates read**, **Candidates write**, **Interviews read**, and **Jobs read** depending on which tools you use (tool docstrings list the exact permissions required). Keys with insufficient permissions will return authorization errors at call time. See [Ashby's API key documentation](https://developers.ashby.com/docs/authentication) for creation steps.\n\nStore the key in Arcade at [https://api.arcade.dev/dashboard/auth/secrets](https://api.arcade.dev/dashboard/auth/secrets) and reference it as `ASHBY_API_KEY`. For full guidance on configuring secrets in Arcade, see [https://docs.arcade.dev/en/guides/create-tools/tool-basics/create-tool-secrets](https://docs.arcade.dev/en/guides/create-tools/tool-basics/create-tool-secrets)."
"generatedAt": "2026-10-10T11:13:54.270Z",
"summary": "Arcade toolkit for [Ashby](https://www.ashbyhq.com/), enabling agents and tools to read and write recruiting data — candidates, applications, jobs, notes, feedback, and stage transitions — via the Ashby REST API.\n\n## Capabilities\n\n- **Candidate management:** Search candidates by name/email, retrieve full profiles (including application IDs), and read or write plain-text notes.\n- **Application lifecycle:** List applications (filtered by job or status), move applications between interview stages (forward or backward), and archive/reject applications with a resolved reason.\n- **Feedback & debriefs:** Read interview scorecards and feedback per application; gather a candidate's full profile, notes, and all feedback in a single debrief call.\n- **Job listings:** List organizational job/role records, optionally filtered by status.\n\n## Secrets\n\n`ASHBY_API_KEY` — An API key issued by Ashby that authenticates all requests. Generate one in your Ashby account under **Settings → Integrations → API Keys** (requires admin access). The key must carry the specific permissions each tool needs:\n\n- **Candidates read** — required by all read operations on candidates, applications, feedback, and notes.\n- **Candidates write** — required to add notes, change application stages, and archive applications.\n- **Interviews read** — required by stage-change and archive operations.\n- **Jobs read** — required to list jobs.\n- **hiring-process-metadata read** — required by the archive operation to resolve reason names.\n\nScope the key to only the permissions your agent actually uses. Ashby's API key documentation is available at [https://developers.ashbyhq.com/docs/authentication](https://developers.ashbyhq.com/docs/authentication).\n\nStore the key as an Arcade secret; see [Arcade secret configuration docs](https://docs.arcade.dev/en/guides/create-tools/tool-basics/create-tool-secrets) and manage secrets at [https://api.arcade.dev/dashboard/auth/secrets](https://api.arcade.dev/dashboard/auth/secrets)."
}
Loading