Skip to main content
Glama

Revise the map

mmap_remove

Remove map elements or delete entire pages to revise a hypothesis or clean up finished work. Edits apply atomically; page deletion is permanent.

Instructions

Remove edges, nodes, groups and empty layer bands (in that order, all-or-nothing). Removing a node also removes every edge touching it; removing a group merely ungroups its members. Use when the ghost design turns out wrong — the map is a hypothesis, revising it is honest work. pages is the other scale: it DELETES whole page files, so a finished effort can be cleaned up instead of accumulating tabs forever. A bare {pages: ["slug"]} with no other field is the normal form; combined with map edits, the edits are applied first and the pages are deleted after. The deletion is permanent and cannot be undone, so delete only pages whose effort is over — and only ever with the user behind it. An unknown slug is refused with the project's real page list (naming a page that does not exist is a typo, not a request). The default page has no slug and is not deletable here. A node elsewhere still pointing at a deleted page with submap stays legal — a submap reference has no existence invariant — but it has nowhere to dive until the page comes back.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNopage (parallel map) this call targets; omit for the default page. A new conversation is not a new effort. Read existing pages with mmap_read first; reuse the same page for continued work. Create a new page only for a distinct effort.
edgesNo
lanesNo
nodesNo
pagesNopages to delete entirely, after this call's map edits; permanent
groupsNo
layersNo
deletePageNoDelete the page targeted by page, including the default page; cannot be combined with other edits.
referencesNoFor deletePage: reject inbound submap references by default, or explicitly keep them.
expectedRevisionNoRevision from mmap_read; absent requires a new page. A stale revision returns CONFLICT.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changedv0.26.0
    • addedInput schema / properties / deletePage
      Added value: +{
      +  "description": "Delete the page targeted by page, including the default page; cannot be combined with other edits.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / expectedRevision
      Added value: +{
      +  "description": "Revision from mmap_read; absent requires a new page. A stale revision returns CONFLICT.",
      +  "pattern": "^(?:[a-f0-9]{64}|absent)$",
      +  "type": "string"
      +}
    • removedInput schema / properties / groups / description
      Removed value: -"groups to remove; members stay, merely ungrouped"
    • removedInput schema / properties / groups / items / $ref
      Removed value: -"#/properties/page"
    • addedInput schema / properties / groups / items / description
      Added value: +"id of the group to remove; members stay, merely ungrouped"
    • addedInput schema / properties / groups / items / pattern
      Added value: +"^[a-z0-9][a-z0-9-]{0,63}$"
    • addedInput schema / properties / groups / items / type
      Added value: +"string"
    • removedInput schema / properties / lanes / description
      Removed value: -"lanes to remove; members stay, merely off-lane"
    • removedInput schema / properties / lanes / items / $ref
      Removed value: -"#/properties/page"
    • addedInput schema / properties / lanes / items / description
      Added value: +"id of the lane to remove; members stay, merely off-lane"
    • addedInput schema / properties / lanes / items / pattern
      Added value: +"^[a-z0-9][a-z0-9-]{0,63}$"
    • addedInput schema / properties / lanes / items / type
      Added value: +"string"
    • removedInput schema / properties / layers / description
      Removed value: -"bands to remove; must be empty of nodes and groups"
    • removedInput schema / properties / layers / items / $ref
      Removed value: -"#/properties/page"
    • addedInput schema / properties / layers / items / description
      Added value: +"id of the band to remove; it must hold no nodes and no groups"
    • addedInput schema / properties / layers / items / pattern
      Added value: +"^[a-z0-9][a-z0-9-]{0,63}$"
    • addedInput schema / properties / layers / items / type
      Added value: +"string"
    • removedInput schema / properties / nodes / items / $ref
      Removed value: -"#/properties/page"
    • addedInput schema / properties / nodes / items / description
      Added value: +"id of the node to remove, with every edge touching it"
    • addedInput schema / properties / nodes / items / pattern
      Added value: +"^[a-z0-9][a-z0-9-]{0,63}$"
    • addedInput schema / properties / nodes / items / type
      Added value: +"string"
    • changedInput schema / properties / page / description
      Previous value: -"page (parallel map) this call targets; omit for the default page. One effort = one page: start a NEW effort on its own page named after the effort, so concurrent sessions never write over each other and the pane can switch between pages."New value: +"page (parallel map) this call targets; omit for the default page. A new conversation is not a new effort. Read existing pages with mmap_read first; reuse the same page for continued work. Create a new page only for a distinct effort."
    • addedInput schema / properties / pages
      Added value: +{
      +  "description": "pages to delete entirely, after this call's map edits; permanent",
      +  "items": {
      +    "description": "slug of a page whose WHOLE map file is deleted — the page and everything drawn on it. Not the page this same call targets with `page`.",
      +    "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / references
      Added value: +{
      +  "description": "For deletePage: reject inbound submap references by default, or explicitly keep them.",
      +  "enum": [
      +    "reject",
      +    "keep"
      +  ],
      +  "type": "string"
      +}
  2. First observedv0.12.0

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral burden and does so impressively. It discloses ordering, all-or-nothing semantics, cascading edge deletion, ungrouping behavior, permanence of page deletion, application order for edits vs page deletion, unknown-slug refusal, and the lack of an existence invariant for submap references.

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 description is long but almost every sentence carries behavioral or safety-critical information. It is front-loaded with the core action and ordering, then expands to page deletion and edge cases. The phrase "revising it is honest work" is slightly stylistic but not harmful.

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 mutation tool with no annotations and no output schema, the description is remarkably complete. It covers operation order, atomicity, cascades, deletion permanence, user consent, error behavior for unknown slugs, default-page handling, and dangling submap references. An agent has enough context to invoke this tool safely and correctly.

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?

The description adds important meaning beyond the schema, especially for `pages` — permanent deletion, applied after edits, and default-page non-deletability via slug. It also clarifies node/edge/group/layer semantics. Some parameters like `expectedRevision` and `references` are left to the schema, so it is not exhaustive.

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?

The description clearly names the action and resource: "Remove edges, nodes, groups and empty layer bands" and distinguishes map-level edits from page-file deletion via `pages`. It does not explicitly compare itself to sibling tools like `mmap_update`, so it falls slightly short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

It gives a clear when-to-use signal: "Use when the ghost design turns out wrong." It also advises that page deletion should happen "only ever with the user behind it." However, it does not explicitly contrast with `mmap_update` or state when edits should go there instead.

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