Skip to main content
Glama

Get Study

get_study
Read-onlyIdempotent

Get the full persisted study, including the plan, audience targeting, screeners, and concept assets managed by customize_study. Call before metadata updates and after customization to verify the result. After customization, return the complete persisted study_plan to the user in a readable form. Panel launch approval happens in the launch_panel MCP App, or explicit human chat confirmation when the client does not support Apps. Obtain explicit approval of the current plan before BYOP participant creation; retain study_id and updated_at so unchanged approval survives a resumed workflow. When provisioning_status is provisioned, include both returned links in the completion response. dashboard_url is the researcher management link. study_link is the live participant interview link, not a test or preview link; opening it starts the participant experience. The public API does not expose a separate researcher-preview URL.

Input Schema

NameRequiredDescriptionDefault
study_idYes
organization_idNoOrganization for this operation and billing. Use list_organizations to choose an active membership.

Output Schema

NameRequiredDescriptionDefault
resultYesThe full persisted study.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / organization_id / description
      Previous value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
  2. 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"
      +}
  3. Changed39 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 / byop_config / additionalProperties
      Previous value: -trueNew value: +{}
    • removedOutput schema / properties / result / properties / byop_config / properties / auto_send_incentives / $ref
      Removed value: -"#/properties/result/properties/byop_config/properties/is_incentives_enabled"
    • addedOutput schema / properties / result / properties / byop_config / properties / auto_send_incentives / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • changedOutput schema / properties / result / properties / concept_images / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / result / properties / concept_links / items / additionalProperties
      Previous value: -trueNew value: +{}
    • removedOutput schema / properties / result / properties / concept_links / items / properties / embeddable / $ref
      Removed value: -"#/properties/result/properties/byop_config/properties/is_incentives_enabled"
    • addedOutput schema / properties / result / properties / concept_links / items / properties / embeddable / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / result / properties / dashboard_url / $ref
      Removed value: -"#/properties/result/properties/name"
    • addedOutput schema / properties / result / properties / dashboard_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / result / properties / expected_duration_seconds / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / result / properties / expected_duration_seconds / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / result / properties / interview_attempt_count / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / result / properties / interview_count / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / result / properties / invitation_count / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / result / properties / language / $ref
      Removed value: -"#/properties/result/properties/name"
    • addedOutput schema / properties / result / properties / language / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / result / properties / quality_interview_count / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / result / properties / recruiting_method / $ref
      Removed value: -"#/properties/result/properties/name"
    • addedOutput schema / properties / result / properties / recruiting_method / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / result / properties / resolved_targeting / items / additionalProperties
      Previous value: -trueNew value: +{}
    • removedOutput schema / properties / result / properties / resolved_targeting / items / properties / approximation_note / $ref
      Removed value: -"#/properties/result/properties/name"
    • addedOutput schema / properties / result / properties / resolved_targeting / items / properties / approximation_note / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / result / properties / resolved_targeting / items / properties / qualification_id / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / result / properties / resolved_targeting / items / properties / qualification_id / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / result / properties / screener_questions / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": {},
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": {},
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / result / properties / study_link / $ref
      Removed value: -"#/properties/result/properties/name"
    • addedOutput schema / properties / result / properties / study_link / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / result / properties / study_plan / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "background": {
      -        "$ref": "#/properties/result/properties/name"
      -      },
      -      "conversation_flow": {
      -        "$ref": "#/properties/result/properties/name"
      -      },
      -      "learning_goals": {
      -        "$ref": "#/properties/result/properties/name"
      -      },
      -      "learning_goals_structured": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "evidence_needed": {
      -                  "$ref": "#/properties/result/properties/name"
      -                },
      -                "id": {
      -                  "type": "string"
      -                },
      -                "question": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "id",
      -                "question"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "objectives": {
      -        "$ref": "#/properties/result/properties/name"
      -      },
      -      "study_improvements": {
      -        "$ref": "#/properties/result/properties/name"
      -      },
      -      "study_specific_rules": {
      -        "$ref": "#/properties/result/properties/name"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "background": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "conversation_flow": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "learning_goals": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "learning_goals_structured": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "evidence_needed": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "id": {
      +                  "type": "string"
      +                },
      +                "question": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "question"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "objectives": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "study_improvements": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "study_specific_rules": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / result / properties / targeting_attributes / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": {},
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": {},
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / result / properties / updated_at / $ref
      Removed value: -"#/properties/result/properties/created_at"
    • addedOutput schema / properties / result / properties / updated_at / description
      Added value: +"ISO 8601 timestamp."
    • addedOutput schema / properties / result / properties / updated_at / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / result / properties / use_case / $ref
      Removed value: -"#/properties/result/properties/name"
    • addedOutput schema / properties / result / properties / use_case / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  4. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description still adds real behavioral context: approval must precede BYOP participant creation, approval is scoped by study_id + updated_at so it survives resumed workflows, and study_link is a live participant link that starts the participant experience rather than a preview. The only gap is that these are workflow obligations rather than properties of the call itself.

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

Conciseness3/5

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

Purpose and call ordering are front-loaded, which is good. But the paragraph then sprawls into launch-approval policy, BYOP approval caching, and a note that the public API exposes no researcher-preview URL – material that belongs to approve_panel_launch or launch_panel rather than a read tool, diluting the core instruction.

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?

With an output schema present, return fields needn't be enumerated, and the description still adds the one thing the schema can't convey: how to interpret dashboard_url versus study_link. For a 2-parameter read tool with full annotations, the definition is complete enough to call correctly.

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 coverage is 50%: organization_id is described in the schema, while study_id carries no description. The description mentions retaining study_id, but only as workflow state, not as parameter semantics, and it never explains when organization_id should be supplied versus omitted. Baseline 3 is appropriate since the schema does part of the work.

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 first sentence gives a specific verb and resource and enumerates the payload ('plan, audience targeting, screeners, and concept assets'), which distinguishes it from list_studies and from job-status siblings like get_customize_study_job. It also ties the resource to the sibling that mutates it (customize_study). It never explicitly contrasts itself with review_study or get_study_report, so it stops short of full sibling differentiation.

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?

Explicit call-ordering guidance is given: 'Call before metadata updates and after customization to verify the result,' and it names the alternative channel for panel launch approval (launch_panel MCP App / human chat confirmation). What's missing is when NOT to reach for it – e.g., use list_studies when you have no study_id – leaving that inference to the agent.

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