Spott
Recruiting CRM/ATS: candidates, clients, client contacts, jobs, applications, notes, placements, tasks, opportunities. BYOK; free on hyreflow.
Use Spott as an ATS/CRM write target: push sourced + enriched candidates and leads, sync clients (companies-as-accounts) and their contacts, and move applications through a job's pipeline. Spott also exposes notes, tasks, placements, opportunities, and a tenant-wide people search.
Free on hyreflow (0 credits): runs on your own connected Spott account.
Capabilities
| Tool | Does | Cost |
|---|---|---|
create_candidate | Create a candidate (req. firstName, lastName) | Free |
search_candidates | Query candidates | Free |
create_client | Create a client (req. name, description, size, specialties) | Free |
search_clients | Query clients (companies-as-accounts) | Free |
create_client_contact | Create a client contact under a client | Free |
create_job | Create a job: requires a resolved stageId | Free |
search_jobs | Query jobs | Free |
get_vacancy_stages | Pipeline stage IDs for jobs | Free |
get_client_stages | Pipeline stage IDs for clients | Free |
create_application | Create an application: requires stageId and statusId | Free |
move_application | Move an application to another pipeline stage | Free |
create_opportunity | Create an opportunity: requires a resolved stageId | Free |
get_opportunity_stages | Pipeline stage IDs for opportunities | Free |
search_people | Tenant-wide people search | Free |
list_lists | Browse lists (candidate/client/client-contact, personal or workspace) | Free |
find_list | Resolve a list by name | Free |
create_list | Create a list for candidates, clients, or client contacts | Free |
add_to_list_by_name | Resolve a list by name and link records to it | Free |
remove_from_list_by_name | Resolve a list by name and unlink records from it | Free |
link_candidates_to_list | Link candidates to a list by id | Free |
unlink_candidates_from_list | Unlink candidates from a list by id | Free |
Guidance
- Auth is an
x-api-keyheader, generated in Spott under Settings → API (admin permissions required; the key is shown once). The owner's key is the workspace key, and each member adds their own, see Personal keys. - Production ATS writes: dry-run one record, show payload + response, confirm before bulk.
- Creating a job needs a pipeline
stageId, and creating an application needsstageId+statusId, resolve them first withget_vacancy_stages,get_client_stages, orget_opportunity_stagesbefore writing. - Record deletion is not exposed for any resource.
- List name resolution is exact-but-case-insensitive; an ambiguous name (more than one list sharing it) fails rather than guessing which list was meant.
- Linking or unlinking records to a list is capped at 250 ids per call, an over-limit or duplicate id list is rejected, not trimmed.
add_to_list_by_namewon't create a missing list, and removing records from a list does not delete the records.- Handoff: sourced + enriched candidates/leads →
create_candidate→create_application→ review in Spott.
hyreflow tools execute spott create_candidate \
--payload '{"firstName":"Ada","lastName":"Lovelace","email":"[email protected]"}'hyreflow tools execute spott add_to_list_by_name \
--payload '{"list_name":"Acme Q4 shortlist","record_ids":["candidate-123","candidate-456"]}'Spott is an ATS sink, not a waterfall member: wire it as the final push after source → enrich → verify.
Personal keys
Spott credits every note and list to whoever owns the key that made the change, so every member adds their own Spott key and their work shows up under their name. Members don't share the workspace key: until a member adds their own, Spott won't run for them. The workspace owner uses the workspace key. In Spott the key is under Settings → API (you need admin permissions in Spott). See Personal keys.
Rate limits & bulk writes
Spott publishes a rate limit of 600 requests/minute per API key, the adapter paces to that number
rather than guessing a conservative default. Most list endpoints use cursor pagination; placements use
offset pagination instead. Use create_candidates_batch, create_clients_batch, and
create_notes_batch for large single-record pushes, or the native bulk endpoints for applications,
batch helpers pace automatically.
See Bulk pushes to ATS / recruiting CRM.
Pagination
list_* methods walk every page automatically — limit is the vendor page size (max 50), not a
total count. Two knobs bound a pull:
max_itemscaps the total records returned. When more data exists upstream the call returnstruncated: truein_meta.paginationalong with an opaquenext_cursortoken — pass it back ascursoron the same call (with the same filters) to continue where it left off.next_cursoralso appears when the engine's own 500-item result cap cuts a pull short.modified_since/modified_untilbound the result set by record timestamps for incremental syncs.
Raw vendor cursors are still accepted on list_applications and list_opportunities for
back-compat. Resume tokens are bound to the call's filter set — changing filters between calls
rejects the token rather than silently resuming a different walk.
SourceWhale
Recruiting outreach sequencer: push sourced candidates into existing campaigns and report. Key gotcha: there is no create-campaign API; the campaign must already exist in the UI.
TheirStack
Tech-stack-driven company discovery and tech-filtered job search. Key gotcha: keyword slugs are kebab-case (validate first), and there is no email-provider filter.