Skip to main content
Glama

Customize Study

customize_study

Send one research-design turn to Customize Plan. A 2026 Tasks client receives a durable task for turns without concept_image; poll tasks/get for the completed planning turn. Native concept images use the synchronous call. Put operational workflow constraints in execution_policy, never in message. Set decisions=agent only when the human delegated research-design choices; report assumptions and relay only remaining required questions. Otherwise use human mode and relay questions[]. If the client exposes an attached image as bytes or a readable local path, ask for a participant-facing label when missing, base64-encode the raw bytes, and send concept_image. Completed plans and setting changes are persisted. Then get_study, return the full saved plan for review, and obtain approval before invitations or paid launch.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
messageYesThe user's research brief, requested change, or answer to the previous Customize Plan question.
study_idYes
decisionsNoagent makes ordinary research-design assumptions when the human delegated those choices; human relays required questions.human
concept_imageNoOptional native concept-image attachment for this Customize Plan turn.
idempotency_keyNoReuse the same key and inputs if a prior call timed out. A different operation needs a new key.
organization_idNoPlatform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet.
execution_policyNoCaller workflow policy, kept out of the participant-facing research brief. This call never starts recruitment.review_before_fieldwork

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYesThe next Customize Plan turn and current study state.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / organization_id
      Added value: +{
      +  "description": "Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet.",
      +  "maxLength": 128,
      +  "minLength": 1,
      +  "type": "string"
      +}
  2. Changed27 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / study_id / 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)$"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / properties / result / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / result / properties / study / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / result / properties / study / properties / byop_config / additionalProperties
      Previous value: -trueNew value: +{}
    • removedOutput schema / properties / result / properties / study / properties / byop_config / properties / auto_send_incentives / $ref
      Removed value: -"#/properties/result/properties/study/properties/byop_config/properties/is_incentives_enabled"
    • addedOutput schema / properties / result / properties / study / properties / byop_config / properties / auto_send_incentives / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / result / properties / study / properties / dashboard_url / $ref
      Removed value: -"#/properties/result/properties/questions/items/properties/default"
    • addedOutput schema / properties / result / properties / study / properties / dashboard_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / result / properties / study / properties / expected_duration_seconds / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / result / properties / study / properties / expected_duration_seconds / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / result / properties / study / properties / interview_count / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / result / properties / study / properties / language / $ref
      Removed value: -"#/properties/result/properties/questions/items/properties/default"
    • addedOutput schema / properties / result / properties / study / properties / language / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / result / properties / study / properties / name / $ref
      Removed value: -"#/properties/result/properties/questions/items/properties/default"
    • addedOutput schema / properties / result / properties / study / properties / name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / result / properties / study / properties / recruiting_method / $ref
      Removed value: -"#/properties/result/properties/questions/items/properties/default"
    • addedOutput schema / properties / result / properties / study / properties / recruiting_method / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / result / properties / study / properties / study_link / $ref
      Removed value: -"#/properties/result/properties/questions/items/properties/default"
    • addedOutput schema / properties / result / properties / study / properties / study_link / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / result / properties / study / properties / updated_at / $ref
      Removed value: -"#/properties/result/properties/study/properties/created_at"
    • addedOutput schema / properties / result / properties / study / properties / updated_at / description
      Added value: +"ISO 8601 timestamp."
    • addedOutput schema / properties / result / properties / study / properties / updated_at / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / result / properties / study / properties / use_case / $ref
      Removed value: -"#/properties/result/properties/questions/items/properties/default"
    • addedOutput schema / properties / result / properties / study / properties / use_case / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  3. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only supply generic hints (readOnlyHint=false, openWorldHint=true, idempotentHint=false). The description adds substantial context beyond them: 'This call never starts recruitment,' plans and setting changes are persisted, task durability for 2026 clients, and the idempotency/timeout behavior for reuse.

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

Conciseness4/5

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

The core action is front-loaded and every sentence conveys distinct guidance. It is dense and long, with several branching instructions packed together, but little is pure filler.

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?

An output schema exists so return values need not be explained, and the description covers the multi-step workflow, persistence, mode selection, and approval gating an agent needs to invoke it correctly.

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 86%, so the schema carries most parameter docs (baseline 3). The description still adds real meaning: execution_policy holds workflow constraints 'never in message,' decisions=agent vs human semantics, and the concept_image labeling/base64-encoding guidance.

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

Purpose4/5

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

The description states a specific action ('Send one research-design turn to Customize Plan') that clearly separates it from siblings like queue_customize_study and get_customize_study_job. The phrasing is somewhat jargon-heavy ('research-design turn', 'Customize Plan'), but the verb+resource is identifiable.

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

Usage Guidelines5/5

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

It explicitly routes between modes: async task + poll tasks/get when no concept_image, synchronous call for native concept images, decisions=agent only when the human delegated choices, otherwise human mode. It also names downstream steps (get_study, approval before invitations/paid launch) and the execution_policy alternative for constraints.

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.

Resources