Skip to main content
Glama

Minds: Synthetic Market Research

Plan a Multi-Question Block in a Study

plan_study_questions
Destructive

Creates or revises a non-executing draft for a multi-question plan inside an existing Study. Saving never starts research. To change a draft, pass draft.id with its current draft.revision — re-sending a reworded request creates a SECOND draft instead of revising; a stale revision is rejected.

This is the setup operation for any questionnaire, survey, battery, section or request containing two or more known questions: include every question known now in this one draft, grouped into cohesive named modules in respondent order. A one-question draft is only for genuinely standalone research, or a follow-up whose wording depends on results that do not exist yet.

It records respondent-visible questions, response formats and confirmation questions for review.

Pass request to have the planner design the questions, or questions for a fixed instrument, which is transcribed exactly and bypasses the planner; a question sent as qualitative whose own text lists its answers becomes the choice question that text states.

Items are answered in order: each Mind sees its own earlier answers in the run (never another Mind's), so an item may build on an earlier one. For skip logic, give an item askIf instead of "if not, answer N/A" wording: only respondents whose own earlier answer matches are asked.

With 2+ attachments, map each question in stimulus.questionAttachments ([] = none); an omitted question gets every attachment, an unused attachment goes with every question.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
draftNoRevising an existing draft: which draft and revision, and how it should change. Omit for a new draft.
studyNoWhich Study the plan belongs to. Omit entirely to continue the active Study from this MCP session.
policyNoEvidence policy and language stored in the draft revision and reviewed before execution.
requestNoPlanner 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.
stimulusNoRespondent-visible material for the planned block, and how it is assigned to questions.
questionsNoFixed 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.
idempotencyKeyNoOptional 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.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
studyIdNoStudy the plan belongs to.
revisionNoDraft revision to confirm.
nextActionNoWhat to do next: show the draft and wait for explicit confirmation.
draftPlanIdNoDraft plan to confirm with run_study_questions.
draftReviewNoThe saved draft as reviewed: questions, methods, outputs and confirmation choices.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / stimulus / properties / attachments / description
      Previous value: -"Files and websites available to the planned Study (one question block, at most 100). With multiple assets, map every question explicitly (use [] for no assets); an asset no question uses is shown with every question. 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."New value: +"Files and websites available to the planned Study (one question block, at most 100). With multiple assets, map every question explicitly (use [] for no assets); an asset no question uses is shown with every question. Give each scoped file a stable id. Remote URLs are copied into durable Minds storage before the draft is saved. Pass a fetchable HTTP(S) URL, or an existing Minds workspace upload under chat/<userId>/ (that storage path or its /api/uploads/chat/ URL; request the signed upload with folder \"chat\"). MCP cannot read a local path, and a file the user attached in the chat client is NOT reachable either unless that client also exposes a public URL for it — most do not. When it is not: send the file CONTENTS to import_audience_sources (UTF-8 text, Markdown, CSV, JSON), which takes contents rather than paths. A PDF or image with no public URL has no MCP route at all — it must be uploaded in the Minds app first; say so instead of retrying. Study tools import external file URLs into durable Minds storage before saving or running. 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."
    • changedInput schema / properties / stimulus / properties / attachments / items / properties / path / description
      Previous value: -"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."New value: +"Storage path of a file already uploaded to Minds. Pass a fetchable HTTP(S) URL, or an existing Minds workspace upload under chat/<userId>/ (that storage path or its /api/uploads/chat/ URL; request the signed upload with folder \"chat\"). MCP cannot read a local path, and a file the user attached in the chat client is NOT reachable either unless that client also exposes a public URL for it — most do not. When it is not: send the file CONTENTS to import_audience_sources (UTF-8 text, Markdown, CSV, JSON), which takes contents rather than paths. A PDF or image with no public URL has no MCP route at all — it must be uploaded in the Minds app first; say so instead of retrying. Study tools import external file URLs into durable Minds storage before saving or running. 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."
    • changedInput schema / properties / stimulus / properties / attachments / items / properties / url / description
      Previous value: -"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."New value: +"Fetchable HTTP(S), signed, or Minds workspace upload URL. Pass a fetchable HTTP(S) URL, or an existing Minds workspace upload under chat/<userId>/ (that storage path or its /api/uploads/chat/ URL; request the signed upload with folder \"chat\"). MCP cannot read a local path, and a file the user attached in the chat client is NOT reachable either unless that client also exposes a public URL for it — most do not. When it is not: send the file CONTENTS to import_audience_sources (UTF-8 text, Markdown, CSV, JSON), which takes contents rather than paths. A PDF or image with no public URL has no MCP route at all — it must be uploaded in the Minds app first; say so instead of retrying. Study tools import external file URLs into durable Minds storage before saving or running. 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."
    • changedInput schema / properties / stimulus / properties / source / description
      Previous value: -"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."New value: +"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. Pass a fetchable HTTP(S) URL, or an existing Minds workspace upload under chat/<userId>/ (that storage path or its /api/uploads/chat/ URL; request the signed upload with folder \"chat\"). MCP cannot read a local path, and a file the user attached in the chat client is NOT reachable either unless that client also exposes a public URL for it — most do not. When it is not: send the file CONTENTS to import_audience_sources (UTF-8 text, Markdown, CSV, JSON), which takes contents rather than paths. A PDF or image with no public URL has no MCP route at all — it must be uploaded in the Minds app first; say so instead of retrying. Study tools import external file URLs into durable Minds storage before saving or running. 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."
    • changedInput schema / properties / stimulus / properties / source / properties / url / description
      Previous value: -"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."New value: +"Fetchable source URL. Pass a fetchable HTTP(S) URL, or an existing Minds workspace upload under chat/<userId>/ (that storage path or its /api/uploads/chat/ URL; request the signed upload with folder \"chat\"). MCP cannot read a local path, and a file the user attached in the chat client is NOT reachable either unless that client also exposes a public URL for it — most do not. When it is not: send the file CONTENTS to import_audience_sources (UTF-8 text, Markdown, CSV, JSON), which takes contents rather than paths. A PDF or image with no public URL has no MCP route at all — it must be uploaded in the Minds app first; say so instead of retrying. Study tools import external file URLs into durable Minds storage before saving or running. 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."
  2. Changed2 schema fields changed
    • changedInput schema / properties / stimulus / properties / attachments / description
      Previous value: -"Files and websites available to the planned Study (one question block, at most 100). 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."New value: +"Files and websites available to the planned Study (one question block, at most 100). With multiple assets, map every question explicitly (use [] for no assets); an asset no question uses is shown with every question. 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."
    • changedInput schema / properties / stimulus / properties / questionAttachments / description
      Previous value: -"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."New value: +"Question-to-file mapping. In multi-asset blocks map every question, using [] for no assets; an omitted question receives every asset and an asset on no question is shown with every question. Each question at most once; every referenced attachment id must resolve."
  3. Changed18 schema fields changed
    • addedInput schema / properties / draft / properties / edits / properties / questions / items / properties / response / properties / scalePoints
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "label": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "label",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 100,
      +  "minItems": 2,
      +  "type": "array"
      +}
    • removedInput schema / properties / draft / properties / edits / properties / questions / items / properties / response / properties / scaleRange / items / maximum
      Removed value: -100
    • removedInput schema / properties / draft / properties / edits / properties / questions / items / properties / response / properties / scaleRange / items / minimum
      Removed value: --100
    • changedInput schema / properties / draft / properties / edits / properties / questions / items / properties / response / properties / scaleRange / items / type
      Previous value: -"integer"New value: +"number"
    • changedInput schema / properties / draft / properties / questionResponses / description
      Previous value: -"Explicit response-format edits, one entry per question. Each entry needs questionId (from the latest draft) plus the type the question actually calls for: categorical for one choice, multiselect for several (with maxSelections), ranking when every Mind orders all categoricalOptions, scale with an inclusive integer scaleRange, and qualitative only for a genuinely open answer. Use this to correct an item whose options ended up inside its text."New value: +"Explicit response-format edits, one entry per question. Each entry needs questionId (from the latest draft) plus the type the question actually calls for: categorical for one choice, multiselect for several (with maxSelections), ranking when every Mind orders all categoricalOptions, scale with an inclusive finite numeric scaleRange, and qualitative only for a genuinely open answer. Use this to correct an item whose options ended up inside its text."
    • removedInput schema / properties / draft / properties / questionResponses / items / properties / categoricalOptions / items / minLength
      Removed value: -1
    • addedInput schema / properties / draft / properties / questionResponses / items / properties / scalePoints
      Added value: +{
      +  "description": "Exhaustive allowed scale answers in authored order, each with its literal label and numeric value. Omit for an unenumerated range; never fill missing intermediate points.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "label": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "label",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 100,
      +  "minItems": 2,
      +  "type": "array"
      +}
    • changedInput schema / properties / draft / properties / questionResponses / items / properties / scaleRange / description
      Previous value: -"Inclusive integer response range as [minimum, maximum]; required for scale responses."New value: +"Inclusive finite numeric response bounds as [minimum, maximum], only when specified. Numeric responses may be unbounded. Fractional and wide ranges retain their authored values."
    • removedInput schema / properties / draft / properties / questionResponses / items / properties / scaleRange / items / maximum
      Removed value: -100
    • removedInput schema / properties / draft / properties / questionResponses / items / properties / scaleRange / items / minimum
      Removed value: --100
    • changedInput schema / properties / draft / properties / questionResponses / items / properties / scaleRange / items / type
      Previous value: -"integer"New value: +"number"
    • changedInput schema / properties / questions / items / properties / response / description
      Previous value: -"Exact execution contract for this item. Pick by what the question asks of a respondent: a fixed set of choices is categorical (exactly one) or multiselect (several, with maxSelections); putting every option in order is ranking; a numeric judgement is scale with an inclusive integer scaleRange; only a genuinely open answer in the respondent's own words is qualitative. categorical, multiselect and ranking all carry the choices in categoricalOptions, which keep their exact labels and order even with attachments; files are evidence and do not generate replacement A/B options."New value: +"Exact execution contract for this item. Pick by what the question asks of a respondent: a fixed set of choices is categorical (exactly one) or multiselect (several, with maxSelections); putting every option in order is ranking; a numeric judgement is scale with an inclusive finite numeric scaleRange; only a genuinely open answer in the respondent's own words is qualitative. categorical, multiselect and ranking all carry the choices in categoricalOptions, which keep their exact labels and order even with attachments; files are evidence and do not generate replacement A/B options."
    • removedInput schema / properties / questions / items / properties / response / properties / categoricalOptions / items / minLength
      Removed value: -1
    • addedInput schema / properties / questions / items / properties / response / properties / scalePoints
      Added value: +{
      +  "description": "Exhaustive allowed scale answers in authored order, each with its literal label and numeric value. Omit for an unenumerated range; never fill missing intermediate points.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "label": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "label",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 100,
      +  "minItems": 2,
      +  "type": "array"
      +}
    • changedInput schema / properties / questions / items / properties / response / properties / scaleRange / description
      Previous value: -"Inclusive integer response range as [minimum, maximum]; required for scale responses."New value: +"Inclusive finite numeric response bounds as [minimum, maximum], only when specified. Numeric responses may be unbounded. Fractional and wide ranges retain their authored values."
    • removedInput schema / properties / questions / items / properties / response / properties / scaleRange / items / maximum
      Removed value: -100
    • removedInput schema / properties / questions / items / properties / response / properties / scaleRange / items / minimum
      Removed value: --100
    • changedInput schema / properties / questions / items / properties / response / properties / scaleRange / items / type
      Previous value: -"integer"New value: +"number"
  4. Changed6 schema fields changed
    • addedInput schema / properties / draft / properties / edits / properties / questions / items / properties / askIf / properties / categoryIn
      Added value: +{
      +  "items": {
      +    "maxLength": 500,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / draft / properties / edits / properties / questions / items / properties / askIf / properties / categoryNotIn
      Added value: +{
      +  "items": {
      +    "maxLength": 500,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / properties / questions / items / properties / askIf / description
      Previous value: -"Routing: ask this item only of respondents whose own answer to an earlier categorical or multiselect item (questionId) matched. Give exactly one of answerIn or answerNotIn with that item's exact option labels. Respondents not asked are recorded as not asked and excluded from this item's results."New value: +"Routing: ask this item only of respondents whose own answer to an earlier item (questionId) matched. Give exactly one of: answerIn or answerNotIn with an earlier categorical or multiselect item's exact option labels; or categoryIn or categoryNotIn for an earlier open (qualitative) item, whose answers are coded into the categories named for it (one frame per item, at most 12) once it has been answered; an answer fitting none of them counts as none. Scale and ranking items cannot gate. Respondents not asked are recorded as not asked and excluded from this item's results."
    • addedInput schema / properties / questions / items / properties / askIf / properties / categoryIn
      Added value: +{
      +  "items": {
      +    "maxLength": 500,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / questions / items / properties / askIf / properties / categoryNotIn
      Added value: +{
      +  "items": {
      +    "maxLength": 500,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / properties / questions / items / properties / text / description
      Previous value: -"Exact respondent-visible question text, including any anchors or labels. Stored as given. Answer options do NOT belong here: list them in response.categoricalOptions instead. A question whose text spells out its choices but is typed qualitative is answered as free text, every Mind converges on the same most likely wording, and the chart shows one option at 100%. State the options here only as a respondent would read them, and always carry the same options in response.categoricalOptions so the contract and the wording agree."New value: +"Exact respondent-visible question text, including any anchors or labels. Stored as given. Answer options do NOT belong here: list them in response.categoricalOptions instead. A question whose text spells out its choices but is typed qualitative is answered as free text, every Mind converges on the same most likely wording, and the chart shows one option at 100%. State the options here only as a respondent would read them, and always carry the same options in response.categoricalOptions so the contract and the wording agree. Skip and filter instructions (\"No -> go to Q12\", \"only if Q3 = Yes\") do not belong in the text either: transcribe each as askIf. A jump from an answer of item G to item N gives every item between G and N answerNotIn [that answer]; a filter gives answerIn. Tell the person about any instruction you cannot map to exact items and options instead of guessing it."
  5. Changed6 schema fields changed
    • changedInput schema / properties / draft / properties / edits / description
      Previous value: -"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."New value: +"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, including each item's askIf (omitted means none); method-specific batteries are read-only. Cannot combine with planner inputs."
    • addedInput schema / properties / draft / properties / edits / properties / questions / items / properties / askIf
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "answerIn": {
      +      "items": {
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 100,
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    "answerNotIn": {
      +      "items": {
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 100,
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    "questionId": {
      +      "maxLength": 80,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "questionId"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / draft / properties / questionResponses / description
      Previous value: -"Explicit response-format edits, one entry per question. Each entry needs questionId (from the latest draft) plus type qualitative, categorical, multiselect, ranking (every Mind orders all categoricalOptions), or scale with an inclusive integer scaleRange."New value: +"Explicit response-format edits, one entry per question. Each entry needs questionId (from the latest draft) plus the type the question actually calls for: categorical for one choice, multiselect for several (with maxSelections), ranking when every Mind orders all categoricalOptions, scale with an inclusive integer scaleRange, and qualitative only for a genuinely open answer. Use this to correct an item whose options ended up inside its text."
    • addedInput schema / properties / questions / items / properties / askIf
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Routing: ask this item only of respondents whose own answer to an earlier categorical or multiselect item (questionId) matched. Give exactly one of answerIn or answerNotIn with that item's exact option labels. Respondents not asked are recorded as not asked and excluded from this item's results.",
      +  "properties": {
      +    "answerIn": {
      +      "items": {
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 100,
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    "answerNotIn": {
      +      "items": {
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 100,
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    "questionId": {
      +      "maxLength": 80,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "questionId"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / questions / items / properties / response / description
      Previous value: -"Exact execution contract for this item: type qualitative, categorical (with categoricalOptions), multiselect, ranking (with categoricalOptions every Mind puts in order), 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."New value: +"Exact execution contract for this item. Pick by what the question asks of a respondent: a fixed set of choices is categorical (exactly one) or multiselect (several, with maxSelections); putting every option in order is ranking; a numeric judgement is scale with an inclusive integer scaleRange; only a genuinely open answer in the respondent's own words is qualitative. categorical, multiselect and ranking all carry the choices in categoricalOptions, which keep their exact labels and order even with attachments; files are evidence and do not generate replacement A/B options."
    • changedInput schema / properties / questions / items / properties / text / description
      Previous value: -"Exact respondent-visible question text, including any anchors or labels. Stored as given."New value: +"Exact respondent-visible question text, including any anchors or labels. Stored as given. Answer options do NOT belong here: list them in response.categoricalOptions instead. A question whose text spells out its choices but is typed qualitative is answered as free text, every Mind converges on the same most likely wording, and the chart shows one option at 100%. State the options here only as a respondent would read them, and always carry the same options in response.categoricalOptions so the contract and the wording agree."
  6. Changed7 schema fields changed
    • changedInput schema / properties / draft / properties / edits / properties / questions / items / properties / response / properties / type / enum
      Previous value: -[
      -  "qualitative",
      -  "categorical",
      -  "multiselect",
      -  "scale"
      -]New value: +[
      +  "qualitative",
      +  "categorical",
      +  "multiselect",
      +  "ranking",
      +  "scale"
      +]
    • changedInput schema / properties / draft / properties / questionResponses / description
      Previous value: -"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."New value: +"Explicit response-format edits, one entry per question. Each entry needs questionId (from the latest draft) plus type qualitative, categorical, multiselect, ranking (every Mind orders all categoricalOptions), or scale with an inclusive integer scaleRange."
    • changedInput schema / properties / draft / properties / questionResponses / items / properties / categoricalOptions / description
      Previous value: -"Predefined answer choices; only valid for categorical or multiselect responses."New value: +"Predefined answer choices; only valid for categorical, multiselect or ranking responses. A ranking orders all of them."
    • changedInput schema / properties / draft / properties / questionResponses / items / properties / type / enum
      Previous value: -[
      -  "qualitative",
      -  "categorical",
      -  "multiselect",
      -  "scale"
      -]New value: +[
      +  "qualitative",
      +  "categorical",
      +  "multiselect",
      +  "ranking",
      +  "scale"
      +]
    • changedInput schema / properties / questions / items / properties / response / description
      Previous value: -"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."New value: +"Exact execution contract for this item: type qualitative, categorical (with categoricalOptions), multiselect, ranking (with categoricalOptions every Mind puts in order), 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."
    • changedInput schema / properties / questions / items / properties / response / properties / categoricalOptions / description
      Previous value: -"Predefined answer choices; only valid for categorical or multiselect responses."New value: +"Predefined answer choices; only valid for categorical, multiselect or ranking responses. A ranking orders all of them."
    • changedInput schema / properties / questions / items / properties / response / properties / type / enum
      Previous value: -[
      -  "qualitative",
      -  "categorical",
      -  "multiselect",
      -  "scale"
      -]New value: +[
      +  "qualitative",
      +  "categorical",
      +  "multiselect",
      +  "ranking",
      +  "scale"
      +]
  7. Changed22 schema fields changed
    • removedInput schema / properties / answers
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / properties / attachments
      Removed value: -{
      -  "description": "Files and websites available to the planned Study (one question block, at most 100). 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": 100,
      -  "type": "array"
      -}
    • addedInput schema / properties / draft
      Added value: +{
      +  "description": "Revising an existing draft: which draft and revision, and how it should change. Omit for a new draft.",
      +  "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"
      +    },
      +    "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"
      +    },
      +    "id": {
      +      "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"
      +    },
      +    "loadLatest": {
      +      "description": "Read the latest saved revision of draftPlanId, without generating, saving or executing. Do not combine with edits or planner inputs.",
      +      "type": "boolean"
      +    },
      +    "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"
      +    },
      +    "refinement": {
      +      "description": "How the user wants the existing draft changed.",
      +      "type": "string"
      +    },
      +    "revision": {
      +      "description": "Current draft revision; required with draftPlanId.",
      +      "exclusiveMinimum": 0,
      +      "maximum": 9007199254740991,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / draftPlanId
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / properties / edits
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / properties / loadLatest
      Removed value: -{
      -  "description": "Read the latest saved revision of draftPlanId, without generating, saving or executing. Do not combine with edits or planner inputs.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / mindSourcePolicyOverrides
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / properties / panelId
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / properties / panelName
      Removed value: -{
      -  "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"
      -}
    • addedInput schema / properties / policy
      Added value: +{
      +  "description": "Evidence policy and language stored in the draft revision and reviewed before execution.",
      +  "properties": {
      +    "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"
      +    },
      +    "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"
      +    },
      +    "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"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / questionAttachments
      Removed value: -{
      -  "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 (at most 20).",
      -        "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"
      -}
    • removedInput schema / properties / questionResponses
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / properties / refinement
      Removed value: -{
      -  "description": "How the user wants the existing draft changed.",
      -  "type": "string"
      -}
    • removedInput schema / properties / revision
      Removed value: -{
      -  "description": "Current draft revision; required with draftPlanId.",
      -  "exclusiveMinimum": 0,
      -  "maximum": 9007199254740991,
      -  "type": "integer"
      -}
    • removedInput schema / properties / source
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / properties / sourcePolicy
      Removed value: -{
      -  "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"
      -}
    • addedInput schema / properties / stimulus
      Added value: +{
      +  "description": "Respondent-visible material for the planned block, and how it is assigned to questions.",
      +  "properties": {
      +    "attachments": {
      +      "description": "Files and websites available to the planned Study (one question block, at most 100). 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": 100,
      +      "type": "array"
      +    },
      +    "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 (at most 20).",
      +            "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"
      +    },
      +    "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"
      +    },
      +    "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"
      +}
    • addedInput schema / properties / study
      Added value: +{
      +  "description": "Which Study the plan belongs to. Omit entirely to continue the active Study from this MCP session.",
      +  "properties": {
      +    "id": {
      +      "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"
      +    },
      +    "name": {
      +      "description": "Study name to fuzzy-match among the newest 1,000 visible Studies; use studyId for older records. Omit with studyId to continue the active Study.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / studyId
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / properties / studyLocale
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / properties / studyName
      Removed value: -{
      -  "description": "Study name to fuzzy-match among the newest 1,000 visible Studies; use studyId for older records. Omit with studyId to continue the active Study.",
      -  "type": "string"
      -}
    • removedInput schema / properties / suggestQuestionStimuli
      Removed value: -{
      -  "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"
      -}
  8. Changed1 schema field changed
    • changedInput schema / properties / studyName / description
      Previous value: -"Study name for fuzzy matching. Omit with studyId to continue the active Study."New value: +"Study name to fuzzy-match among the newest 1,000 visible Studies; use studyId for older records. Omit with studyId to continue the active Study."
  9. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {
      +    "draftPlanId": {
      +      "description": "Draft plan to confirm with run_study_questions."
      +    },
      +    "draftReview": {
      +      "description": "The saved draft as reviewed: questions, methods, outputs and confirmation choices."
      +    },
      +    "nextAction": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "What to do next: show the draft and wait for explicit confirmation."
      +    },
      +    "revision": {
      +      "description": "Draft revision to confirm."
      +    },
      +    "studyId": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Study the plan belongs to."
      +    }
      +  },
      +  "type": "object"
      +}
  10. Changed3 schema fields changed
    • changedInput schema / properties / attachments / description
      Previous value: -"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."New value: +"Files and websites available to the planned Study (one question block, at most 100). 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."
    • changedInput schema / properties / attachments / maxItems
      Previous value: -20New value: +100
    • changedInput schema / properties / questionAttachments / items / properties / attachmentIds / description
      Previous value: -"Stable ids from attachments that this question alone receives."New value: +"Stable ids from attachments that this question alone receives (at most 20)."
  11. Changed2 schema fields changed
    • addedInput schema / properties / edits
      Added value: +{
      +  "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"
      +}
    • addedInput schema / properties / loadLatest
      Added value: +{
      +  "description": "Read the latest saved revision of draftPlanId, without generating, saving or executing. Do not combine with edits or planner inputs.",
      +  "type": "boolean"
      +}
  12. Changed10 schema fields changed
    • changedInput schema / properties / attachments / description
      Previous value: -"Files available to the planned Study. Without questionAttachments every question receives every file. With questionAttachments each question receives only its assigned files. 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. The Study refuses to start if Minds cannot read the asset."New value: +"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."
    • addedInput schema / properties / attachments / items / properties / kind
      Added value: +{
      +  "const": "website",
      +  "description": "Use website for a page to read as a website rather than download as a file.",
      +  "type": "string"
      +}
    • addedInput schema / properties / attachments / items / properties / mimeType
      Added value: +{
      +  "maxLength": 255,
      +  "type": "string"
      +}
    • changedInput schema / properties / attachments / items / properties / path / description
      Previous value: -"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. The Study refuses to start if Minds cannot read the asset."New value: +"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."
    • changedInput schema / properties / attachments / items / properties / url / description
      Previous value: -"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. The Study refuses to start if Minds cannot read the asset."New value: +"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."
    • changedInput schema / properties / questionAttachments / description
      Previous value: -"Question-to-file mapping. It may cover a subset of the planned questions: mapped questions receive exactly the named attachments, unmapped questions keep every study-level file. Each question at most once; every referenced attachment id must resolve."New value: +"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."
    • removedInput schema / properties / questionAttachments / items / properties / attachmentIds / minItems
      Removed value: -1
    • changedInput schema / properties / source / description
      Previous value: -"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. The Study refuses to start if Minds cannot read the asset."New value: +"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."
    • changedInput schema / properties / source / properties / url / description
      Previous value: -"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. The Study refuses to start if Minds cannot read the asset."New value: +"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."
    • changedInput schema / properties / suggestQuestionStimuli / description
      Previous value: -"Default true. Lets the planner tie an attached image, video, or document to the one question that is about it (attachmentIds on those questions). Pass false to leave questions unassigned unless questionAttachments names them."New value: +"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."
  13. Changed3 schema fields changed
    • addedInput schema / properties / mindSourcePolicyOverrides
      Added value: +{
      +  "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"
      +}
    • changedInput schema / properties / questions / items / properties / response / description
      Previous value: -"Exact response contract for this item: type qualitative, categorical (with categoricalOptions), multiselect, or scale (with inclusive integer scaleRange)."New value: +"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."
    • addedInput schema / properties / sourcePolicy
      Added value: +{
      +  "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"
      +}
  14. Changed2 schema fields changed
    • addedInput schema / properties / idempotencyKey
      Added value: +{
      +  "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"
      +}
    • addedInput schema / properties / questions
      Added value: +{
      +  "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 response contract for this item: type qualitative, categorical (with categoricalOptions), multiselect, or scale (with inclusive integer scaleRange).",
      +        "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"
      +}
  15. Changed2 schema fields changed
    • changedInput schema / properties / questionAttachments / description
      Previous value: -"Complete question-to-file mapping. When present, every planned question must appear exactly once and every referenced attachment id must resolve."New value: +"Question-to-file mapping. It may cover a subset of the planned questions: mapped questions receive exactly the named attachments, unmapped questions keep every study-level file. Each question at most once; every referenced attachment id must resolve."
    • addedInput schema / properties / suggestQuestionStimuli
      Added value: +{
      +  "description": "Default true. Lets the planner tie an attached image, video, or document to the one question that is about it (attachmentIds on those questions). Pass false to leave questions unassigned unless questionAttachments names them.",
      +  "type": "boolean"
      +}
  16. Changed3 schema fields changed
    • changedInput schema / properties / attachments / description
      Previous value: -"Files that every question in this planned Study must evaluate. Use one distinct entry per creative (for example four A/B/C/D videos). 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. The Study refuses to start if Minds cannot read the asset."New value: +"Files available to the planned Study. Without questionAttachments every question receives every file. With questionAttachments each question receives only its assigned files. 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. The Study refuses to start if Minds cannot read the asset."
    • addedInput schema / properties / attachments / items / properties / id
      Added value: +{
      +  "description": "Stable asset ID used by questionAttachments to assign this file to specific planned questions.",
      +  "maxLength": 255,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / questionAttachments
      Added value: +{
      +  "description": "Complete question-to-file mapping. When present, every planned question must appear exactly once and 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,
      +        "minItems": 1,
      +        "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"
      +}
  17. Changed3 schema fields changed
    • addedInput schema / properties / attachments
      Added value: +{
      +  "description": "Files that every question in this planned Study must evaluate. Use one distinct entry per creative (for example four A/B/C/D videos). 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. The Study refuses to start if Minds cannot read the asset.",
      +  "items": {
      +    "properties": {
      +      "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. 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. The Study refuses to start if Minds cannot read the asset.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • changedInput schema / properties / source / description
      Previous value: -"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. The Study refuses to start if Minds cannot read the asset."New value: +"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. The Study refuses to start if Minds cannot read the asset."
    • changedInput schema / properties / source / properties / url / description
      Previous value: -"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. The Study refuses to start if Minds cannot read the asset."New value: +"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. The Study refuses to start if Minds cannot read the asset."
  18. Added

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint/openWorldHint/idempotentHint), the description discloses non-obvious behavior: saving never starts research, a stale revision is rejected, and re-sending a reworded request creates a SECOND draft rather than revising. These are the exact surprises an agent would otherwise hit, and nothing contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and revision rule are front-loaded well, and each paragraph addresses a distinct decision (new vs revise, setup scope, request vs questions, ordering/askIf, attachments). It is dense and somewhat long, but almost every sentence carries actionable information rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, deeply nested 7-parameter tool with an output schema, the description covers the full decision surface: creation vs revision, planner vs fixed instrument, skip logic via askIf, and attachment-to-question mapping. Return values are handled by the output schema, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the parameters and their mutual exclusions. The description reinforces request-vs-questions and the attachment default rules, but adds little meaning the schema does not already carry, matching the baseline for full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a precise verb+resource+scope: 'Creates or revises a non-executing draft for a multi-question plan inside an existing Study,' and clarifies it never starts research. It is clearly distinguishable in intent from execution tools like run_study_questions, but it never names a sibling tool to route against, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives strong when-to-use and when-not-to-use guidance: two-or-more known questions go in one draft, a one-question draft only for standalone/follow-up research, and explicit new-vs-revise instructions (draft.id + current revision). It does not explicitly name an alternative sibling (e.g. where to execute the plan), so full routing guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.