Skip to main content
Glama

List Interviews

list_interviews
Read-onlyIdempotent

List lightweight interview rows. Fetch an interview to get messages, recordings, and screener responses.

Input Schema

NameRequiredDescriptionDefault
pageNo
statusNo
qualityNo
study_idNo
page_sizeNo
participant_idNo
organization_idNoOrganization for this operation and billing. Use list_organizations to choose an active membership.

Output Schema

NameRequiredDescriptionDefault
resultYesPaginated interview summaries.

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
    • changedOutput schema / properties / result / properties / interviews / items / properties / participant_source / enum
      Previous value: -[
      -  "byop",
      -  "panel",
      -  "external_panel",
      -  "link",
      -  "unknown"
      -]New value: +[
      +  "byop",
      +  "panel",
      +  "external_panel",
      +  "link",
      +  "synthetic",
      +  "unknown"
      +]
  3. 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"
      +}
  4. Changed23 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 / page / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / participant_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)$"
    • 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 / interviews / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / result / properties / interviews / items / properties / duration_seconds / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / result / properties / interviews / items / properties / ended_at / $ref
      Removed value: -"#/properties/result/properties/interviews/items/properties/started_at"
    • addedOutput schema / properties / result / properties / interviews / items / properties / ended_at / description
      Added value: +"ISO 8601 timestamp."
    • addedOutput schema / properties / result / properties / interviews / items / properties / ended_at / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / result / properties / interviews / items / properties / language / $ref
      Removed value: -"#/properties/result/properties/interviews/items/properties/study_id"
    • addedOutput schema / properties / result / properties / interviews / items / properties / language / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / result / properties / interviews / items / properties / participant / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {
      -      "email": {
      -        "$ref": "#/properties/result/properties/interviews/items/properties/study_id"
      -      },
      -      "id": {
      -        "$ref": "#/properties/result/properties/interviews/items/properties/study_id"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "email": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "id": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / result / properties / interviews / items / properties / quality / $ref
      Removed value: -"#/properties/result/properties/interviews/items/properties/study_id"
    • addedOutput schema / properties / result / properties / interviews / items / properties / quality / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / result / properties / interviews / items / properties / status / $ref
      Removed value: -"#/properties/result/properties/interviews/items/properties/study_id"
    • addedOutput schema / properties / result / properties / interviews / items / properties / status / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / result / properties / page / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / result / properties / page_size / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / result / properties / total_count / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / result / properties / total_count / minimum
      Added value: +-9007199254740991
  5. First observed

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, closed-world, and non-destructive behavior. The description adds that rows are 'lightweight' and directs the agent to get_interview for full details, which is useful context about output scope beyond the annotations. It does not describe pagination behavior, but with page and page_size visible in the schema, the gap is minor.

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?

Two short sentences, front-loaded with the core purpose. Every phrase earns its place: the first states what the tool does, the second provides actionable context for when to use a different tool. No boilerplate or repetition.

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

Completeness3/5

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

The output schema exists, so return values need not be explained. Annotations cover the safety profile. However, for a list tool with 7 filter parameters, the description does not explain what can be filtered or how the filters combine, leaving the agent to infer from bare schema names. It is minimally adequate but thin.

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

Parameters2/5

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

There are 7 parameters with only 14% schema description coverage (only organization_id has a description). The tool description mentions no parameters at all, so it does not compensate for the low coverage. The schema provides names, types, and enums, so an agent can infer some meaning, but no added semantics (e.g., how status or quality filters behave, or how pagination works) are given.

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 uses a specific verb ('List') and resource ('interview rows'), and adds the qualifier 'lightweight' to distinguish the output from full interview details. It implicitly contrasts with get_interview by saying 'Fetch an interview to get messages, recordings, and screener responses', giving an agent enough to tell the two apart. It does not explicitly differentiate from other list_* siblings, but the resource is clear.

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?

The second sentence implies when to use get_interview instead of this tool: when you need messages, recordings, or screener responses. However, there is no explicit guidance on when to use list_interviews versus other list tools like list_studies or list_participants, and no exclusions or prerequisites are stated. Usage is implied rather than spelled out.

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