Skip to main content
Glama
forterro

freshservice-mcp

by forterro

manage_status_page

Create, update, and delete status page incidents, maintenance windows, components, and subscribers to keep customers informed during outages and planned work.

Instructions

Unified Status Page operations: maintenance windows, incidents, components.

    IMPORTANT — Publishing a maintenance on the Status Page:
        To publish a maintenance, you MUST provide either change_id or
        maintenance_window_id. The rules are:

        1. If the Change already has a maintenance_window (check via
           manage_change action='get' → maintenance_window.id), use change_id.
        2. If the Change has NO maintenance_window (maintenance_window is
           empty {}), you MUST first create a Maintenance Window using
           manage_maintenance_window action='create' with name, description,
           start_time, end_time, AND change_id (to auto-associate the MW
           with the Change). Then use the returned maintenance_window_id here.
        3. You can also use maintenance_window_id directly if you already
           know the MW ID.

        Required fields for create_maintenance:
          - title, description, started_at, ended_at, impacted_services
          - impacted_services format: [{"id": <service_component_id>, "status": 5}]
            status values: 1=Operational, 5=Under maintenance, 10=Degraded,
            20=Partial outage, 30=Major outage
          - Get available service component IDs via action='list_components'

    Args:
        action: One of:
          Pages:        'list_pages'
          Components:   'list_components', 'get_component'
          Maintenance:  'list_maintenance', 'create_maintenance', 'update_maintenance',
                        'get_maintenance', 'delete_maintenance'
          Maintenance Updates: 'create_maintenance_update', 'list_maintenance_updates',
                        'update_maintenance_update', 'delete_maintenance_update'
          Incidents:    'list_incidents', 'create_incident', 'update_incident',
                        'get_incident', 'delete_incident'
          Incident Updates: 'create_incident_update', 'list_incident_updates',
                        'update_incident_update', 'delete_incident_update'
          Statuses:     'list_incident_statuses', 'list_maintenance_statuses'
          Subscribers:  'list_subscribers', 'get_subscriber', 'create_subscriber',
                        'update_subscriber', 'delete_subscriber'
        status_page_id: Status page ID (auto-discovered if omitted).
        change_id: Change ID — maintenance CRUD from a change. The change
            MUST have an associated maintenance_window or the API returns 404.
            Check via manage_change get → if maintenance_window is empty {},
            use manage_maintenance_window to create one first, then pass
            maintenance_window_id instead.
        maintenance_window_id: Maintenance Window ID — maintenance CRUD from a MW.
            Use this when the change has no built-in MW, or for standalone MW
            publishing. Create a MW first via manage_maintenance_window action='create'.
        ticket_id: Ticket ID — incident CRUD (required for create/update/get/delete,
            not needed for list_incidents).
        maintenance_id: Maintenance ID (get/update/delete maintenance, maintenance updates)
        incident_id: Incident ID (get/update/delete incident, incident updates)
        update_id: Update ID (update/delete maintenance/incident updates)
        component_id: Service component ID (get_component)
        subscriber_id: Subscriber ID (get/update/delete subscriber)
        title: Title (create maintenance/incident) — Mandatory
        description: HTML description
        started_at: ISO datetime — start time (maintenance/incident)
        ended_at: ISO datetime — end time (maintenance)
        impacted_services: [{id, status}] — 1=Operational, 5=Under maintenance,
            10=Degraded, 20=Partial outage, 30=Major outage — Mandatory for create_maintenance
        notifications: Array of notification dicts [{trigger, options: {value}}]
            trigger: 1=On start, 2=Before start, 3=On complete
        is_private: Private maintenance/incident (default false)
        body: Update body text (maintenance/incident updates)
        update_status: Status string for updates
        email: Subscriber email (create_subscriber — Mandatory)
        service_ids: List of service IDs the subscriber is subscribed to
        subscribe_all_services: true = notify for all services
        subscriber_type: 1=External, 2=Agent, 3=Requester
        timezone: Subscriber timezone (e.g. "UTC")
        page/per_page: Pagination
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyNo
pageNo
emailNo
titleNo
actionYes
ended_atNo
per_pageNo
timezoneNo
change_idNo
ticket_idNo
update_idNo
is_privateNo
started_atNo
descriptionNo
incident_idNo
service_idsNo
component_idNo
notificationsNo
subscriber_idNo
update_statusNo
maintenance_idNo
status_page_idNo
subscriber_typeNo
impacted_servicesNo
maintenance_window_idNo
subscribe_all_servicesNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior4/5

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

With no annotations, the description carries a heavy burden and delivers by disclosing critical behaviors: mandatory provision of either change_id or maintenance_window_id, the 404 error when a change lacks an associated MW, auto-discovery of status_page_id, required fields, and status value mappings. It does not cover permissions, rate limits, or side effects of destructive actions, but provides substantial context beyond what annotations would normally supply.

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?

The description is a large block of text with mixed sections and noticeable redundancy, repeating the change_id/maintenance_window_id rule in both the IMPORTANT section and the parameter list. While structured with line breaks, it could be tightened with clearer headings and less duplication to improve scannability for an AI agent.

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 tool with 26 parameters and over 30 actions, the description is exceptionally complete, covering all action categories, parameter semantics, cross-tool dependencies, required fields, and value enums. The presence of an output schema means response formats need not be described, and the provided info is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the Args section meticulously explains every parameter, including purpose, constraints, formats, and enum mappings (e.g., impacted_services structure, notification triggers, subscriber types). This fully compensates for the empty schema descriptions and adds critical meaning for correct invocation.

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 'Unified Status Page operations: maintenance windows, incidents, components', clearly stating the tool's domain. The action list enumerates exact operations (pages, components, maintenance, incidents, etc.), distinguishing it from sibling tools like manage_change and manage_maintenance_window. Although 'operations' is a generic verb, the resource and scope are unmistakable.

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?

The 'IMPORTANT' section provides a clear decision tree for when to use change_id vs maintenance_window_id, including explicit instructions to create a maintenance window via manage_maintenance_window if none exists. It also lists required fields for create_maintenance and directs users to list_components, giving strong contextual guidance with references to sibling tools.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/forterro/freshservice_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server