Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,541Letters: 14Defects: 1,323counted 4 min ago
teppi

Server definition

Hash
sha256:b290f9d32ca7412475b5aeca2069277e19766c58150dfacadb2fab7dacc90d61
What it is
What a remote MCP server returned when asked what it offers: 24 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Submits exactly one respondent-visible standalone question to one existing Audience, identified by exact ID or fuzzy name. It creates a private Study for that Audience, starts asynchronous responses from its Minds, and returns the Study identifier and links. Automatic classification may reformulate the question; this operation does not promise verbatim wording. Locked respondent wording and response formats require a reviewed and confirmed Study plan. Never use this operation for a questionnaire, battery, section, cohesive question set, or any request with two or more known questions; create a Study and plan the complete multi-question block instead. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset. In the final reply, include a clickable link to the returned workspaceUrl, preserving the URL verbatim even when a Study widget is displayed. This is the authenticated owner's workspace link, not a public share link. Use a returned sharedStudyUrl only for public or recipient handoff.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "attachments": { "description": "Files/images processed once and given to every Audience member as context. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "items": { "properties": { "id": { "description": "Stable asset ID used by questionAttachments to assign this file to specific planned questions.", "maxLength": 255, "minLength": 1, "type": "string" }, "name": { "description": "File name visible in the Study.", "minLength": 1, "type": "string" }, "path": { "description": "Storage path of a file already uploaded to Minds. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "minLength": 1, "type": "string" }, "type": { "description": "MIME type when known.", "minLength": 1, "type": "string" }, "url": { "description": "Fetchable HTTP(S), signed, or Minds workspace upload URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "minLength": 1, "type": "string" } }, "type": "object" }, "type": "array" }, "audienceId": { "description": "Audience ID (UUID). Preferred when known.", "type": "string" }, "audienceName": { "description": "Audience name to resolve via fuzzy match against the user's Audiences.", "type": "string" }, "groupId": { "description": "Legacy alias for audienceId. Accepted for compatibility.", "type": "string" }, "groupName": { "description": "Legacy alias for audienceName. Accepted for compatibility.", "type": "string" }, "name": { "description": "Optional name for the Study created to ask this question. Defaults to the Audience name.", "type": "string" }, "question": { "description": "Exactly one respondent-visible standalone question for every Mind in the Audience. The system may classify or reformat it, but any text in this field can reach the Minds and influence their answers. Include only the concept, question, and instructions the Minds should receive. Never place planner-only or MCP-client orchestration instructions here.", "minLength": 1, "type": "string" } }, "required": [ "question" ], "type": "object" }, "name": "ask_audience", "outputSchema": null }, { "description": "Submits exactly ONE respondent-visible question in an existing Study. Applicability: one standalone question, or one adaptive follow-up whose wording could not be known before earlier results. Exclusion: never use this operation for a questionnaire, survey, battery, section, cohesive question set, or any request containing two or more known questions—even when every question targets the same Study. The complete known set belongs in one planned and confirmed multi-question block inside the Study and must be submitted once, not question by question. Follow-up questions remain within the existing Study; this operation does not create or enumerate Studies. The full question value may reach respondents and is not planner-only metadata. Scale, categorical, and qualitative questions are classified automatically, and the response includes status and workspace links. Automatic classification may reformulate the question; this operation does not promise verbatim wording. Locked respondent wording and response formats require a reviewed and confirmed Study plan. The question is classified before it is queued, so the returned status is authoritative: queued or running means it was submitted to respondents, while planning_required means it was declined as an unrefined research objective and nothing was submitted. A planning_required response carries the original request plus a proposed headline and respondent questions for study planning. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset. In the final reply, include a clickable link to the returned workspaceUrl, preserving the URL verbatim even when a Study widget is displayed. This is the authenticated owner's workspace link, not a public share link. Use a returned sharedStudyUrl only for public or recipient handoff.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "attachments": { "description": "Files/images processed once and given to every participating Mind. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "items": { "properties": { "id": { "description": "Stable asset ID used by questionAttachments to assign this file to specific planned questions.", "maxLength": 255, "minLength": 1, "type": "string" }, "name": { "description": "File name visible in the Study.", "minLength": 1, "type": "string" }, "path": { "description": "Storage path of a file already uploaded to Minds. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "minLength": 1, "type": "string" }, "type": { "description": "MIME type when known.", "minLength": 1, "type": "string" }, "url": { "description": "Fetchable HTTP(S), signed, or Minds workspace upload URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "minLength": 1, "type": "string" } }, "type": "object" }, "type": "array" }, "audienceIds": { "description": "Optional subset of the Study's Audiences to ask; defaults to all Audiences.", "items": { "type": "string" }, "type": "array" }, "groupIds": { "description": "Legacy alias for audienceIds. Accepted for compatibility.", "items": { "type": "string" }, "type": "array" }, "historyMode": { "description": "Controls prior Study-history carryover for this one direct question. Defaults to none, so this measurement is independent of earlier Study questions. last5 is only for a conversational/adaptive question that requires respondent continuity; it costs roughly 2.4x wall-clock for about 0.6pp of accuracy. followup_only carries history only when the submitted question is classified as a conversational follow-up.", "enum": [ "last5", "followup_only", "none" ], "type": "string" }, "keywords": { "description": "Search keywords used to gather evidence for this question through v1 /studies/{studyId}/runs.", "items": { "properties": { "id": { "type": "string" }, "label": { "description": "Search keyword or phrase", "type": "string" }, "url": { "type": "string" } }, "required": [ "label" ], "type": "object" }, "type": "array" }, "links": { "description": "Web pages given to every Mind as evidence for this question through v1 /studies/{studyId}/runs.", "items": { "properties": { "id": { "type": "string" }, "label": { "description": "Human-readable label for the link", "type": "string" }, "url": { "description": "URL to fetch as evidence for this question", "type": "string" } }, "required": [ "label" ], "type": "object" }, "type": "array" }, "model": { "description": "Optional per-request model override. Must be sent together with provider.", "type": "string" }, "modelConnection": { "additionalProperties": false, "description": "Verified team model connection ID and current revision. Mutually exclusive with model/provider. Applies to Mind answers and verbatim rendering; supporting analysis retains platform models.", "properties": { "id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "revision": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "id", "revision" ], "type": "object" }, "panelId": { "description": "Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only when continuing the active Study from this MCP session.", "type": "string" }, "panelName": { "description": "Study name (fuzzy matched; legacy wire field name: panelName). Omit both panelName and panelId only when continuing the active Study from this MCP session.", "type": "string" }, "provider": { "description": "Provider for the model override. Must be sent together with model.", "enum": [ "anthropic", "openai", "google" ], "type": "string" }, "question": { "description": "Exactly ONE respondent-visible standalone question or result-dependent adaptive follow-up for every selected Mind. Never concatenate, enumerate, or otherwise place a questionnaire, survey, battery, section, cohesive question set, or two or more known questions in this field. The system may classify or reformat it, but any text here can reach the Minds and influence their answers. Include only the single question, its necessary stimulus, and respondent-facing instructions. Never place planner-only or MCP-client orchestration instructions here.", "minLength": 1, "type": "string" }, "responseForm": { "description": "How long and how shaped each qualitative answer should be: concise is one short message (5-20 words), standard is 1-3 sentences (25-90 words), expanded is 2-5 sentences (70-180 words). Omit to let the question itself decide. Set expanded when the researcher wants narrative depth (interviews, lived experience, reasoning) without editing the question wording, which a fixed instrument must keep exact. Ignored for scale, categorical and multiselect questions.", "enum": [ "concise", "standard", "expanded" ], "type": "string" }, "sourcePolicy": { "description": "Use knowledge_only to forbid web/request sources and require every answer to be grounded in processed Mind knowledge.", "enum": [ "auto", "knowledge_only" ], "type": "string" }, "studyId": { "description": "Study ID (UUID). Omit with studyName to continue the active Study from this MCP session.", "type": "string" }, "studyName": { "description": "Study name (fuzzy matched). Omit with studyId to continue the active Study from this MCP session.", "type": "string" } }, "required": [ "question" ], "type": "object" }, "name": "ask_study", "outputSchema": null }, { "description": "Supports operationId-only requests to read a previously accepted preview or creation job and retrieve its result without creating another Audience. Creates a grounded Audience of synthetic Minds from a population or audience brief. It can combine authoritative web research, supplied sources, research files, and reviewed spreadsheet distributions; persists provenance and allocation audits; supports balanced, segment-coverage, and benchmark-depth sizing; generates the same member portraits and Audience cover as in-app creation; can individually train every member of a large reviewed-dataset cohort in the background (trainMembers); is idempotent for identical inputs; and keeps the Audience private unless link sharing is enabled.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "audienceCreationMode": { "description": "How the Audience is sized. \"balanced\" (default): compact and representative for everyday research. It is the only mode with a hard wall on a size you state — a memberCount above 20 is refused with 403 MODE_CAP. \"segment_coverage\": two representatives per limiting grounded cell, from a 10-Mind floor; automatic sizing stops at 50, but a memberCount you state is bounded only by your plan. \"benchmark_depth\": repeated representation of limiting grounded cells for validation-ready segmentation; bounded by your plan allowance. The deeper two require a Team (enterprise) plan — on other plans the server SILENTLY downgrades to \"balanced\" and echoes the effective mode in structuredContent.audience.audienceCreationMode. Call get_audience_limits to see the ceilings that apply to your account.", "enum": [ "balanced", "segment_coverage", "benchmark_depth" ], "type": "string" }, "brief": { "description": "Free-text brief describing the population the Audience should represent. E.g. \"California high school students grades 9-12\", \"Berlin Späti customers\", \"Spanish lawyers\", \"management team of Coca Cola\". The server runs deep web research on this brief to find demographic / psychographic distributions from authoritative sources, then generates personas that proportionally reflect those distributions.", "maxLength": 200000, "minLength": 1, "type": "string" }, "cohortAllocation": { "description": "Deterministic allocation controls. Reviewed respondent datasets default to observed, which preserves the strongest privacy-safe structural relationships while keeping exact marginals; other sources default to independence. Use distributionNames/maxDistributions to choose axes, minSegmentCount for a feasible floor, and seed for reproducible external runs.", "properties": { "distributionNames": { "items": { "type": "string" }, "maxItems": 500, "type": "array" }, "enabled": { "type": "boolean" }, "includeProfilesInResponse": { "type": "boolean" }, "jointStrategy": { "enum": [ "independent", "aligned", "observed" ], "type": "string" }, "maxDistributions": { "maximum": 500, "minimum": 1, "type": "integer" }, "minSegmentCount": { "maximum": 20, "minimum": 0, "type": "integer" }, "seed": { "maxLength": 200, "type": "string" }, "targetOverrides": { "items": { "properties": { "distribution": { "type": "string" }, "segments": { "items": { "properties": { "label": { "type": "string" }, "pct": { "maximum": 100, "minimum": 0, "type": "number" } }, "required": [ "label", "pct" ], "type": "object" }, "maxItems": 200, "type": "array" } }, "required": [ "distribution", "segments" ], "type": "object" }, "maxItems": 500, "type": "array" } }, "type": "object" }, "datasetSegmentation": { "description": "Reviewed variable roles, distributions, and privacy-safe pairwise relationships returned by preview_audience_dataset_segmentation. Requires audienceCreationMode=\"benchmark_depth\". Structural variables shape one generalizable representative cohort; outcomes remain held out and joint combinations remain audit evidence only. Copy `respondentCount` and `recommendedMindCount` through from the preview — they cap the cohort size.", "properties": { "columns": { "description": "Column-level distributions from the preview. Used when `variables` is absent.", "items": { "properties": { "distribution": { "items": { "properties": { "respondentCount": { "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "sharePct": { "minimum": 0, "type": "number" }, "value": { "default": "", "type": "string" } }, "required": [ "value", "respondentCount", "sharePct" ], "type": "object" }, "maxItems": 30, "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "otherRespondentCount": { "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "validRespondentCount": { "maximum": 9007199254740991, "minimum": 0, "type": "integer" } }, "required": [ "key", "label", "distribution" ], "type": "object" }, "maxItems": 200, "type": "array" }, "combinations": { "description": "Observed joint profiles as audit counts. Copy the ids and counts from the preview; per-cell values are not needed.", "items": { "properties": { "id": { "type": "string" }, "respondentCount": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "sharePct": { "minimum": 0, "type": "number" } }, "required": [ "id", "respondentCount", "sharePct" ], "type": "object" }, "maxItems": 5000, "type": "array" }, "fileName": { "type": "string" }, "recommendedMindCount": { "description": "Preview-recommended cohort size. Caps how many Minds the benchmark run creates.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "respondentCount": { "description": "Total respondent rows in the reviewed sheet, copied from the preview.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "retainedCombinationIds": { "items": { "type": "string" }, "maxItems": 5000, "type": "array" }, "segmentationColumns": { "description": "Keys of the variables the user kept after review. These are the only ones that shape the cohort.", "items": { "type": "string" }, "maxItems": 200, "minItems": 1, "type": "array" }, "sheetName": { "type": "string" }, "variables": { "description": "Variable-level distributions from the preview (preferred over `columns` when present).", "items": { "properties": { "distribution": { "items": { "properties": { "respondentCount": { "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "sharePct": { "minimum": 0, "type": "number" }, "value": { "default": "", "type": "string" } }, "required": [ "value", "respondentCount", "sharePct" ], "type": "object" }, "maxItems": 30, "type": "array" }, "key": { "type": "string" }, "label": { "type": "string" }, "otherRespondentCount": { "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "validRespondentCount": { "maximum": 9007199254740991, "minimum": 0, "type": "integer" } }, "required": [ "key", "label", "distribution" ], "type": "object" }, "maxItems": 200, "type": "array" } }, "required": [ "fileName", "segmentationColumns", "combinations" ], "type": "object" }, "excludeDistributions": { "description": "Exact axis names whose composition quotas should be removed. Age remains as one eligibility range without within-range shares; explicit gender membership remains enforced. Include required eligibility axes in cohortAllocation.distributionNames. Original evidence stays in reviewDistributions.", "items": { "maxLength": 200, "minLength": 1, "type": "string" }, "maxItems": 200, "type": "array" }, "files": { "description": "Optional already-uploaded research files. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset. The server analyzes these through the same extended screener/questionnaire path as the in-app New Audience uploader, including study roles, screening and quota rules, review distributions, and grounding provenance.", "items": { "properties": { "name": { "description": "File name", "type": "string" }, "url": { "description": "URL of an already-uploaded file. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "minLength": 1, "type": "string" } }, "required": [ "name", "url" ], "type": "object" }, "maxItems": 20, "type": "array" }, "groundingPreview": { "description": "Review the quota axes BEFORE any Mind exists. When true, the server runs research grounding and deterministic cohort allocation without creating an Audience or Minds or consuming a generation allowance. To revise a saved preview without repeating research, pass its unchanged reviewedGroundingJson/SHA pair together with groundingPreview and the revised exclusion/allocation options. Fresh research uses the same durable operation as the public REST API; this tool polls it to completion. The response includes effective target percentages and integer counts; explicit allocation targets that do not match grounded axes fail closed. Present the plan to the user, then call again without groundingPreview and pass reviewedGroundingJson plus reviewedGroundingSha256 unchanged with the same allocation options.", "type": "boolean" }, "groupCreationMode": { "description": "Legacy alias for audienceCreationMode — same values, same behaviour. How the Audience is sized. \"balanced\" (default): compact and representative for everyday research. It is the only mode with a hard wall on a size you state — a memberCount above 20 is refused with 403 MODE_CAP. \"segment_coverage\": two representatives per limiting grounded cell, from a 10-Mind floor; automatic sizing stops at 50, but a memberCount you state is bounded only by your plan. \"benchmark_depth\": repeated representation of limiting grounded cells for validation-ready segmentation; bounded by your plan allowance. The deeper two require a Team (enterprise) plan — on other plans the server SILENTLY downgrades to \"balanced\" and echoes the effective mode in structuredContent.audience.audienceCreationMode. Call get_audience_limits to see the ceilings that apply to your account.", "enum": [ "balanced", "segment_coverage", "benchmark_depth" ], "type": "string" }, "includeWebSearch": { "default": true, "description": "Set false to skip Exa web search and extraction completely. The Audience is then grounded only on the brief and supplied files, links, keywords, and structurally parsed respondent data.", "type": "boolean" }, "isLinkSharingEnabled": { "default": false, "description": "Set true ONLY when the user explicitly asked for a public/shareable link. Defaults to false: the Audience is private to its owner and no share URL is generated. Enabling this publishes the Audience — including its grounding, sources and personas — at a world-readable URL that needs no login. Do not enable it to \"be helpful\".", "type": "boolean" }, "keywords": { "description": "Optional Exa web-search seeds added alongside the brief.", "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "links": { "description": "Optional URLs scraped server-side for additional context (e.g. an article describing the population).", "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "memberCount": { "description": "Exact number of Minds to create. Pass this whenever the user states a size (\"exactly 50 per region\", \"genau 50 Minds je Zelle\") instead of relying on the server to parse the number out of the brief. When omitted, the size is inferred from the brief and, failing that, from the creation mode's evidence-based automatic sizing. Two separate refusals apply: 403 MODE_CAP above 20 in \"balanced\" mode (switch to segment_coverage or benchmark_depth), and 403 PLAN_LIMIT above your plan's per-Audience cap. The 6000 accepted here is the absolute system ceiling, not your allowance — call get_audience_limits for the real one. The Audience is never created at a partial size.", "exclusiveMinimum": 0, "maximum": 6000, "type": "integer" }, "name": { "description": "Optional Audience name override. When omitted, the server names the Audience from the brief or the LLM detection result.", "maxLength": 100, "type": "string" }, "operationId": { "description": "Resume a queued preview or creation by its returned jobId. Reads its v1 operation status without creating or charging anything. Supply this alone; do not repeat the creation brief to check progress.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "reviewedGroundingJson": { "description": "Exact reviewedGroundingJson returned by groundingPreview or import_audience_sources. Pass it unchanged together with reviewedGroundingSha256 on a re-preview or creation call; the server reuses this reviewed snapshot instead of rerunning grounding research.", "maxLength": 2000000, "minLength": 1, "type": "string" }, "reviewedGroundingSha256": { "description": "SHA-256 returned by the same groundingPreview. Required together with reviewedGroundingJson; any mismatch is rejected before Audience or Mind materialisation.", "pattern": "^[0-9a-f]{64}$", "type": "string" }, "text": { "description": "Legacy alias for `brief`. Accepted for back-compat.", "maxLength": 200000, "minLength": 1, "type": "string" }, "trainMembers": { "description": "Opt-in per-Mind training for large reviewed-dataset cohorts (default false). By default a reviewed-dataset Audience of more than ~40 Minds is bulk-created immediately ready: exact demographics, but no per-Mind research training (empty system prompt, no knowledge items). Set true to create those Minds untrained instead and enqueue each one through the same per-member training pipeline the in-app draft flow uses, preserving its deterministic cohort profile and the request locale. The tool still returns as soon as the Audience exists — training continues in the background (structuredContent.audience.memberTraining reports what was queued); poll each member with GET /api/v1/minds/{id}/training. Has no effect on Audiences whose members are already trained individually.", "type": "boolean" } }, "type": "object" }, "name": "create_audience_from_brief", "outputSchema": null }, { "description": "Creates a new Study workspace from existing Audiences or inline Audience configurations; it does not ask questions or run research. Follow-up research in an existing Study does not require another Study. This operation ALWAYS creates: a matching name never attaches to an existing Study, and only a byte-identical repeat of the same call (same name, Audience IDs, inline configs, and sharing flag) replays the Study the first call made, reported as replayed: true. Settle the complete Audience set before calling: no advertised tool adds an Audience to an existing Study, and Study deletion is unavailable in this app, so calling again with one extra Audience leaves a permanent duplicate. List the existing Studies first when the one you want may already exist. Every questionnaire, survey, battery, section, cohesive question set, or request with two or more known questions belongs in one planned and confirmed multi-question block inside that Study. Never submit such a known set as separate direct questions. A direct question is appropriate only when exactly one standalone question is known or the next question depends on earlier results. Composite creation is atomic and rolls back partial Audience failures. Studies are private by default; enabling link sharing also publishes the attached Audiences and Minds.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "audienceConfigs": { "description": "Preferred field for new Audiences to create and attach atomically.", "items": { "properties": { "mindIds": { "description": "IDs of existing Minds to add to this Audience.", "items": { "type": "string" }, "type": "array" }, "name": { "description": "Audience name (optional — defaults to \"Audience N\").", "type": "string" } }, "type": "object" }, "type": "array" }, "audienceIds": { "description": "Preferred field for existing Audience IDs to attach — use list_audiences to find IDs.", "items": { "type": "string" }, "type": "array" }, "groupConfigs": { "description": "Legacy alias for audienceConfigs.", "items": { "properties": { "mindIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" } }, "type": "object" }, "type": "array" }, "groupIds": { "description": "Legacy alias for audienceIds.", "items": { "type": "string" }, "type": "array" }, "isLinkSharingEnabled": { "default": false, "description": "Set true ONLY when the user explicitly asked for a public/shareable Study link. Defaults to false: the Study is private to its owner and no share URL is generated. Enabling this ALSO publishes every attached Audience and every Mind inside them at world-readable URLs — including pre-existing Audiences passed via audienceIds. Do not enable it to \"be helpful\".", "type": "boolean" }, "name": { "description": "Name for the Study workspace (e.g., \"Brand Perception Study\", \"Q4 Market Research\")", "minLength": 1, "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "create_study", "outputSchema": null }, { "description": "Exports an Audience brief through the same unified branded renderer used by the web app. Supports Markdown, PDF, DOCX, and PPTX. Binary artifacts are returned as base64.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "audienceId": { "description": "Audience ID (UUID).", "type": "string" }, "audienceName": { "description": "Audience name (fuzzy matched).", "type": "string" }, "force": { "description": "Regenerate instead of returning a cached artifact.", "type": "boolean" }, "format": { "description": "Export format: \"md\" (default), \"pdf\", \"docx\", or \"pptx\"", "enum": [ "md", "markdown", "pdf", "docx", "pptx" ], "type": "string" }, "groupId": { "description": "Legacy alias for audienceId. Accepted for compatibility.", "type": "string" }, "groupName": { "description": "Legacy alias for audienceName. Accepted for compatibility.", "type": "string" } }, "type": "object" }, "name": "export_audience", "outputSchema": null }, { "description": "Exports a completed website heatmap from a Study result, identified by the message ID reported with the completed result. Returns the same ZIP archive as the web app, including its unified-renderer PDF report, Markdown, images, and metadata.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "force": { "description": "Regenerate the ZIP archive instead of returning the cached artifact.", "type": "boolean" }, "messageId": { "description": "ID of the completed Study result containing the website heatmap. Completed Study results report this identifier when the answer carries a heatmap.", "minLength": 1, "type": "string" }, "panelId": { "description": "Study ID (UUID; legacy wire field name: panelId)", "type": "string" }, "panelName": { "description": "Study name (fuzzy matched; legacy wire field name: panelName)", "type": "string" }, "studyId": { "description": "Study ID (UUID).", "type": "string" }, "studyName": { "description": "Study name (fuzzy matched).", "type": "string" } }, "required": [ "messageId" ], "type": "object" }, "name": "export_heatmap", "outputSchema": null }, { "description": "Generates a branded profile for one existing Mind, identified by exact ID or fuzzy name. Markdown is returned inline by default; PDF, DOCX, and PPTX artifacts are returned as base64 with a workspace link.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "force": { "description": "Regenerate instead of returning a cached artifact.", "type": "boolean" }, "format": { "description": "Export format: \"md\" (default) markdown persona profile (returned inline), \"pdf\" portrait branded profile, \"docx\" Word document, \"pptx\" editable branded deck", "enum": [ "md", "markdown", "pdf", "docx", "pptx" ], "type": "string" }, "mindId": { "description": "Mind ID (UUID)", "type": "string" }, "mindName": { "description": "Mind name (fuzzy matched)", "type": "string" } }, "type": "object" }, "name": "export_mind", "outputSchema": null }, { "description": "Starts an asynchronous export of Study results and returns an export job ID. Supports executive briefs and full reports in PDF, DOCX, PPTX, or Markdown, plus raw data in CSV, XLS, or SPSS SAV.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "force": { "description": "Regenerate instead of returning a cached artifact.", "type": "boolean" }, "format": { "description": "Export format: \"pdf\" (default), \"docx\", \"pptx\", \"csv\", \"xls\", \"sav\", or \"md\" (also accepts \"markdown\"). Executive-summary and full-report PPTX exports use a slide-native 16:9 layout.", "enum": [ "pdf", "docx", "pptx", "csv", "xls", "sav", "md", "markdown" ], "type": "string" }, "kind": { "description": "Report kind. Defaults to full_report, except CSV/XLS/SAV which default to raw_data.", "enum": [ "executive_brief", "full_report", "raw_data" ], "type": "string" }, "length": { "description": "Requested report detail for executive_brief and full_report exports.", "enum": [ "brief", "standard", "detailed" ], "type": "string" }, "panelId": { "description": "Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only when exporting the active Study from this MCP session.", "type": "string" }, "panelName": { "description": "Study name (fuzzy matched; legacy wire field name: panelName). Omit both panelName and panelId only when exporting the active Study from this MCP session.", "type": "string" }, "scheduledRunId": { "description": "Export only the messages produced by one scheduled run of this Study, instead of the whole timeline. Use the run ID from the Study schedule history.", "type": "string" }, "studyId": { "description": "Study ID (UUID). Omit with studyName to export the active Study.", "type": "string" }, "studyName": { "description": "Study name (fuzzy matched). Omit with studyId to export the active Study.", "type": "string" } }, "type": "object" }, "name": "export_study", "outputSchema": null }, { "description": "**Call this before creating an Audience whenever a size is in play** — the user named a number, asked for \"as many as possible\", or you are choosing a creation mode. Returns the ceilings that apply to the authenticated connector account: the per-Audience plan cap including any configured team allowance, the custom-size maximum, and per-mode ceilings. The response identifies scope.userId, scope.teamId, allowance.source and checkedAt. Match that account/team to the intended workspace before claiming its limit; another connector or browser login can have a different allowance. These are sizes for each Audience, not total workspace capacity, remaining credits or a reservation of capacity.\n\nRead the two mode ceilings carefully, they are different things: `automaticSizingCeiling` bounds the size the server picks when you send no memberCount, while `explicitCountCeiling` bounds a size you state. Only \"balanced\" has the latter — exceed it and creation is refused with MODE_CAP. In the deeper modes a stated size is bounded by `memberCap` alone.\n\nPrefer calling this over guessing: being refused mid-creation is expensive, because the build has already been enqueued by then.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "mode": { "description": "Report only this creation mode. Omit to see every mode.", "enum": [ "balanced", "segment_coverage", "benchmark_depth" ], "type": "string" } }, "type": "object" }, "name": "get_audience_limits", "outputSchema": null }, { "description": "Returns durable progress or results for one confirmed multi-question run inside a Study, including its immutable confirmed plan, server-prepared execution plan, respondent-visible question audit, question progress, response artifacts, deterministic method calculations, and stage readiness. Progress is question-level (settled/total). Completed response artifacts contain every participating Mind’s answer and grow with respondent count; internal generation and language-review diagnostics are omitted.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "panelId": { "description": "Legacy alias for the Study workspace ID. Accepted for compatibility.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "panelName": { "description": "Legacy alias for studyName. Accepted for compatibility.", "type": "string" }, "runId": { "description": "Multi-question run ID returned by run_study_questions. Preferred.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "studyId": { "description": "Study workspace ID (UUID). When panelId is supplied for compatibility, studyId may carry the legacy run identifier.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "studyName": { "description": "Study workspace name for fuzzy matching.", "type": "string" } }, "type": "object" }, "name": "get_study_run", "outputSchema": null }, { "description": "Applicability: use only when the user asks to find, inspect, or check a Study or its export. For a deletion-only request, do not call this or another lookup tool: Study deletion is unavailable in this app. Explain the limitation and direct the user to the Minds workspace at https://getminds.ai/ or authorized support without first retrieving the Study. Returns the current Study state, progress for in-flight questions, completed per-Audience results, linked Minds, Study links, and the status of a specific asynchronous export job when export identifiers are supplied. Values can be numeric answers or classified summary labels; message fields contain the original Mind responses when available. locale is the Study display locale, not a guarantee of the language of every response. An in-flight question reports \"0 Minds answered so far\" and stays at zero for its whole run — partial per-Mind progress is not persisted — then jumps straight to the finished table, so zero is not evidence that the run is stuck. This response cannot be narrowed: it always covers every question the Study has ever run, with the full per-Mind answer table repeated in structuredContent, so it grows with questions x Audiences x Minds x answer length and a large Study returns megabytes that a host may spill to a file instead of showing inline. To follow a confirmed multi-question run, poll the multi-question run status operation instead, which returns question-level counters only. In the final reply, include a clickable link to the returned workspaceUrl, preserving the URL verbatim even when a Study widget is displayed. This is the authenticated owner's workspace link, not a public share link. Use a returned sharedStudyUrl only for public or recipient handoff.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "exportFormat": { "description": "Asynchronous export format whose status should be returned (defaults to pdf). HTML and PNG are accepted here only to finish polling previously created executive-summary jobs.", "enum": [ "pdf", "html", "png", "docx", "pptx", "csv", "xls", "sav", "md" ], "type": "string" }, "exportJobId": { "description": "Export job ID returned by export_study. Pass it with exportKind and exportFormat to poll that exact artifact.", "minLength": 1, "type": "string" }, "exportKind": { "description": "Asynchronous export kind whose status should be returned (defaults to full_report).", "enum": [ "executive_brief", "full_report", "raw_data" ], "type": "string" }, "panelId": { "description": "Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only for the active Study from this MCP session.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "panelName": { "description": "Study name (fuzzy matched; legacy wire field name: panelName). Omit both panelName and panelId only for the active Study from this MCP session.", "type": "string" }, "studyId": { "description": "Study ID (UUID). Omit with studyName to use the active Study.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "studyName": { "description": "Study name (fuzzy matched). Omit with studyId to use the active Study.", "type": "string" } }, "type": "object" }, "name": "get_study_status", "outputSchema": null }, { "description": "Returns or refreshes the semantic summary for a Study as Markdown plus flexible evidence blocks. Website, image, and video analyses retain heatmap-compatible block metadata.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "force": { "default": false, "description": "Regenerate even when the covered message range is unchanged.", "type": "boolean" }, "length": { "default": "standard", "enum": [ "short", "standard", "detailed" ], "type": "string" }, "panelId": { "description": "Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only for the active Study from this MCP session.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "panelName": { "description": "Study name for fuzzy matching (legacy wire field name: panelName). Omit both panelName and panelId only for the active Study from this MCP session.", "type": "string" }, "refresh": { "default": false, "description": "Generate or refresh the summary instead of only reading the persisted summary.", "type": "boolean" }, "studyId": { "description": "Study ID (UUID). Omit with studyName to use the active Study.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "studyName": { "description": "Study name for fuzzy matching. Omit with studyId to use the active Study.", "type": "string" } }, "type": "object" }, "name": "get_study_summary", "outputSchema": null }, { "description": "Imports supplied UTF-8 text, Markdown, CSV and JSON research files into account-owned storage. Accepts file contents rather than local paths. Identical file imports are safe to retry. Optional caller-reviewed grounding JSON binds distributions to existingFiles followed by files in sourceIdx order, returning a normalized snapshot and checksum for audience preview and creation. This operation creates no Audience or Minds and performs no web search or independent verification of supplied percentages.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "existingFiles": { "default": [], "items": { "additionalProperties": false, "properties": { "name": { "maxLength": 200, "minLength": 1, "type": "string" }, "url": { "maxLength": 2000, "minLength": 1, "type": "string" } }, "required": [ "name", "url" ], "type": "object" }, "maxItems": 20, "type": "array" }, "files": { "default": [], "items": { "additionalProperties": false, "properties": { "content": { "maxLength": 5242880, "minLength": 1, "type": "string" }, "name": { "maxLength": 200, "minLength": 1, "pattern": "\\.(txt|md|csv|json)$", "type": "string" } }, "required": [ "name", "content" ], "type": "object" }, "maxItems": 20, "type": "array" }, "groundingJson": { "description": "Optional explicitly supplied distribution JSON (the grounding object, not respondent rows). Sources are bound to the files in request order: existingFiles followed by files. Import does not assert independent verification of the supplied percentages.", "maxLength": 2000000, "minLength": 1, "type": "string" } }, "type": "object" }, "name": "import_audience_sources", "outputSchema": null }, { "description": "Lists the authenticated user's Audiences, including member Minds, sharing state, and workspace or shared links. Accepts an optional fuzzy name search. In the final reply, include clickable links to each returned Audience workspaceUrl and the top-level workspaceUrl, preserving the URLs verbatim. These are authenticated workspace links, not public share links. Use sharedAudienceUrl only for public or recipient handoff.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "searchQuery": { "description": "Search for an Audience by name (fuzzy matching supported)", "type": "string" } }, "type": "object" }, "name": "list_audiences", "outputSchema": null }, { "description": "Lists the authenticated team’s model connections with IDs, current revisions, endpoints, and verified text, structured-output, streaming, and tool capabilities. Results contain selection metadata and pagination, excluding provider credentials and raw probe output.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cursor": { "description": "Next-page cursor from a prior result.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" } }, "type": "object" }, "name": "list_model_connections", "outputSchema": null }, { "description": "Lists Minds research methods with availability, complexity, executable status, and fallback metadata. Results distinguish currently executable methods from experimental or planned methods.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "includePlanned": { "default": true, "description": "Include methods that are currently planned/non-executable so the model can explain framework compatibility. Availability is dynamic; only entries with executable:true can run.", "type": "boolean" } }, "type": "object" }, "name": "list_research_methods", "outputSchema": null }, { "description": "Applicability: use only when the user asks to find, inspect, or check a Study or its export. For a deletion-only request, do not call this or another lookup tool: Study deletion is unavailable in this app. Explain the limitation and direct the user to the Minds workspace at https://getminds.ai/ or authorized support without first retrieving the Study. Lists the authenticated user's Studies with their Audiences, Minds, status, sharing state, and workspace or shared links. Accepts an optional fuzzy name search. A Study is the persistent workspace that contains its Audiences, questions, multi-question blocks, results, exports, and history.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "searchQuery": { "description": "Search for a Study by name (fuzzy matching supported)", "type": "string" } }, "type": "object" }, "name": "list_studies", "outputSchema": null }, { "description": "Lists durable unfinished study drafts, or returns the complete saved planning state for one exact draft ID. Draft records are distinct from running or completed studies.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "draftId": { "description": "Exact study draft ID to retrieve. Omit to list all resumable study drafts owned by the authenticated user.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" } }, "type": "object" }, "name": "list_study_drafts", "outputSchema": null }, { "description": "List your own and team-shared Custom Study templates, most used first, or read one exact template including its revision, questions, response settings and question attachments.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "templateId": { "description": "Omit to list your own and team-shared Study templates.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" } }, "type": "object" }, "name": "list_study_templates", "outputSchema": null }, { "description": "Save, explicitly update, delete or use a Custom research template. Templates are private by default. Owners can set update.isSharedWithTeam to share with their current team or turn sharing off. Teammates can read and use shared templates; only owners can update, delete or change sharing. Use creates an independent editable draft and never starts research. Save exact questions, response settings and question attachments. Context and Audiences are always entered fresh. Provide save.requestId for retry-safe creation. Updates and use require the current revision. Use also requires a fresh requestId UUID per intended draft; reuse it only when retrying the same request.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "action": { "enum": [ "save", "update", "use", "delete" ], "type": "string" }, "save": { "additionalProperties": false, "properties": { "configuration": { "additionalProperties": false, "properties": { "goal": { "enum": [ "concept", "comparison", "website", "pricing", "market", "explore" ], "type": "string" }, "methodId": { "const": "guided-research", "type": "string" }, "questions": { "items": { "additionalProperties": false, "properties": { "attachments": { "default": [], "items": { "additionalProperties": false, "properties": { "id": { "maxLength": 200, "minLength": 1, "type": "string" }, "kind": { "const": "link", "type": "string" }, "mediaType": { "const": "video", "type": "string" }, "mimeType": { "maxLength": 200, "type": "string" }, "name": { "maxLength": 500, "minLength": 1, "type": "string" }, "path": { "maxLength": 2000, "type": "string" }, "sizeBytes": { "minimum": 0, "type": "number" }, "url": { "maxLength": 4000, "minLength": 1, "type": "string" } }, "required": [ "id", "name", "url" ], "type": "object" }, "maxItems": 30, "type": "array" }, "response": { "additionalProperties": false, "properties": { "categoricalOptions": { "items": { "maxLength": 2000, "minLength": 1, "type": "string" }, "maxItems": 100, "type": "array" }, "maxSelections": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "scaleRange": { "items": { "type": "number" }, "maxItems": 2, "minItems": 2, "type": "array" }, "type": { "enum": [ "qualitative", "categorical", "multiselect", "scale" ], "type": "string" } }, "required": [ "type" ], "type": "object" }, "text": { "maxLength": 20000, "minLength": 1, "type": "string" } }, "required": [ "text", "response" ], "type": "object" }, "maxItems": 200, "minItems": 1, "type": "array" }, "studyLocale": { "enum": [ "ar", "de", "en", "es", "fr", "ja", "ko", "tr", "zh" ], "type": "string" }, "version": { "const": 1, "type": "number" } }, "required": [ "version", "goal", "studyLocale", "questions", "methodId" ], "type": "object" }, "name": { "maxLength": 200, "minLength": 1, "type": "string" }, "requestId": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" } }, "required": [ "name", "configuration" ], "type": "object" }, "templateId": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "update": { "additionalProperties": false, "properties": { "configuration": { "additionalProperties": false, "properties": { "goal": { "enum": [ "concept", "comparison", "website", "pricing", "market", "explore" ], "type": "string" }, "methodId": { "const": "guided-research", "type": "string" }, "questions": { "items": { "additionalProperties": false, "properties": { "attachments": { "default": [], "items": { "additionalProperties": false, "properties": { "id": { "maxLength": 200, "minLength": 1, "type": "string" }, "kind": { "const": "link", "type": "string" }, "mediaType": { "const": "video", "type": "string" }, "mimeType": { "maxLength": 200, "type": "string" }, "name": { "maxLength": 500, "minLength": 1, "type": "string" }, "path": { "maxLength": 2000, "type": "string" }, "sizeBytes": { "minimum": 0, "type": "number" }, "url": { "maxLength": 4000, "minLength": 1, "type": "string" } }, "required": [ "id", "name", "url" ], "type": "object" }, "maxItems": 30, "type": "array" }, "response": { "additionalProperties": false, "properties": { "categoricalOptions": { "items": { "maxLength": 2000, "minLength": 1, "type": "string" }, "maxItems": 100, "type": "array" }, "maxSelections": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "scaleRange": { "items": { "type": "number" }, "maxItems": 2, "minItems": 2, "type": "array" }, "type": { "enum": [ "qualitative", "categorical", "multiselect", "scale" ], "type": "string" } }, "required": [ "type" ], "type": "object" }, "text": { "maxLength": 20000, "minLength": 1, "type": "string" } }, "required": [ "text", "response" ], "type": "object" }, "maxItems": 200, "minItems": 1, "type": "array" }, "studyLocale": { "enum": [ "ar", "de", "en", "es", "fr", "ja", "ko", "tr", "zh" ], "type": "string" }, "version": { "const": 1, "type": "number" } }, "required": [ "version", "goal", "studyLocale", "questions", "methodId" ], "type": "object" }, "expectedRevision": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "isSharedWithTeam": { "type": "boolean" }, "name": { "maxLength": 200, "minLength": 1, "type": "string" } }, "required": [ "expectedRevision" ], "type": "object" }, "use": { "additionalProperties": false, "properties": { "expectedRevision": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "requestId": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" } }, "required": [ "expectedRevision", "requestId" ], "type": "object" } }, "required": [ "action" ], "type": "object" }, "name": "manage_study_template", "outputSchema": null }, { "description": "Creates or revises a non-executing draft for a multi-question plan inside an existing Study. Applicability: this is the setup operation for every questionnaire, survey, battery, section, cohesive question set, or request containing two or more known questions—even when the user did not say “study.” Include every question known now in this ONE draft, group related questions into cohesive named modules (question blocks or batteries), preserve their logical order, and execute them later as one confirmed run inside the Study. Never split a known set across one-question drafts or sequential runs. A one-question draft is valid only for genuinely standalone research; an adaptive follow-up whose wording depends on unavailable results can be planned later. The draft records intent, respondent-visible stimulus and questions, response formats, locale, method, outputs, confirmation questions, execution source policy, and revision metadata. Its source policy is part of the exact revision the user reviews; omitted means the controlled request_only default, while auto is an explicit experiment opt-in. Saving keeps bounded history and can discard older saved drafts or revisions. It does not start research. When the user supplies a fixed or pre-registered instrument whose wording, order, and response formats must not change, pass it as questions (one entry per item with its exact response contract) instead of request; the planner is then bypassed and the draft is an exact transcription. Explicit response contracts remain authoritative during execution, including with attachments: categoricalOptions retain their labels and order rather than being replaced by inferred A/B file labels. Answer carryover: every questionnaire item is an independent measurement. A confirmed run carries no answer history — a Mind answering item 12 has not seen its own answers to items 1-11, and items fan out in parallel — and nothing on this run can change that (historyMode is settable only on a single standalone question, and defaults to none there too). So cross-item order, fatigue, and carryover effects do not arise, and rotation or least-fill designs that exist only to control them buy nothing here; conversely, any item that must build on an earlier one has to restate what it needs in its own text or stimulus, because a back-reference resolves to nothing. Scoping stimuli to questions: attachments belong to THIS draft (one question block), not to the Study. With a single attachment, every question receives it unless questionAttachments maps that question to an empty list, which means no assets. With two or more attachments, every question needs its own questionAttachments entry (use [] for no assets) and every attachment must be assigned to at least one question, or the run is refused before any Mind answers; passing questionAttachments also drops any planner-suggested assignment from the questions you omit. Map pre-exposure, screening, demographic, and behavioural-frequency items to [] so the stimulus does not prime them. A monadic design can instead use one draft per cell whose attachments hold only that stimulus, so every question in the block receives it with no mapping to typo. That is stimulus scoping, not the forbidden question-by-question drip: each draft still carries a complete block. On a revision, omitting attachments keeps the previous set; pass an empty array to clear it. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset. Before asking for confirmation, show the returned draftPlanId and numeric revision, exact respondent-visible stimulus and questions, proposed response formats, and all confirmation questions or advanced-method opt-ins. State that research has not started. A request to skip review is not confirmation of a draft the user has not seen. Wait for explicit confirmation of this displayed revision before execution.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "answers": { "description": "Answers to the draft confirmation questions.", "items": { "additionalProperties": false, "properties": { "answer": { "description": "The user's answer to that confirmation question.", "type": "string" }, "questionId": { "description": "Confirmation question ID from the latest draft.", "minLength": 1, "type": "string" } }, "required": [ "questionId", "answer" ], "type": "object" }, "type": "array" }, "attachments": { "description": "Files and websites available to the planned Study. With multiple assets, every question needs an explicit assignment and every asset must be used by at least one question. Use [] for no assets. Give each scoped file a stable id. Remote URLs are copied into durable Minds storage before the draft is saved. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "items": { "properties": { "id": { "description": "Stable asset ID used by questionAttachments to assign this file to specific planned questions.", "maxLength": 255, "minLength": 1, "type": "string" }, "kind": { "const": "website", "description": "Use website for a page to read as a website rather than download as a file.", "type": "string" }, "mimeType": { "maxLength": 255, "type": "string" }, "name": { "description": "File name visible in the Study.", "minLength": 1, "type": "string" }, "path": { "description": "Storage path of a file already uploaded to Minds. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "minLength": 1, "type": "string" }, "type": { "description": "MIME type when known.", "minLength": 1, "type": "string" }, "url": { "description": "Fetchable HTTP(S), signed, or Minds workspace upload URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "minLength": 1, "type": "string" } }, "type": "object" }, "maxItems": 20, "type": "array" }, "draftPlanId": { "description": "Existing draft ID to revise after the user answers a confirmation question.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "edits": { "additionalProperties": false, "description": "Save exact edits to draftPlanId and revision without a model call. Preserves method configuration, source policy, item IDs and exact wording. Questions are the complete selected instrument in module order; method-specific batteries are read-only. Cannot combine with planner inputs.", "properties": { "objective": { "maxLength": 2000, "minLength": 1, "type": "string" }, "promptContent": { "maxLength": 20000, "type": "string" }, "questions": { "items": { "additionalProperties": false, "properties": { "attachmentIds": { "items": { "maxLength": 255, "minLength": 1, "type": "string" }, "maxItems": 50, "type": "array" }, "id": { "maxLength": 80, "minLength": 1, "pattern": "^[a-z0-9_-]+$", "type": "string" }, "moduleId": { "maxLength": 120, "minLength": 1, "type": "string" }, "response": { "additionalProperties": false, "properties": { "categoricalOptions": { "items": { "minLength": 1, "type": "string" }, "maxItems": 100, "minItems": 2, "type": "array" }, "maxSelections": { "maximum": 100, "minimum": 1, "type": "integer" }, "scaleRange": { "items": { "maximum": 100, "minimum": -100, "type": "integer" }, "maxItems": 2, "minItems": 2, "type": "array" }, "type": { "enum": [ "qualitative", "categorical", "multiselect", "scale" ], "type": "string" } }, "required": [ "type" ], "type": "object" }, "text": { "maxLength": 2000, "minLength": 1, "type": "string" } }, "required": [ "id", "moduleId", "text", "response" ], "type": "object" }, "maxItems": 200, "minItems": 1, "type": "array" } }, "type": "object" }, "idempotencyKey": { "description": "Optional stable retry key. When omitted the tool derives one from its own arguments, so a repeated identical call (including a host retry after a timeout) returns the draft revision that was already saved instead of planning again. Pass a fresh key to force a new plan for identical input.", "maxLength": 200, "minLength": 1, "type": "string" }, "loadLatest": { "description": "Read the latest saved revision of draftPlanId, without generating, saving or executing. Do not combine with edits or planner inputs.", "type": "boolean" }, "mindSourcePolicyOverrides": { "description": "Experimental per-Mind treatment assignments stored in the exact draft revision. Each Mind may appear once; unlisted Minds use sourcePolicy. Use only for a preregistered source-policy experiment.", "items": { "additionalProperties": false, "properties": { "mindId": { "description": "Exact Mind UUID in the Study cohort.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "sourcePolicy": { "description": "Request-scoped evidence treatment for this Mind.", "enum": [ "request_only", "auto" ], "type": "string" } }, "required": [ "mindId", "sourcePolicy" ], "type": "object" }, "maxItems": 2000, "type": "array" }, "panelId": { "description": "Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only to continue the active Study from this MCP session.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "panelName": { "description": "Study name for fuzzy matching (legacy wire field name: panelName). Omit both panelName and panelId only to continue the active Study from this MCP session.", "type": "string" }, "questionAttachments": { "description": "Question-to-file mapping. Multi-asset blocks require every question to be mapped, using [] for no assets; every asset must appear on at least one question. Each question at most once; every referenced attachment id must resolve.", "items": { "additionalProperties": false, "properties": { "attachmentIds": { "description": "Stable ids from attachments that this question alone receives.", "items": { "maxLength": 255, "minLength": 1, "type": "string" }, "maxItems": 20, "type": "array" }, "questionNumber": { "description": "One-based question position in the returned plan, across modules in order.", "maximum": 9007199254740991, "minimum": 1, "type": "integer" } }, "required": [ "questionNumber", "attachmentIds" ], "type": "object" }, "minItems": 1, "type": "array" }, "questionResponses": { "description": "Explicit response-format edits, one entry per question. Each entry needs questionId (from the latest draft) plus type qualitative, categorical, multiselect, or scale with an inclusive integer scaleRange.", "items": { "additionalProperties": false, "properties": { "categoricalOptions": { "description": "Predefined answer choices; only valid for categorical or multiselect responses.", "items": { "minLength": 1, "type": "string" }, "maxItems": 100, "minItems": 2, "type": "array" }, "maxSelections": { "description": "Maximum choices a respondent may select; only valid for multiselect responses.", "maximum": 100, "minimum": 1, "type": "integer" }, "questionId": { "description": "Question ID from the latest draft plan.", "maxLength": 80, "minLength": 1, "type": "string" }, "scaleRange": { "description": "Inclusive integer response range as [minimum, maximum]; required for scale responses.", "items": { "maximum": 100, "minimum": -100, "type": "integer" }, "maxItems": 2, "minItems": 2, "type": "array" }, "type": { "enum": [ "qualitative", "categorical", "multiselect", "scale" ], "type": "string" } }, "required": [ "questionId", "type" ], "type": "object" }, "type": "array" }, "questions": { "description": "Fixed instrument: use INSTEAD of request when the user supplies a pre-registered or fixed questionnaire whose wording, order, and response formats must not change. The planner is bypassed; every question is stored verbatim, in this order, with exactly this response contract. Cannot be combined with refinement, answers, questionResponses, or suggestQuestionStimuli. Repeated question texts or colliding ids are rejected.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Stable item id (lower-cased to a slug). Defaults to q<position>.", "maxLength": 80, "minLength": 1, "type": "string" }, "module": { "description": "Optional module (battery) label. Consecutive questions with the same label form one module.", "maxLength": 200, "minLength": 1, "type": "string" }, "response": { "additionalProperties": false, "description": "Exact execution contract for this item: type qualitative, categorical (with categoricalOptions), multiselect, or scale (with inclusive integer scaleRange). Supplied categoricalOptions keep their exact labels and order even with attachments; files are evidence and do not generate replacement A/B options.", "properties": { "categoricalOptions": { "description": "Predefined answer choices; only valid for categorical or multiselect responses.", "items": { "minLength": 1, "type": "string" }, "maxItems": 100, "minItems": 2, "type": "array" }, "maxSelections": { "description": "Maximum choices a respondent may select; only valid for multiselect responses.", "maximum": 100, "minimum": 1, "type": "integer" }, "scaleRange": { "description": "Inclusive integer response range as [minimum, maximum]; required for scale responses.", "items": { "maximum": 100, "minimum": -100, "type": "integer" }, "maxItems": 2, "minItems": 2, "type": "array" }, "type": { "enum": [ "qualitative", "categorical", "multiselect", "scale" ], "type": "string" } }, "required": [ "type" ], "type": "object" }, "text": { "description": "Exact respondent-visible question text, including any anchors or labels. Stored as given.", "maxLength": 2000, "minLength": 1, "type": "string" } }, "required": [ "text", "response" ], "type": "object" }, "maxItems": 200, "minItems": 1, "type": "array" }, "refinement": { "description": "How the user wants the existing draft changed.", "type": "string" }, "request": { "description": "Planner input containing the research objective, questionnaire, survey, battery, section, cohesive question set, audit request, or analysis request. Required for a new draft. Include EVERY question already known in this one request so the planner can group the complete set into cohesive named modules for one confirmed multi-question run inside the Study; never create one planning request per known question. This request is not sent verbatim to Minds; the exact proposed respondent-visible questions are returned in the draft for review.", "minLength": 1, "type": "string" }, "revision": { "description": "Current draft revision; required with draftPlanId.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "source": { "description": "The one main source this study is about. When Minds must evaluate pasted text, use kind prompt and put the exact respondent-visible material in content. Keep research objectives, requested questions, and planner-only instructions in request. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "properties": { "content": { "description": "Exact respondent-visible pasted text. Use only with kind prompt when Minds must evaluate a concept, message, description, or other text. Do not include planner-only instructions.", "maxLength": 20000, "minLength": 1, "type": "string" }, "kind": { "enum": [ "prompt", "website", "image", "video", "document", "questionnaire", "other" ], "type": "string" }, "label": { "minLength": 1, "type": "string" }, "mimeType": { "type": "string" }, "url": { "description": "Fetchable source URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. A workspace upload reused as a Study asset must sit under chat/<userId>/: request the signed upload with folder \"chat\" and pass that storage path or its /api/uploads/chat/ URL. A temp/, portfolio/, or context/ path — and any /api/uploads/file-access/ URL — is refused as not belonging to the workspace owner and is never re-fetched; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset.", "minLength": 1, "type": "string" } }, "required": [ "kind", "label" ], "type": "object" }, "sourcePolicy": { "description": "Evidence policy stored in the draft and reviewed before execution. Defaults to request_only for a controlled Study. Use auto only for an explicitly designed experiment that should allow relevant Mind-knowledge retrieval; response-mode rules still control live web search.", "enum": [ "request_only", "auto" ], "type": "string" }, "studyId": { "description": "Study ID (UUID). Omit with studyName to continue the active Study.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "studyLocale": { "description": "Language for the plan, questions, responses, labels, and summary. Set this explicitly when the user requests a language.", "enum": [ "en", "es", "fr", "de", "zh", "tr", "ar", "ja", "ko" ], "type": "string" }, "studyName": { "description": "Study name for fuzzy matching. Omit with studyId to continue the active Study.", "type": "string" }, "suggestQuestionStimuli": { "description": "Default true. Lets the planner assign each attached file or website to one or more questions (attachmentIds on those questions). Pass false to leave questions unassigned unless questionAttachments names them.", "type": "boolean" } }, "type": "object" }, "name": "plan_study_questions", "outputSchema": null }, { "description": "Executes the exact stored multi-question draft revision inside the target Study after explicit confirmation. One execution submits the ENTIRE draft—all named modules and all questions—as one durable run. Never execute each known question separately and never create one run per module. This operation is valid only after the person explicitly confirms the exact draft revision. The server reloads and validates the revision, method availability, runner configuration, reviewed capabilities, optional advanced-method consent, and idempotency key before queuing durable research. MCP cannot upload or read a local file:// path: attach the file through the client and use its signed HTTPS URL, upload it to Minds first, or use another fetchable HTTPS URL. Before invoking any Mind or using Study quota, the server verifies that required respondent-visible source material is readable and refuses the entire run if it is not. Answer carryover: every questionnaire item is an independent measurement. A confirmed run carries no answer history — a Mind answering item 12 has not seen its own answers to items 1-11, and items fan out in parallel — and nothing on this run can change that (historyMode is settable only on a single standalone question, and defaults to none there too). So cross-item order, fatigue, and carryover effects do not arise, and rotation or least-fill designs that exist only to control them buy nothing here; conversely, any item that must build on an earlier one has to restate what it needs in its own text or stimulus, because a back-reference resolves to nothing.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "advancedMethodOptIn": { "description": "Explicit opt-in for an advanced method. Omit or false to keep simple methods.", "type": "boolean" }, "audienceIds": { "description": "Optional subset of the Study's Audiences to include.", "items": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "type": "array" }, "confirmed": { "const": true, "description": "Must be true only after the user explicitly confirms this exact draft revision.", "type": "boolean" }, "draftPlanId": { "description": "Exact draft plan ID returned by plan_study_questions.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "groupIds": { "description": "Legacy alias for audienceIds. Accepted for compatibility.", "items": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "type": "array" }, "idempotencyKey": { "description": "Stable UUID for safe retries.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "modelConnection": { "additionalProperties": false, "description": "Verified caller-team connection for Mind answers and verbatim rendering. Select only when the user requests it; confirmation pins this connection revision, and retries must keep it. Supporting analysis retains platform models.", "properties": { "id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "revision": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "id", "revision" ], "type": "object" }, "panelId": { "description": "Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only to run the confirmed draft in the active Study from this MCP session.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "panelName": { "description": "Study name for fuzzy matching (legacy wire field name: panelName). Omit both panelName and panelId only to run the confirmed draft in the active Study from this MCP session.", "type": "string" }, "revision": { "description": "Exact draft revision the user reviewed.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "studyId": { "description": "Study ID (UUID). Omit with studyName to run in the active Study.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "studyName": { "description": "Study name for fuzzy matching. Omit with studyId to run in the active Study.", "type": "string" } }, "required": [ "draftPlanId", "revision", "confirmed" ], "type": "object" }, "name": "run_study_questions", "outputSchema": null }, { "description": "Creates or checkpoints an unfinished Quick or Custom Study draft without starting research. It saves the objective, context, selected Audiences, method, questions, sources, and current planner step. Revisions replace the saved planning state and require the exact draft ID and expected revision; stale writes are rejected.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "audienceIds": { "description": "Existing Audience IDs selected for the Study. Preferred.", "items": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "type": "array" }, "currentStep": { "default": "context", "description": "Exact planner step to reopen, such as context, audiences, method, questions, or confirm. The legacy value groups remains accepted when reopening an older draft.", "maxLength": 100, "minLength": 1, "type": "string" }, "draftId": { "description": "Existing Study draft ID to revise. Omit to create a new durable draft.", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "expectedRevision": { "description": "Exact current revision. Required with draftId so stale updates cannot overwrite newer planning state.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "groupIds": { "description": "Legacy alias for audienceIds. Accepted for compatibility.", "items": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "type": "array" }, "methodId": { "default": "guided-research", "description": "Research method selected for the draft. Use list_research_methods as the availability authority.", "enum": [ "guided-research", "single-question", "questionnaire", "guided-qualitative-exploration", "ranked-preferences", "segment-comparison", "visual-asset-analysis", "recommendation-synthesis", "maxdiff", "conjoint", "nps", "top-box", "key-drivers", "turf", "gabor-granger", "van-westendorp", "kano" ], "type": "string" }, "mode": { "default": "custom", "description": "Planning mode to restore. Defaults to custom for agent-authored planning state.", "enum": [ "quick", "custom" ], "type": "string" }, "name": { "description": "Sidebar name for the Study draft.", "maxLength": 200, "minLength": 1, "type": "string" }, "notes": { "description": "Additional research context or constraints.", "type": "string" }, "objective": { "description": "Research objective or intent captured so far.", "type": "string" }, "questions": { "default": [], "description": "Manual research questions in their intended order.", "items": { "minLength": 1, "type": "string" }, "type": "array" }, "sourceUrls": { "default": [], "description": "Ordered source URLs supplied as Study context.", "items": { "format": "uri", "type": "string" }, "type": "array" }, "website": { "description": "Primary website associated with the research context.", "format": "uri", "type": "string" } }, "type": "object" }, "name": "save_study_draft", "outputSchema": null }, { "description": "Read or start a question asset heatmap, with the same behavior as Minds UI. For a specific video or image pass assetKey: its saved upload path (chat/...) or normalized URL. Only assets assigned to that question can be analyzed. GET returns assetHeatmaps keyed by asset identity; start with assetKey reuses completed analysis for that asset, while start without assetKey can rerun analysis. Website analysis visits the assigned public URL. Starting analysis uses one response per Mind and requires Premium. Selecting a different video does not change the question results.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "action": { "default": "get", "enum": [ "get", "start" ], "type": "string" }, "assetKey": { "minLength": 1, "type": "string" }, "messageId": { "minLength": 1, "type": "string" }, "studyId": { "type": "string" }, "studyName": { "type": "string" } }, "required": [ "messageId" ], "type": "object" }, "name": "study_heatmap", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:b290f9d32ca7412475b5aeca2069277e19766c58150dfacadb2fab7dacc90d61 | sha256sum