Skip to main content
Glama

Minds: Synthetic Market Research

Save Study Draft

save_study_draft
Destructive

Creates or checkpoints an unfinished Quick or Custom Study draft without starting research. It saves the objective, context, selected Audiences, method, questions, sources, and current planner step. Revisions replace the saved planning state and require the exact draft ID and expected revision; stale writes are rejected. For a retryable creation, choose idempotencyKey before the first save and reuse it after an uncertain result.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoSidebar name for the Study draft.
draftNoWhich durable draft to revise, and the retry key. Omit to create a new draft.
contextNoResearch context captured so far.
plannerNoPlanner state to restore when the draft is reopened.
methodIdNoResearch method selected for the draft. Use list_research_methods as the availability authority.guided-research
questionsNoManual research questions in their intended order.
audienceIdsNoExisting Audience IDs selected for the Study. Preferred.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
draftNoThe saved draft.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changed
    • addedInput schema / properties / context
      Added value: +{
      +  "default": {},
      +  "description": "Research context captured so far.",
      +  "properties": {
      +    "notes": {
      +      "description": "Additional research context or constraints.",
      +      "type": "string"
      +    },
      +    "objective": {
      +      "description": "Research objective or intent captured so far.",
      +      "type": "string"
      +    },
      +    "sourceUrls": {
      +      "default": [],
      +      "description": "Ordered source URLs supplied as Study context.",
      +      "items": {
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "website": {
      +      "description": "Primary website associated with the research context.",
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / currentStep
      Removed value: -{
      -  "default": "context",
      -  "description": "Exact planner step to reopen, such as context, audiences, method, questions, or confirm. The legacy value groups remains accepted when reopening an older draft.",
      -  "maxLength": 100,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • addedInput schema / properties / draft
      Added value: +{
      +  "description": "Which durable draft to revise, and the retry key. Omit to create a new draft.",
      +  "properties": {
      +    "expectedRevision": {
      +      "description": "Exact current revision. Required with draftId so stale updates cannot overwrite newer planning state.",
      +      "exclusiveMinimum": 0,
      +      "maximum": 9007199254740991,
      +      "type": "integer"
      +    },
      +    "id": {
      +      "description": "Existing Study draft ID to revise. Omit to create a new durable draft.",
      +      "format": "uuid",
      +      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +      "type": "string"
      +    },
      +    "idempotencyKey": {
      +      "description": "Creation only: choose a stable key before the first save and reuse it after an uncertain result. Reuse returns the existing draft; use draftId and expectedRevision to change it.",
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / draftId
      Removed value: -{
      -  "description": "Existing Study draft ID to revise. Omit to create a new durable draft.",
      -  "format": "uuid",
      -  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -  "type": "string"
      -}
    • removedInput schema / properties / expectedRevision
      Removed value: -{
      -  "description": "Exact current revision. Required with draftId so stale updates cannot overwrite newer planning state.",
      -  "exclusiveMinimum": 0,
      -  "maximum": 9007199254740991,
      -  "type": "integer"
      -}
    • removedInput schema / properties / groupIds
      Removed value: -{
      -  "description": "Legacy alias for audienceIds. Accepted for compatibility.",
      -  "items": {
      -    "format": "uuid",
      -    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedInput schema / properties / idempotencyKey
      Removed value: -{
      -  "description": "Creation only: choose a stable key before the first save and reuse it after an uncertain result. Reuse returns the existing draft; use draftId and expectedRevision to change it.",
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / mode
      Removed value: -{
      -  "default": "custom",
      -  "description": "Planning mode to restore. Defaults to custom for agent-authored planning state.",
      -  "enum": [
      -    "quick",
      -    "custom"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / notes
      Removed value: -{
      -  "description": "Additional research context or constraints.",
      -  "type": "string"
      -}
    • removedInput schema / properties / objective
      Removed value: -{
      -  "description": "Research objective or intent captured so far.",
      -  "type": "string"
      -}
    • addedInput schema / properties / planner
      Added value: +{
      +  "default": {},
      +  "description": "Planner state to restore when the draft is reopened.",
      +  "properties": {
      +    "currentStep": {
      +      "default": "context",
      +      "description": "Exact planner step to reopen, such as context, audiences, method, questions, or confirm. The legacy value groups remains accepted when reopening an older draft.",
      +      "maxLength": 100,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "mode": {
      +      "default": "custom",
      +      "description": "Planning mode to restore. Defaults to custom for agent-authored planning state.",
      +      "enum": [
      +        "quick",
      +        "custom"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / sourceUrls
      Removed value: -{
      -  "default": [],
      -  "description": "Ordered source URLs supplied as Study context.",
      -  "items": {
      -    "format": "uri",
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedInput schema / properties / website
      Removed value: -{
      -  "description": "Primary website associated with the research context.",
      -  "format": "uri",
      -  "type": "string"
      -}
  2. Changed1 schema field changed
    • addedInput schema / properties / idempotencyKey
      Added value: +{
      +  "description": "Creation only: choose a stable key before the first save and reuse it after an uncertain result. Reuse returns the existing draft; use draftId and expectedRevision to change it.",
      +  "maxLength": 200,
      +  "minLength": 1,
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {
      +    "draft": {
      +      "description": "The saved draft."
      +    }
      +  },
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / currentStep / description
      Previous value: -"Exact planner step to reopen, such as context, groups (Audiences), method, questions, or confirm."New value: +"Exact planner step to reopen, such as context, audiences, method, questions, or confirm. The legacy value groups remains accepted when reopening an older draft."
  5. Changed4 schema fields changed
    • addedInput schema / properties / audienceIds
      Added value: +{
      +  "description": "Existing Audience IDs selected for the Study. Preferred.",
      +  "items": {
      +    "format": "uuid",
      +    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / currentStep / description
      Previous value: -"Exact planner step to reopen, such as context, groups, method, questions, or confirm."New value: +"Exact planner step to reopen, such as context, groups (Audiences), method, questions, or confirm."
    • removedInput schema / properties / groupIds / default
      Removed value: -[]
    • changedInput schema / properties / groupIds / description
      Previous value: -"Existing Audience group IDs selected for the Study."New value: +"Legacy alias for audienceIds. Accepted for compatibility."
  6. Changed4 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / draftId / pattern
      Added value: +"^([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)$"
    • addedInput schema / properties / expectedRevision / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / groupIds / items / pattern
      Added value: +"^([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)$"
  7. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, and the description goes well beyond that: it discloses that revisions replace saved planning state, stale writes are rejected via expectedRevision, and retryable creation requires a stable idempotencyKey. This gives the agent the full concurrency and retry model, which is exactly the behavioral nuance needed for safe invocation.

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

Conciseness5/5

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

Four sentences, each carrying distinct information: purpose, payload summary, revision/concurrency behavior, and retry guidance. The main scope is front-loaded and there is no filler or repetition of schema details.

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

Completeness5/5

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

For a complex 7-parameter tool with nested objects and no required parameters, the description covers why to call it, what it saves, and the concurrency/retry model. The presence of an output schema means return values don't need to be described, so nothing critical for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds valuable relational semantics not obvious from the schema: it explains how draft.id and expectedRevision work together for optimistic concurrency and how idempotencyKey enables safe retries. It also summarizes the payload contents (objective, context, Audiences, method, questions, sources, planner step), tying the parameter groups to their purpose.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Creates or checkpoints an unfinished Quick or Custom Study draft without starting research.' It clearly scopes the tool to draft-saving rather than research execution, distinguishing it from siblings like create_study and list_study_drafts without needing to inspect schemas.

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?

The phrase 'without starting research' provides clear context on when this tool is appropriate—saving or checkpointing planning state—and implies create_study is the alternative when research should actually start. It does not explicitly name sibling alternatives or give exclusions, but the draft-versus-research framing is enough for an agent to make the right choice.

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.