Skip to main content
Glama

media_set_set_assets

DestructiveIdempotent

Replace a media set's entire asset list in one call, adding, reordering, or unlinking assets. Specify asset IDs in display order; dropping current assets requires force.

Instructions

Set a media_set's FULL asset list in one call — for filling, reordering or pruning an EXISTING gallery (issue #140 item 5; media_set_update_asset_titles only edits titles of what is already there).

asset_ids is the gallery's new content IN ORDER (an explicit 1-based position is sent per asset — array order alone is NOT enough, Voog re-derives it and can duplicate positions). A reorder does not always take on the first PUT, so the tool reads the gallery back and retries; if the order still has not applied it says so instead of reporting success. Any asset currently in the set but absent from the list is UNLINKED (the asset itself survives in the library; only its membership ends). Because that is easy to do by accident, any call that drops a current asset requires force=true — including a same-length swap. Reordering and adding need no force.

Titles and per-asset link settings are carried over for assets that stay; pass titles to set them for new ones. Upload files first with asset_upload to get ids.

The media_set must already exist: POST /media_sets returns 500, and a freshly created gallery content area has no media_set until Voog makes one. Find the id on the content area's gallery field (NOT media_set) via voog://{site}/articles/{id}/contents, then media_set_get.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
siteYes
forceNoRequired whenever the call drops an asset that is currently in the set — including a same-length or longer list that swaps one image for another. Pure reordering and pure additions need no force.
titlesNoOptional map of asset id (string) -> title, for assets being added. Existing titles are kept unless overridden here.
asset_idsYesThe gallery's complete new asset list, in display order. Omitted assets are unlinked.
media_set_idYesVoog media_set (gallery) id
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=true), the description discloses critical behaviors: the tool reads back and retries on reorder, explicitly reports if the order did not apply, details the unlink semantics (asset survives in library), and the force=true requirement for drops. This adds substantial context beyond the structured hints.

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?

The description is long but every sentence earns its place given the tool's complexity. It is well-structured: purpose first, then behavior, force, titles, upload prerequisite, and existence requirement. The density is balanced with clear separations of ideas, avoiding fluff while covering necessary edge cases.

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

Completeness5/5

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

For a complex mutable operation with no output schema, the description fully covers preconditions (media_set existence, how to find it), postcondition behavior (read-back retry, explicit failure reporting), side effects (unlinking, asset survival), and parameter semantics. Together with the annotations and schema, it gives an agent everything needed to invoke the tool correctly.

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

Parameters5/5

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

Despite strong schema coverage (80%), the description adds crucial meaning: it explains that asset_ids order matters and that an explicit 1-based position is sent per asset, not just array order; it details the force parameter's exact conditions ('including a same-length swap'); and it clarifies that titles apply to new assets while existing titles are kept unless overridden — all beyond the schema's own descriptions.

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: 'Set a media_set's FULL asset list in one call' and immediately clarifies the intended operations (filling, reordering, pruning). It explicitly distinguishes itself from the sibling tool media_set_update_asset_titles, which only edits titles, leaving no ambiguity about scope.

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?

The description provides explicit when-to-use and when-not-to-use guidance: it references the alternative media_set_update_asset_titles for title-only changes, instructs to upload files first with asset_upload, and warns that the media_set must already exist (POST /media_sets returns 500). It also explains how to locate the media_set id via content area's gallery field and media_set_get, giving a complete usage path.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/runnel/voog-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server