Skip to main content
Glama
mordor-forge

gemini-media-mcp

by mordor-forge

List models

list_models
Read-onlyIdempotent

Discover available Gemini image, video, speech, and music models, compare prices and status, and check live API key access before generating media.

Instructions

List current models per media type with aliases, status (GA/preview/deprecated), prices and a short guide to when to use each. detail: true adds supported aspect ratios, sizes, durations and voices; live: true checks what your API key can actually call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
liveNoAlso query the Gemini API for the models this key can use, flagging unavailable ones and media models missing from the catalog.
detailNoInclude full capabilities (aspect ratios, voices, rules).
mediaTypeNoFilter: image, video, speech or music.
includeInactiveNoAlso list retired models and their replacements.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelsYes
backendYes
warningsNo
uncataloguedNoMedia models the API offers that the catalog does not know yet (usable by raw ID)
catalogVersionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed23 schema fields changedv1.1.0
    • addedInput schema / properties
      Added value: +{
      +  "detail": {
      +    "description": "Include full capabilities (aspect ratios, voices, rules).",
      +    "type": "boolean"
      +  },
      +  "includeInactive": {
      +    "description": "Also list retired models and their replacements.",
      +    "type": "boolean"
      +  },
      +  "live": {
      +    "description": "Also query the Gemini API for the models this key can use, flagging unavailable ones and media models missing from the catalog.",
      +    "type": "boolean"
      +  },
      +  "mediaType": {
      +    "description": "Filter: image, video, speech or music.",
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / backend
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / catalogVersion
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / models / items / properties / aliases
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • removedOutput schema / properties / models / items / properties / aspectRatios
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": [
      -    "null",
      -    "array"
      -  ]
      -}
    • addedOutput schema / properties / models / items / properties / available
      Added value: +{
      +  "description": "From live check: whether the API lists this model for your key",
      +  "type": [
      +    "null",
      +    "boolean"
      +  ]
      +}
    • addedOutput schema / properties / models / items / properties / capabilities
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "aspectRatios": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "audioToggle": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "defaultDuration": {
      +      "type": "integer"
      +    },
      +    "durations": {
      +      "items": {
      +        "type": "integer"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "edit": {
      +      "type": "boolean"
      +    },
      +    "extend": {
      +      "type": "boolean"
      +    },
      +    "extendSeconds": {
      +      "type": "integer"
      +    },
      +    "geminiApiOnly": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "imageInput": {
      +      "type": "boolean"
      +    },
      +    "imageSizes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "imageToVideo": {
      +      "type": "boolean"
      +    },
      +    "lastFrame": {
      +      "type": "boolean"
      +    },
      +    "maxInputVideoSeconds": {
      +      "type": "integer"
      +    },
      +    "maxOutputSeconds": {
      +      "type": "integer"
      +    },
      +    "maxReferenceImages": {
      +      "type": "integer"
      +    },
      +    "maxSpeakers": {
      +      "type": "integer"
      +    },
      +    "maxTotalSeconds": {
      +      "type": "integer"
      +    },
      +    "negativePrompt": {
      +      "type": "boolean"
      +    },
      +    "outputFormats": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "outputSeconds": {
      +      "type": "integer"
      +    },
      +    "personGeneration": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "resolutions": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "rules": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "message": {
      +            "type": "string"
      +          },
      +          "require": {
      +            "additionalProperties": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": [
      +                "null",
      +                "array"
      +              ]
      +            },
      +            "type": "object"
      +          },
      +          "when": {
      +            "additionalProperties": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": [
      +                "null",
      +                "array"
      +              ]
      +            },
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "when",
      +          "require",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "searchGrounding": {
      +      "type": "boolean"
      +    },
      +    "seed": {
      +      "type": "boolean"
      +    },
      +    "speechStyle": {
      +      "type": "string"
      +    },
      +    "vertexOnly": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "videoEdit": {
      +      "type": "boolean"
      +    },
      +    "voices": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • addedOutput schema / properties / models / items / properties / default
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / models / items / properties / notes
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / models / items / properties / onBackend
      Added value: +{
      +  "description": "Offered on the active backend",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / models / items / properties / price
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / models / items / properties / pricePerSec
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / models / items / properties / replacement
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / models / items / properties / resolutions
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": [
      -    "null",
      -    "array"
      -  ]
      -}
    • addedOutput schema / properties / models / items / properties / shutdown
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / models / items / properties / status
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / models / items / properties / summary
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / models / items / properties / tier
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / models / items / properties / title
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / models / items / required
      Previous value: -[
      -  "id",
      -  "tier",
      -  "mediaType",
      -  "resolutions",
      -  "aspectRatios"
      -]New value: +[
      +  "id",
      +  "mediaType",
      +  "status",
      +  "price",
      +  "onBackend"
      +]
    • addedOutput schema / properties / uncatalogued
      Added value: +{
      +  "description": "Media models the API offers that the catalog does not know yet (usable by raw ID)",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "models"
      -]New value: +[
      +  "catalogVersion",
      +  "backend",
      +  "models"
      +]
  2. First observed

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so safety and statelessness are covered. The description adds that live:true performs an API-key-scoped availability check against the Gemini API, but that is already spelled out in the live parameter's schema text, so the added value beyond structured fields is modest.

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 tightly packed sentences with zero filler, front-loading the primary purpose before the optional-flag behavior. Nothing is repeated and every clause carries distinct information.

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 values need not be explained, and the description still summarizes them usefully for a zero-required-parameter catalog tool. The remaining gap is routing guidance against sibling discovery/utility tools (get_config, estimate_cost), which the description never addresses.

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 description coverage is 100%, so the baseline is 3, and the description goes slightly beyond by naming concrete capability fields returned under detail (aspect ratios, sizes, durations, voices) rather than the schema's generic 'full capabilities'. It still says nothing about mediaType values or includeInactive outside the schema.

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 and resource ('List current models per media type') and enumerates the returned content (aliases, status GA/preview/deprecated, prices, usage guide). An agent can tell this is the catalog/discovery tool versus the generate_*/edit_* siblings, though the description never explicitly contrasts it with the closest neighbor, get_config.

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?

Usage is only implied: an agent infers it should call this to discover available models before generating. The phrases 'detail: true adds...' and 'live: true checks...' describe flag behavior, not when to prefer this tool over estimate_cost, get_config or get_usage, and there are no when-not conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.