Skip to main content
Glama

Influence

List WhatsApp media

whatsappMediaList
Read-onlyIdempotent

Read paginated unexpired owned ready images/videos already uploaded for one WhatsApp account. Use the exact providerMediaId in a native message and fileAssetPublicId for owned media review. This does not upload media or approve sending.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
accountPublicIdYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "ok": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "output": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "cursor": {
      -            "anyOf": [
      -              {
      -                "maxLength": 4096,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "done": {
      -            "type": "boolean"
      -          },
      -          "items": {
      -            "items": {
      -              "$ref": "#/$defs/__schema0"
      -            },
      -            "maxItems": 20,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "cursor",
      -          "done",
      -          "items"
      -        ],
      -        "type": "object"
      -      },
      -      "toolName": {
      -        "const": "whatsappMediaList",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "ok",
      -      "output",
      -      "toolName"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "code": {
      -            "enum": [
      -              "INVALID_INPUT",
      -              "FORBIDDEN",
      -              "NOT_FOUND",
      -              "CONFLICT",
      -              "FEATURE_DISABLED",
      -              "CONFIRMATION_REQUIRED",
      -              "CONFIRMATION_INVALID",
      -              "UPSTREAM_FAILED",
      -              "NEEDS_REVIEW",
      -              "INTERNAL"
      -            ],
      -            "type": "string"
      -          },
      -          "message": {
      -            "maxLength": 2048,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "retryable": {
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "code",
      -          "message",
      -          "retryable"
      -        ],
      -        "type": "object"
      -      },
      -      "ok": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "toolName": {
      -        "const": "whatsappMediaList",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "ok",
      -      "toolName"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "ok": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "output": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "cursor": {
      +            "anyOf": [
      +              {
      +                "maxLength": 4096,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "done": {
      +            "type": "boolean"
      +          },
      +          "items": {
      +            "items": {
      +              "$ref": "#/$defs/__schema0"
      +            },
      +            "maxItems": 20,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "cursor",
      +          "done",
      +          "items"
      +        ],
      +        "type": "object"
      +      },
      +      "toolName": {
      +        "const": "whatsappMediaList",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "output",
      +      "toolName"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "code": {
      +            "enum": [
      +              "AI_SCHEDULING_LIMIT_REACHED",
      +              "AI_SCHEDULING_UNAVAILABLE",
      +              "INVALID_INPUT",
      +              "FORBIDDEN",
      +              "NOT_FOUND",
      +              "CONFLICT",
      +              "FEATURE_DISABLED",
      +              "CONFIRMATION_REQUIRED",
      +              "CONFIRMATION_INVALID",
      +              "UPSTREAM_FAILED",
      +              "NEEDS_REVIEW",
      +              "INTERNAL"
      +            ],
      +            "type": "string"
      +          },
      +          "message": {
      +            "maxLength": 2048,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "retryable": {
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "message",
      +          "retryable"
      +        ],
      +        "type": "object"
      +      },
      +      "ok": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "toolName": {
      +        "const": "whatsappMediaList",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "ok",
      +      "toolName"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: only unexpired, owned, ready media are returned, and it explicitly excludes uploading or approving. Pagination behavior itself is only gestured at with 'paginated'.

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?

Three sentences, front-loaded with the operation and scope, followed by usage then exclusion. Dense but each sentence carries information; the state-adjective chain ('paginated unexpired owned ready') is slightly compressed but not wasteful.

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?

An output schema exists, so return values need not be documented, and annotations carry the safety profile. The description covers scope, intended downstream use of two key returned identifiers, and what the tool does not do — a complete-enough picture despite the unexplained input parameters.

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?

Schema description coverage is 0% and all three parameters (accountPublicId, limit, cursor) are undocumented. The description names providerMediaId and fileAssetPublicId, but those are output fields, not inputs, so it does not compensate for the parameter gap; only 'for one WhatsApp account' loosely implies accountPublicId and 'paginated' loosely implies limit/cursor.

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 (read/list) and resource (WhatsApp media for one account) plus precise state qualifiers: 'paginated unexpired owned ready images/videos already uploaded'. The WhatsApp-account scoping naturally separates it from the generic mediaList sibling, though no sibling is named explicitly.

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?

Gives forward-looking usage guidance ('use the exact providerMediaId in a native message and fileAssetPublicId for owned media review') and negative constraints ('does not upload media or approve sending'), which routes the agent away from the upload/approval tools. It stops short of naming the concrete alternative tools (e.g. mediaUploadCreate).

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