Skip to main content
Glama

List releases

list_releases
Read-only

A listing's releases, newest first: published ones, or all of them for its seller. If the listing includes release assets, each has its assets: files such as compiled binaries, from its GitHub release or uploaded by its seller (release_asset_upload_url), which those who may fetch the release download from download_url. If the listing sells npm packages, npm_packages names them (name and version), which buyers install from Moatless's npm registry. For its seller, assets_error says why any weren't copied from GitHub. An asset for one of the listing's plans has its plan_id; only buyers of that plan, or one above it, can download it.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "input": "<input>",
      "context": "<context>"
    },
    "name": "list_releases"
  }
}

Input Schema

NameRequiredDescriptionDefault
sortNo
inputYes
limitNoThe maximum number of records to return
filterNoA filter to apply to the query: either a condition {"field": ..., "operator": ..., "value": ...} or an {"and": [...]} / {"or": [...]} group of conditions and groups (nestable). Operators: contains, eq, greater_than, greater_than_or_equal, ilike, in, is_distinct_from, is_nil, is_not_distinct_from, less_than, less_than_or_equal, like, not_eq, string_ends_with, string_starts_with. For 'is_nil' the value is true or false; for 'in' the value is an array. Fields: id, version, notes, source_ref, plan_source_refs, changed, state, number, source_sha, distribution_sha, published_at, error, assets_requested_at, assets_synced_at, assets_error, license_path, license_text, hex_package, components, inserted_at, updated_at, listing_id, npm_packages, event_payload, build_job.
offsetNoThe number of records to skip
contextYesExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. Never include personal data, such as names, email addresses or message text; refer to people by role, such as "the user" or "a buyer".
result_typeNoThe type of result to returnrun_query

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / context
      Added value: +{
      +  "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. Never include personal data, such as names, email addresses or message text; refer to people by role, such as \"the user\" or \"a buyer\".",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "input"
      -]New value: +[
      +  "input",
      +  "context"
      +]
  2. Changed3 schema fields changed
    • changedInput schema / properties / filter / description
      Previous value: -"A filter to apply to the query: either a condition {\"field\": ..., \"operator\": ..., \"value\": ...} or an {\"and\": [...]} / {\"or\": [...]} group of conditions and groups (nestable). Operators: contains, eq, greater_than, greater_than_or_equal, ilike, in, is_distinct_from, is_nil, is_not_distinct_from, less_than, less_than_or_equal, like, not_eq, string_ends_with, string_starts_with. For 'is_nil' the value is true or false; for 'in' the value is an array. Fields: id, version, notes, source_ref, state, number, source_sha, distribution_sha, published_at, error, assets_requested_at, assets_synced_at, assets_error, license_path, license_text, hex_package, components, inserted_at, updated_at, listing_id, npm_packages, event_payload, build_job."New value: +"A filter to apply to the query: either a condition {\"field\": ..., \"operator\": ..., \"value\": ...} or an {\"and\": [...]} / {\"or\": [...]} group of conditions and groups (nestable). Operators: contains, eq, greater_than, greater_than_or_equal, ilike, in, is_distinct_from, is_nil, is_not_distinct_from, less_than, less_than_or_equal, like, not_eq, string_ends_with, string_starts_with. For 'is_nil' the value is true or false; for 'in' the value is an array. Fields: id, version, notes, source_ref, plan_source_refs, changed, state, number, source_sha, distribution_sha, published_at, error, assets_requested_at, assets_synced_at, assets_error, license_path, license_text, hex_package, components, inserted_at, updated_at, listing_id, npm_packages, event_payload, build_job."
    • changedInput schema / properties / result_type / oneOf
      Previous value: -[
      -  {
      -    "description": "Run the query returning the matching records (up to `limit`), or return a count of results, or check if any results exist",
      -    "enum": [
      -      "run_query",
      -      "count",
      -      "exists"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "properties": {
      -      "aggregate": {
      -        "description": "The aggregate function to use",
      -        "enum": [
      -          "max",
      -          "min",
      -          "sum",
      -          "avg",
      -          "count"
      -        ],
      -        "type": "string"
      -      },
      -      "field": {
      -        "description": "The field to aggregate",
      -        "enum": [
      -          "id",
      -          "version",
      -          "notes",
      -          "source_ref",
      -          "state",
      -          "number",
      -          "source_sha",
      -          "distribution_sha",
      -          "published_at",
      -          "error",
      -          "assets_requested_at",
      -          "assets_synced_at",
      -          "assets_error",
      -          "license_path",
      -          "license_text",
      -          "hex_package",
      -          "components",
      -          "inserted_at",
      -          "updated_at",
      -          "listing_id",
      -          "npm_packages",
      -          "event_payload",
      -          "build_job",
      -          "bundle_url"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "aggregate",
      -      "field"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "Run the query returning the matching records (up to `limit`), or return a count of results, or check if any results exist",
      +    "enum": [
      +      "run_query",
      +      "count",
      +      "exists"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "properties": {
      +      "aggregate": {
      +        "description": "The aggregate function to use",
      +        "enum": [
      +          "max",
      +          "min",
      +          "sum",
      +          "avg",
      +          "count"
      +        ],
      +        "type": "string"
      +      },
      +      "field": {
      +        "description": "The field to aggregate",
      +        "enum": [
      +          "id",
      +          "version",
      +          "notes",
      +          "source_ref",
      +          "plan_source_refs",
      +          "changed",
      +          "state",
      +          "number",
      +          "source_sha",
      +          "distribution_sha",
      +          "published_at",
      +          "error",
      +          "assets_requested_at",
      +          "assets_synced_at",
      +          "assets_error",
      +          "license_path",
      +          "license_text",
      +          "hex_package",
      +          "components",
      +          "inserted_at",
      +          "updated_at",
      +          "listing_id",
      +          "npm_packages",
      +          "event_payload",
      +          "build_job",
      +          "bundle_url"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "aggregate",
      +      "field"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / sort / items / properties / field / enum
      Previous value: -[
      -  "id",
      -  "version",
      -  "notes",
      -  "source_ref",
      -  "state",
      -  "number",
      -  "source_sha",
      -  "distribution_sha",
      -  "published_at",
      -  "error",
      -  "assets_requested_at",
      -  "assets_synced_at",
      -  "assets_error",
      -  "license_path",
      -  "license_text",
      -  "hex_package",
      -  "components",
      -  "inserted_at",
      -  "updated_at",
      -  "listing_id",
      -  "npm_packages",
      -  "event_payload",
      -  "build_job"
      -]New value: +[
      +  "id",
      +  "version",
      +  "notes",
      +  "source_ref",
      +  "plan_source_refs",
      +  "changed",
      +  "state",
      +  "number",
      +  "source_sha",
      +  "distribution_sha",
      +  "published_at",
      +  "error",
      +  "assets_requested_at",
      +  "assets_synced_at",
      +  "assets_error",
      +  "license_path",
      +  "license_text",
      +  "hex_package",
      +  "components",
      +  "inserted_at",
      +  "updated_at",
      +  "listing_id",
      +  "npm_packages",
      +  "event_payload",
      +  "build_job"
      +]
  3. Changed3 schema fields changed
    • changedInput schema / properties / filter / description
      Previous value: -"A filter to apply to the query: either a condition {\"field\": ..., \"operator\": ..., \"value\": ...} or an {\"and\": [...]} / {\"or\": [...]} group of conditions and groups (nestable). Operators: contains, eq, greater_than, greater_than_or_equal, ilike, in, is_distinct_from, is_nil, is_not_distinct_from, less_than, less_than_or_equal, like, not_eq, string_ends_with, string_starts_with. For 'is_nil' the value is true or false; for 'in' the value is an array. Fields: id, version, notes, source_ref, state, number, source_sha, distribution_sha, published_at, error, assets_requested_at, assets_synced_at, assets_error, license_path, license_text, hex_package, components, inserted_at, updated_at, listing_id, event_payload, build_job."New value: +"A filter to apply to the query: either a condition {\"field\": ..., \"operator\": ..., \"value\": ...} or an {\"and\": [...]} / {\"or\": [...]} group of conditions and groups (nestable). Operators: contains, eq, greater_than, greater_than_or_equal, ilike, in, is_distinct_from, is_nil, is_not_distinct_from, less_than, less_than_or_equal, like, not_eq, string_ends_with, string_starts_with. For 'is_nil' the value is true or false; for 'in' the value is an array. Fields: id, version, notes, source_ref, state, number, source_sha, distribution_sha, published_at, error, assets_requested_at, assets_synced_at, assets_error, license_path, license_text, hex_package, components, inserted_at, updated_at, listing_id, npm_packages, event_payload, build_job."
    • changedInput schema / properties / result_type / oneOf
      Previous value: -[
      -  {
      -    "description": "Run the query returning the matching records (up to `limit`), or return a count of results, or check if any results exist",
      -    "enum": [
      -      "run_query",
      -      "count",
      -      "exists"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "properties": {
      -      "aggregate": {
      -        "description": "The aggregate function to use",
      -        "enum": [
      -          "max",
      -          "min",
      -          "sum",
      -          "avg",
      -          "count"
      -        ],
      -        "type": "string"
      -      },
      -      "field": {
      -        "description": "The field to aggregate",
      -        "enum": [
      -          "id",
      -          "version",
      -          "notes",
      -          "source_ref",
      -          "state",
      -          "number",
      -          "source_sha",
      -          "distribution_sha",
      -          "published_at",
      -          "error",
      -          "assets_requested_at",
      -          "assets_synced_at",
      -          "assets_error",
      -          "license_path",
      -          "license_text",
      -          "hex_package",
      -          "components",
      -          "inserted_at",
      -          "updated_at",
      -          "listing_id",
      -          "event_payload",
      -          "build_job",
      -          "bundle_url"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "aggregate",
      -      "field"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "Run the query returning the matching records (up to `limit`), or return a count of results, or check if any results exist",
      +    "enum": [
      +      "run_query",
      +      "count",
      +      "exists"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "properties": {
      +      "aggregate": {
      +        "description": "The aggregate function to use",
      +        "enum": [
      +          "max",
      +          "min",
      +          "sum",
      +          "avg",
      +          "count"
      +        ],
      +        "type": "string"
      +      },
      +      "field": {
      +        "description": "The field to aggregate",
      +        "enum": [
      +          "id",
      +          "version",
      +          "notes",
      +          "source_ref",
      +          "state",
      +          "number",
      +          "source_sha",
      +          "distribution_sha",
      +          "published_at",
      +          "error",
      +          "assets_requested_at",
      +          "assets_synced_at",
      +          "assets_error",
      +          "license_path",
      +          "license_text",
      +          "hex_package",
      +          "components",
      +          "inserted_at",
      +          "updated_at",
      +          "listing_id",
      +          "npm_packages",
      +          "event_payload",
      +          "build_job",
      +          "bundle_url"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "aggregate",
      +      "field"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / sort / items / properties / field / enum
      Previous value: -[
      -  "id",
      -  "version",
      -  "notes",
      -  "source_ref",
      -  "state",
      -  "number",
      -  "source_sha",
      -  "distribution_sha",
      -  "published_at",
      -  "error",
      -  "assets_requested_at",
      -  "assets_synced_at",
      -  "assets_error",
      -  "license_path",
      -  "license_text",
      -  "hex_package",
      -  "components",
      -  "inserted_at",
      -  "updated_at",
      -  "listing_id",
      -  "event_payload",
      -  "build_job"
      -]New value: +[
      +  "id",
      +  "version",
      +  "notes",
      +  "source_ref",
      +  "state",
      +  "number",
      +  "source_sha",
      +  "distribution_sha",
      +  "published_at",
      +  "error",
      +  "assets_requested_at",
      +  "assets_synced_at",
      +  "assets_error",
      +  "license_path",
      +  "license_text",
      +  "hex_package",
      +  "components",
      +  "inserted_at",
      +  "updated_at",
      +  "listing_id",
      +  "npm_packages",
      +  "event_payload",
      +  "build_job"
      +]
  4. Changed3 schema fields changed
    • changedInput schema / properties / filter / description
      Previous value: -"A filter to apply to the query: either a condition {\"field\": ..., \"operator\": ..., \"value\": ...} or an {\"and\": [...]} / {\"or\": [...]} group of conditions and groups (nestable). Operators: contains, eq, greater_than, greater_than_or_equal, ilike, in, is_distinct_from, is_nil, is_not_distinct_from, less_than, less_than_or_equal, like, not_eq, string_ends_with, string_starts_with. For 'is_nil' the value is true or false; for 'in' the value is an array. Fields: id, version, notes, source_ref, state, number, source_sha, distribution_sha, published_at, error, assets_requested_at, assets_synced_at, assets_error, license_path, license_text, inserted_at, updated_at, listing_id, event_payload, build_job."New value: +"A filter to apply to the query: either a condition {\"field\": ..., \"operator\": ..., \"value\": ...} or an {\"and\": [...]} / {\"or\": [...]} group of conditions and groups (nestable). Operators: contains, eq, greater_than, greater_than_or_equal, ilike, in, is_distinct_from, is_nil, is_not_distinct_from, less_than, less_than_or_equal, like, not_eq, string_ends_with, string_starts_with. For 'is_nil' the value is true or false; for 'in' the value is an array. Fields: id, version, notes, source_ref, state, number, source_sha, distribution_sha, published_at, error, assets_requested_at, assets_synced_at, assets_error, license_path, license_text, hex_package, components, inserted_at, updated_at, listing_id, event_payload, build_job."
    • changedInput schema / properties / result_type / oneOf
      Previous value: -[
      -  {
      -    "description": "Run the query returning the matching records (up to `limit`), or return a count of results, or check if any results exist",
      -    "enum": [
      -      "run_query",
      -      "count",
      -      "exists"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "properties": {
      -      "aggregate": {
      -        "description": "The aggregate function to use",
      -        "enum": [
      -          "max",
      -          "min",
      -          "sum",
      -          "avg",
      -          "count"
      -        ],
      -        "type": "string"
      -      },
      -      "field": {
      -        "description": "The field to aggregate",
      -        "enum": [
      -          "id",
      -          "version",
      -          "notes",
      -          "source_ref",
      -          "state",
      -          "number",
      -          "source_sha",
      -          "distribution_sha",
      -          "published_at",
      -          "error",
      -          "assets_requested_at",
      -          "assets_synced_at",
      -          "assets_error",
      -          "license_path",
      -          "license_text",
      -          "inserted_at",
      -          "updated_at",
      -          "listing_id",
      -          "event_payload",
      -          "build_job",
      -          "bundle_url"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "aggregate",
      -      "field"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "Run the query returning the matching records (up to `limit`), or return a count of results, or check if any results exist",
      +    "enum": [
      +      "run_query",
      +      "count",
      +      "exists"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "properties": {
      +      "aggregate": {
      +        "description": "The aggregate function to use",
      +        "enum": [
      +          "max",
      +          "min",
      +          "sum",
      +          "avg",
      +          "count"
      +        ],
      +        "type": "string"
      +      },
      +      "field": {
      +        "description": "The field to aggregate",
      +        "enum": [
      +          "id",
      +          "version",
      +          "notes",
      +          "source_ref",
      +          "state",
      +          "number",
      +          "source_sha",
      +          "distribution_sha",
      +          "published_at",
      +          "error",
      +          "assets_requested_at",
      +          "assets_synced_at",
      +          "assets_error",
      +          "license_path",
      +          "license_text",
      +          "hex_package",
      +          "components",
      +          "inserted_at",
      +          "updated_at",
      +          "listing_id",
      +          "event_payload",
      +          "build_job",
      +          "bundle_url"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "aggregate",
      +      "field"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / sort / items / properties / field / enum
      Previous value: -[
      -  "id",
      -  "version",
      -  "notes",
      -  "source_ref",
      -  "state",
      -  "number",
      -  "source_sha",
      -  "distribution_sha",
      -  "published_at",
      -  "error",
      -  "assets_requested_at",
      -  "assets_synced_at",
      -  "assets_error",
      -  "license_path",
      -  "license_text",
      -  "inserted_at",
      -  "updated_at",
      -  "listing_id",
      -  "event_payload",
      -  "build_job"
      -]New value: +[
      +  "id",
      +  "version",
      +  "notes",
      +  "source_ref",
      +  "state",
      +  "number",
      +  "source_sha",
      +  "distribution_sha",
      +  "published_at",
      +  "error",
      +  "assets_requested_at",
      +  "assets_synced_at",
      +  "assets_error",
      +  "license_path",
      +  "license_text",
      +  "hex_package",
      +  "components",
      +  "inserted_at",
      +  "updated_at",
      +  "listing_id",
      +  "event_payload",
      +  "build_job"
      +]
  5. 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 readOnlyHint=true and openWorldHint=false, so the description is free to add real behavioral context, and it does: default ordering (newest first), the seller-versus-buyer visibility rule, plan-scoped asset download authorization, and the meaning of assets_error. It stops short of saying what happens on an invalid listing_id or how pagination behaves.

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?

The core purpose is front-loaded in the first clause and the remainder is a structured walk through returned fields. It is dense but every sentence maps to a distinct concept (assets, npm packages, errors, plan scoping), with only mild over-explanation of download URLs.

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 seven parameters, nested filter/sort objects, and no output schema, the description compensates well by explaining the shape and meaning of assets, npm_packages, assets_error, and plan_id. Gaps remain around pagination and result_type behavior, but the schema covers those defaults.

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 description coverage is 71%, so the schema already carries most parameter meaning. The description adds real semantics for the `all` flag (includes pre-sale and replaced releases) but says nothing about sort, limit, offset, filter, or result_type beyond what the schema states. Baseline 3 is appropriate.

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 with scope: a listing's releases, newest first, limited to published ones unless the caller is the seller. An agent can tell this apart from publish_release or list_repositories, 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the visibility model ('published ones, or all of them for its seller') and the per-plan download restriction, which tells an agent when results will be filtered. There is no explicit when-to-use versus when-not, and no named alternative such as publish_release or remove_release_asset.

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