API Reference
All tools are accessed via the MCP connection at https://mcp.imadeitup.ai/mcp. Tools are named with a category_action convention (e.g., persona_create, conversation_ask_persona).
Use the sidebar to jump to a specific tool. Async operations (run_interview, analysis) return a taskId — poll with task_status and retrieve results with task_result.
Persona Tools
persona_create
persona
Generate realistic made-up personas with detailed psychological profiles. IMPORTANT: If the user specifies a number in their request (e.g., 'six engineers', 'three doctors'), use that number for the count parameter. We will suggest clarifications for broad demographics or generate immediately for specific ones.
| Parameter | Type | Description |
|---|---|---|
demographic |
stringrequiredmaxLength: 1000 | The demographic description for persona generation (max 1000 characters) |
count |
integeroptionalmin: 1, max: 6, default: 3 | Number of personas to generate (max 6). IMPORTANT: Extract this number from the user's request if they specify it (e.g., "six engineers" = count: 6) |
force |
booleanoptionaldefault: false | Skip demographic review and generate immediately |
addToGroup |
stringoptional | Add personas to existing group by UUID. Use group/list or group/search to find group IDs. |
groupName |
stringoptional | Custom name for the auto-created group. If omitted, a name is generated from the demographic. |
skipGroup |
booleanoptionaldefault: false | Skip group assignment entirely. Personas will be created without being added to any group. |
persona_list
persona
Browse all available made-up personas with optional demographic filtering. Supports pagination using limit (max results per page) and offset (number to skip) parameters
| Parameter | Type | Description |
|---|---|---|
demographicQuery |
stringoptional | Optional filter by demographic name or description |
limit |
numberoptionaldefault: 20 | Maximum number of personas to return (1-50) |
offset |
numberoptionaldefault: 0 | Number of personas to skip for pagination (e.g., offset=20 for page 2 with limit=20) |
persona_details
persona
Show complete background information for a specific made-up persona
| Parameter | Type | Description |
|---|---|---|
personaId |
stringrequired | Unique identifier for the persona (UUID string) |
persona_search
persona
Search made-up personas using natural language. Express any search criteria naturally - demographics, personality traits, professions, age ranges, locations, etc. (e.g. 'creative engineers in startups', '25-year-old designers from Europe', 'introverted marketing managers')
| Parameter | Type | Description |
|---|---|---|
naturalQuery |
stringrequired | Search query using natural language - express any search criteria naturally (e.g., "creative engineers in startups", "25-year-old designers from Europe", "introverted marketing managers") |
limit |
integeroptionalmin: 1, max: 100, default: 20 | Maximum number of results |
Group Tools
group_create
group
Create a new saved made-up persona group with specified made-up personas
| Parameter | Type | Description |
|---|---|---|
name |
stringrequiredminLength: 1, maxLength: 100 | Name for the saved group (1-100 characters) |
description |
stringoptional | Optional description of the group (max 500 characters) |
personaIds |
arrayrequiredminItems: 1, maxItems: 9 | Array of persona IDs (UUIDs) to include in the group (max 9) |
group_list
group
List all saved made-up persona groups for the authenticated user
No parameters required.
group_details
group
Get detailed information about a specific saved made-up group including all made-up personas
| Parameter | Type | Description |
|---|---|---|
groupId |
stringoptional | Group ID (UUID) to retrieve |
groupName |
stringoptional | Group name to retrieve (alternative to groupId) |
group_update
group
Update a saved group: add/remove made-up personas, rename, or update description
| Parameter | Type | Description |
|---|---|---|
groupId |
stringoptional | Group ID (UUID) to update |
groupName |
stringoptional | Group name to update (alternative to groupId) |
newName |
stringoptional | New name for the group |
newDescription |
stringoptional | New description for the group |
addPersonaIds |
arrayoptional | Persona IDs (UUIDs) to add to the group |
removePersonaIds |
arrayoptional | Persona IDs (UUIDs) to remove from the group |
group_delete
group
Delete a saved made-up persona group (this will not delete the made-up personas themselves)
| Parameter | Type | Description |
|---|---|---|
groupId |
stringoptional | Group ID (UUID) to delete |
groupName |
stringoptional | Group name to delete (alternative to groupId) |
Conversation Tools
conversation_ask_persona
conversation
Have a conversation with a specific made-up persona who responds in character according to their psychological profile and background. IMPORTANT: Pass the user's exact question/dialogue unmodified - do not rephrase, summarize, or interpret their words. OPTIONAL: Set includeRating=true to generate numeric rating distributions (1-5 scale with probabilities). Optionally specify scaleType (purchase_intent, importance, satisfaction, likelihood, agreement, sentiment) to match your question construct.
| Parameter | Type | Description |
|---|---|---|
personaId |
stringrequired | Unique identifier for the persona (UUID string) |
question |
stringrequiredminLength: 1, maxLength: 500 | The exact question or dialogue to ask the persona - pass through user's words unmodified, do not rephrase or interpret |
includeRating |
booleanoptional | Generate numeric rating distributions (1-5 scale with probabilities) |
scaleType |
enumoptional | Optional scale type hint for SSR rating conversion (only used if includeRating=true). Selects hardcoded anchor statements to match the question construct. |
conversation_ask_group
conversation
Ask a question to a group of personas. Use groupId for exact matches, groupName for smart matching to groups, or personaIds for direct specification. IMPORTANT: Pass the user's exact question/dialogue unmodified - do not rephrase, summarize, or interpret their words. OPTIONAL: Set includeRating=true to generate numeric rating distributions for each persona (1-5 scale with probabilities). Optionally specify scaleType (purchase_intent, importance, satisfaction, likelihood, agreement, sentiment) to match your question construct.
| Parameter | Type | Description |
|---|---|---|
question |
stringrequiredminLength: 1, maxLength: 500 | The exact question or dialogue to ask all personas - pass through user's words unmodified, do not rephrase or interpret |
groupId |
stringoptional | PREFERRED: Exact UUID of group |
groupName |
stringoptional | Name of group (supports fuzzy matching) |
personaIds |
arrayoptional | Direct persona IDs for ad-hoc groups |
includeRating |
booleanoptional | Generate numeric rating distributions for each persona response (1-5 scale with probabilities) |
scaleType |
enumoptional | Optional scale type hint for SSR (only used if includeRating=true). Selects hardcoded anchor statements to match the question construct. |
conversation_continue
conversation
Continue an existing threaded conversation with a made-up persona
| Parameter | Type | Description |
|---|---|---|
conversationId |
stringrequired | Required conversation ID from a previous conversation/ask-persona response |
question |
stringrequired | The next question or message in the conversation |
conversation_continue_group
conversation
Continue an existing group conversation with the same made-up personas or a subset of them
| Parameter | Type | Description |
|---|---|---|
groupConversationId |
stringrequired | ID of the group conversation to continue |
question |
stringrequired | Next question for the group |
personaIds |
arrayoptional | Optional: subset of personas to continue with. If omitted, continues with all original personas |
conversation_explain
conversation
Get detailed psychological analysis explaining why a made-up persona responded the way they did to your question. Use the messageId from any conversation response
| Parameter | Type | Description |
|---|---|---|
messageId |
stringrequired | The messageId from conversationInfo in any conversation/ask-persona or conversation/continue response - this UUID identifies the specific message to explain |
Research Tools
run_interview
research
Conduct structured interviews with personas. Returns text responses with automated sentiment analysis converting each response into 1-5 rating distributions and aggregate statistics (mean, distribution) per question. Match scaleType to question construct (satisfaction, likelihood, etc.). Returns Task ID - poll with task_status, retrieve with task_result.
| Parameter | Type | Description |
|---|---|---|
groupId |
stringoptional | UUID of saved group to interview |
groupName |
stringoptional | Name of saved group to interview |
personaIds |
arrayoptional | Array of persona UUIDs to interview directly (up to 6 personas) |
protocol |
enumoptionalvalues: "structured", default: "structured" | Interview protocol type (currently: structured only) |
questions |
arrayrequiredminItems: 1, maxItems: 6 | Questions to ask with optional per-question scale types (1-6 questions). Each question can specify its own semantic scale for construct-valid rating. |
includeRating |
booleanoptionaldefault: false | Generate Likert-scale ratings for responses via SSR. Enable for quantitative analysis, disable for exploratory/thematic research. Adds ~$0.00012 per response for embeddings. |
analysis
research
Perform statistical and thematic analysis on completed interviews. Provides descriptive statistics, group comparisons (t-test/ANOVA), outlier detection, and optional qualitative theme extraction for demographic segments. Requires Pro+ subscription. Use approve=false for preview/cost estimate. Returns Task ID - poll with task_status, retrieve with task_result.
| Parameter | Type | Description |
|---|---|---|
interviewIds |
arrayrequiredminItems: 1, maxItems: 200 | UUIDs of interviews for analysis |
goal |
stringoptional | Natural language description of analysis goal |
mode |
enumoptionalvalues: "full" | "qualitative" | "quantitative", default: "full" | Analysis type: full (stats + themes, requires ratings), qualitative (themes only, no ratings needed), quantitative (stats only, requires ratings) |
approve |
booleanoptionaldefault: false | Set to true to execute analysis, false for preview |
config |
objectoptional |
retrieve
research
Retrieve detailed data for analysis drill-down. Fetch full interview transcripts by interview_ids, specific exchanges by exchange_ids, all exchanges for conversation_ids, or persona profiles by persona_ids. Use exchange_ids from analysis outliers to investigate, or filter by codes to explore thematic clusters. Requires Pro+ subscription.
| Parameter | Type | Description |
|---|---|---|
interview_ids |
arrayoptional | Fetch full transcripts for these interviews |
exchange_ids |
arrayoptional | Fetch specific exchanges by ID |
conversation_ids |
arrayoptional | Fetch all exchanges for these conversations |
persona_ids |
arrayoptional | Fetch full persona profiles |
filter |
objectoptional | Filter exchanges by extracted codes |
Task Tools
task_status
task
Check the status and progress of a long-running task. Returns current status (queued/running/completed/failed/cancelled), progress percentage (0-100), and optional progress message. Use this to poll tasks that return a taskId
| Parameter | Type | Description |
|---|---|---|
taskId |
stringrequired | Task ID returned from async tool call |
task_result
task
Retrieve the final result of a completed long-running task. Returns the full result data if status is 'completed', or an error if the task failed. Use task_status first to check if ready
| Parameter | Type | Description |
|---|---|---|
taskId |
stringrequired | Task ID returned from async tool call |
task_cancel
task
Cancel a running long-running task (cooperative cancellation). The task will stop at the next cancellation check point. Only works for tasks with status 'queued' or 'running'
| Parameter | Type | Description |
|---|---|---|
taskId |
stringrequired | Task ID to cancel |
task_list
task
List recent long-running tasks for the current user. Shows task summaries ordered by creation time (newest first). Filter by status (queued/running/completed/failed/cancelled) and limit results (max 50). Use this to see your task history and find taskIds
| Parameter | Type | Description |
|---|---|---|
status |
enumoptional | Filter by task status (optional) |
limit |
numberoptionalmin: 1, max: 50, default: 20 | Maximum number of tasks to return (1-50, default: 20) |
Subscription Tools
subscription_plans
subscription
View available subscription plans and pricing. No parameters required
No parameters required.
subscription_status
subscription
View current subscription plan and usage statistics. No parameters required
No parameters required.
subscription_manage
subscription
General subscription management. Params: action={upgrade|portal}, tier={plus|pro|max}, currency={usd|eur|gbp}. IMPORTANT: Before calling, infer currency from conversation (user location/preferences) or explicitly ask the user which currency they prefer
| Parameter | Type | Description |
|---|---|---|
action |
enumoptionalvalues: "upgrade" | "portal", default: "portal" | Action to take: 'upgrade' for checkout flow or 'portal' for billing/management |
tier |
enumoptional | Subscription tier to upgrade to: plus ($7/€7/£6), pro ($14/€13/£11), max ($50/€47/£42) |
currency |
enumoptionalvalues: "usd" | "eur" | "gbp", default: "usd" | Currency for pricing: usd (dollars), eur (euros), gbp (pounds). IMPORTANT: Infer from conversation history (user's location, previous mentions) or explicitly ask the user which currency they prefer before calling this tool |
subscription_upgrade
subscription
Upgrade to a higher subscription tier. Params: tier={plus|pro|max}, currency={usd|eur|gbp}. Returns Stripe checkout URL for payment. IMPORTANT: Before calling, infer currency from conversation (user location/preferences) or explicitly ask the user which currency they prefer
| Parameter | Type | Description |
|---|---|---|
tier |
enumrequiredvalues: "plus" | "pro" | "max" | Subscription tier to upgrade to: plus ($7/€7/£6), pro ($14/€13/£11), max ($50/€47/£42) |
currency |
enumoptionalvalues: "usd" | "eur" | "gbp", default: "usd" | Currency for pricing: usd (dollars), eur (euros), gbp (pounds). IMPORTANT: Infer from conversation history (user's location, previous mentions) or explicitly ask the user which currency they prefer before calling this tool |
subscription_portal
subscription
Access Stripe billing portal to manage subscription (paid users only). Update payment method, view invoices, cancel subscription. No parameters required
No parameters required.
System Tools
system_about
system
Learn about I Made It Up: how made-up personas work, getting started guide, workflows, and important terms
No parameters required.
system_feedback
system
Submit feedback in your own words about your experience. Describe what happened, what you expected, or suggestions for improvement
| Parameter | Type | Description |
|---|---|---|
message |
stringrequiredminLength: 1 | Your feedback in your own words - describe what happened, what you expected, or what you'd like to see |
category |
enumoptional | Optional: Categorize your feedback (bugReport for issues, featureRequest for new features, generalFeedback for praise/suggestions, other for everything else) |