MCP Tool Reference
Complete reference for all 17 Koji MCP tools. Includes parameters, return data, plan requirements, and example prompts for each tool across read, create, analyze, customize, and distribute categories.
Tool Categories
Koji MCP provides 15 tools organized into 5 categories. Each tool is designed to be invoked conversationally — you describe what you want, and Claude selects the right tool automatically.
Read and Explore Tools
koji_list_studies
Purpose: List all your research studies with summary metrics.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | string | No | Filter by status: 'draft', 'active', 'completed', 'archived' |
| limit | number | No | Results per page (1-100, default 50) |
| offset | number | No | Pagination offset |
Returns: Array of studies with id, name, status, interview_count, completion percentage, created/updated dates, and interview link.
Example prompts:
- "List my active studies"
- "Show me all my draft studies"
- "How many studies do I have?"
koji_get_study
Purpose: Get full details for a specific study including the research brief, structured questions with types and probing settings, methodology, progress, and recent interviews.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | The study identifier |
Returns: Complete study details including name, status, research brief (problem context, target participant, methodology framework, interview plan with keyQuestions array), brief completion percentage, readiness to publish flag, interview summaries, and interview link.
Key fields in keyQuestions:
id— Unique question identifiertext— The question as asked by the AI interviewertype— open_ended, scale, single_choice, multiple_choice, ranking, or yes_noconfig— Type-specific settings (scaleMin, scaleMax, scaleLabels for scales; options for choices/rankings)probing— Follow-up configuration (maxFollowUps 0-3, instructions, anchor for scales)section— Logical grouping labelrequired— Whether the AI must cover this question
Example prompts:
- "Show me the details of my churn research study"
- "What structured questions are in my NPS study?"
- "Is my study ready to publish?"
koji_get_interviews
Purpose: List interviews for a study with AI-generated summaries, themes, and sentiment analysis.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | The study identifier |
| status | string | No | Filter: 'active', 'completed', 'abandoned' |
| sentiment | string | No | Filter: 'positive', 'neutral', 'negative', 'mixed' |
| limit | number | No | Results per page (1-100, default 50) |
| offset | number | No | Pagination offset |
Returns: Array of interviews with id, status, interview mode (voice/text), respondent info (name, source), and cached analysis (summary, themes, sentiment, word count, message count).
Example prompts:
- "Show me completed interviews from my pricing study"
- "Which interviews had negative sentiment?"
- "How many voice vs text interviews do I have?"
koji_get_transcript
Purpose: Read the full interview transcript message-by-message with respondent context and per-question structured answers.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| interview_id | UUID | Yes | The interview/conversation identifier |
Returns: Full transcript with conversation_id, study context, status, interview mode, respondent details (name, intake form data), complete message array (role + content), analysis results, and structured answers.
Key fields in analysis.structured_answers (per question):
value— The typed answer (number for scale, string for choice, array for ranking/multiple choice)qualitative_context— Follow-up context the respondent providedconfidence— How confident the extraction is (high, medium, low)follow_up_insights— Insights from probing follow-ups
Note: Transcripts over 60,000 characters are automatically truncated with a warning.
Example prompts:
- "Show me the transcript for interview [id]"
- "What NPS score did this respondent give and why?"
- "Read the latest interview from my study"
koji_get_account
Purpose: View your account details, plan tier, credit balance, feature access, and billing status.
Parameters: None
Returns: Account info including plan name, credit balance, feature flags (voice_interviews, report_generation, etc.), usage (study count, interviews this billing period), billing status, and BYOK configuration.
Example prompts:
- "What plan am I on?"
- "How many credits do I have left?"
- "Do I have access to voice interviews?"
Create and Modify Tools
koji_create_study
Purpose: Create a new research study with structured questions and an AI-generated brief using proven research methodologies.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| topic | string | Yes | What you want to research |
| goal | string | No | Business decision this research will inform |
| target_audience | string | No | Who you want to interview |
| methodology | enum | No | 'mom_test', 'jtbd', 'discovery', 'exploratory', 'lead_magnet' |
| hypothesis | string | No | Your current assumption to test |
| context | string | No | Additional background information |
| estimated_duration | string | No | Target interview length |
| language | string | No | Interview language as ISO 639-1 code (default: "en") |
| opening_approach | string | No | How the AI interviewer should start |
| closing_approach | string | No | How the AI interviewer should end |
| interview_mode | enum | No | 'structured', 'exploratory', 'hybrid' |
| questions | array | No | Structured interview questions (see below) |
Question structure (questions array):
| Field | Type | Required | Description |
|---|---|---|---|
| text | string | Yes | The question as the AI interviewer should ask it |
| type | enum | Yes | 'open_ended', 'scale', 'single_choice', 'multiple_choice', 'ranking', 'yes_no' |
| section | string | No | Logical grouping (e.g., "NPS", "Feature Feedback") |
| required | boolean | No | Must the AI cover this question? (default: true) |
| config.scale_min | number | No | Min value for scale questions (default: 1) |
| config.scale_max | number | No | Max value for scale questions (default: 5) |
| config.scale_labels | object | No | Endpoint labels, e.g., {"1": "Very unlikely", "10": "Very likely"} |
| config.options | string[] | No | Options for choice/ranking questions (2-20 items) |
| config.allow_other | boolean | No | Allow free-text "Other" option for choice questions |
| probing.max_follow_ups | number | No | Follow-up probe depth: 0-3 (default: 1) |
| probing.instructions | string | No | Specific probing guidance for the AI |
| probing.anchor | boolean | No | For scales: ask "You said X — what would change that?" |
Methodology frameworks:
- Mom Test — Validate ideas without leading questions. Focuses on past behavior, not hypotheticals.
- Jobs-to-be-Done — Understand the job customers are hiring your product to do.
- Customer Discovery — Explore problem space before building solutions. Ideal for startups.
- Exploratory — Open-ended research to discover unknowns.
- Lead Magnet — Engage prospects with valuable research conversations.
Example prompts:
- "Create a Mom Test study about why enterprise users leave during onboarding"
- "Create a study with an NPS question (0-10 scale with anchor probing), a satisfaction rating (1-5), and 3 open-ended questions about user experience"
- "Create a JTBD study with a ranking question asking users to prioritize these 5 features"
koji_update_brief
Purpose: Update any section of a study's research brief, including replacing all structured questions.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | The study identifier |
| problem_statement | string | No | The research problem |
| decision_to_inform | string | No | What decision this research will inform |
| hypothesis | string | No | Hypothesis to validate |
| success_criteria | string | No | What success looks like |
| problem_cost | string | No | Cost/impact of the problem |
| required_experience | string | No | Participant required experience |
| behavior_of_interest | string | No | Behavior to study |
| relationship_to_problem | string | No | How participants relate to the problem |
| screening_question | string | No | Screening question for fit |
| methodology | enum | No | Change methodology framework |
| questions | array | No | Replace all questions (same structure as koji_create_study) |
| topics_to_explore | string[] | No | Topics for exploratory/hybrid mode |
| behaviors_to_probe | string[] | No | Specific behaviors to probe |
| guardrails | string[] | No | What the interviewer should NOT do |
| opening_approach | string | No | How the interview should start |
| closing_approach | string | No | How the interview should end |
| interview_mode | enum | No | 'structured', 'exploratory', 'hybrid' |
| estimated_duration | string | No | Expected interview length |
| language | string | No | Interview language (ISO 639-1) |
Important: The questions parameter replaces all existing questions. Include all questions you want to keep when updating.
Example prompts:
- "Add an NPS question to my study on a 0-10 scale"
- "Change the methodology to Jobs-to-be-Done"
- "Replace the interview questions with these 5 new ones"
- "Update the probing depth to 3 follow-ups for all questions"
koji_publish_study
Purpose: Publish a draft study to make it live. Sets up the AI interviewer, generates the interview link, and optionally configures voice interviews.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | The study identifier |
What happens on publish:
- Validates the research brief is complete enough (checks key fields)
- Generates the AI interviewer system prompt from your methodology and questions
- Sets up voice interview capability (if available on your plan)
- Creates the interview conversation endpoint
- Generates the shareable interview link
- Updates study status to 'active'
Returns: Study id, 'active' status, interview link, voice enabled flag, and brief progress percentage.
Example prompts:
- "Publish my churn research study"
- "Make my latest study live"
Analyze and Report Tools
koji_get_study_data
Purpose: Get structured, aggregated interview data for analysis, including per-question statistics for structured questions.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | The study identifier |
| sentiment | string | No | Filter by sentiment |
| limit | number | No | Max interviews (1-100, default 50) |
| offset | number | No | Pagination offset |
Returns: Study context (name, methodology, research goal), array of interview summaries with themes and sentiment, aggregate statistics (total completed, sentiment distribution, top themes with counts), and per-question aggregations.
Per-question aggregation fields:
- Scale questions: average, median, value distribution (e.g., "average NPS: 7.2, median: 8")
- Single/multiple choice: option frequency counts (e.g., "Search: 12, Referral: 8, Ads: 3")
- Ranking questions: average position per option
- Yes/no questions: yes/no counts
- Open-ended questions: sample qualitative answers
- Per-question confidence distribution and response counts
Example prompts:
- "What is the average NPS score from my study?"
- "Show me the feature ranking results"
- "What are the top themes across my interviews?"
- "How did respondents answer the satisfaction question?"
koji_generate_report
Purpose: Generate a comprehensive AI research report from your interview data. Takes 30-60 seconds.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | The study identifier (must have completed interviews) |
What the report includes:
- Executive summary with study context
- Key takeaways prioritized by importance
- Theme analysis with supporting evidence
- Charts (pie charts, bar charts, distribution data)
- Question coverage analysis
- Written findings narrative
- Actionable recommendations
- Statistical overview cards
- All findings linked back to source interviews via citations
Returns: Report summary (version, executive overview, key takeaway titles, sentiment breakdown, generation time). Use koji_get_report for full content.
Example prompts:
- "Generate a report from my customer discovery study"
- "Create a research report from my latest interviews"
koji_get_report
Purpose: Retrieve a generated report with optional section filtering.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | The study identifier |
| version | number | No | Specific report version (default: latest) |
| sections | string[] | No | Filter: 'executive_summary', 'key_takeaways', 'theme_analysis', 'charts', 'question_coverage', 'written_findings', 'recommendations', 'stat_cards' |
Returns: Full report data for requested sections, version info, interview counts, and publication status.
Example prompts:
- "Show me the executive summary from my report"
- "Get the recommendations section of my latest report"
- "Show me the charts from my pricing study report"
koji_publish_report
Purpose: Publish a report with a shareable public link, or unpublish a previously published report.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | The study identifier |
| publish | boolean | No | true to publish (default), false to unpublish |
Returns: Publication status, public URL, and public slug.
Example prompts:
- "Publish the report for my churn study"
- "Share a link to my latest research report"
- "Unpublish my pricing report"
Customize Tool
koji_configure_study
Purpose: Configure a study's interview page branding, lead form, interaction mode, URL slug, and Open Graph settings. This single tool replaces the former koji_customize_intake, koji_configure_lead_form, koji_update_settings, and koji_set_interview_slug tools.
Parameters:
Branding (interview landing page):
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | The study identifier |
| headline | string | No | Main title (max 100 chars) |
| subheadline | string | No | Secondary text (max 200 chars) |
| description | string | No | Description paragraph (max 500 chars) |
| cta_button_text | string | No | Button text (max 30 chars) |
| accent_color | hex string | No | Brand color (e.g., "#4F46E5") |
| show_orb | boolean | No | Show animated background orb |
Badges:
| Parameter | Type | Required | Description |
|---|---|---|---|
| show_duration | boolean | No | Show duration badge |
| duration_text | string | No | Custom duration text |
| show_anonymous | boolean | No | Show anonymity badge |
| anonymous_text | string | No | Custom anonymity text |
| custom_badges | array | No | Up to 4 custom badges with icon + text |
Lead form:
| Parameter | Type | Required | Description |
|---|---|---|---|
| lead_form_enabled | boolean | No | Enable/disable the form |
| lead_form_title | string | No | Form title (max 100 chars) |
| lead_form_description | string | No | Form description (max 300 chars) |
| lead_form_fields | array | No | Form fields (max 6): id, type, label, placeholder, required, options |
| lead_form_submit_text | string | No | Submit button text |
Field types: text, email, phone, select, textarea, checkbox
Interaction mode:
| Parameter | Type | Required | Description |
|---|---|---|---|
| enable_voice | boolean | No | Enable voice interviews |
| enable_text | boolean | No | Enable text interviews |
| default_mode | enum | No | 'voice' or 'text' |
URL and Open Graph:
| Parameter | Type | Required | Description |
|---|---|---|---|
| slug | string | No | Custom URL slug (3-60 chars, lowercase, hyphens) |
| og_title | string | No | Custom link preview title |
| og_description | string | No | Custom link preview description |
Footer:
| Parameter | Type | Required | Description |
|---|---|---|---|
| footer_text | string | No | Footer text |
| consent_text | string | No | Consent/privacy text |
| show_powered_by | boolean | No | Show "Powered by Koji" |
Only include the fields you want to change — omitted fields keep their current values. You can update any combination of sections in a single call.
Example prompts:
- "Set the headline to 'Share Your Experience' with accent color #FF6B35 and add a lead form asking for name and email"
- "Set the interview URL to 'acme-product-feedback' and enable voice as the default mode"
- "Add a custom badge with a shield icon saying 'GDPR Compliant' and set the OG title for link previews"
Distribute Tools
koji_export_data
Purpose: Export study data as structured JSON for external analysis or backup.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | The study identifier |
| include_brief | boolean | No | Include research brief (default: true) |
| include_transcripts | boolean | No | Include interview transcripts |
| include_respondents | boolean | No | Include respondent data |
| include_report_summary | boolean | No | Include report executive summary |
| transcript_limit | number | No | Transcripts per page (1-10, default 5) |
| transcript_offset | number | No | Transcript pagination offset |
Returns: Structured JSON with selected data sections. Transcripts are paginated to manage size.
Example prompts:
- "Export the brief and respondent data from my study"
- "Export the first 10 transcripts from my pricing study"
- "Get a full data export including the report summary"
koji_import_respondents
Purpose: Import contacts and generate personalized interview URLs for outreach campaigns.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| study_id | UUID | Yes | Must be a published (active) study |
| respondents | array | Yes | 1-500 respondents with display_name, email, external_id, metadata |
Returns: Array of created respondents with unique interview URLs containing tracking parameters.
Example prompts:
- "Import these 50 customers to my onboarding study"
- "Create interview links for Sarah Chen, James Park, and Maria Rodriguez"
- "Import respondents from my CRM list with their company names as metadata"
Tips for Effective Prompting
You do not need to name tools directly. Just describe what you want naturally:
| Instead of this | Say this |
|---|---|
| "Use koji_create_study with topic..." | "Create a study about why users prefer competitor X" |
| "Call koji_get_interviews with status completed" | "Show me all completed interviews" |
| "Run koji_generate_report" | "Generate a research report from my interviews" |
| "Use koji_configure_study to set headline" | "Set the interview page headline to 'Customer Feedback Survey'" |
Claude automatically selects the right tool based on your intent.
Related Documentation
- MCP Overview — Integration overview and capabilities
- Structured Questions Guide — Deep dive into question types and configuration
- Best Practices — Tips for effective MCP usage
- Authentication and Security — OAuth 2.1 details
Further reading on the blog
- The Continuous Discovery Handbook: How Product Teams Run Weekly Customer Interviews (2026) — 64% of software features are rarely or never used. Continuous discovery — weekly customer interviews baked into your product workflow — is t
- How Founders Validate Product Ideas with Customer Interviews (2026) — 42% of startups fail because they built something nobody wanted. Here's how to use customer interviews — including AI-powered ones — to vali
- How to Analyze Customer Interview Data: A Complete Guide — You ran the interviews. Now what? Here is a step-by-step process for turning raw transcripts into clear, actionable insights your team will
Related Articles
Structured Questions in AI Interviews
Mix quantitative data collection — scales, ratings, multiple choice, ranking — with AI-powered conversational follow-up in a single interview.
Koji MCP Integration Overview
Connect Koji to Claude, Cursor, and other AI assistants using the Model Context Protocol (MCP). Manage your entire research workflow conversationally — create studies, run interviews, analyze data, and generate reports without leaving your AI assistant.
Connect Koji to Cursor: MCP Setup Guide for Product Engineers
Wire the Koji MCP server into Cursor so the editor can pull live customer interview insights, themes, and quality scores while you ship features. Five-minute setup, fifteen tools.
MCP Best Practices — Getting the Most from Koji + Claude
Tips, patterns, and anti-patterns for using Koji MCP effectively. Learn how to write better prompts, choose methodologies, manage token budgets, and build efficient research workflows with AI.
MCP Authentication & Security
How Koji MCP authenticates with OAuth 2.1 and PKCE. Covers the authorization flow, token lifecycle, security model, data privacy, and how to revoke access.
Connect Koji to Claude (Setup Guide)
Step-by-step guide to connect your Koji account to Claude Desktop, Claude.ai, Cursor, and other MCP clients. Takes under 2 minutes with OAuth — no API keys required.