Tools & Connectors
HR & People Ops
Workday, BambooHR, Rippling, Gusto, Greenhouse, Lever, and Deel toolsets.
#HR & people ops
HRIS, payroll, and applicant-tracking connectors. Every connector
follows the standard @toolset / @toolify shape and the agent-ready
toolset pattern (compact summaries by default, opt-in raw IDs, tolerant
write inputs).
#Agent-ready behavior (overview)
All list tools across this category return compact summaries with
stable display refs (worker_ref, employee_ref, candidate_ref,job_ref, opportunity_ref, contract_ref, user_ref). Raw
provider IDs (Workday WIDs, BambooHR numeric IDs, Rippling employee
UUIDs, Gusto employee UUIDs, Greenhouse numeric job/candidate IDs,
Lever opportunity IDs, Deel person IDs) are hidden by default and
exposed via include_ids=True when a follow-up tool needs them.
Default page size is 25 unless otherwise noted.
Write tools that take an identifier (get_worker, get_employee,update_employee, advance_application, reject_application,update_opportunity_stage, archive_opportunity,create_time_off_request, etc.) accept a raw ID string or the dict
from the corresponding list tool.
Destructive tools across this group (require user confirmation):reject_application (Greenhouse), archive_opportunity (Lever).
#WorkdayToolSet
from maivn_tools import WorkdayToolSet connector = WorkdayToolSet( tenant_url="https://wd2-impl-services1.workday.com/ccx", tenant="acme", access_token=token,)OAuth exchange against Workday Identity is left to the caller. Tools:list_workers, get_worker, list_organizations, list_job_changes,list_time_off_balances, submit_time_off, list_positions,list_job_postings, list_candidates.
Agent-ready behavior
list_workers: summary withworker_ref, name, primary email, job
title, manager name, hire date, status. Raw WID hidden; opt in withinclude_ids=True(needed byget_worker,list_time_off_balances,submit_time_off).list_job_postings: summary withjob_ref, title, location,
department, posted date. Opt in for the raw posting ID.list_candidates: summary withcandidate_ref, name, email, stage,
posting title. Opt in for the raw candidate ID.
workers = connector.list_workers(include_ids=True)balance = connector.list_time_off_balances(workers["workers"][0]["worker_id"])#BambooHRToolSet
from maivn_tools import BambooHRToolSet connector = BambooHRToolSet( subdomain="acme", api_key=secrets["BAMBOOHR_KEY"],)Tools: list_employees, get_employee, create_employee,update_employee, get_who_is_out, list_time_off_requests,create_time_off_request, get_custom_report, list_meta_fields,list_meta_time_off_types.
Agent-ready behavior
list_employees: summary withemployee_ref, name, work email,
job title, department, status, location. Raw numeric employee IDs
hidden; opt in withinclude_ids=True(needed byget_employee,update_employee,create_time_off_request).- Tolerant inputs:
get_employeeandupdate_employeeaccept a
numeric employee ID or the employee dict fromlist_employees(include_ids=True).
#RipplingToolSet
from maivn_tools import RipplingToolSet connector = RipplingToolSet(access_token=secrets["RIPPLING_TOKEN"])Tools: get_current_company, list_employees, get_employee,list_departments, list_work_locations, list_groups,list_leave_requests, list_compensations, list_teams.
Agent-ready behavior
list_employees: summary withemployee_ref, name, work email,
job title, manager name, hire date, status. Rippling employee UUIDs
hidden; opt in withinclude_ids=True(needed byget_employee).
#GustoToolSet
from maivn_tools import GustoToolSet connector = GustoToolSet(access_token=secrets["GUSTO_TOKEN"])For Gusto Demo, override base_url="https://api.gusto-demo.com".
Tools: list_companies, get_company, list_employees,get_employee, create_employee, list_payrolls, get_payroll,list_pay_schedules, list_time_off_requests, list_jobs.
Agent-ready behavior
list_employees: summary withemployee_ref, name, work email,
job title, department, terminated state. Raw Gusto employee UUIDs
hidden; opt in withinclude_ids=True(needed byget_employee,list_jobs).percontrols per-page size and pagination is
forwarded as standard Gusto headers.
#GreenhouseToolSet
from maivn_tools import GreenhouseToolSet connector = GreenhouseToolSet( api_key=secrets["GREENHOUSE_KEY"], on_behalf_of="123", # required for writes)Tools: list_jobs, get_job, list_candidates, get_candidate,create_candidate, list_applications, advance_application,reject_application (destructive), list_scorecards, list_offers.
Agent-ready behavior
list_jobs: summary withjob_ref, name, status, office, opened
date. Raw numeric job IDs hidden; opt in withinclude_ids=True
(needed byget_job).list_candidates: summary withcandidate_ref, name, primary
email, last activity, source. Opt in forcandidate_id.- Destructive:
reject_application. Confirm with the user before
invoking (rejection emails the candidate and closes the
application).
#LeverToolSet
from maivn_tools import LeverToolSet connector = LeverToolSet(api_key=secrets["LEVER_KEY"])Pass sandbox=True to target the Lever sandbox. Tools:list_opportunities, get_opportunity, create_opportunity,update_opportunity_stage, list_postings, get_posting,list_stages, list_users, list_feedback, archive_opportunity
(destructive).
Agent-ready behavior
list_opportunities: summary withcandidate_ref, name, headline,
stage, owner, last interaction. Raw opportunity IDs hidden; opt in
withinclude_ids=True(needed byget_opportunity,update_opportunity_stage,archive_opportunity).list_postings: summary withjob_ref, text, state, team,
location. Opt in forposting_id.list_users: summary withuser_ref, name, email, access role.
Opt in foruser_id.- Destructive:
archive_opportunity. Confirm with the user before
invoking.
#DeelToolSet
from maivn_tools import DeelToolSet connector = DeelToolSet(api_token=secrets["DEEL_TOKEN"])Tools: list_people, get_person, list_contracts, get_contract,create_invoice_adjustment, list_invoice_adjustments,list_time_off, review_time_off, list_payroll_events,list_legal_entities.
Agent-ready behavior
list_people: summary withemployee_ref, name, work email, hiring
status, employment type, country. Raw Deel person IDs hidden; opt
in withinclude_ids=True(needed byget_person).list_contracts: summary withcontract_ref, title, status, type,
worker name, start date. Opt in forcontract_id(needed byget_contract,create_invoice_adjustment).