Skip to main content
Glama

sim_list_models

Destructive

List the models visible to you, as a JSON array of {id, name, description, license, curated, mine} sorted by name (a field that does not apply is left out): the curated catalog (curated: true), models dedicated to the commons (each carries its license), and your own (mine: true). The curated models are complete, working examples of the model JSON: read one with sim_get_model and copy its shape when writing a model for sim_create_model. scope narrows the list to one of those groups and query to the models matching every term; the two compose. With neither, every visible model is still listed, but compactly: each description except a curated model's is cut to its first 64 bytes, ending in "…" where cut; pass scope or query (scope "commons", or query "clinic") for each listed description in full (its first line, at most 200 bytes), which is also the text query searches. Free (no compute token) and writes nothing. Public, except that scope "mine" needs sign-in (opens OAuth the first time). Other users' undedicated models are not listed, but any model id works with every sim_* tool — an id someone shares with you is the model.

Input Schema

NameRequiredDescriptionDefault
queryNowhitespace-separated terms; lists only the models whose name, description or id contains every term, case-insensitively (each term may match a different field). The description searched is the one listed: its first line, at most 200 bytes. At most 256 bytes; longer is refused. Unset matches everything.
scopeNowhich group to list: "curated" (the catalog this server seeds, the worked examples), "commons" (models dedicated to the commons, none of them curated) or "mine" (the models you own, dedicated or not; needs sign-in). Unset lists all three; any other value is refused.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties
      Added value: +{
      +  "query": {
      +    "description": "whitespace-separated terms; lists only the models whose name, description or id contains every term, case-insensitively (each term may match a different field). The description searched is the one listed: its first line, at most 200 bytes. At most 256 bytes; longer is refused. Unset matches everything.",
      +    "type": "string"
      +  },
      +  "scope": {
      +    "description": "which group to list: \"curated\" (the catalog this server seeds, the worked examples), \"commons\" (models dedicated to the commons, none of them curated) or \"mine\" (the models you own, dedicated or not; needs sign-in). Unset lists all three; any other value is refused.",
      +    "enum": [
      +      "curated",
      +      "commons",
      +      "mine"
      +    ],
      +    "type": "string"
      +  }
      +}
  2. First observed

TDQS

A3.8/5.0
Behavior1/5

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

The description states 'Free (no compute token) and writes nothing,' but the annotations declare readOnlyHint=false and destructiveHint=true. A no-write, non-destructive listing operation is directly contradicted by destructiveHint=true and readOnlyHint=false, which would lead an agent to treat this as a mutating tool. This is an Annotation Contradiction, so the score is capped at 1 despite the otherwise rich behavioral detail (OAuth on scope 'mine', 64-byte truncation, 200-byte full descriptions).

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?

The purpose is front-loaded and every clause carries information, but the body is a single dense run-on sentence shot through with nested parentheses (truncation rules, auth, sharing), which makes it harder to scan than it needs to be. Content is justified; the packaging is not.

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?

Given a two-parameter tool with no output schema and rich annotations, the description is close to complete: it covers grouping, filtering, truncation behavior, cost, auth requirement, and the visibility boundary ('other users' undedicated models are not listed'). The only material gap is that it fails to reconcile its 'writes nothing' claim with the destructive annotations.

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. The description adds real meaning beyond the schema: it clarifies that the two filters compose, that the searched description is the truncated/listed one, and that passing either filter is what triggers full (first-line, 200-byte) descriptions. This goes beyond restating the enum and query semantics.

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

Purpose5/5

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

The description opens with a specific verb and resource ('List the models visible to you') and enumerates exactly what the list contains: the curated catalog, commons models, and the caller's own. It distinguishes itself from siblings by naming sim_get_model (read one) and sim_create_model (write one) and positioning this as the catalog view.

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 gives explicit routing: use sim_get_model to read one model and copy its shape before sim_create_model. It also explains how scope and query compose, when the list is compact versus full, and how to force full text ('pass scope or query'). The when-to-use conditions are spelled out rather than implied.

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