StartupKit
EN

Hiring AI Agent and MCP Tools

Run your pipeline from Kit's in-app AI assistant or any external MCP client. Triage applications, work your review queue, move candidates, and draft candidate replies.

Why It Matters

Recruiting is a queue. Reviews pile up, applications go idle, five candidates need the same “thanks, not this time” written kindly. Kit exposes the Hiring module to AI assistants two ways: the in-app agent that lives on every Hiring page, and MCP tools any external client (Claude Desktop, Claude Code, Codex CLI, or your own agents) can call against your account.

You do not need to be an account admin to connect. Anyone with Hiring access can set up an MCP client and point it at Kit. Connecting is a personal act, like installing an app on your own laptop. What the assistant can then reach is decided per call by your own permissions, not by who set it up.

Both surfaces enforce the same rules as the UI: module permissions, per-posting access, tenant scoping, and every lifecycle guard the forms enforce. An assistant acts as you. It can never reach a job posting you can’t open, and it can never do something the web UI would refuse you.

Tip

If you’re new to a hiring role, start with /mcp__kit__hiring_role_handoff. It verifies the account and your assignments, explains the candidate journey, and flags setup gaps before you touch live work.

The In-App Assistant

Open the AI chat on any page under Hiring; it activates automatically, alongside the Security and Outreach agents. It can:

Work your queue: “What’s waiting on me today?” returns your open reviews and any team review that concluded without a clear outcome, each with the candidate, the stage, and how long it has been sitting.

Screen candidates: “Summarize the top 3 applicants for the Senior Rails role” pulls application summaries, extracted candidate data fields, and CV text, then ranks them against the posting.

Move the pipeline: advance a candidate to the next stage, reject with a personalized note, or reverse a rejection. Every action is attributed to you and lands on the audit trail.

Draft candidate replies: the agent stages an email as a pending draft. Nothing leaves Kit until a human sends it.

Plan contextual follow-ups: from an application, the agent can help draft a concise internal reminder with a future local time and eligible teammates. You review every field and decide whether email is also enabled.

Answer platform questions: the agent searches Kit’s docs inline.

Guided sourcing for a job

For external talent research, open the job’s Find people workspace. The general assistant can hand you over to it; it cannot read raw sourcing evidence in general chat. The job workspace and authorized MCP clients share the saved criteria, explicit search requests and review controls. Start with Guided Talent Sourcing for source setup, private clarification, evidence review and sequence previews.

MCP Tools Reference

What Your Role Allows

Three separate limits stack, and a tool call has to clear all of them:

  1. The connection’s scopes. When you authorize a client you pick, per module, read or read & write. A connection granted only hiring_read cannot write, no matter who you are. Writes are off by default on the consent screen.
  2. Your own Hiring level. Kit re-reads your live per-module level on every single call, so a change to your access takes effect immediately, without waiting for the next token refresh. A member without Hiring access gets no hiring tools at all. Within Hiring, you reach the postings you’d reach in the browser: unrestricted ones, plus any where you’re on the job team. Hiring module admins can access all postings. A posting you cannot access returns “not found”, identical to a nonexistent ID.
  3. Module admin and subscription. A handful of tools are reserved for Hiring admins: creating job postings and process templates, and changing CV download settings. Defining and editing metafields follows the same rule as the web app: Hiring admins plus the hiring managers of that specific posting. Most write tools additionally require an active subscription.

The recruiter role preset gives Hiring admin, so a recruiter gets the full hiring toolset without holding account admin anywhere else. See Team Roles for what each preset grants.

In the Requires column below: read means any Hiring member with a read scope; write means the connection needs read & write; Hiring admin means module admin on Hiring; admin or HM means Hiring admin or a hiring manager on that job posting; subscription means an active plan.

Setup and Templates

Tool Requires What it does
hiring_get_setup_guide read Start here. Account state, what your role allows, a setup checklist with the tool that fixes each gap, and the recommended next call
hiring_list_templates read Hiring process templates available to the account, with tags and publish state
hiring_get_template read One template in full: every stage, its type, and its configuration
hiring_create_process_template write · Hiring admin Create a reusable process template from a list of stages, with optional reviewers per stage

Postings

Tool Requires What it does
hiring_list_job_postings read Postings you can access, with status, application counts, and stage summaries
hiring_get_job_posting read One posting in full: body, stages with config, reviewers, and portal URL
hiring_create_job_posting write · Hiring admin · subscription Create a draft posting, applying a template or inline stages. Returns the edit URL
hiring_create_stage write · admin or HM · subscription Insert a configured stage into an existing posting, with optional reviewers. Published pipelines with active candidates require explicit confirmation
hiring_list_metafield_definitions read The custom data fields defined on a posting, with types and extraction settings. Managers-only fields appear for admins and the posting’s hiring managers only
hiring_create_metafield_definition write · admin or HM Add a metafield to a posting, optionally marked for AI extraction or restricted to managers only

Pipeline

Tool Requires What it does
hiring_list_applications read Submitted applications, filterable by posting, status, and date range
hiring_get_application_summary read Everything needed to screen one application: candidate, answers, stage history, notes, and who referred them when a referral is linked
hiring_get_screening_context read Your screening rating, chosen signal values and visible fields for this role
hiring_list_screening_ratings read Team judgments and immutable rating history, read separately when requested
hiring_set_screening_rating write · subscription Record your explicitly chosen Weak/Possible/Strong judgment or clear it; never changes the candidate’s stage
hiring_set_screening_signals write · subscription Choose up to eight fields for your own screening view, hide all, or restore defaults
hiring_get_stage read Complete pipeline-stage config by numeric or stg_ ID; read before updating
hiring_get_stage_progress_details read Candidate-specific detail for one sp_ stage progress: code assignment, interview, video, portfolio
hiring_search_video_transcripts read Semantic and text search across video interview transcripts
hiring_get_metafield_values read Extracted and manual field values for an application, with confidence scores. Managers-only fields appear for admins and the posting’s hiring managers only
hiring_list_reminders read Participant-scoped reminders, plus eligible teammates and the time-zone context for a new application reminder
hiring_advance_application write · subscription Move an application to the next stage, or skip ahead to a named one
hiring_reject_application write · subscription Reject an application. The candidate is emailed, with your personalized message if you supply one
hiring_unreject_application write · subscription Reverse a rejection, with a required audit reason
hiring_save_note write · subscription Save feedback or a thread summary to an application, attributed to you
hiring_update_metafield_value write · admin or HM Set a field value manually, recorded as your edit and protected from re-extraction
hiring_trigger_metafield_extraction write · admin or HM Re-run AI extraction against an application’s resume
hiring_create_reminder write · subscription Create an internal application reminder; in-app is always on and email requires explicit opt-in
hiring_update_reminder write · subscription Creator edits reminder fields; any participant can complete or reopen it

Personal screening judgments

Use hiring_get_screening_context before rating a candidate. Ask the assistant to save your chosen rating; it must use your current event ID and a fresh UUID, then verify the result. A stale rating is refused so the assistant can ask you before replacing a newer choice. These ratings log your judgment across screening passes without advancing the candidate or submitting a stage scorecard.

The same context lists the visible fields you can choose. hiring_set_screening_signals saves a personal selection for that role: up to eight fields, [] to hide all, or reset: true for the first four visible fields. It does not edit extracted data. Read other reviewers’ ratings with hiring_list_screening_ratings only when you ask to see them. Slack bots can read screening context and history; saving these personal choices is available through OAuth MCP and the private Kit assistant.

Candidate Interest Checks

Tool Requires What it does
hiring_list_interest_check_candidates read · admin or HM Lists submitted, identified applicants matching the filters, with requestability, latest status, and the fixed email preview and language; defaults to all applicants
hiring_request_interest_checks write · admin or HM · subscription Queues fixed individual emails for 1–100 explicitly selected application IDs after approval of the named recipients and preview, with confirm_send: true
hiring_list_interest_checks read · application access Reads one application’s dated history without exposing response links or tokens

The recipient list accepts q (part of a name or exact full email), stage (an exact current-stage name), contact_age (integer days: 7, 14, 21, 30, 60 or 90) and eligibility (all by default, requestable or unavailable). It returns normalized filters and available stages. Filtering never selects approved recipients: a send still needs explicit application IDs and confirmation.

Both lists are paginated with page (default 1) and limit (default 25, maximum 100); supply job_posting_id for the recipient list and application_id for history. Queueing is not proof of delivery. Only the candidate can answer. These fixed-template check-ins can be queued after explicit approval; freeform replies from hiring_send_message still need a person to review and Confirm & send in Kit. See Checking Candidate Interest.

Reviews

Tool Requires What it does
hiring_list_reviews read Your review inbox, split into what needs a decision, what you owe, and what’s pending on others
hiring_get_review_details read Everything a reviewer needs for one candidate at one stage: criteria, submissions, prior scores
hiring_list_pending_decisions read Team reviews that concluded without a clear outcome: a split vote, or no quorum
hiring_get_team_bottlenecks read · Hiring admin or HM Overdue work by teammate, with wait times and examples; managers see only accessible postings they manage
hiring_decide_review write · subscription Record an attributed, audited call on a stalled team review, with a required rationale
hiring_submit_review write · subscription Return the link where you submit your own scorecard. Files it for you only when you dictate it and confirm a preview. MCP only, never the in-app assistant

Team bottlenecks require Hiring Insights access and are available in the private Kit assistant and OAuth MCP, not shared Slack channels. Tenant and restricted-posting permissions also fence aggregate counts. Candidate/external waits are separate; shared or fallback ownership identifies follow-up contacts, not poor performance. limit is 1–50 (default 10); totals cover all visible work even when the owner list is truncated.

Talent Pool

Tool Requires What it does
hiring_list_talent_pool read Verified talent pool entries with compact resume summaries, paginated
hiring_search_talent_pool read Search the pool by skills, experience, or email, semantic with text fallback
hiring_invite_talent_pool write · subscription Invite a pool entry to apply for a specific posting

Referrals

Tool Requires What it does
hiring_list_referrals read Recommendations recorded on a job, awaiting an application or applied, with who referred each person and the application link to share
hiring_create_referral write · subscription Record a recommendation on a published job once you confirm the person agreed. Sends no email; you share the application link yourself
hiring_delete_referral write Remove a recommendation you recorded, or any on a job you can edit. A linked application stays
hiring_list_referral_partners read · Hiring admin External partners invited to the referral portal, with the portal link
hiring_invite_referral_partner write · Hiring admin · subscription Invite an external partner and email them a sign-in link. Your client asks you to confirm first
hiring_resend_referral_partner_invitation write · Hiring admin · subscription Email a partner a fresh sign-in link, at most once a minute
hiring_remove_referral_partner write · Hiring admin End a partner’s portal access immediately. Their past referrals stay with your team

The assistant asks whether the person agreed to be recommended before it saves a referral, and it never emails them. See Job Referrals and Referral Partners.

Messaging

Tool Requires What it does
hiring_list_conversations read The candidate mailbox across accessible jobs, defaulting to conversations that need attention
hiring_list_messages read A bounded delivered email thread, with pending drafts and failures separated
hiring_send_message write · subscription Stage a reply as a pending draft. The candidate is not emailed until a human sends it

The agent-native flow is search → read → draft → verify: list conversations, read the selected thread, confirm the wording with the user, stage the draft, then read the thread again to verify the pending draft and open its human-review link.

Candidates and CVs

Tool Requires What it does
hiring_get_candidate_summary read One candidate across every application they’ve made to you
hiring_get_candidate_cv read The extracted CV text for a candidate or talent pool entry
hiring_get_candidate_cv_url read A short-lived signed download URL for the original file: five minutes by default, ten at most
hiring_get_cv_download_settings read The account’s CV download trust config: trusted domains, strict mode, and what it means in practice
hiring_update_cv_download_settings write · Hiring admin · subscription Add or remove trusted domains, or turn strict mode on and off

Records are addressed by prefixed IDs (job_… postings, app_… applications, cand_… candidates, tpe_… talent pool entries) that tools return and accept, so an agent chains list → get → act without screen-scraping.

Importing CVs with an Agent

Tool Requires What it does
hiring_prepare_cv_import read · admin or HM · subscription Returns the signed-in intake link for a posting and optional stage. You personally confirm upload rights in Kit
hiring_list_cv_imports read · admin or HM · subscription Finds batches you personally created for the posting, with progress and review links
hiring_get_cv_import read · admin or HM · subscription Reads a batch’s staged rows and upload instructions. Follow next_page to inspect every row
hiring_create_cv_import_upload write · admin or HM · subscription Creates a five-minute single-use URL for one file

The external client must have local-file and HTTP access. Find the posting and stage, call hiring_prepare_cv_import, then open its link as the person who owns the MCP connection. Choose the source and date, check the rights statement, and select Allow agent upload. Chat confirmation cannot replace this step.

The agent finds your batch with hiring_list_cv_imports and calls hiring_get_cv_import. When upload.available is true, it calls hiring_create_cv_import_upload for each file. Codex or Claude Code can send the binary with curl or another HTTP client, as multipart field file, to the returned upload.url. No Authorization header is needed: the MCP client keeps its OAuth token. Each URL expires after five minutes and is consumed by one successful upload; an invalid file can be retried until expiry. Keep this temporary credential private. This is a Kit HTTP workflow, not a standard MCP file-upload feature.

Creating the URL requires hiring_write and the right to manage that posting. The upload rechecks your live connection, permissions, attestation and batch state. PDF and .docx files are accepted, up to 10 MB each and 200 per batch.

Read the batch again to verify each uploaded file. An uploaded row is still being read; ready means staged for your review; only promoted means it entered the pipeline. Review duplicates and missing email addresses in Kit, then select Import them. No candidate email is sent by the import. See Importing CVs in Bulk for the full review flow.

Adding a Stage Safely

Use a search–act–verify loop for pipeline structure:

  1. Call hiring_get_job_posting and read the complete ordered stage list.
  2. Call hiring_create_stage with the posting ID, stage type, config, and any initial reviewers. position is zero-based; omit it for the safe default immediately before a trailing Offer stage.
  3. Call hiring_get_job_posting again and verify the final order, config, reviewer roster, and warnings.

The first stage must remain an Application Form and Offer must remain last. On a published posting with active candidates, Kit first returns an impact summary and makes no change. Show that summary to the user, then retry with confirm_live_pipeline_change: true only after they approve it. Existing candidates keep their current stage: people before the insertion may encounter the new stage later, while people already beyond it do not move backward.

Reviewer assignment has a separate human effect. Each reviewer must already be an account member who can access the posting; on a restricted posting that means a Hiring module admin or someone on that posting’s job team. Adding reviewers queues onboarding, and a first-time reviewer may receive their once-ever reviewer onboarding email. Confirm the exact roster before the create call.

Limits

  • Rejecting a candidate triggers an email. hiring_send_message creates a pending draft for a person to review and send in Kit. hiring_reject_application triggers a rejection email, subject to your account’s rejection delay. Approving a rejection also approves that notification.
  • CV access follows the account’s CV-download settings. hiring_get_candidate_cv_url mints a signed URL under the same trust rules the browser applies: trusted domains, strict mode, and your team’s own access. Turning strict mode on narrows what the tool will hand back.
  • Restricted postings are invisible, not forbidden. A posting you’re fenced off from returns “not found” rather than “denied”, so nothing about it leaks, including whether it exists.
  • Restricted reviewer rosters stay fenced too. hiring_create_stage refuses a reviewer who cannot open that restricted posting, even when they belong to the same account.
  • No agent can promote itself. Nothing in the hiring toolset changes anyone’s role, access level, or module membership.

Connecting an External Client

Setup lives at Integrations > Kit for AI, with copy-paste config per client. No admin access is required to open it. For Claude Code:

claude mcp add --scope user --transport http kit https://startupkit.app/api/v1/mcp

On first use, your client walks through Kit’s OAuth flow in the browser. Pick the account, then grant hiring_read for triage and reporting, and hiring_write only to assistants that should act on your behalf. Modules you don’t have access to appear on the consent screen marked as not part of your role; granting them mints nothing usable.

Full setup for every client, the OAuth flow, and the 90-day inactivity sweep are covered in Connecting AI Assistants.

Start With the Built-In Role Handoff

Kit ships a conversational onboarding workflow with the MCP server. In Claude Code, run:

/mcp__kit__hiring_role_handoff job_abc123

In clients with a prompt picker, choose Understand your role in a hiring process (hiring_role_handoff). The job ID is optional: when your team sent you a role-specific onboarding plan, the workflow picks up that assigned role automatically; otherwise it shows the job postings you can access and asks you to choose one.

The handoff verifies your identity and account, explains the configured candidate journey, distinguishes your job-team role from any lead or reviewer assignments, and flags setup gaps before you touch live work. The prompt instructs the assistant to keep the orientation read-only, ask one question at a time, and use Kit’s documentation search when live data does not establish how a feature behaves. Your granted scopes and your MCP client’s own confirmation controls remain the authorization boundary. For a candidate-specific question, add the application ID or paste its Kit URL; delivery claims are checked against the recorded message status rather than inferred from a stage change.

Rehearse Search–Act–Verify

Use the role named in your onboarding plan. Ask the agent to find that posting, read its process, and explain the action it proposes before calling a write tool. For a safe first loop, have it stage a pending candidate reply with hiring_send_message, verify the draft in Kit, and then discard the draft in the message thread. The candidate receives nothing unless a person explicitly sends it.

Set Human Approval Boundaries

Tell your harness what it may do without interruption and what must pause for your approval. Reading, searching, and summarizing can usually proceed. Require confirmation immediately before candidate-facing, destructive, or irreversible actions, especially hiring_reject_application, which sends an email, and pipeline moves that notify a candidate. hiring_send_message creates only a pending draft, but a person must still review and send it in Kit.

Warning

Tool descriptions and sensitivity hints help an MCP client ask for confirmation, but not every client enforces them. Put these approval rules in your own harness instructions and stay responsible for every write made as you.

Example Prompts

What you type What happens
“What’s waiting on me today?” hiring_list_reviews + hiring_list_pending_decisions → your open reviews and every stalled team decision, oldest first
“Who from our team is stalling most?” hiring_get_team_bottlenecks → overdue obligations by responsible teammate, oldest waits and examples within your access; an empty personal decision queue does not mean the team has no blockers
“Summarize the top 3 candidates for the Senior Rails role” hiring_list_applications → hiring_get_application_summary → hiring_get_candidate_cv → a ranked shortlist with the evidence behind each rank
“Move Priya Raman to the technical interview stage” hiring_get_application_summary → hiring_advance_application → the candidate is advanced, attributed to you, and an applicable notification is queued; verify recorded delivery status before claiming receipt
“Draft a warm rejection for everyone idle in Screening for 3+ weeks; show me before sending” hiring_list_applications → a per-candidate draft in chat; nothing is sent until you approve each hiring_reject_application
“Who in the talent pool matches this posting?” hiring_get_job_posting → hiring_search_talent_pool → matches with reasons, then hiring_invite_talent_pool on your say-so
“Why did we pass on this candidate last year?” hiring_get_candidate_summary → every prior application, stage reached, and the notes attached
“Add a written IT triage exercise before Offer and make Ana the lead reviewer” hiring_get_job_posting → confirm the zero-based insertion and reviewer → hiring_create_stage → hiring_get_job_posting to verify order, questions, roster, and warnings
“Remind Ana and me to contact this candidate Friday; show me the date and email choice first” hiring_list_reminders for the application → propose text, local time, and eligible people → confirm → hiring_create_reminder → hiring_list_reminders to verify

Quick Checklist

  • Start your first role handoff with /mcp__kit__hiring_role_handoff
  • Try the in-app agent on Hiring: “What’s waiting on me today?”
  • Connect your MCP client at Integrations > Kit for AI; no admin access needed
  • Grant hiring_read broadly; reserve hiring_write for assistants you trust to act
  • Use hiring_get_setup_guide for later account-wide setup and queue checks; the role handoff calls it automatically
  • Chain the triage flow: list reviews → get review details → advance or reject
  • When adding a stage, use get posting → create stage → get posting, and confirm any live-pipeline impact or reviewer email first
  • Confirm your account’s CV download settings before pointing an agent at resumes

Next Steps

Type to search...