Skip to main content
Glama

Update status page

update_status_page
DestructiveIdempotent

Rename a status page, move it to a new slug, publish and unpublish it, or change who may open it. An omitted field is left alone. Changing the slug moves the public URL and breaks existing links. access replaces the page's access settings and list whole: protected true makes it private to the listed domains and addresses (Team plan), and removes subscribers the list does not cover; protected false makes it public again and keeps the list. Not read-only; idempotent.

Input Schema

NameRequiredDescriptionDefault
nameNoNew display name.
slugYesThe page to change, by its current slug.
accessNoReplace who may open it: make it private, change its list, or make it public again.
enabledNoPublish or unpublish the page.
new_slugNoNew slug. Changing it moves the public URL and breaks existing links.

Output Schema

NameRequiredDescriptionDefault
nameYes
slugYes
accessNoWho may open it, or null for a page never made private.
enabledYes
public_urlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • removedInput schema / $defs / PageAccessArg / properties / email / default / session_days
      Removed value: -null
    • addedInput schema / $defs / PageAccessArg / properties / password
      Added value: +{
      +  "$ref": "#/$defs/PagePasswordAccessArg",
      +  "default": {
      +    "enabled": false
      +  }
      +}
    • changedInput schema / $defs / PageAccessArg / properties / protected / description
      Previous value: -"Private when true: only the addresses and domains in `rules` can open\nthe page, by signing in on it with a code sent to their email. False\nmakes it public again and keeps the list for next time."New value: +"Private when true: only people a way in lets through can open the\npage: the addresses and domains in `rules`, by a code sent to their\nemail, or anyone with the page password. False makes it public again\nand keeps the list and the password for next time."
    • changedInput schema / $defs / PageAccessArg / properties / rules / description
      Previous value: -"Who can open it, up to 500 entries. Read back, these are customer data."New value: +"Who can get an email code, up to 500 entries. Read back, these are\ncustomer data."
    • addedInput schema / $defs / PageAccessArg / properties / session_days
      Added value: +{
      +  "default": null,
      +  "description": "Keep a sign-in, by email or password, for 7, 30 or 90 days. Omit to\nkeep it until sign-out.",
      +  "format": "int32",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • changedInput schema / $defs / PageEmailAccessArg / properties / enabled / description
      Previous value: -"Defaults to true; a private page needs it."New value: +"Defaults to true. A private page needs it or the password."
    • removedInput schema / $defs / PageEmailAccessArg / properties / session_days
      Removed value: -{
      -  "default": null,
      -  "description": "Keep a sign-in for 7, 30 or 90 days. Omit to keep it until sign-out.",
      -  "format": "int32",
      -  "type": [
      -    "integer",
      -    "null"
      -  ]
      -}
    • addedInput schema / $defs / PagePasswordAccessArg
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The page password way in. The password itself never passes through here:\nit is set in the app, the API or Terraform.",
      +  "properties": {
      +    "enabled": {
      +      "default": false,
      +      "description": "Anyone with the page password can open the page. Turning it on needs\none already set; turning it off keeps it and signs out everyone who\ncame in with it.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedOutput schema / $defs / PageAccessArg / properties / email / default / session_days
      Removed value: -null
    • addedOutput schema / $defs / PageAccessArg / properties / password
      Added value: +{
      +  "$ref": "#/$defs/PagePasswordAccessArg",
      +  "default": {
      +    "enabled": false
      +  }
      +}
    • changedOutput schema / $defs / PageAccessArg / properties / protected / description
      Previous value: -"Private when true: only the addresses and domains in `rules` can open\nthe page, by signing in on it with a code sent to their email. False\nmakes it public again and keeps the list for next time."New value: +"Private when true: only people a way in lets through can open the\npage: the addresses and domains in `rules`, by a code sent to their\nemail, or anyone with the page password. False makes it public again\nand keeps the list and the password for next time."
    • changedOutput schema / $defs / PageAccessArg / properties / rules / description
      Previous value: -"Who can open it, up to 500 entries. Read back, these are customer data."New value: +"Who can get an email code, up to 500 entries. Read back, these are\ncustomer data."
    • addedOutput schema / $defs / PageAccessArg / properties / session_days
      Added value: +{
      +  "default": null,
      +  "description": "Keep a sign-in, by email or password, for 7, 30 or 90 days. Omit to\nkeep it until sign-out.",
      +  "format": "int32",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • changedOutput schema / $defs / PageEmailAccessArg / properties / enabled / description
      Previous value: -"Defaults to true; a private page needs it."New value: +"Defaults to true. A private page needs it or the password."
    • removedOutput schema / $defs / PageEmailAccessArg / properties / session_days
      Removed value: -{
      -  "default": null,
      -  "description": "Keep a sign-in for 7, 30 or 90 days. Omit to keep it until sign-out.",
      -  "format": "int32",
      -  "type": [
      -    "integer",
      -    "null"
      -  ]
      -}
    • addedOutput schema / $defs / PagePasswordAccessArg
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The page password way in. The password itself never passes through here:\nit is set in the app, the API or Terraform.",
      +  "properties": {
      +    "enabled": {
      +      "default": false,
      +      "description": "Anyone with the page password can open the page. Turning it on needs\none already set; turning it off keeps it and signs out everyone who\ncame in with it.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed5 schema fields changed
    • addedInput schema / $defs
      Added value: +{
      +  "PageAccessArg": {
      +    "additionalProperties": false,
      +    "description": "Who may open a status page; the same shape as the REST `access` field. As a\nwrite it replaces what is stored, whole.",
      +    "properties": {
      +      "email": {
      +        "$ref": "#/$defs/PageEmailAccessArg",
      +        "default": {
      +          "enabled": true,
      +          "passkeys_enabled": true,
      +          "recheck_days": null,
      +          "session_days": null
      +        }
      +      },
      +      "protected": {
      +        "description": "Private when true: only the addresses and domains in `rules` can open\nthe page, by signing in on it with a code sent to their email. False\nmakes it public again and keeps the list for next time.",
      +        "type": "boolean"
      +      },
      +      "rules": {
      +        "default": [],
      +        "description": "Who can open it, up to 500 entries. Read back, these are customer data.",
      +        "items": {
      +          "$ref": "#/$defs/PageAccessRuleArg"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "protected"
      +    ],
      +    "type": "object"
      +  },
      +  "PageAccessRuleArg": {
      +    "additionalProperties": false,
      +    "description": "One access list entry.",
      +    "properties": {
      +      "kind": {
      +        "description": "`domain` lets in every address at `value` (`example.com`); `address`\nlets in one person (`name@example.com`).",
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  "PageEmailAccessArg": {
      +    "additionalProperties": false,
      +    "description": "The emailed-code way in, and the passkeys that shortcut it.",
      +    "properties": {
      +      "enabled": {
      +        "default": true,
      +        "description": "Defaults to true; a private page needs it.",
      +        "type": "boolean"
      +      },
      +      "passkeys_enabled": {
      +        "default": true,
      +        "description": "Let viewers save a passkey after an email sign-in. Defaults to true.",
      +        "type": "boolean"
      +      },
      +      "recheck_days": {
      +        "default": null,
      +        "description": "Ask passkey viewers for an email code again after 30, 90 or 365 days.\nOmit to never ask.",
      +        "format": "int32",
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "session_days": {
      +        "default": null,
      +        "description": "Keep a sign-in for 7, 30 or 90 days. Omit to keep it until sign-out.",
      +        "format": "int32",
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  }
      +}
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / access
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/PageAccessArg"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Replace who may open it: make it private, change its list, or make it\npublic again."
      +}
    • addedOutput schema / $defs
      Added value: +{
      +  "PageAccessArg": {
      +    "additionalProperties": false,
      +    "description": "Who may open a status page; the same shape as the REST `access` field. As a\nwrite it replaces what is stored, whole.",
      +    "properties": {
      +      "email": {
      +        "$ref": "#/$defs/PageEmailAccessArg",
      +        "default": {
      +          "enabled": true,
      +          "passkeys_enabled": true,
      +          "recheck_days": null,
      +          "session_days": null
      +        }
      +      },
      +      "protected": {
      +        "description": "Private when true: only the addresses and domains in `rules` can open\nthe page, by signing in on it with a code sent to their email. False\nmakes it public again and keeps the list for next time.",
      +        "type": "boolean"
      +      },
      +      "rules": {
      +        "default": [],
      +        "description": "Who can open it, up to 500 entries. Read back, these are customer data.",
      +        "items": {
      +          "$ref": "#/$defs/PageAccessRuleArg"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "protected"
      +    ],
      +    "type": "object"
      +  },
      +  "PageAccessRuleArg": {
      +    "additionalProperties": false,
      +    "description": "One access list entry.",
      +    "properties": {
      +      "kind": {
      +        "description": "`domain` lets in every address at `value` (`example.com`); `address`\nlets in one person (`name@example.com`).",
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  "PageEmailAccessArg": {
      +    "additionalProperties": false,
      +    "description": "The emailed-code way in, and the passkeys that shortcut it.",
      +    "properties": {
      +      "enabled": {
      +        "default": true,
      +        "description": "Defaults to true; a private page needs it.",
      +        "type": "boolean"
      +      },
      +      "passkeys_enabled": {
      +        "default": true,
      +        "description": "Let viewers save a passkey after an email sign-in. Defaults to true.",
      +        "type": "boolean"
      +      },
      +      "recheck_days": {
      +        "default": null,
      +        "description": "Ask passkey viewers for an email code again after 30, 90 or 365 days.\nOmit to never ask.",
      +        "format": "int32",
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "session_days": {
      +        "default": null,
      +        "description": "Keep a sign-in for 7, 30 or 90 days. Omit to keep it until sign-out.",
      +        "format": "int32",
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  }
      +}
    • addedOutput schema / properties / access
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/PageAccessArg"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Who may open it, or null for a page never made private."
      +}
  3. Added

TDQS

A4.6/5.0
Behavior5/5

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

Strongly exceeds the annotations: it spells out that slug changes move the public URL and break links, that access replaces the whole settings object, that protected=true removes uncovered subscribers and requires Team plan, that protected=false keeps the list, and that it is not read-only and idempotent. These are the destructive/side-effect facts an agent needs beyond destructiveHint=true and idempotentHint=true.

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-loads the four capabilities, then gives the partial-update rule, then the highest-risk consequence (URL breakage), then access semantics. Well ordered and dense; the access sentence is long but every clause carries actionable meaning.

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?

Given annotations that already flag destructiveness and idempotence, plus a 100%-covered schema and an output schema, the description supplies exactly the missing behavioral context: partial-update semantics, URL migration risk, and access replacement/subscriber-removal consequences. Nothing critical is absent for correct invocation.

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 already 100% and includes good field descriptions, but the tool description adds cross-parameter semantics the schema cannot: omitted fields are left alone, access replaces rather than merges, and the protected true/false consequences on subscriber removal and list retention. It does not add much on name/enabled specifically, but those are self-explanatory.

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 states a specific verb and resource, then enumerates exactly the four kinds of change this tool makes: rename, re-slug, publish/unpublish, change access. It is immediately distinguishable from siblings like get_status_page, list_status_pages, create_status_page and update_status_page_component.

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?

The description establishes when to use this tool (an existing page, partial updates) and implicitly contrasts with create_status_page by saying 'An omitted field is left alone.' It does not name alternatives explicitly, but the update-vs-create and update-page-vs-update-component boundaries are clear enough from the phrasing.

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.