Skip to main content
Glama

Field Service Business Platform by Doing Work

schedule_setShopHours

Set the shop's booking hours, replacing what was there (owner or office). Days are 0 (Sunday) to 6, times are shop local HH:MM, several blocks a day are fine. An empty list clears them, and find-a-time falls back to Monday to Friday 08:00 to 17:00. Visits outside these hours are still allowed and come back with outside_shop_hours.

Input Schema

NameRequiredDescriptionDefault
hoursYes
shop_idYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "arrival_notices": {
      -        "description": "When true, an on the way message includes an arrival time when one is known (a stored route estimate, or the time the worker entered), and the customer is told by text and email when the worker marks the visit arrived. Off by default. No drive time is looked up.",
      -        "type": "boolean"
      -      },
      -      "arrival_window_minutes": {
      -        "type": "integer"
      -      },
      -      "buffer_minutes": {
      -        "type": "integer"
      -      },
      -      "hours": {
      -        "items": {
      -          "properties": {
      -            "end": {
      -              "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
      -              "type": "string"
      -            },
      -            "start": {
      -              "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
      -              "type": "string"
      -            },
      -            "weekday": {
      -              "maximum": 6,
      -              "minimum": 0,
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "weekday",
      -            "start",
      -            "end"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "hours_source": {
      -        "description": "default means the shop set no hours and Monday to Friday 08:00 to 17:00 is assumed.",
      -        "enum": [
      -          "shop",
      -          "default"
      -        ],
      -        "type": "string"
      -      },
      -      "on_my_way_notices": {
      -        "type": "boolean"
      -      },
      -      "reminder_hours": {
      -        "description": "0 means no appointment reminders.",
      -        "type": "integer"
      -      },
      -      "shop_id": {
      -        "format": "uuid",
      -        "type": "string"
      -      },
      -      "time_zone": {
      -        "description": "IANA zone all shop-local times use.",
      -        "type": "string"
      -      },
      -      "time_zone_set": {
      -        "description": "False when the zone comes from the shop's jurisdiction.",
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "shop_id",
      -      "time_zone",
      -      "hours",
      -      "hours_source",
      -      "arrival_window_minutes",
      -      "buffer_minutes",
      -      "reminder_hours",
      -      "on_my_way_notices",
      -      "arrival_notices"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "approval_id": {
      -        "format": "uuid",
      -        "type": "string"
      -      },
      -      "approval_required": {
      -        "enum": [
      -          true
      -        ],
      -        "type": "boolean"
      -      },
      -      "expires_at": {
      -        "format": "date-time",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "pending"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "approval_required",
      -      "approval_id",
      -      "status",
      -      "expires_at",
      -      "message"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "arrival_notices": {
      +        "description": "When true, an on the way message includes an arrival time when one is known (a stored route estimate, or the time the worker entered). Off by default. The arrived notice follows on_my_way_notices. No drive time is looked up.",
      +        "type": "boolean"
      +      },
      +      "arrival_window_minutes": {
      +        "type": "integer"
      +      },
      +      "buffer_minutes": {
      +        "type": "integer"
      +      },
      +      "hours": {
      +        "items": {
      +          "properties": {
      +            "end": {
      +              "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
      +              "type": "string"
      +            },
      +            "start": {
      +              "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
      +              "type": "string"
      +            },
      +            "weekday": {
      +              "maximum": 6,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "weekday",
      +            "start",
      +            "end"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "hours_source": {
      +        "description": "default means the shop set no hours and Monday to Friday 08:00 to 17:00 is assumed.",
      +        "enum": [
      +          "shop",
      +          "default"
      +        ],
      +        "type": "string"
      +      },
      +      "on_my_way_notices": {
      +        "type": "boolean"
      +      },
      +      "reminder_hours": {
      +        "description": "0 means no appointment reminders.",
      +        "type": "integer"
      +      },
      +      "shop_id": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "time_zone": {
      +        "description": "IANA zone all shop-local times use.",
      +        "type": "string"
      +      },
      +      "time_zone_set": {
      +        "description": "False when the zone comes from the shop's jurisdiction.",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "shop_id",
      +      "time_zone",
      +      "hours",
      +      "hours_source",
      +      "arrival_window_minutes",
      +      "buffer_minutes",
      +      "reminder_hours",
      +      "on_my_way_notices",
      +      "arrival_notices"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "approval_id": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "approval_required": {
      +        "enum": [
      +          true
      +        ],
      +        "type": "boolean"
      +      },
      +      "expires_at": {
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "pending"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "approval_required",
      +      "approval_id",
      +      "status",
      +      "expires_at",
      +      "message"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "arrival_window_minutes": {
      -        "type": "integer"
      -      },
      -      "buffer_minutes": {
      -        "type": "integer"
      -      },
      -      "hours": {
      -        "items": {
      -          "properties": {
      -            "end": {
      -              "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
      -              "type": "string"
      -            },
      -            "start": {
      -              "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
      -              "type": "string"
      -            },
      -            "weekday": {
      -              "maximum": 6,
      -              "minimum": 0,
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "weekday",
      -            "start",
      -            "end"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "hours_source": {
      -        "description": "default means the shop set no hours and Monday to Friday 08:00 to 17:00 is assumed.",
      -        "enum": [
      -          "shop",
      -          "default"
      -        ],
      -        "type": "string"
      -      },
      -      "on_my_way_notices": {
      -        "type": "boolean"
      -      },
      -      "reminder_hours": {
      -        "description": "0 means no appointment reminders.",
      -        "type": "integer"
      -      },
      -      "shop_id": {
      -        "format": "uuid",
      -        "type": "string"
      -      },
      -      "time_zone": {
      -        "description": "IANA zone all shop-local times use.",
      -        "type": "string"
      -      },
      -      "time_zone_set": {
      -        "description": "False when the zone comes from the shop's jurisdiction.",
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "shop_id",
      -      "time_zone",
      -      "hours",
      -      "hours_source",
      -      "arrival_window_minutes",
      -      "buffer_minutes",
      -      "reminder_hours",
      -      "on_my_way_notices"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "approval_id": {
      -        "format": "uuid",
      -        "type": "string"
      -      },
      -      "approval_required": {
      -        "enum": [
      -          true
      -        ],
      -        "type": "boolean"
      -      },
      -      "expires_at": {
      -        "format": "date-time",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "pending"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "approval_required",
      -      "approval_id",
      -      "status",
      -      "expires_at",
      -      "message"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "arrival_notices": {
      +        "description": "When true, an on the way message includes an arrival time when one is known (a stored route estimate, or the time the worker entered), and the customer is told by text and email when the worker marks the visit arrived. Off by default. No drive time is looked up.",
      +        "type": "boolean"
      +      },
      +      "arrival_window_minutes": {
      +        "type": "integer"
      +      },
      +      "buffer_minutes": {
      +        "type": "integer"
      +      },
      +      "hours": {
      +        "items": {
      +          "properties": {
      +            "end": {
      +              "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
      +              "type": "string"
      +            },
      +            "start": {
      +              "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
      +              "type": "string"
      +            },
      +            "weekday": {
      +              "maximum": 6,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "weekday",
      +            "start",
      +            "end"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "hours_source": {
      +        "description": "default means the shop set no hours and Monday to Friday 08:00 to 17:00 is assumed.",
      +        "enum": [
      +          "shop",
      +          "default"
      +        ],
      +        "type": "string"
      +      },
      +      "on_my_way_notices": {
      +        "type": "boolean"
      +      },
      +      "reminder_hours": {
      +        "description": "0 means no appointment reminders.",
      +        "type": "integer"
      +      },
      +      "shop_id": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "time_zone": {
      +        "description": "IANA zone all shop-local times use.",
      +        "type": "string"
      +      },
      +      "time_zone_set": {
      +        "description": "False when the zone comes from the shop's jurisdiction.",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "shop_id",
      +      "time_zone",
      +      "hours",
      +      "hours_source",
      +      "arrival_window_minutes",
      +      "buffer_minutes",
      +      "reminder_hours",
      +      "on_my_way_notices",
      +      "arrival_notices"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "approval_id": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "approval_required": {
      +        "enum": [
      +          true
      +        ],
      +        "type": "boolean"
      +      },
      +      "expires_at": {
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "pending"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "approval_required",
      +      "approval_id",
      +      "status",
      +      "expires_at",
      +      "message"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. First observed

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that existing hours are destroyed, that an empty list clears everything, that find-a-time falls back to Mon–Fri 08:00–17:00, and that out-of-hours visits are still permitted and flagged via outside_shop_hours. Missing only finer details such as validation failure behavior or overwrite atomicity.

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?

Three compact sentences that front-load the action and its destructive nature, then layer in encoding rules and defaults. Densely packed but every clause carries information; no filler.

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?

Output schema exists, so return values need no explanation, and the description still calls out the outside_shop_hours flag that an agent would otherwise miss. The only real gap is the lack of differentiation from neighboring scheduling tools.

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 0%, so the description must compensate, and it does: it maps weekdays to 0 (Sunday) through 6, clarifies times are shop-local HH:MM, and notes that multiple blocks per weekday are acceptable. shop_id is left entirely unexplained, but it is self-evident as a UUID identifier.

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?

States a specific verb and resource ('Set the shop's booking hours') plus the key replacement semantics ('replacing what was there'). It does not distinguish itself from close siblings like availability_setHours or schedule_setRules, so an agent must infer the difference.

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?

Gives useful context: who can call it ('owner or office'), and what an empty list does, plus the fallback when nothing is set. It never says when to prefer this over availability_setHours or schedule_setRules, which is the main ambiguity for an agent choosing among scheduling tools.

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.

Resources