We raised a $50M Series B led by BenchmarkLearn more
Gusto logo — MCP server on Gumloop

Gusto

Manage your Gusto payroll, employees, and benefits.

Book a demo

Installation

Set up the Gusto MCP server in Gumloop

Do this once to provision your hosted server URL.

1

Create a Gumloop account

To use this MCP, you need a Gumloop account. If you don't have one yet, sign up and start a 14-day free trial.

2

Add and authorize the Gusto server

In Gumloop, open Connectors and add Gusto. Depending on the app, you'll either sign in via OAuth or paste an API key. Either way, the credential is stored securely in Gumloop.

Then use it in your client

Use in GumloopUse in Gumloop
1

Use Gusto in an agent

Once Gusto is set up, just open any Gumloop agent, add Gusto as a connector, and start chatting with the agent.

Tools (47)

  • Accept Reasonable Salary

    Marks the Solo S-corp owner's in-progress reasonable-salary estimate as accepted, recording the chosen W-2 salary for IRS-defensibility purposes. Call this LAST in the Reasonable Salary Calculator flow. Before calling, confirm the user has reviewed the calculated estimate and explicitly wants to accept that number; do not call `accept_reasonable_salary` automatically just because a `calculate_reasonable_salary` call succeeded. IMPORTANT - any later change to the estimate's inputs silently clears the acceptance, so accept must be the final step. Takes no arguments; the company and owner come from the token context, never the caller. It accepts the single most recently calculated in-progress estimate for that owner; if several `calculate_reasonable_salary` calls were made, only the latest can be accepted (each overwrote the previous). On success, returns the accepted estimate (id, result as an integer USD amount, range, acceptedAt). On failure, the response `errors` list names a structured kind - "no_in_progress_estimate" (calculate a reasonable salary estimate first), "company_not_eligible" (company is not taxed as an S-corp), or "no_draft_team_member" (owner profile not ready yet, usually a brief race after signup; retry shortly). Does NOT set the owner's actual pay rate, file any tax form, or finalize the estimate to an employee job. ONBOARDING HANDOFF — RSC is reached two ways, and acceptance means different things in each. (1) Standalone: the owner came directly to figure out their salary; after a successful accept, confirm the saved number and you're done. (2) As an onboarding step: an earlier `get_company_onboarding_status` `next_step` routed you here (its `detail` was `reasonable_salary_calculator`). In that case acceptance is NOT the end of onboarding — after a successful accept, call `get_company_onboarding_status` again. Acceptance advances the flow, so the refreshed `next_step` points to the real next step (typically `continue_in_gusto` with the URL to send the owner to). Never invent or hardcode that destination URL yourself; always take it from the refreshed onboarding status.

  • Calculate Reasonable Salary

    Calculates an IRS-defensible reasonable salary for an S-corp owner from Bureau of Labor Statistics (BLS) wage data, given the company's ZIP code and one or more occupations. Returns the recommended annual salary, a defensible range, and the BLS wage area. Look up each occupation `code` with `search_business_info` (type `occupation`) first. GATHERING INPUTS — collect what this tool needs conversationally, one step at a time; don't ask for everything in one message and don't assume values. Follow this order: 1. Location first. Ask for the company's 5-digit ZIP code — it sets the BLS wage area. If the user offers only a city or state, ask them for the ZIP rather than guessing one yourself; a guessed ZIP can land on the wrong wage area. 2. Roles, one at a time. Ask what the owner does, then call `search_business_info` (type `occupation`) for that role, present the candidates, and let the user pick the `code` before asking about anything else — never guess BLS codes. Most owners have a single role; only gather more if the user says they wear more than one hat, resolving each role fully before starting the next. 3. Per-role details. For each chosen occupation confirm `experience_level`, plus — for a multi-role owner — the `time_percentage` split and which role is `primary`. Offer a sensible default and let the user adjust; don't apply these silently. 4. Optional refinements. Only if relevant, ask about a part-time `work_schedule` or an `annual_net_revenue` cap; otherwise leave them out. Confirm every input before calling. If the response reports a recoverable error (e.g. the occupation `time_percentage` values do not sum to 1.0), fix the inputs per the message and re-call. Make ONE call once the inputs are confirmed. When the owner fills more than one role (e.g. a founder who both writes software and runs the business as CEO), list every role in the `occupations` array with `time_percentage` values summing to 1.0 in that single call — do not fire separate `calculate_reasonable_salary` calls per role. The tool blends them into one composite salary; separate calls would each overwrite the last. This tool keeps ONE in-progress estimate per company/owner: every successful call overwrites that single estimate and there is no history, so do not issue parallel or speculative calls — to compare scenarios, run them one at a time and show each result before recalculating. The estimate is referenced implicitly by the authenticated company/owner, so this call intentionally returns no `id`; `accept_reasonable_salary` returns the persisted estimate's `id`. After a successful calculation, present the recommended salary and range and ask whether the owner wants to accept it as their W-2 salary; if they confirm, call `accept_reasonable_salary`. Do not call `accept_reasonable_salary` without explicit user confirmation (see that tool's description).

  • Get Company

    Retrieves comprehensive business profile information including legal name, business entity type (LLC, Corporation, etc.), EIN, primary contact details, and configured locations. Use this to answer questions about company setup, business structure, or basic organizational info.

  • Get Company Onboarding Package

    Returns the company's available plans, add-ons, and benefits during onboarding, plus Gusto's recommended package and the company's current selection. Use this to present the options and the recommendation, compare tiers, or answer pricing questions — all from the returned payload. ONCE THE PROFILE IS READY FOR A RECOMMENDATION: when the only required question left in get_company_onboarding_status is the plan choice (tier_selection) — i.e. every other required question is answered — call this tool to present Gusto's recommendation: explain what's included and why it fits their profile, then ask whether they'd like to proceed with the recommended plan or explore other options before you save their tier_selection (via save_company_onboarding_answer). Do NOT wait for tier_selection itself to be answered before presenting the recommendation — the recommendation is what informs that choice. WHEN TO USE: When the user is choosing or asking about a Gusto plan during onboarding — to present available plans/add-ons, show the recommendation and why, compare tiers, or answer "how much does X cost". WHEN NOT TO USE: To read a single onboarding question — use get_onboarding_answer. DATA RETURNED (keys are camelCase): `plans` and `addOns`, each with `stableId`, `key`, `name`, `description`, and a `pricing` object (`baseFee`, `perEmployeeFee`, `currency`; a fee is null when not charged); `benefits` with `key`, `name`, and `pricingNote` (quoted with partner carriers at setup, not on the Gusto invoice); the `recommended` package (`plan`, `addOns`, `benefits`, and a `rationale`) and the company's current `selected` package; readyForPackageRecommendation (whether every required profile question EXCEPT the plan choice is answered — i.e. the recommendation is ready to present); and profileComplete (whether ALL required questions, including the plan choice, are answered). The recommended block is null until readyForPackageRecommendation is true and a recommendation has been computed. The recommendation is computed once and reflects the profile answers at that time; it is not recomputed here if answers change afterward. SIDE EFFECT: not a pure read — the first call made once the profile is ready computes and stores Gusto's recommendation (a one-time computation; later calls do not recompute it). Calling it before the profile is ready is a safe no-op for the recommendation (the recommended block stays null). PREREQUISITES: The recommendation populates once the company's required profile questions EXCEPT the plan choice are answered (see get_company_onboarding_status).

  • Get Company Onboarding Status

    Returns the onboarding status for a company's current experience. The current experience includes its questions — each with a key, a description, whether it has been answered, whether it is required, and a value_schema describing the fields its answer expects (field name, type, and allowed enum values). Use the value_schema to construct the value for save_company_onboarding_answer without guessing field names. Some answers are resolved with a helper tool rather than the value_schema alone: for `industry_selection` call search_business_info (type "industry") to get a verified naics_code, and never guess NAICS/SIC codes. Separately, some large, well-known fields are free-text coded — their value_schema shows a string array with no enum list (e.g. states_employees_work_in, international_employees_countries). For these, collect the user's answer in natural language and map it to canonical codes yourself: US states as 2-letter uppercase codes including DC and PR (other US territories are not accepted), and countries as ISO 3166-1 alpha-2 (e.g. GB, IN, MX) — don't present the full list as options. A save with an invalid code returns the allowed values so you can correct it. Also returns total_questions and answered_questions counts (over ALL questions, required or not). DRIVING ONBOARDING — work through the questions with the user and save each answer with save_company_onboarding_answer. Each question's required flag indicates whether it must be answered for onboarding to proceed. Required questions (required is true) are mandatory — collect an answer for every one, and do NOT offer the user the option to skip them. Only optional questions (required is false) may be skipped — surface them and offer to capture an answer, but make clear the user is free to skip them. Setup is complete once all required questions are answered — optional questions may stay unanswered, so do NOT treat answered_questions == total_questions as the bar. IMPORTANT - the question list is dynamic; saved answers can re-route the flow (e.g. a solo owner gets different questions than an employer), so this list is stale after any save_company_onboarding_answer call. Re-plan from that call's returned onboarding_status, or re-call this tool. QUESTION ORDER — ask the remaining required questions in the exact order they appear in next_step.remaining_question_keys. This array is an ordered sequence, not an unordered set: do not reorder, group, batch, or skip ahead to a later question, even if a different order seems more natural or related questions seem groupable. Ask the first key, save it, then re-read the refreshed remaining_question_keys (a save can re-route the flow) and ask its new first key. What comes after the required questions depends on the company's current experience, so follow the next_step cue rather than assuming a plan step always follows: answer_questions (answer the questions in remaining_question_keys); continue_in_mcp with detail select_plan (the profile experience — call get_company_onboarding_package to present Gusto's recommended plan, then save tier_selection); continue_in_mcp with detail reasonable_salary_calculator (a Solo S-corp owner can set their reasonable W-2 salary now — run the Reasonable Salary Calculator tools: calculate_reasonable_salary then accept_reasonable_salary, then re-call this tool); continue_in_gusto (nothing left to drive here — send the user to the returned url); or complete (onboarding is fully finished). A next_step of complete is authoritative: tell the user they're all set and do NOT present any questions — the questions list is empty and the counts are zero regardless of any past unanswered questions.

  • Get Compensation

    Retrieves full details for a single pay rate record by UUID, including rate amount, payment frequency, FLSA status, and effective date. Use list_job_compensations first to find the compensation UUID. Call this for specific details about one pay rate entry.

  • Get Contractor

    Retrieves full profile for a single domestic (US-based) contractor by UUID, including name, email, business name (if applicable), payment method, and engagement dates. Use list_contractors first to find the contractor UUID. Call this for detailed info about a specific independent worker. International contractor data is not available through this endpoint.

  • Get Contractor Payment

    Retrieves full details for a single contractor payment by UUID, including amount, payment method, bonus breakdown, and reimbursements. Use list_contractor_payments first to find the payment UUID. Call this for line-item details of one specific contractor payment.

  • Get Contractor Payment Group

    Retrieves all individual contractor payments within a batched payment group by UUID. Shows each contractor's payment amount and details from that batch. Use list_contractor_payment_groups first to find the group UUID. Call this to see all payments in a single batch run.

  • Get Department

    Retrieves full details for a single department by UUID, including name, parent department (if nested), and list of assigned employees. Use list_departments first to find the department UUID. Call this for details about one specific department.

  • Get Employee

    Retrieves full profile for a single domestic (US-based) employee by UUID, including name, email, hire date, department, manager, job title, work location, current pay rate, time-off policy assignments, and time-off balances. Use list_employees first to find the employee UUID. Call this when you need detailed info about one specific person. International employee data is not available through this endpoint.

  • Get Employee Earnings Summary

    Returns per-employee earning breakdowns (commissions, bonuses, tips, etc.) aggregated across all processed payrolls in a date range. Use this when the user asks about specific earning types attributed to individual employees, such as "How much has each employee been paid in commissions this year?" or "Who received bonuses last quarter?" Default date range is year-to-date. This tool provides per-employee attribution that list_payrolls cannot - list_payrolls only has payroll-wide totals. IMPORTANT - Never guess which employees received specific earning types from aggregate totals. Always use this tool for per-employee earning attribution. Note - only includes earnings for domestic (US) employees. International employee earnings are not included.

Ship Gusto agents in minutes

Connect any AI agent to 100+ MCP servers, zero setup.
Book a demo
Gradient