Skip to main content
Glama
cloud-ru-tech

mcp-server-mattermost

delete_bookmark

Remove a channel bookmark by providing its ID and the channel ID. The bookmark is archived and no longer appears in the channel.

Instructions

Delete a channel bookmark.

Archives the bookmark (soft delete via delete_at timestamp). The bookmark will no longer appear in the channel.

Note: Requires Entry, Professional, Enterprise, or Enterprise Advanced edition (not available in Team Edition). Minimum version: v10.1.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
channel_idYes26-character channel identifier (e.g., 'o5w8h47pdfbzjc4d8w7dhnhren')
bookmark_idYes26-character bookmark identifier (e.g., 'o5w8h47pdfbzjc4d8w7dhnhren')

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesUnique bookmark identifier
fileNoFile metadata for file bookmarks
typeYesBookmark type: 'link' or 'file'
emojiNoEmoji icon
file_idYesFile ID for file bookmarks (empty for links)
link_urlNoURL for link bookmarks
owner_idYesUser ID who created the bookmark
create_atYesCreation timestamp in milliseconds
delete_atYesDeletion timestamp (0 if not deleted)
image_urlNoPreview image URL
parent_idNoParent bookmark ID
update_atYesLast update timestamp in milliseconds
channel_idYesChannel this bookmark belongs to
sort_orderYesPosition in bookmark list
original_idNoOriginal bookmark ID if copied
display_nameYesBookmark display name

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.6.1
    • addedOutput schema / properties / file
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "Uploaded file metadata.\n\nNote: Go source uses CreatorId field name, but JSON response uses \"user_id\".\n\nSee: https://github.com/mattermost/mattermost/blob/master/server/public/model/file_info.go",
      +      "properties": {
      +        "channel_id": {
      +          "description": "Channel where file was uploaded",
      +          "type": "string"
      +        },
      +        "create_at": {
      +          "description": "Upload timestamp in milliseconds",
      +          "type": "integer"
      +        },
      +        "delete_at": {
      +          "description": "Deletion timestamp",
      +          "type": "integer"
      +        },
      +        "extension": {
      +          "description": "File extension without dot",
      +          "type": "string"
      +        },
      +        "has_preview_image": {
      +          "default": false,
      +          "description": "Has generated preview",
      +          "type": "boolean"
      +        },
      +        "height": {
      +          "default": 0,
      +          "description": "Image height in pixels",
      +          "type": "integer"
      +        },
      +        "id": {
      +          "description": "Unique file identifier",
      +          "type": "string"
      +        },
      +        "mime_type": {
      +          "description": "MIME type",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "File name",
      +          "type": "string"
      +        },
      +        "post_id": {
      +          "default": "",
      +          "description": "Associated post ID",
      +          "type": "string"
      +        },
      +        "size": {
      +          "description": "File size in bytes",
      +          "type": "integer"
      +        },
      +        "update_at": {
      +          "description": "Last update timestamp",
      +          "type": "integer"
      +        },
      +        "user_id": {
      +          "description": "Uploader user identifier (CreatorId in Go)",
      +          "type": "string"
      +        },
      +        "width": {
      +          "default": 0,
      +          "description": "Image width in pixels",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "user_id",
      +        "channel_id",
      +        "create_at",
      +        "update_at",
      +        "delete_at",
      +        "name",
      +        "extension",
      +        "size",
      +        "mime_type"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "File metadata for file bookmarks"
      +}
    • removedOutput schema / properties / file_info
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "File metadata for file bookmarks"
      -}
  2. First observedv0.5.1

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral disclosure. It explicitly reveals that the delete is a soft delete via delete_at timestamp and that the bookmark will no longer appear in the channel, giving the agent key side effects. It could also mention permissions or restoration but is strong for the operation.

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?

Three sentences with the core action first, followed by a concise behavioral explanation and a note on edition and version constraints. No wasted words; the structure is ideal for quick scanning.

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?

The tool is simple with fully specified parameters and an output schema present. The description explains the soft-delete behavior and required edition/version, covering the essential context. It doesn't mention edge cases like idempotency or permissions, but these are minor given the straightforward scope.

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?

The input schema already provides full descriptions with examples for both channel_id and bookmark_id, so the description adds no additional parameter semantics. The 100% schema coverage means a baseline of 3 is appropriate.

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 'Delete a channel bookmark', a clear verb+resource statement that distinguishes it from create, update, and list siblings. It further explains that the delete is an archival soft delete, which unambiguously defines the tool's function.

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?

The description does not explicitly state when to prefer this over sibling tools or when not to use it, though the name and behavior make the usage intuitive. It provides edition and version constraints but no alternative routing or exclusion conditions.

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