Skip to main content
Glama

Set the CRM menu

crm_set_menu
DestructiveIdempotent

Saves the CRM top menu. Does not save unless confirm is true. items are in order. A menu item is a list. Saved views are filters and appear as chips on the list's page, not in the menu. Use the list (model) only. icon is optional. Use an outline name such as calendarOutline, or a short name such as calendar, people, list, ticket, cpu, bolt, or shirt. A group has a label, an optional icon, and children. Groups are for grouping, for example settings or management apart from day to day. A group may contain groups. A list may nest child lists. The menu is at most 3 levels deep. The same list is not repeated in one branch. A list that is not on this account is refused. Items you leave out are not on the menu. The apps keep the current menu until this is saved.

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": {
      "confirm": "<confirm>",
      "items": "<items>"
    },
    "name": "crm_set_menu"
  }
}

Input Schema

NameRequiredDescriptionDefault
itemsYesTop menu, in order. An item is a list, or a group of lists. A group may contain groups. A list may nest child lists, up to 3 levels. Saved views are filters on the list's page, not menu items.
confirmYesMust be true. A call without confirm true does not save.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • changedInput schema / properties / items / description
      Previous value: -"Top menu, in order. A group has children. A leaf names a list, and a saved view when view is set."New value: +"Top menu, in order. An item is a list, or a group of lists. A group may contain groups. A list may nest child lists, up to 3 levels. Saved views are filters on the list's page, not menu items."
    • changedInput schema / properties / items / items / properties / children / description
      Previous value: -"Items under this group. A child is a list or a saved view, not another group."New value: +"Lists or groups under this item. A list's children are lists. A group may contain groups. A saved view is not a menu item."
    • addedInput schema / properties / items / items / properties / children / items / properties / children
      Added value: +{
      +  "description": "Lists or groups under this item. A list's children are lists. A group may contain groups. A saved view is not a menu item.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "icon": {
      +        "description": "Ionicon outline name, such as calendarOutline or peopleOutline. Short names such as calendar, people, list, ticket, cpu, bolt, and shirt are accepted.",
      +        "enum": [
      +          "peopleOutline",
      +          "personOutline",
      +          "calendarOutline",
      +          "timeOutline",
      +          "cartOutline",
      +          "cubeOutline",
      +          "documentTextOutline",
      +          "briefcaseOutline",
      +          "listOutline",
      +          "homeOutline",
      +          "cashOutline",
      +          "imageOutline",
      +          "callOutline",
      +          "mailOutline",
      +          "pricetagOutline",
      +          "constructOutline",
      +          "heartOutline",
      +          "starOutline",
      +          "clipboardOutline",
      +          "medkitOutline",
      +          "restaurantOutline",
      +          "carOutline",
      +          "businessOutline",
      +          "ribbonOutline",
      +          "chatbubblesOutline",
      +          "notificationsOutline",
      +          "settingsOutline",
      +          "gridOutline",
      +          "layersOutline",
      +          "bookmarkOutline",
      +          "flashOutline",
      +          "hardwareChipOutline",
      +          "receiptOutline",
      +          "shirtOutline",
      +          "happyOutline",
      +          "people",
      +          "person",
      +          "calendar",
      +          "time",
      +          "cart",
      +          "cube",
      +          "documentText",
      +          "briefcase",
      +          "list",
      +          "home",
      +          "cash",
      +          "image",
      +          "call",
      +          "mail",
      +          "pricetag",
      +          "construct",
      +          "heart",
      +          "star",
      +          "clipboard",
      +          "medkit",
      +          "restaurant",
      +          "car",
      +          "business",
      +          "ribbon",
      +          "chatbubbles",
      +          "notifications",
      +          "settings",
      +          "grid",
      +          "layers",
      +          "bookmark",
      +          "flash",
      +          "hardwareChip",
      +          "receipt",
      +          "shirt",
      +          "happy",
      +          "event",
      +          "users",
      +          "ticket",
      +          "tickets",
      +          "cpu",
      +          "chip",
      +          "bolt",
      +          "lightning",
      +          "emoji",
      +          "smiley"
      +        ],
      +        "type": "string"
      +      },
      +      "label": {
      +        "type": "string"
      +      },
      +      "model": {
      +        "description": "List name. Omit this on a group. A saved view is not a menu item.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "label"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / items / items / properties / children / items / properties / model / description
      Previous value: -"List name."New value: +"List name. Omit this on a group. A saved view is not a menu item."
    • removedInput schema / properties / items / items / properties / children / items / properties / view
      Removed value: -{
      -  "description": "Saved view name on that list.",
      -  "type": "string"
      -}
    • changedInput schema / properties / items / items / properties / children / items / required
      Previous value: -[
      -  "label",
      -  "model"
      -]New value: +[
      +  "label"
      +]
    • changedInput schema / properties / items / items / properties / model / description
      Previous value: -"List name. Omit this on a group."New value: +"List name. Omit this on a group. A saved view is not a menu item."
    • removedInput schema / properties / items / items / properties / view
      Removed value: -{
      -  "description": "Saved view name on that list.",
      -  "type": "string"
      -}
  2. Changed4 schema fields changed
    • changedInput schema / properties / items / items / properties / children / items / properties / icon / description
      Previous value: -"Optional Ionicons outline name from crm_set_navigation."New value: +"Ionicon outline name, such as calendarOutline or peopleOutline. Short names such as calendar, people, list, ticket, cpu, bolt, and shirt are accepted."
    • addedInput schema / properties / items / items / properties / children / items / properties / icon / enum
      Added value: +[
      +  "peopleOutline",
      +  "personOutline",
      +  "calendarOutline",
      +  "timeOutline",
      +  "cartOutline",
      +  "cubeOutline",
      +  "documentTextOutline",
      +  "briefcaseOutline",
      +  "listOutline",
      +  "homeOutline",
      +  "cashOutline",
      +  "imageOutline",
      +  "callOutline",
      +  "mailOutline",
      +  "pricetagOutline",
      +  "constructOutline",
      +  "heartOutline",
      +  "starOutline",
      +  "clipboardOutline",
      +  "medkitOutline",
      +  "restaurantOutline",
      +  "carOutline",
      +  "businessOutline",
      +  "ribbonOutline",
      +  "chatbubblesOutline",
      +  "notificationsOutline",
      +  "settingsOutline",
      +  "gridOutline",
      +  "layersOutline",
      +  "bookmarkOutline",
      +  "flashOutline",
      +  "hardwareChipOutline",
      +  "receiptOutline",
      +  "shirtOutline",
      +  "happyOutline",
      +  "people",
      +  "person",
      +  "calendar",
      +  "time",
      +  "cart",
      +  "cube",
      +  "documentText",
      +  "briefcase",
      +  "list",
      +  "home",
      +  "cash",
      +  "image",
      +  "call",
      +  "mail",
      +  "pricetag",
      +  "construct",
      +  "heart",
      +  "star",
      +  "clipboard",
      +  "medkit",
      +  "restaurant",
      +  "car",
      +  "business",
      +  "ribbon",
      +  "chatbubbles",
      +  "notifications",
      +  "settings",
      +  "grid",
      +  "layers",
      +  "bookmark",
      +  "flash",
      +  "hardwareChip",
      +  "receipt",
      +  "shirt",
      +  "happy",
      +  "event",
      +  "users",
      +  "ticket",
      +  "tickets",
      +  "cpu",
      +  "chip",
      +  "bolt",
      +  "lightning",
      +  "emoji",
      +  "smiley"
      +]
    • changedInput schema / properties / items / items / properties / icon / description
      Previous value: -"Optional Ionicons outline name from crm_set_navigation."New value: +"Ionicon outline name, such as calendarOutline or peopleOutline. Short names such as calendar, people, list, ticket, cpu, bolt, and shirt are accepted."
    • addedInput schema / properties / items / items / properties / icon / enum
      Added value: +[
      +  "peopleOutline",
      +  "personOutline",
      +  "calendarOutline",
      +  "timeOutline",
      +  "cartOutline",
      +  "cubeOutline",
      +  "documentTextOutline",
      +  "briefcaseOutline",
      +  "listOutline",
      +  "homeOutline",
      +  "cashOutline",
      +  "imageOutline",
      +  "callOutline",
      +  "mailOutline",
      +  "pricetagOutline",
      +  "constructOutline",
      +  "heartOutline",
      +  "starOutline",
      +  "clipboardOutline",
      +  "medkitOutline",
      +  "restaurantOutline",
      +  "carOutline",
      +  "businessOutline",
      +  "ribbonOutline",
      +  "chatbubblesOutline",
      +  "notificationsOutline",
      +  "settingsOutline",
      +  "gridOutline",
      +  "layersOutline",
      +  "bookmarkOutline",
      +  "flashOutline",
      +  "hardwareChipOutline",
      +  "receiptOutline",
      +  "shirtOutline",
      +  "happyOutline",
      +  "people",
      +  "person",
      +  "calendar",
      +  "time",
      +  "cart",
      +  "cube",
      +  "documentText",
      +  "briefcase",
      +  "list",
      +  "home",
      +  "cash",
      +  "image",
      +  "call",
      +  "mail",
      +  "pricetag",
      +  "construct",
      +  "heart",
      +  "star",
      +  "clipboard",
      +  "medkit",
      +  "restaurant",
      +  "car",
      +  "business",
      +  "ribbon",
      +  "chatbubbles",
      +  "notifications",
      +  "settings",
      +  "grid",
      +  "layers",
      +  "bookmark",
      +  "flash",
      +  "hardwareChip",
      +  "receipt",
      +  "shirt",
      +  "happy",
      +  "event",
      +  "users",
      +  "ticket",
      +  "tickets",
      +  "cpu",
      +  "chip",
      +  "bolt",
      +  "lightning",
      +  "emoji",
      +  "smiley"
      +]
  3. Added

TDQS

A3.9/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that nothing saves unless confirm is true, that the write is a full replacement because 'Items you leave out are not on the menu,' that the apps keep the current menu until the save lands, and that unknown/off-account lists are refused. These are exactly the destructive semantics the destructiveHint annotation implies but does not explain.

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?

Front-loaded with the save semantics and confirm guard, which is correct. But it is a chain of short fragments mixing icon vocabulary (already an enum in the schema), structural rules, and validation rules without grouping, so key constraints like the 3-level limit are buried mid-paragraph.

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?

For a destructive full-replace mutation over a nested tree, it covers the confirmation guard, replacement semantics, structural limits, and validation refusals — the essential behavioral surface. It does not say whether a bad item aborts the whole save atomically or what a successful call returns (no output schema exists), leaving a small gap.

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?

With 100% schema coverage the baseline is 3, and the description still adds real meaning: items are ordered, model applies only to lists (omit on groups), icon is optional and accepts both outline and short names, and groups may contain groups while lists nest child lists. The icon name recital partially duplicates the schema enum, which keeps it from a 5.

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?

Opens with a specific verb and resource: 'Saves the CRM top menu,' which is unambiguous and scoped to the CRM menu rather than navigation or dashboard. It never names the read sibling (crm_get_menu) or distinguishes itself from crm_set_navigation or upsert_menu, so an agent must infer the boundary from the resource name alone.

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 gives rich content rules (use the list/model, saved views are not menu items, groups are for grouping settings apart from day-to-day, max 3 levels, no list repeated in a branch) that implicitly convey when this tool is appropriate. But it gives no explicit selection guidance versus sibling menu tools such as crm_get_menu or crm_set_navigation, so tool choice still requires inference.

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.