Skip to main content
Glama
AbbottDevelopments

Shopmonkey MCP Server

list_timeclock

Track and manage technician clock-in/clock-out events for shop staff. Filter by user, location, date range, and paginate results to monitor work hours.

Instructions

List technician time clock events. Track clock-in/clock-out for shop staff.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
userIdNoFilter by user/technician ID
locationIdNoFilter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set.
startDateNoFilter by start date (ISO 8601 format)
endDateNoFilter by end date (ISO 8601 format)
limitNoMaximum number of results to return (default: 25)
pageNoPage number for pagination (default: 1)

Implementation Reference

  • The handler implementation for the list_timeclock tool.
    async list_timeclock(args) {
      const params: Record<string, string> = {};
      if (args.userId !== undefined) params.userId = String(args.userId);
      if (args.locationId !== undefined) params.locationId = String(args.locationId);
      if (args.startDate !== undefined) params.startDate = String(args.startDate);
      if (args.endDate !== undefined) params.endDate = String(args.endDate);
      if (args.limit !== undefined) params.limit = String(args.limit);
      if (args.page !== undefined) params.page = String(args.page);
      applyDefaultLocation(params);
    
      const data = await shopmonkeyRequest<TimeclockEntry[]>('GET', '/timeclock', undefined, params);
      return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
    },
  • The tool definition and schema for list_timeclock.
    {
      name: 'list_timeclock',
      description: 'List technician time clock events. Track clock-in/clock-out for shop staff.',
      inputSchema: {
        type: 'object' as const,
        properties: {
          userId: { type: 'string', description: 'Filter by user/technician ID' },
          locationId: { type: 'string', description: 'Filter by location ID. Defaults to SHOPMONKEY_LOCATION_ID env var if set.' },
          startDate: { type: 'string', description: 'Filter by start date (ISO 8601 format)' },
          endDate: { type: 'string', description: 'Filter by end date (ISO 8601 format)' },
          limit: { type: 'number', description: 'Maximum number of results to return (default: 25)' },
          page: { type: 'number', description: 'Page number for pagination (default: 1)' },
        },
      },
    },
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 explains what time clock events represent (clock-in/clock-out) but fails to disclose read-only safety, pagination behavior details, or what the response structure looks like (critical given no output schema exists).

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?

Two sentences with zero waste. The first sentence establishes the action and resource; the second provides domain context. Appropriately front-loaded and sized for the tool's complexity.

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?

Adequate for a filtered list operation with 100% schema coverage, but gaps remain due to the lack of output schema and annotations. The description should ideally specify what data is returned (e.g., timestamps, event types) to compensate for the missing structured output definition.

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%, establishing a baseline of 3. The description adds semantic context by mentioning 'technician' and 'shop staff,' which helps clarify the expected values for the userId parameter, but does not elaborate on date format specifics or pagination usage beyond the schema definitions.

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 the specific verb 'List' with the resource 'technician time clock events' and clarifies the domain as 'clock-in/clock-out for shop staff.' It implies differentiation from generic user listing tools (like list_users) by focusing on time-tracking events, though it does not explicitly contrast with siblings like list_labor.

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 provided on when to use this tool versus alternatives such as list_labor or get_user. It does not mention prerequisites (e.g., needing a valid locationId) or suggest which filters are most effective for common use cases.

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/AbbottDevelopments/shopmonkey-mcp-server'

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