Skip to main content
Glama

TimeZest MCP Server

Docker Image License

MCP (Model Context Protocol) server for TimeZest scheduling platform. Enables LLM agents to create and manage technician scheduling requests with PSA integration.

Features

  • 🎯 Flat tool list - every tool listed and callable immediately

  • 📅 Full scheduling lifecycle - create, view, cancel requests

  • 🔗 PSA integration - ConnectWise, Autotask, Halo support

  • 🌍 IANA timezone handling - explicit timezone management

  • 🚀 Dual trigger modes - PSA workflows or booking URLs

  • 🛡️ Gateway-ready - stateless per-request design

  • 🔍 TQL filtering - TimeZest Query Language support

  • Elicitation support - interactive user prompts

  • 📇 Interactive scheduling-request card (MCP Apps) - timezest_scheduling_get renders as a card in MCP Apps hosts; neutral by default, brandable via window.__BRAND__ injection or MCP_BRAND_* env vars

Related MCP server: OnSched Consumer API MCP Server

Quick Start

docker run -it --rm \
  -e TIMEZEST_API_TOKEN=your-api-token \
  ghcr.io/wyre-ai/timezest-mcp:latest

npm

npm install -g @wyre-ai/timezest-mcp
TIMEZEST_API_TOKEN=your-token timezest-mcp

Configuration

Environment Variable

Required

Description

TIMEZEST_API_TOKEN

Yes

TimeZest API token

MCP_TRANSPORT

No

Transport mode: stdio (default) or http

MCP_HTTP_PORT

No

HTTP port (default: 8080)

AUTH_MODE

No

Set to gateway for WYRE gateway integration

LOG_LEVEL

No

Log level: debug, info (default), warn, error

Tools

Every tool below is listed and callable immediately — there is no domain to enter first. The groupings are documentation only.

Upgrading from 2.x? timezest_navigate and timezest_back are gone. Nothing replaces them: call the domain tools directly, because they are all listed up front now. A client that used to call timezest_navigate({domain: "agents"}) and then timezest_agents_list should just call timezest_agents_list — likewise timezest_scheduling_list and the rest. timezest_status still works and now reports the available tools instead of a menu to enter.

Status

  • timezest_status - Show connection status and the available tools

Agents

  • timezest_agents_list - List individual technicians

  • timezest_agents_get - Get agent details

Teams

  • timezest_teams_list - List teams (round-robin scheduling)

  • timezest_teams_get - Get team details

Appointment Types

  • timezest_appointment_types_list - List available service types

  • timezest_appointment_types_get - Get appointment type details

Resources

  • timezest_resources_list - List all resources (agents + teams)

Scheduling (Core Domain)

  • timezest_scheduling_list - List scheduling requests

  • timezest_scheduling_get - Get request details

  • timezest_scheduling_create_request - Create new request (key tool)

  • timezest_scheduling_cancel - Cancel request

Usage Examples

Check What's Available

User: "What can TimeZest do?"
Tools: timezest_status

Create a Scheduling Request

User: "Book a technician for server repair at Customer Corp tomorrow"
Tools: timezest_scheduling_create_request({
  "appointmentTypeId": "repair-onsite",
  "triggerMode": "pod",
  "endUser": {
    "name": "John Doe",
    "company": "Customer Corp",
    "email": "john@customer.com"
  },
  "timeRange": {
    "earliestDate": "2024-02-01",
    "earliestTime": "09:00",
    "latestDate": "2024-02-01", 
    "latestTime": "17:00",
    "timezone": "America/New_York"
  },
  "associatedEntities": [
    {"type": "connectwise", "id": "12345", "number": "T20240001"}
  ]
})

PSA Integration

Link scheduling requests to PSA tickets:

{
  "associatedEntities": [
    {"type": "connectwise", "id": "12345", "number": "T20240001"},
    {"type": "autotask", "id": "67890"},
    {"type": "halo", "id": "11111"}
  ]
}

Trigger Modes

  • pod: Fires the configured PSA workflow (creates calendar entries, updates tickets)

  • generate_url: Returns a shareable booking URL for customers

TQL Filtering

TimeZest Query Language examples:

# Active agents in IT department
filter: "active:true AND department:\"IT Support\""

# Recent scheduling requests
filter: "createdAt:>=2024-01-01 AND status:pending"

# Specific customer requests  
filter: "endUser.company:\"Important Customer\""

Timezone Handling

CRITICAL: Always specify IANA timezones explicitly. TimeZest interprets scheduling windows in the specified timezone.

{
  "timeRange": {
    "earliestDate": "2024-02-01",
    "earliestTime": "09:00", 
    "timezone": "America/New_York"  // ✅ Required
  }
}

Development

Local Setup

# Clone and install
git clone https://github.com/WYRE-AI/timezest-mcp.git
cd timezest-mcp
npm install

# Development with file dependency (replace before publish)
# Edit package.json: "@wyre-technology/node-timezest": "file:../node-timezest"

# Build and test
npm run build
npm test

# Run locally
TIMEZEST_API_TOKEN=your-token npm run dev

Docker Development

# Build image
docker build -t timezest-mcp --build-arg NODE_AUTH_TOKEN=$GITHUB_TOKEN .

# Run container
docker run -it --rm \
  -e TIMEZEST_API_TOKEN=your-token \
  -e LOG_LEVEL=debug \
  timezest-mcp

MCP Integration

Claude Desktop

Add to your MCP settings:

{
  "mcpServers": {
    "timezest": {
      "command": "npx",
      "args": ["@wyre-ai/timezest-mcp"],
      "env": {
        "TIMEZEST_API_TOKEN": "your-api-token"
      }
    }
  }
}

WYRE Gateway

The server is designed for the WYRE MCP Gateway with:

  • Per-request server instances (stateless)

  • Header-based credential injection

  • Structured error responses

  • Flat tool list (no navigation state to enter)

API Coverage

TimeZest API

Coverage

Notes

Agents

✅ List, Get

Individual technicians

Teams

✅ List, Get

Round-robin scheduling

Appointment Types

✅ List, Get

Service type definitions

Resources

✅ List

Unified agents + teams

Scheduling Requests

✅ CRUD

Core scheduling functionality

TQL Filtering

✅ All endpoints

TimeZest Query Language

PSA Integration

✅ All systems

ConnectWise, Autotask, Halo

Webhooks

❌ N/A

TimeZest doesn't provide webhooks

Contributing

See CONTRIBUTING.md for development guidelines.

License

Apache 2.0 - see LICENSE file for details.

Available Tools

12 tools
timezest_agents_getA

Get details for a specific agent by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesAgent ID

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'Get details' without mentioning error handling for invalid IDs, authentication requirements, or the structure of returned details. No side effects are indicated, but the lack of any behavioral context is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero filler words. It conveys the essential action and scope immediately, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter get tool with no output schema and no annotations, the description is adequate but vague. It doesn't clarify what 'details' includes or how errors surface, which an agent would need for fully correct use. It is minimally acceptable but not complete.

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 coverage is 100% and the only parameter, agentId, is already described as 'Agent ID'. The description's reference to 'by ID' adds no new semantic meaning beyond what the schema already conveys, so the baseline score of 3 is appropriate.

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 clearly states a specific verb ('Get'), resource ('agent'), and scope ('specific agent by ID'). This distinguishes it from the sibling timezest_agents_list, which implies listing multiple agents rather than fetching a single one.

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?

The phrase 'by ID' implies that this tool should be used when a specific agent ID is known, contrasting with a list operation. However, it does not explicitly name alternatives, provide exclusions, or state when to use list vs get, leaving usage guidance implicit rather than explicit.

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

timezest_agents_listB

List all agents (technicians) available for scheduling

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoTQL filter string (e.g., "active:true AND department:\"IT Support\"")
pageSizeNoNumber of results per page (default: 50, max: 100)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only says 'List all agents' – a read operation – but does not disclose pagination, filtering behavior, ordering, or whether the list reflects current availability. The filter parameter implies 'all' is overridden by filters, which is unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with the action and resource front-loaded; no redundant words. It is as concise as possible while conveying the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list endpoint with two optional parameters, the description plus schema is mostly adequate. However, the lack of an output schema and any behavioral notes (pagination, filtering semantics) leaves the agent without a clear picture of return shape and edge cases.

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 100%; both 'filter' (with TQL example) and 'pageSize' (with default/max) are documented. The description adds no parameter-level detail, so baseline 3 applies.

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?

The description states a specific verb ('List') and resource ('agents (technicians)'), with a useful qualifier 'available for scheduling'. It distinguishes from timezest_agents_get (list vs get) but does not explicitly contrast with other list tools like teams or resources.

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?

The phrase 'available for scheduling' gives some context for when to call it, but there is no explicit guidance on when to prefer it over timezest_agents_get or how filtering interacts with 'available'. No alternatives or exclusions are named.

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

timezest_appointment_types_getB

Get details for a specific appointment type by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
appointmentTypeIdYesAppointment type ID

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description bears the burden of behavioral disclosure. 'Get details' implies a read-only, safe operation, but there is no mention of behavior for invalid IDs, missing records, or whether any side effects occur. It is not misleading, but it is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It conveys the resource, action, and scoping efficiently.

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 simple get-by-ID tool with one required parameter and no output schema, the description is largely adequate. It could mention how to obtain the ID or error behavior, but an agent can reasonably understand what to provide and what action occurs.

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 100%, with appointmentTypeId already described as 'Appointment type ID'. The description's 'by ID' adds no extra meaning beyond the schema, so the baseline 3 is appropriate.

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?

The description uses a specific verb ('Get details') and clearly identifies the resource ('appointment type') scoped by ID, which distinguishes it from the sibling list tool. It doesn't name the alternative explicitly, but the by-ID qualifier makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus timezest_appointment_types_list or any other sibling. It does not mention that an appointment type ID must first be obtained via the list tool, leaving usage context to inference.

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

timezest_appointment_types_listB

List all appointment types available for scheduling

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoTQL filter string (e.g., "active:true")
pageSizeNoNumber of results per page (default: 50, max: 100)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full disclosure burden, and it only says 'List all...'. It does not reveal that results can be filtered despite the filter parameter, how pagination behaves, whether inactive types are returned, or any side-effect/read-only guarantee beyond the verb itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One eight-word sentence, front-loaded with the verb and resource, with no redundant phrasing. It is precisely the right size for a tool this simple.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-optional-parameter list tool with no output schema, the description is acceptable but thin: it relies on the name/schema for return shape and doesn't mention sibling selection or default unfiltered behavior. It is a minimally viable description rather than a complete one.

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?

Input schema covers 100% of parameters with descriptions, including TQL filter and pageSize bounds/defaults, so baseline 3 applies. The description itself adds no parameter-level meaning, but the schema is sufficient.

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?

The description states a concrete action ('List') on a clear resource ('appointment types') and adds 'available for scheduling' context. It is obvious from the singular/plural sibling pair that this is the list counterpart to appointment_types_get, but it does not explicitly name a sibling or contrast its scope, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose this tool over timezest_appointment_types_get or timezest_scheduling_list. The phrase 'available for scheduling' hints at one use case, but there is no explicit when/when-not statement, so an agent must infer the appropriate context.

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

timezest_resources_listC

List all resources (agents and teams) available for scheduling

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by resource type
filterNoTQL filter string (e.g., "active:true")
pageSizeNoNumber of results per page (default: 50, max: 100)

TDQS

C2.8/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of disclosing behavior. It only says 'list all resources' without mentioning pagination, default page size, filtering via TQL, or the response structure. An agent has no idea whether results are sorted, truncated, or how to handle large result sets.

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?

The description is a single concise sentence with no fluff, clearly front-loading the action. It is appropriately short for a simple list operation, though it lacks some contextual details that would improve usability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should explain the return format, pagination behavior, and usage scenarios. It does none of this. For a tool with three optional parameters and a list operation, this is severely under-specified.

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 coverage is 100%, so all three parameters (type, filter, pageSize) are already documented with descriptions and constraints. The description adds no additional meaning beyond what the schema provides, matching the baseline of 3.

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 (list) and resource (all resources: agents and teams) and its context (for scheduling). It clearly distinguishes from the sibling agents_list and teams_list by covering both types in a single call, so an agent can infer its scope without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to prefer this tool over the more specific agents_list or teams_list, nor does it mention optional filters or pagination. Usage context is only implied by the name and the phrase 'available for scheduling', leaving the decision to the agent.

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

timezest_scheduling_cancelC

Cancel a scheduling request

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoReason for cancellation
requestIdYesScheduling request ID to cancel

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does not state whether cancellation is reversible, whether it requires special permissions, what happens to the associated request, or whether it sends notifications. The description only names the action without revealing consequences.

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?

The description is a single short sentence with no wasted words. It is front-loaded with the action and resource. However, it is so brief that it misses opportunities to add behavioral or usage context, so it earns a 4 rather than a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is too thin. It does not explain what happens after cancellation, whether the request must be in a certain state, or how the agent can verify success. The schema covers parameters, but the behavioral and workflow context is missing.

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 100%, so the schema already documents both parameters. The description adds no extra meaning beyond the schema, but the baseline of 3 applies because the schema does the heavy lifting. The 'reason' parameter's optionality and purpose are clear from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource ('Cancel a scheduling request'), which distinguishes it from the create/list/get siblings. However, it is terse and doesn't specify what 'cancel' means in this system (e.g., whether it cancels a pending request or an existing appointment), so it is adequate but not fully clarifying.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. It does not mention that it is for canceling a previously created scheduling request, nor does it contrast with timezest_scheduling_list/get or timezest_scheduling_create_request. The context is implied by the name and description only.

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

timezest_scheduling_create_requestB

Create a new scheduling request - supports PSA ticket association

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoAdditional notes or requirements
endUserYesEnd user contact information
timeRangeNoPreferred scheduling window
resourceIdsNoSpecific resource IDs (agents or teams) to book with
triggerModeYespod = fires PSA workflow, generate_url = returns booking link
appointmentTypeIdNoAppointment type ID (required)
associatedEntitiesNoAssociated PSA tickets/entities

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description must carry behavioral disclosure, but it only says 'create' and 'supports PSA ticket association'. It does not disclose side effects, response behavior, or what happens under each triggerMode, leaving the agent to infer mutation effects from the schema.

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?

The description is a single, front-loaded sentence with no filler. It earns its place, though the 'supports' phrasing is vague and could have been more precise without hurting conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and nested parameters plus two trigger modes, this description is too sparse. The agent must rely entirely on the schema for behavioral context, and the description gives no indication of what a successful call returns or what side effects occur.

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?

Parameter description coverage is 100%, so the schema already explains each parameter. The description adds little parameter-level meaning beyond hinting at associatedEntities via the PSA association note, which meets the baseline but does not exceed it.

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 action ('Create a new scheduling request') and a notable capability ('supports PSA ticket association'). This distinguishes it from the read/list/cancel siblings without ambiguity.

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?

Usage is implied by the verb 'Create' and the sibling set: this is clearly the create operation versus scheduling_list/get/cancel. However, it does not explicitly state when to prefer it, what prerequisites exist, or when another tool might be more appropriate.

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

timezest_scheduling_getA

Get details for a specific scheduling request by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
requestIdYesScheduling request ID

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the transparency burden. 'Get' signals a non-mutating lookup, but there is no mention of not-found behavior, response shape, or access requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence states the operation, resource, and identifying input with no filler or duplication of schema content.

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 simple single-parameter getter with no output schema, the description provides the essential invocation context. 'Details' is somewhat vague, but the tool is simple enough that no critical information is missing.

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 coverage is 100%, so the requestId parameter is already documented. The description adds no meaning beyond reinforcing that the ID identifies the scheduling request.

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 uses a specific verb and resource ('Get details for a specific scheduling request') and scopes it by ID, which cleanly distinguishes it from sibling tools like timezest_scheduling_list and timezest_scheduling_cancel.

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?

'by ID' implies use when an agent already has a requestId and wants a single request's details, but the description never explicitly says when to prefer this over list/cancel or what conditions rule it out.

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

timezest_scheduling_listC

List scheduling requests

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoTQL filter string (e.g., "createdAt:>=2024-01-01")
statusNoFilter by status
pageSizeNoNumber of results per page (default: 50, max: 100)

TDQS

C2.4/5.0
Behavior1/5

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

There are no annotations to provide a read-only or safety profile, so the description carries the full behavioral disclosure burden. It merely restates the operation name ('List') and gives no information about pagination behavior, filtering semantics, side effects, or return characteristics. The description adds no behavioral context beyond what the tool name already implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely brief ('List scheduling requests') and has no wasted words, but it is under-specified rather than meaningfully concise. It lacks any structural features such as separate sentences for scope, usage conditions, or payout details, making it less helpful than a slightly longer but informative description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description leaves the agent without information about the response shape, pagination details, or how this list relates to the create/get/cancel siblings. The three parameters are fully documented in the schema, which helps, but the overall definition is still thin for a tool with filtering and status options.

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?

The input schema has 100% description coverage: filter is defined as a TQL string, status has an enum of four values, and pageSize has min/max and a default. The description itself adds no parameter meaning, but per the baseline rule for high schema coverage, a score of 3 is appropriate.

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?

The description clearly states the operation 'List' on the resource 'scheduling requests', making it obvious this is a collection-read tool. It is distinguishable from siblings like timezest_scheduling_get (singular fetch), timezest_scheduling_cancel, and timezest_scheduling_create_request, though it does not explicitly name them. The verb+resource combination is sufficiently clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as timezest_scheduling_get for retrieving a single request or timezest_scheduling_create_request for creating one. No conditions, exclusions, or alternative selection criteria are mentioned. An agent must infer usage solely from the tool's name and the schema.

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

timezest_statusA

Show TimeZest connection status and the available tools

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It clearly implies a read-only status operation with no parameters and no side effects. It does not explicitly state 'no side effects', but the wording is sufficient for a no-argument status tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the primary purpose and includes no redundant or filler content. Every word earns its place.

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 zero-parameter status tool without an output schema, the description adequately conveys what the agent will learn: connection status and available tools. It does not detail the exact format of the response, but that is a minor gap for a simple introspection tool.

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?

There are no parameters, and the schema has full coverage with an empty object. The description adds no parameter details, but none are needed. The baseline for zero-parameter tools is 4.

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 uses a specific verb ('Show') and resource ('TimeZest connection status') and adds 'available tools', making it clear this is an introspection/meta tool. It is readily distinguishable from all sibling tools, which are domain operations.

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?

The context for use is implied: an agent would call this to check connectivity or discover what tooling is available. However, there is no explicit guidance about when to prefer this over siblings or whether it should be called before other operations.

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

timezest_teams_getA

Get details for a specific team by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdYesTeam ID

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavior. 'Get details' clearly indicates a read-only, non-destructive operation, which covers the main safety concern. However, it does not disclose error behavior for an invalid or missing team ID, permission requirements, or whether the response includes the full team object or a subset of fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence containing only essential information: the action, the resource, and the identifier. Every word contributes meaning, and there is no redundancy or 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?

This is a simple one-parameter, read-only getter with no output schema. The description is sufficient for an agent to select and invoke the tool correctly, but it omits details about the expected return structure (what 'details' means) and potential error conditions. These gaps are minor given the operation's low complexity.

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?

The schema already defines teamId as a required string with the description 'Team ID', giving 100% schema coverage. The description adds no additional meaning beyond echoing 'by ID', such as where to find the ID, format expectations, or relation to the ID returned by timezest_teams_list. Per baseline for high schema coverage, this is adequate.

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 clear verb ('Get'), a specific resource ('team'), and the distinguishing scope ('by ID'). It differentiates from the sibling timezest_teams_list, which presumably fetches all teams, by targeting a single team. The wording is unambiguous and actionable.

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?

The phrase 'by ID' implies this tool is for fetching one team when the ID is already known, while to enumerate teams the agent would use timezest_teams_list. However, this is only implied rather than explicitly stated; there is no direct guidance on when to prefer this tool over siblings or how to obtain a team ID.

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

timezest_teams_listB

List all teams available for scheduling

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoTQL filter string (e.g., "active:true")
pageSizeNoNumber of results per page (default: 50, max: 100)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses only that the tool lists teams; it does not mention pagination, filtering, or response structure. It is not misleading, but it is minimal and leaves behavioral traits undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, easily parsed sentence with no filler. It is appropriately front-loaded with the core action and resource. Nothing is redundant or oversized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter list operation with no output schema, the description is minimally adequate, but it does not explain the meaning of "available for scheduling" or how filter/pageSize affect results. It lacks behavioral details such as pagination and default limits, which an agent might need. The schema compensates for parameter details, so the overall context is sufficient but not rich.

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 100%, with both filter and pageSize already described in the input schema. The description adds no parameter-level detail beyond what the schema provides. This aligns with the baseline score of 3 for high schema coverage.

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: "List all teams available for scheduling." It clearly identifies a collection-returning operation and naturally differentiates from the sibling timezest_teams_get, which is a singular fetch. The phrase "available for scheduling" adds useful context about the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention timezest_teams_get or any other sibling, nor does it provide exclusions or conditions. The name implies a list operation, but the description gives no explicit usage context.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv3.0.0
    • Addedtimezest_agents_get
    • Addedtimezest_agents_list
    • Addedtimezest_appointment_types_get
    • Addedtimezest_appointment_types_list
    • Removedtimezest_navigate
    • Addedtimezest_resources_list
    • Addedtimezest_scheduling_cancel
    • Addedtimezest_scheduling_create_request
    • Addedtimezest_scheduling_get
    • Addedtimezest_scheduling_list
    • Addedtimezest_teams_get
    • Addedtimezest_teams_list
  2. 1 tool updatev1.2.6
    • Addedtimezest_navigate
  3. 1 tool updatev1.2.5
    • Removedtimezest_navigate
  4. 2 tool updatesv1.1.2
    • First observedtimezest_navigate
    • First observedtimezest_status

TDQS

B3.3/5.0

Scored across 12 tools

Disambiguation4/5

Most tools are clearly separated by resource and action, such as agents_list vs agents_get and scheduling_list vs scheduling_get. The only potential confusion is resources_list, which overlaps with agents_list and teams_list, though it is clearly described as an aggregate.

Naming Consistency4/5

All tools share the timezest_ prefix and mostly follow a resource_action pattern, e.g., agents_list, teams_get, scheduling_cancel. The exceptions are timezest_status, which doesn't follow the pattern, and scheduling_create_request, where the action is verbose rather than just create.

Tool Count5/5

Twelve tools is a reasonable, well-scoped count for a scheduling MCP server. Each resource area has list/get coverage and scheduling requests have create, list, get, and cancel operations.

Completeness4/5

The core scheduling workflow is covered: creating, listing, retrieving, and canceling requests, plus lookup of agents, teams, appointment types, and resources. Missing update/reschedule functionality is a minor gap, but agents can likely work around it by canceling and recreating.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers