Interview100x partner API v1
MCP — the Interview100x app
People can also practice from AI apps through the Interview100x MCP server; it is separate from the partner API.
The Interview100x app lets a person prepare an interview plan and run text mock interviews from an AI app. Voice practice and purchases happen on interview100x.com. The tool reference below is generated from the server's own definitions.
Interview100x — https://mcp.interview100x.com/mcp
Server interview100x v1.0.0. Scopes:
interview:read— See your interview plans, practice history, feedback and readinessinterview:prepare— Create interview plans (research on the company and the role)interview:practice— Run mock interviews and score answers — uses your Interview100x pass (can spend)
Tools (14)
answer_mock_interview — Answer in a mock interview
Send the person's answer (their own words, verbatim) in a text mock interview. Returns the interviewer's next line exactly as it should be shown, and whether the interview has ended. Show interviewer_line to the person as is; do not answer for them. Optional idempotency_key: a retry with the same key returns the same reply.
v1 · writes · scopes: `interview:practice` · no meter — Part of a practice session: the session is metered when it starts (interview.session) and answers are capped per session. · idempotency key optional
| Input | Type | Required | Notes |
|---|---|---|---|
session_id | string (uuid) | yes | |
answer | string (1–2000 chars) | yes | |
idempotency_key | string (8–100 chars) | no |
Returns: interviewer_line, phase, ended, answers_so_far.
end_mock_interview — End a mock interview
End a mock interview now and queue its feedback (partial feedback when it ends early). Then call get_mock_interview_feedback.
v1 · writes, destructive, idempotent · scopes: `interview:practice` · no meter — Ends a session that was metered when it started; its evaluation belongs to that session.
| Input | Type | Required | Notes |
|---|---|---|---|
session_id | string (uuid) | yes |
Returns: session_id, feedback_queued, partial, already_ended, discarded, poll_after_s.
evaluate_answer — Score one answer
Score one answer to one interview question against one criterion — from a round of the person's plan (round_id + criterion_key) or from the Interview100x criteria library (round_type + criterion_key). Returns the level (not_ready, borderline, ready, strong), whether the bar is met, and a signed credential marked as caller-supplied. Uses the person's pass. Requires an idempotency_key.
v1 · writes · scopes: `interview:practice` · meter: `interview.answereval` · idempotency key required_
| Input | Type | Required | Notes |
|---|---|---|---|
question | string (1–1000 chars) | yes | |
answer | string (1–2000 chars) | yes | |
round_id | string (uuid) | no | |
round_type | string (0–40 chars) | no | |
criterion_key | string (1–80 chars) | yes | |
idempotency_key | string (8–100 chars) | yes |
Returns: criterion, level, met, evidence_quote, evidence, evidence_error.
export_readiness_evidence — Export readiness evidence
A bundle for one plan: per round the signed readiness credential and the latest feedback credential, each with a status URL a third party can check. Verify any credential at https://www.interview100x.com/api/evidence/verify. When the bundle is too large to send at once, jws_included is false: read each credential from its resource_uri.
v1 · read-only, idempotent · scopes: `interview:read` · no meter — Signs results already computed; no model call.
| Input | Type | Required | Notes |
|---|---|---|---|
loop_id | string (uuid) | yes |
Returns: loop_id, verify_url, jwks_url, jws_included, rounds.
fetch — Fetch
Fetch one item returned by search (a plan, a practice session's feedback, or a credential) as a document.
v1 · read-only, idempotent · scopes: `interview:read` · no meter — Reads stored data; no model call.
| Input | Type | Required | Notes |
|---|---|---|---|
id | string (0–80 chars) | yes |
Returns: id, title, text, url, metadata.
get_account_status — Get account status
The person's Interview100x pass, today's practice sessions and the daily limit, and where to see plans. Purchases happen on interview100x.com only.
v1 · read-only, idempotent · scopes: `interview:read` · no meter — Reads stored data; no model call.
No inputs.
Returns: pass, trial_available, sessions_today, daily_session_limit, plans_url.
get_interview_plan — Get an interview plan
Build status, rounds (name, type, length, whether each is ready to practise) and the recommended next step of an interview plan. While status is building, call again after poll_after_s seconds. Interview questions are not shown here — they appear during practice.
v1 · read-only, idempotent · scopes: `interview:read` · no meter — Reads stored data; no model call.
| Input | Type | Required | Notes |
|---|---|---|---|
loop_id | string (uuid) | yes |
Returns: loop_id, status, company, role, level, interview_dates, research, rounds, next_step, poll_after_s, open_url.
get_mock_interview_feedback — Get mock interview feedback
Feedback on a finished mock interview: per criterion the level reached with the person's verbatim quotes, the verdict, rewrites and the next assignment, plus a signed credential anyone can verify. While status is pending, call again after poll_after_s seconds.
v1 · read-only, idempotent · scopes: `interview:read` · no meter — Reads the evaluation of a session metered when it started; no new model call.
| Input | Type | Required | Notes |
|---|---|---|---|
session_id | string (uuid) | yes |
Returns: session_id, status, poll_after_s, verdict, criteria, rewrites, next_assignment, partial, evidence, evidence_error, open_url.
get_readiness — Get readiness
Readiness per round of a plan (not_ready, borderline, ready, strong) with the rule applied, what blocks it, the trend per criterion, and a signed readiness credential. verified_readiness is false when any answer in the window was relayed by an AI app.
v1 · read-only, idempotent · scopes: `interview:read` · no meter — Reads stored data; no model call.
| Input | Type | Required | Notes |
|---|---|---|---|
loop_id | string (uuid) | yes | |
round_id | string (uuid) | no |
Returns: loop_id, rounds.
list_interview_loops — List interview plans
The person's interview plans, newest first. Pass next_cursor back as cursor for more.
v1 · read-only, idempotent · scopes: `interview:read` · no meter — Reads stored data; no model call. · trimmed to the output budget with `truncated` + `nextcursor`_
| Input | Type | Required | Notes |
|---|---|---|---|
cursor | string (0–200 chars) | no | |
limit | integer (1–50) | no |
Returns: items, next_cursor.
list_practice_history — List practice history
The person's mock interviews, newest first (optionally one plan), with whether feedback is ready. Pass next_cursor back as cursor for more.
v1 · read-only, idempotent · scopes: `interview:read` · no meter — Reads stored data; no model call. · trimmed to the output budget with `truncated` + `nextcursor`_
| Input | Type | Required | Notes |
|---|---|---|---|
loop_id | string (uuid) | no | |
cursor | string (0–300 chars) | no | |
limit | integer (1–50) | no |
Returns: items, next_cursor.
prepare_for_interview — Prepare for an interview
Create an interview plan for a job: company, role, the job posting (URL or pasted text, optional) and interview date(s). Uses the résumé the person has on Interview100x, or resume_text. Research and the plan take a few minutes: call get_interview_plan with the returned loop_id after poll_after_s seconds. Requires an idempotency_key; retrying with the same key returns the same plan.
v1 · writes, idempotent, open world · scopes: `interview:prepare` · meter: `interview.loop` · idempotency key required
| Input | Type | Required | Notes |
|---|---|---|---|
company | string (1–120 chars) | yes | |
role | string (1–160 chars) | yes | |
posting_url | string (uri, 0–2000 chars) | no | |
posting_text | string (0–30000 chars) | no | |
interview_dates | array of string | no | |
level | entry \| early_career \| mid \| senior \| lead \| manager \| director | yes | The career stage of the role |
resume_text | string (0–30000 chars) | no | |
idempotency_key | string (8–100 chars) | yes |
Returns: loop_id, created, status, job_posting_used, poll_after_s, open_url.
search — Search
Search the person's interview plans and practice sessions. Returns ids to pass to fetch.
v1 · read-only, idempotent · scopes: `interview:read` · no meter — Reads stored data; no model call.
| Input | Type | Required | Notes |
|---|---|---|---|
query | string (0–100 chars) | yes |
Returns: results.
start_mock_interview — Start a mock interview
Start a practice interview for a ready round of a plan (default: the first ready round). mode: coach (hints, gentler) or realistic. channel: text runs here — the reply has the interviewer's opening line; send the person's answers with answer_mock_interview. channel voice (when available) returns a join_url to open on interview100x.com. Uses the person's Interview100x pass. Requires an idempotency_key; starting again for the same round returns the session already open.
v1 · writes, idempotent · scopes: `interview:practice` · meter: `interview.session` · idempotency key required
| Input | Type | Required | Notes |
|---|---|---|---|
loop_id | string (uuid) | yes | |
round_id | string (uuid) | no | |
mode | coach \| realistic | no | |
channel | text \| voice | no | |
idempotency_key | string (8–100 chars) | yes |
Returns: session_id, round_id, channel, mode, resumed, interviewer_line, join_url, sponsored_by_organisation.
Resources (4)
| Name | URI template | Scopes | Description |
|---|---|---|---|
evidence | interview100x://evidence/{evidence_id} | interview:read | One of the person's signed Interview100x credentials: the compact JWS and its decoded payload. |
interview_plan | interview100x://loops/{loop_id}/plan | interview:read | An interview plan: build status, rounds and the next step (no practice questions). |
session_transcript | interview100x://sessions/{session_id}/transcript | interview:read | The transcript of one of the person's mock interviews (interviewer lines and the person's answers, in order). A long transcript comes in pages: read next_uri for the rest. |
session_transcript_page | interview100x://sessions/{session_id}/transcript/from/{from} | interview:read | The rest of a long mock interview transcript, from turn from on (follow next_uri). |
Prompts (3)
| Name | Title | Description |
|---|---|---|
am_i_ready | Am I ready? | Check readiness for every round of a plan and what to practise next. |
practice_round | Practise a round | Run a text mock interview for one round of a plan. |
prepare_for_my_interview | Prepare for my interview | Make an interview plan for a role and get ready for it. |
Meters
| Meter | One unit is | Tools |
|---|---|---|
interview.loop | interview plan | prepare_for_interview |
interview.session | practice session | start_mock_interview |
interview.answer_eval | scored answer | evaluate_answer |
MCP App
ui://interview100x/app.html (text/html;profile=mcp-app), linked from: get_interview_plan, prepare_for_interview, start_mock_interview, answer_mock_interview, get_mock_interview_feedback, get_readiness.