Skip to main content
Glama

Minds: Synthetic Market Research

Revise Study Plan

revise_study_plan
Destructive

Revises one saved draft at its current draft.id and draft.revision without starting research. Accepts edits, refinement, clarification answers or response-format corrections. Stale revisions fail. Fixed questions stay verbatim when only clarification answers change. Bounded history may prune older revisions; the changed draft requires review again.

Input Schema

NameRequiredDescriptionDefault
draftYesExisting draft and current revision, with the requested changes or clarification answers.
studyNoStudy id or name. Omit to use the active Study of this MCP session.
policyNoResearch method and locale for this plan. Each Mind automatically uses its relevant knowledge alongside the assigned Study stimulus.
requestNoPlanner input containing the research objective, questionnaire, survey, battery, section, cohesive question set, audit request, or analysis request. Required for a new draft. Include EVERY question already known in this one request so the planner can group the complete set into cohesive named modules for one confirmed multi-question run inside the Study; never create one planning request per known question. This request is not sent verbatim to Minds; the exact proposed respondent-visible questions are returned in the draft for review. Write only the user's research brief and context relevant to the research question. Never tool errors, status or retry messages, Minds or other internal links, or your own process notes.
stimulusNoSource and attachments shown to the respondents, with per-question assignments.
questionsNoFixed instrument: use INSTEAD of request when the user supplies a pre-registered or fixed questionnaire whose wording, order, and response formats must not change. The planner is bypassed; every question is stored verbatim, in this order, with exactly this response contract. Cannot be combined with refinement, answers or questionResponses in the same call (refused); suggestQuestionStimuli has no effect here, place files with questionAttachments; 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).
idempotencyKeyNoOptional stable retry key. When omitted the tool derives one from its own arguments, so a repeated identical call (including a host retry after a timeout) returns the draft revision that was already saved instead of planning again. Pass a fresh key to force a new plan for identical input.
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.
nextActionNoWhat to do next: show the draft and wait for explicit confirmation.
draftPlanIdNoDraft plan to confirm with start_study_run.
draftReviewNoThe saved draft as reviewed: questions, methods, outputs and confirmation choices.
workspaceUrlNoAuthenticated Minds workspace link for the Study.
audienceAttachmentNoWith study.audienceIds: attached (added now) and alreadyAttached Audience IDs.

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. Changed8 schema fields changed
    • changedInput schema / properties / draft / properties / answers / description
      Previous value: -"Answers to the draft confirmation questions."New value: +"Answers to the draft confirmation questions. Not with questions in the same call (refused): answer a fixed instrument's confirmation questions with draftPlanId, revision and answers alone, which keeps its questions exactly."
    • 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 finite numeric 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. Not with questions in the same call (refused): a fixed instrument states each item's format in questions.response."
    • changedInput schema / properties / draft / properties / refinement / description
      Previous value: -"How the user wants the existing draft changed."New value: +"How the user wants the existing draft changed, in the user's terms. Never tool errors, status or retry messages, Minds or other internal links, or your own process notes. Not with questions in the same call (refused): to change a fixed instrument, send the changed instrument as questions."
    • 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 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)."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 or questionResponses in the same call (refused); suggestQuestionStimuli has no effect here, place files with questionAttachments; 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 / request / description
      Previous value: -"Planner input containing the research objective, questionnaire, survey, battery, section, cohesive question set, audit request, or analysis request. Required for a new draft. Include EVERY question already known in this one request so the planner can group the complete set into cohesive named modules for one confirmed multi-question run inside the Study; never create one planning request per known question. This request is not sent verbatim to Minds; the exact proposed respondent-visible questions are returned in the draft for review."New value: +"Planner input containing the research objective, questionnaire, survey, battery, section, cohesive question set, audit request, or analysis request. Required for a new draft. Include EVERY question already known in this one request so the planner can group the complete set into cohesive named modules for one confirmed multi-question run inside the Study; never create one planning request per known question. This request is not sent verbatim to Minds; the exact proposed respondent-visible questions are returned in the draft for review. Write only the user's research brief and context relevant to the research question. Never tool errors, status or retry messages, Minds or other internal links, or your own process notes."
    • 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. 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."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. Content is only the material respondents judge; the planner sets aside anything else it finds there. 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 / content / description
      Previous value: -"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."New value: +"Exact respondent-visible pasted text: the material the user shared for the Minds to judge. Use only with kind prompt when Minds must evaluate a concept, message, description, or other text. Do not include planner-only instructions. Never tool errors, status or retry messages, Minds or other internal links, or your own process notes."
    • changedInput schema / properties / stimulus / properties / suggestQuestionStimuli / description
      Previous 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."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. Only planned drafts (request) use it: with questions (a fixed instrument) no planner runs and it has no effect, so place files on those questions with questionAttachments."
  3. Changed6 schema fields changed
    • addedInput schema / properties / draft / properties / questionResponses / items / properties / exclusiveOptions
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / draft / properties / questionResponses / items / properties / optionSets
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "condition": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "assignmentId": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "levelIds": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "maxItems": 100,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "assignmentId",
      +          "levelIds"
      +        ],
      +        "type": "object"
      +      },
      +      "label": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "options": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "maxItems": 100,
      +        "minItems": 2,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "condition",
      +      "label",
      +      "options"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / draft / properties / questionResponses / items / properties / scaleExceptions
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / questions / items / properties / response / properties / exclusiveOptions
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / questions / items / properties / response / properties / optionSets
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "condition": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "assignmentId": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "levelIds": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "maxItems": 100,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "assignmentId",
      +          "levelIds"
      +        ],
      +        "type": "object"
      +      },
      +      "label": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "options": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "maxItems": 100,
      +        "minItems": 2,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "condition",
      +      "label",
      +      "options"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / questions / items / properties / response / properties / scaleExceptions
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
  4. Changed4 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, including each item's askIf (omitted means none); 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, item IDs and exact wording. Each new revision includes relevant Mind knowledge. 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."
    • changedInput schema / properties / policy / description
      Previous value: -"Research method, locale and permitted source policies for this plan."New value: +"Research method and locale for this plan. Each Mind automatically uses its relevant knowledge alongside the assigned Study stimulus."
    • removedInput schema / properties / policy / 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 / policy / 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"
      -}
  5. Changed1 schema field changed
    • changedInput schema / properties / stimulus / properties / questionAttachments / description
      Previous 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."New value: +"Question-to-file mapping. An omitted question receives every asset. An asset placed on no question is shown with every question, including questions mapped to []. Each question at most once; every referenced attachment id must resolve."
  6. Added

TDQS

A3.9/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, yet the description adds concrete behavior the agent could not infer: optimistic concurrency ('stale revisions fail'), a data-retention side effect ('Bounded history may prune older revisions'), and a workflow consequence ('the changed draft requires review again'). It also states a preservation guarantee ('Fixed questions stay verbatim when only clarification answers change'), which is exactly the kind of non-obvious contract an agent needs before mutating a draft.

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?

Five short sentences, front-loaded with the action and its addressing keys, with no filler. The clause listing accepted change types mildly duplicates what the nested schema already documents, which is the only slack.

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

Completeness4/5

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

For an 8-parameter, deeply nested mutation tool with an output schema, the description covers the important non-schema facts: revision staleness, history pruning, verbatim preservation of fixed questions, and the re-review requirement. It omits run-mode interactions and the study/policy scoping behavior, but those are documented in the schema itself.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already carries the parameter burden and 3 is the baseline. The description adds one meaningful semantic point beyond the schema, that draft.revision must be the current revision or the call fails, but says nothing about study scoping, policy, or idempotencyKey behavior.

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

Purpose4/5

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

States a specific verb and resource ('Revises one saved draft') plus the addressing keys (draft.id and draft.revision) and the negative scope ('without starting research'), which separates it from run_study/start_study. It does not name or differentiate itself from the closely related siblings save_study_draft or create_study_plan, so the boundary with those tools is left implicit.

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

Usage Guidelines3/5

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

It enumerates the four input modes it accepts (edits, refinement, clarification answers, response-format corrections), which is useful selection guidance among its own parameters. However, it never states when to use this tool versus save_study_draft or create_study_plan, and gives no prerequisites or exclusions beyond 'stale revisions fail'.

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.