Skip to main content
Glama

Field Service Business Platform by Doing Work

visits_onTheWay

Mark that the worker is on the way to a visit, with an optional ETA (eta_at, or eta_minutes from now). The worker on the visit (or the office) can do this. When the shop has on the way notices on, the customer gets a text and an email. Text is the main one. The email goes whenever the customer has an email address, even if the text is blocked, refused, or does not go through. When arrival notices are also on, the message includes an arrival time: a route estimate when the visit already has one, otherwise the time the worker entered, otherwise no arrival line. Route data stores the booked start and the arrival window, not a drive time. Doing Work does not look up a drive time.

Input Schema

NameRequiredDescriptionDefault
eta_atNo
visit_idYes
eta_minutesNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "customer_notice": {
      -        "description": "Whether a customer notice was queued. On the way, that is the on the way message. Arrived, that is the arrived message when arrival notices are on. It is sent only if the customer can be reached.",
      -        "enum": [
      -          "queued",
      -          "off",
      -          "already"
      -        ],
      -        "type": "string"
      -      },
      -      "eta_at": {
      -        "format": "date-time",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "status": {
      -        "type": "string"
      -      },
      -      "visit_id": {
      -        "format": "uuid",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "visit_id",
      -      "status"
      -    ],
      -    "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": {
      +      "customer_notice": {
      +        "description": "Whether a customer notice was queued. On the way, that is the on the way message. Arrived, that is the arrived message. Both follow on_my_way_notices. It is sent only if the customer can be reached.",
      +        "enum": [
      +          "queued",
      +          "off",
      +          "already"
      +        ],
      +        "type": "string"
      +      },
      +      "eta_at": {
      +        "format": "date-time",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "type": "string"
      +      },
      +      "visit_id": {
      +        "format": "uuid",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "visit_id",
      +      "status"
      +    ],
      +    "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": {
      -      "customer_notice": {
      -        "description": "Whether an on-my-way email to the customer was queued. It is sent only if the customer has an email address.",
      -        "enum": [
      -          "queued",
      -          "off"
      -        ],
      -        "type": "string"
      -      },
      -      "eta_at": {
      -        "format": "date-time",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "status": {
      -        "type": "string"
      -      },
      -      "visit_id": {
      -        "format": "uuid",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "visit_id",
      -      "status"
      -    ],
      -    "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": {
      +      "customer_notice": {
      +        "description": "Whether a customer notice was queued. On the way, that is the on the way message. Arrived, that is the arrived message when arrival notices are on. It is sent only if the customer can be reached.",
      +        "enum": [
      +          "queued",
      +          "off",
      +          "already"
      +        ],
      +        "type": "string"
      +      },
      +      "eta_at": {
      +        "format": "date-time",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "type": "string"
      +      },
      +      "visit_id": {
      +        "format": "uuid",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "visit_id",
      +      "status"
      +    ],
      +    "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.6/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 real work: it discloses the customer-facing side effects (text is primary, email is sent regardless of text status), the conditional arrival-time line, and the fallback ordering for the estimate. Remaining gaps are idempotency (repeat calls re-notifying the customer?) and permission/failure behavior, which are not addressed.

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 purpose is front-loaded and the notification rules are relevant, but the tail drifts into implementation notes ('Route data stores the booked start and the arrival window, not a drive time. Doing Work does not look up a drive time') that read as internal trivia rather than caller guidance. Several clauses could be tightened without losing meaning.

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?

For a 3-parameter mutation with an output schema already covering returns, the definition is close to complete: it covers who may call it, what the customer receives, and how the arrival estimate is derived. It would be fully complete with a note on repeat invocation and on visits in a non-pending state.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It usefully clarifies that eta_minutes is relative ('from now') and that either form is acceptable, but it never states precedence when both eta_at and eta_minutes are supplied, nor what omitting both means for the arrival line. visit_id is left entirely to the schema.

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 ('Mark that the worker is on the way to a visit') plus the optional ETA payload, so the action is unambiguous. It does not, however, distinguish itself from the near-identical sibling 'visit_on_my_way', which an agent could easily pick instead.

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?

It gives partial context by naming the actors ('The worker on the visit (or the office) can do this') and the shop-level notice preconditions that make it meaningful. It never says when to prefer this over visit_on_my_way or visits_arrived, nor what happens if the visit is already arrived/cancelled, so routing between siblings is left to inference.

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