Skip to main content
Glama

Stop sharing

stop_share
DestructiveIdempotent

Stop a Tailscale Serve/Funnel mount, this server's shares, or all shares, then report what was removed and remains.

Instructions

Stop Serve/Funnel shares: one mount, the shares this server created, or all of them, reporting what was removed. Name exactly one target: httpsPort and/or path turns off that one mount (httpsPort is the serve port shown in share_status, typically 443, not the proxied local port; path is the mount path given to share_port, default "/"); mine=true stops only the shares this server created in this session; all=true clears the entire serve/funnel configuration, including shares set up outside this server. With no arguments nothing is stopped and the active endpoints are listed. Returns what was removed and what remains.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "stop_share"
  }
}

Input Schema

NameRequiredDescriptionDefault
allNoClear the ENTIRE serve/funnel config, including shares not created by this server
mineNoStop only the shares created by share_port in this session
pathNoMount path to turn off, as passed to share_port (default: "/")
httpsPortNoHTTPS serve port of the mount to turn off (default 443 when path is given)

Output Schema

NameRequiredDescriptionDefault
removedYes
stoppedYes
failuresNo
remainingYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.4.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / all
      Added value: +{
      +  "description": "Clear the ENTIRE serve/funnel config, including shares not created by this server",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / httpsPort / description
      Previous value: -"HTTPS serve port to turn off (as shown in share_status). Omit to clear everything."New value: +"HTTPS serve port of the mount to turn off (default 443 when path is given)"
    • addedInput schema / properties / mine
      Added value: +{
      +  "description": "Stop only the shares created by share_port in this session",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / path
      Added value: +{
      +  "description": "Mount path to turn off, as passed to share_port (default: \"/\")",
      +  "pattern": "^\\/[A-Za-z0-9._~\\-/]*$",
      +  "type": "string"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "failures": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "error": {
      +            "type": "string"
      +          },
      +          "httpsPort": {
      +            "type": "number"
      +          },
      +          "path": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "httpsPort",
      +          "path",
      +          "error"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "remaining": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "active": {
      +          "type": "boolean"
      +        },
      +        "endpoints": {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "foreground": {
      +                "type": "boolean"
      +              },
      +              "host": {
      +                "type": "string"
      +              },
      +              "httpsPort": {
      +                "type": "number"
      +              },
      +              "path": {
      +                "type": "string"
      +              },
      +              "public": {
      +                "type": "boolean"
      +              },
      +              "scheme": {
      +                "enum": [
      +                  "https",
      +                  "http"
      +                ],
      +                "type": "string"
      +              },
      +              "target": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "targetType": {
      +                "enum": [
      +                  "proxy",
      +                  "path",
      +                  "text",
      +                  "redirect",
      +                  "unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "url": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "url",
      +              "host",
      +              "httpsPort",
      +              "scheme",
      +              "path",
      +              "target",
      +              "targetType",
      +              "public",
      +              "foreground"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "publicExposure": {
      +          "description": "True when any endpoint is exposed via Funnel; null if unknown (old CLI)",
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "status": {
      +          "description": "Raw text status, only on CLIs without --json",
      +          "type": "string"
      +        },
      +        "tcpForwards": {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "foreground": {
      +                "type": "boolean"
      +              },
      +              "port": {
      +                "type": "number"
      +              },
      +              "public": {
      +                "type": "boolean"
      +              },
      +              "target": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "port",
      +              "target",
      +              "public",
      +              "foreground"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "active",
      +        "publicExposure",
      +        "endpoints"
      +      ],
      +      "type": "object"
      +    },
      +    "removed": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "foreground": {
      +            "type": "boolean"
      +          },
      +          "host": {
      +            "type": "string"
      +          },
      +          "httpsPort": {
      +            "type": "number"
      +          },
      +          "path": {
      +            "type": "string"
      +          },
      +          "public": {
      +            "type": "boolean"
      +          },
      +          "scheme": {
      +            "enum": [
      +              "https",
      +              "http"
      +            ],
      +            "type": "string"
      +          },
      +          "target": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "targetType": {
      +            "enum": [
      +              "proxy",
      +              "path",
      +              "text",
      +              "redirect",
      +              "unknown"
      +            ],
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "url",
      +          "host",
      +          "httpsPort",
      +          "scheme",
      +          "path",
      +          "target",
      +          "targetType",
      +          "public",
      +          "foreground"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "stopped": {
      +      "anyOf": [
      +        {
      +          "const": "all",
      +          "type": "string"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "httpsPort": {
      +              "type": "number"
      +            },
      +            "path": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "httpsPort",
      +            "path"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "httpsPort": {
      +                "type": "number"
      +              },
      +              "path": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "httpsPort",
      +              "path"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "stopped",
      +    "removed",
      +    "remaining"
      +  ],
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

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

Adds important context beyond the destructive/idempotent annotations: all=true reaches shares created outside this server, and calling with no arguments is a safe no-op that lists endpoints. It doesn't discuss permissions or irreversibility, but the blast radius is clearly disclosed.

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?

Front-loaded with the scope summary, then target selection, then edge cases. It's a long single paragraph, but nearly every clause carries a distinct rule; a light bullet structure would make it easier to scan.

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?

Covers target selection, mutual exclusion, the no-arg behavior, and the destructive scope of all=true, and briefly notes the return shape even though an output schema exists. Nothing an agent needs in order to call it safely is missing.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real disambiguation: httpsPort is the serve port shown in share_status (typically 443), not the proxied local port, and path is the mount path given to share_port. That clarification is not in the schema and prevents a common misuse.

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?

Opens with a specific verb+resource ("Stop Serve/Funnel shares") and immediately enumerates the three scopes it can act on. It is clearly distinguishable from the sibling tools share_port (creates) and share_status (reports), both of which are named in the text.

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?

States an explicit selection rule ("Name exactly one target") and then gives the condition for each mode: httpsPort/path for a single mount, mine=true for session-created shares, all=true for everything including external shares. It also explicitly documents the no-argument case: nothing stopped, endpoints listed.

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