Interviewpad × MCP

Talk to your hiring pipeline from any AI assistant.

Interviewpad ships a Model Context Protocol server. Drop it into Claude Desktop, Cursor, Goose, or anything else that speaks MCP, and your candidates, screenings, and scorecards become first-class context for your AI work.

What is MCP?

The Model Context Protocol is an open standard for connecting LLMs to external tools and data. An MCP server (this) exposes tools / resources / prompts; an MCP client (Claude Desktop, Cursor, etc.) consumes them. Same idea as language servers, but for AI assistants.

You don't write any code to use it. Mint an API key from your workspace, paste the install snippet into your client's config, and the tools show up.

Quick start

  1. In your workspace, go to Automation → MCP API Keys and click Generate API key. Pick read for analytics access or read + write to create screenings and update candidates from your assistant.
  2. Copy the key. You only see it once.
  3. Paste the install snippet below into your MCP client's config.
  4. Restart the client. Ask "what tools do you have for Interviewpad?"

Install

Claude Desktop
Edit %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS). Restart Claude Desktop after saving.
{
  "mcpServers": {
    "interviewpad": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.interviewpad.in/api/mcp",
        "--header",
        "Authorization:Bearer YOUR_KEY_HERE"
      ]
    }
  }
}
Cursor / Goose
For clients that speak the MCP Streamable HTTP transport natively. Add to your MCP settings.
{
  "mcpServers": {
    "interviewpad": {
      "url": "https://www.interviewpad.in/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_KEY_HERE"
      }
    }
  }
}
Smoke test with curl
Lists the available tools. Use this to verify your key works before touching client config.
curl -X POST 'https://www.interviewpad.in/api/mcp' \
  -H 'Authorization: Bearer YOUR_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Tools

5 read tools available on any key. 4 write tools require a key minted with read + write.

get_workspacereadGet current workspace

Returns the workspace this API key is scoped to: name, slug, plan, member/candidate/screening counts, and the key's label + scopes.

get_workspace()
list_candidatesreadList candidates

List candidates in this workspace. Filter by pipeline status or free-text search. Defaults to the 25 most recently updated.

status? (active|hired|rejected|archived): Pipeline status filter.
search? (string): Match against name or email.
limit? (number (1–100)): Max rows. Default 25.
list_candidates({ status: "active", limit: 10 })
list_screeningsreadList AI screenings

List AI screenings. Filter by status or ISO date threshold. Returns the 25 most recent by default. Use get_screening_result for the full scorecard.

status? (PENDING|ACTIVE|COMPLETED): Status filter.
since? (ISO datetime): Created at or after.
limit? (number (1–100)): Max rows. Default 25.
list_screenings({ status: "COMPLETED", since: "2026-05-01" })
get_screening_resultreadGet screening result

Full scorecard for one screening: composite score, per-rubric ratings, AI summary, integrity suspicion, transcript turn count, timestamps.

invite_token_or_id (string): Screening's inviteToken (preferred) or internal id.
get_screening_result({ invite_token_or_id: "ait_..." })
get_credit_balancereadGet AI credit balance

Current AI screening credit balance plus the 10 most recent ledger entries (purchases, grants, consumption, refunds).

get_credit_balance()
create_ai_screeningwriteCreate an AI screening

Generate an AI screening invite. Returns the invite URL. Invite creation is free — 1 credit is charged when the candidate sends their first message. Optionally emails the candidate.

candidate_email (email): Candidate's email.
candidate_name (string): Candidate's full name.
position_title (string): Role title.
template_id (string): Builtin or workspace-custom template id.
send_email? (boolean): Email the invite. Default true.
create_ai_screening({ candidate_email: "alice@example.com", candidate_name: "Alice", position_title: "Senior FE", template_id: "react-todo-pagination" })
update_candidate_statuswriteUpdate candidate status

Move a candidate through the pipeline. Optionally append a timestamped note explaining the move.

candidate_id (string): Candidate's internal id.
status (active|hired|rejected|archived): New status.
note? (string): Optional note appended to candidate notes.
update_candidate_status({ candidate_id: "cmp...", status: "hired" })
add_candidate_notewriteAdd candidate note

Append a free-text note to a candidate's running notes. Note is timestamped and labeled with the API key so its origin is auditable.

candidate_id (string): Candidate's internal id.
body (string (max 4000)): Note body.
add_candidate_note({ candidate_id: "cmp...", body: "Strong React fundamentals, follow up next week." })
refund_screeningwriteRefund a screening credit

Refund the 1 credit charged when a screening started. Idempotent — a second refund attempt errors. Cannot refund a screening that was never started.

invite_token_or_id (string): Screening token or id.
reason (string (3–500)): Why — recorded in the credit ledger.
refund_screening({ invite_token_or_id: "ait_...", reason: "Candidate had wifi issues" })

Resources

Read-only fetch-by-URI surfaces. Useful when you want raw JSON instead of a summarized tool result.

workspace://current/candidates
application/json

Full candidate list for this workspace as JSON (most recently updated, capped at 200).

workspace://current/screenings
application/json

Full AI screening list as JSON (most recent first, capped at 200).

screening://{token}/transcript
application/json

Candidate ↔ AI chat history for one screening. Substitute {token} with the inviteToken.

screening://{token}/scorecard
application/json

Compact graded result for one screening: score, ratings, summary, integrity score, timestamps.

Prompts

Pre-canned conversation starters with real workspace data inlined. Useful for "do this thing on this specific candidate."

compare_candidatesCompare candidates

Chat seed comparing 2+ candidates side-by-side with their scorecards inlined. LLM is told to recommend a ranked shortlist.

candidate_ids: Comma-separated candidate ids (get from list_candidates).
draft_outreachDraft outreach email

Draft an offer / reject / followup email for a candidate, seeded with their actual scorecard.

screening_id: Screening inviteToken or id.
kind: offer | reject | followup

No-auth discovery endpoint

We also expose https://www.interviewpad.in/api/mcp/public with read-only catalog tools — no API key required. Add it to your client and AI assistants can answer questions like "what AI screening templates does Interviewpad offer?" without anyone having an account.

Public install
No key required. Read-only template + pricing catalog.
{
  "mcpServers": {
    "interviewpad-public": {
      "url": "https://www.interviewpad.in/api/mcp/public"
    }
  }
}
Public tools: describe_templates, describe_pricing

Plans

MCP API access is included on Growth and Enterpriseworkspaces. Free / Starter workspaces can browse this page but can't mint keys.

Credits: 10 for $29 · 50 for $129 · 200 for $449. See plans for full details.

Auth & security

  • Bearer keys. Every call needs Authorization: Bearer ip_live_....
  • Hashed at rest.Only the SHA-256 hash of your key is stored. We can't recover the plaintext. Lost it? Revoke and re-issue.
  • Workspace-scoped. Each key is tied to exactly one workspace. Cross-workspace data is unreachable — the server returns 404-style errors instead of leaking row counts.
  • Audited. Every tool/resource/prompt invocation lands in your workspace audit log: tool name, args, result summary, latency, error if any.
  • Rate-limited. 60 requests per minute per key.
  • Plan-gated. Keys stop working immediately if the workspace is downgraded off Growth/Enterprise.