Skip to main content
Glama

Minds: Synthetic Market Research

Plan a Multi-Question Block in a Study

plan_study_questions
Destructive

Deprecated alias of create_study_plan and revise_study_plan; identical behaviour.

Input Schema

NameRequiredDescriptionDefault
draftNo
studyNo
policyNo
requestNo
stimulusNo
questionsNo
idempotencyKeyNo
conversationFilesNoStimulus files for the planned block, added to stimulus.attachments. Files shared in this conversation: uploaded or generated images, PDFs, documents. Each is copied into Minds storage on receipt; its file_id is its attachment id.

Output Schema

NameRequiredDescriptionDefault
studyIdNoStudy the plan belongs to.
revisionNoDraft revision to confirm.
draftPlanIdNoDraft plan to confirm with start_study_run.
workspaceUrlNoAuthenticated Minds workspace link for the Study.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / workspaceUrl
      Added value: +{
      +  "description": "Authenticated Minds workspace link for the Study.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. Added
  3. Removed
  4. Changed1 schema field changed
    • changedInput schema / properties / study / properties / name / description
      Previous 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."New value: +"Study name (exact or partial, case-insensitive; fuzzy fallback for typos). Omit with studyId to continue the active Study."
  5. Changed6 schema fields changed
    • changedInput schema / properties / policy / description
      Previous value: -"Evidence policy and language stored in the draft revision and reviewed before execution."New value: +"Research method, evidence policy and language stored in the draft revision and reviewed before execution."
    • addedInput schema / properties / policy / properties / methodId
      Added value: +{
      +  "description": "Registered research method for the plan's first module: a Study template's configuration.methodId (van-westendorp, gabor-granger, maxdiff, conjoint, kano, nps, top-box, key-drivers, turf, …) or any method list_research_methods reports as executable; anything else is rejected. Works with request (the planner plans for the method) and with questions (kept exactly, asked alongside the tasks a calculator method designs when the Study runs). Configuration the request, questions or answers do not state (a Van Westendorp subject, MaxDiff items, a currency) comes back as confirmation questions. Omit to let the planner choose; a revision keeps the method selected earlier.",
      +  "maxLength": 80,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / questions / description
      Previous value: -"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. A fixed instrument runs as Custom research (guided-research): a saved Study template's configuration.questions can be passed here, but a template methodId other than guided-research (a calculator-backed method such as Van Westendorp or MaxDiff) is not applied; manage_study_template action use runs the saved method in a web-app draft."New value: +"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 in the same call; answer the draft's confirmation questions afterwards with draft.id, draft.revision and draft.answers alone, which keeps these questions exactly. Repeated question texts or colliding ids are rejected. A saved Study template's configuration.questions can be passed here (each item's text and response); pass its configuration.methodId as policy.methodId so the template's method runs. Without it a fixed instrument runs as Custom research (guided-research)."
    • changedInput schema / properties / study / description
      Previous value: -"Which Study the plan belongs to. Omit entirely to continue the active Study from this MCP session."New value: +"Which Study the plan belongs to, and optionally Audiences to add to it first. Omit entirely to continue the active Study from this MCP session."
    • addedInput schema / properties / study / properties / audienceIds
      Added value: +{
      +  "description": "Existing Audience IDs to add to this Study before planning. Already attached ones are a no-op; if any is refused (no access, paid Marketplace add-on missing) none is added and nothing is planned. With link sharing on, added Audiences and their Minds become publicly readable.",
      +  "items": {
      +    "format": "uuid",
      +    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +    "type": "string"
      +  },
      +  "maxItems": 50,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedOutput schema / properties / audienceAttachment
      Added value: +{
      +  "description": "With study.audienceIds: attached (added now) and alreadyAttached Audience IDs."
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / questions / description
      Previous value: -"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."New value: +"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. A fixed instrument runs as Custom research (guided-research): a saved Study template's configuration.questions can be passed here, but a template methodId other than guided-research (a calculator-backed method such as Van Westendorp or MaxDiff) is not applied; manage_study_template action use runs the saved method in a web-app draft."
  7. Changed3 schema fields changed
    • addedInput schema / properties / draft / properties / edits / properties / questions / items / properties / response / properties / unit
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "code": {
      +      "description": "ISO 4217 currency code (EUR, USD); % for percentage; singular Intl unit identifier (hour, meter, kilogram, liter) for measurements; or a label of up to 80 characters for custom. Selecting a unit does not convert numbers or impose a range.",
      +      "maxLength": 80,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "kind": {
      +      "enum": [
      +        "currency",
      +        "percentage",
      +        "duration",
      +        "length",
      +        "mass",
      +        "volume",
      +        "custom"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "code"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / draft / properties / questionResponses / items / properties / unit
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "code": {
      +      "description": "ISO 4217 currency code (EUR, USD); % for percentage; singular Intl unit identifier (hour, meter, kilogram, liter) for measurements; or a label of up to 80 characters for custom. Selecting a unit does not convert numbers or impose a range.",
      +      "maxLength": 80,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "kind": {
      +      "enum": [
      +        "currency",
      +        "percentage",
      +        "duration",
      +        "length",
      +        "mass",
      +        "volume",
      +        "custom"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "code"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / questions / items / properties / response / properties / unit
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "code": {
      +      "description": "ISO 4217 currency code (EUR, USD); % for percentage; singular Intl unit identifier (hour, meter, kilogram, liter) for measurements; or a label of up to 80 characters for custom. Selecting a unit does not convert numbers or impose a range.",
      +      "maxLength": 80,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "kind": {
      +      "enum": [
      +        "currency",
      +        "percentage",
      +        "duration",
      +        "length",
      +        "mass",
      +        "volume",
      +        "custom"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "code"
      +  ],
      +  "type": "object"
      +}
  8. Changed4 schema fields changed
    • removedOutput schema / properties / nextAction / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / nextAction / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / studyId / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / studyId / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  9. Changed5 schema fields changed
    • addedInput schema / properties / conversationFiles
      Added value: +{
      +  "description": "Stimulus files for the planned block, added to stimulus.attachments. Files shared in this conversation: uploaded or generated images, PDFs, documents. Each is copied into Minds storage on receipt; its file_id is its attachment id.",
      +  "items": {
      +    "properties": {
      +      "download_url": {
      +        "description": "Download URL the chat host supplies for this file.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "file_id": {
      +        "description": "The chat host's ID for this file.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "file_name": {
      +        "description": "File name when the host supplies it.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "mime_type": {
      +        "description": "MIME type when the host supplies it.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "download_url",
      +      "file_id"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / files
      Removed value: -{
      -  "description": "Stimulus files for the planned block, added to stimulus.attachments. Files shared in this conversation: uploaded or generated images, PDFs, documents. Each is copied into Minds storage on receipt; its file_id is its attachment id.",
      -  "items": {
      -    "properties": {
      -      "download_url": {
      -        "description": "Download URL the chat host supplies for this file.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "file_id": {
      -        "description": "The chat host's ID for this file.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "file_name": {
      -        "description": "File name when the host supplies it.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "mime_type": {
      -        "description": "MIME type when the host supplies it.",
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "download_url",
      -      "file_id"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • 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. 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. A file shared in the conversation (uploaded or generated image, PDF, document) is read through the tool's top-level files field where the tool has one; elsewhere a PDF or image with no public URL has no MCP route and is uploaded in the Minds app first. Text contents (UTF-8 text, Markdown, CSV, JSON) can be sent to import_audience_sources. 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; 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. Accepts a public HTTP(S) URL or a file already in the user's Minds uploads under chat/<userId>/ (its storage path or its /api/uploads/chat/ URL). MCP cannot read a local path. Files shared in the conversation (uploaded or generated images, PDFs, documents) go in the tool's top-level conversationFiles field where the tool has one; elsewhere a PDF or image without a public URL has no MCP route and is uploaded in the Minds app first. Plain text contents (UTF-8 text, Markdown, CSV, JSON) can go to import_audience_sources. External URLs are copied into Minds storage before a Study is saved or run. temp/, portfolio/ and context/ paths and /api/uploads/file-access/ URLs belong to other owners and are not accepted. A Study does not start until Minds can read every file."
    • 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. 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. A file shared in the conversation (uploaded or generated image, PDF, document) is read through the tool's top-level files field where the tool has one; elsewhere a PDF or image with no public URL has no MCP route and is uploaded in the Minds app first. Text contents (UTF-8 text, Markdown, CSV, JSON) can be sent to import_audience_sources. 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; 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. Accepts a public HTTP(S) URL or a file already in the user's Minds uploads under chat/<userId>/ (its storage path or its /api/uploads/chat/ URL). MCP cannot read a local path. Files shared in the conversation (uploaded or generated images, PDFs, documents) go in the tool's top-level conversationFiles field where the tool has one; elsewhere a PDF or image without a public URL has no MCP route and is uploaded in the Minds app first. Plain text contents (UTF-8 text, Markdown, CSV, JSON) can go to import_audience_sources. External URLs are copied into Minds storage before a Study is saved or run. temp/, portfolio/ and context/ paths and /api/uploads/file-access/ URLs belong to other owners and are not accepted. A Study does not start until Minds can read every file."
    • changedInput schema / properties / stimulus / properties / source / properties / url / description
      Previous 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. A file shared in the conversation (uploaded or generated image, PDF, document) is read through the tool's top-level files field where the tool has one; elsewhere a PDF or image with no public URL has no MCP route and is uploaded in the Minds app first. Text contents (UTF-8 text, Markdown, CSV, JSON) can be sent to import_audience_sources. 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; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset."New value: +"Fetchable source URL. Accepts a public HTTP(S) URL or a file already in the user's Minds uploads under chat/<userId>/ (its storage path or its /api/uploads/chat/ URL). MCP cannot read a local path. Files shared in the conversation (uploaded or generated images, PDFs, documents) go in the tool's top-level conversationFiles field where the tool has one; elsewhere a PDF or image without a public URL has no MCP route and is uploaded in the Minds app first. Plain text contents (UTF-8 text, Markdown, CSV, JSON) can go to import_audience_sources. External URLs are copied into Minds storage before a Study is saved or run. temp/, portfolio/ and context/ paths and /api/uploads/file-access/ URLs belong to other owners and are not accepted. A Study does not start until Minds can read every file."
  10. Changed6 schema fields changed
    • addedInput schema / properties / files
      Added value: +{
      +  "description": "Stimulus files for the planned block, added to stimulus.attachments. Files shared in this conversation: uploaded or generated images, PDFs, documents. Each is copied into Minds storage on receipt; its file_id is its attachment id.",
      +  "items": {
      +    "properties": {
      +      "download_url": {
      +        "description": "Download URL the chat host supplies for this file.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "file_id": {
      +        "description": "The chat host's ID for this file.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "file_name": {
      +        "description": "File name when the host supplies it.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "mime_type": {
      +        "description": "MIME type when the host supplies it.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "download_url",
      +      "file_id"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • 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. 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."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. A file shared in the conversation (uploaded or generated image, PDF, document) is read through the tool's top-level files field where the tool has one; elsewhere a PDF or image with no public URL has no MCP route and is uploaded in the Minds app first. Text contents (UTF-8 text, Markdown, CSV, JSON) can be sent to import_audience_sources. 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; 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. 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."New value: +"Storage path of a file already uploaded to Minds (chat/<userId>/...)."
    • changedInput schema / properties / stimulus / properties / attachments / items / properties / url / description
      Previous 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."New value: +"Fetchable HTTP(S), signed, or Minds workspace upload URL."
    • 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. 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."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. A file shared in the conversation (uploaded or generated image, PDF, document) is read through the tool's top-level files field where the tool has one; elsewhere a PDF or image with no public URL has no MCP route and is uploaded in the Minds app first. Text contents (UTF-8 text, Markdown, CSV, JSON) can be sent to import_audience_sources. 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; 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. 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."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. A file shared in the conversation (uploaded or generated image, PDF, document) is read through the tool's top-level files field where the tool has one; elsewhere a PDF or image with no public URL has no MCP route and is uploaded in the Minds app first. Text contents (UTF-8 text, Markdown, CSV, JSON) can be sent to import_audience_sources. 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; pass a plain external URL instead. The Study refuses to start if Minds cannot read the asset."
  11. 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."
  12. 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."
  13. 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"
  14. 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."
  15. 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."
  16. 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"
      +]
  17. 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"
      -}
  18. 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."
  19. 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"
      +}
  20. 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)."
  21. 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"
      +}
  22. 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."
  23. 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"
      +}
  24. 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"
      +}
  25. 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"
      +}
  26. 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"
      +}
  27. 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."
  28. Added

TDQS

C2.9/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true and idempotentHint=false, and the description adds only the deprecation status plus the claim of behavioural parity with the successors. It does not explain what a 'plan' block mutates or destroys, nor what the alias changes relative to create_study_plan, so value beyond the annotations is thin.

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?

A single short sentence with no filler, and the most decision-relevant fact (deprecated alias) is front-loaded. It is efficient, though the brevity reflects missing content rather than disciplined compression.

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

Completeness2/5

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

For an eight-parameter, destructive, open-world mutation tool with near-zero schema documentation, one line of prose is far from sufficient. An output schema exists so return values need not be explained, but inputs and side effects remain entirely opaque.

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

Parameters1/5

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

Schema description coverage is 13% and eight parameters (draft, study, policy, request, stimulus, questions, idempotencyKey) are declared with empty schemas. The description supplies no meaning for any of them, leaving an agent unable to construct a valid call from either structured data or prose.

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

Purpose3/5

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

The description identifies the tool only by relation to siblings ('deprecated alias of create_study_plan and revise_study_plan'), so an agent can place it in the family but is never told directly what operation it performs. The 'identical behaviour' clause helps, but the actual verb+resource is borrowed from other tools rather than stated.

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 clearly signals deprecation and names the two replacement tools, which is exactly the routing information an agent needs to avoid this tool. It stops short of saying how to choose between create_study_plan and revise_study_plan, so the alternative selection is only half specified.

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.