Skip to main content
Glama

update-team-holiday

Update an existing team holiday in float.com by specifying the holiday ID and modifying fields such as name, dates, type, recurrence, or notes.

Instructions

Update an existing team holiday

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
holiday_idYesThe team holiday ID (holiday_id)
nameNoHoliday name
descriptionNoHoliday description
start_dateNoHoliday start date (YYYY-MM-DD)
end_dateNoHoliday end date (YYYY-MM-DD)
holiday_typeNoHoliday type (0=full day, 1=partial day)
department_idNoDepartment ID for department-specific holiday
region_idNoRegion ID for region-specific holiday
recurringNoRecurring status (0=one-time, 1=recurring)
recurrence_patternNoRecurrence pattern for recurring holidays
activeNoActive status (0=inactive, 1=active)
notesNoAdditional notes
colorNoHex color code for calendar display
all_dayNoAll day status (0=not all day, 1=all day)
timezoneNoTimezone for the holiday

Implementation Reference

  • Handler function for the update-team-holiday tool. Uses createTool wrapper with Zod input schema (requires holiday_id, optional fields for update). Extracts holiday_id and sends a PATCH request to /team-holidays/{holiday_id} via floatApi.patch(), validated with teamHolidaySchema.
    // Update team holiday
    export const updateTeamHoliday = createTool(
      'update-team-holiday',
      'Update an existing team holiday',
      z.object({
        holiday_id: z.union([z.string(), z.number()]).describe('The team holiday ID (holiday_id)'),
        name: z.string().optional().describe('Holiday name'),
        description: z.string().optional().describe('Holiday description'),
        start_date: z.string().optional().describe('Holiday start date (YYYY-MM-DD)'),
        end_date: z.string().optional().describe('Holiday end date (YYYY-MM-DD)'),
        holiday_type: z.number().optional().describe('Holiday type (0=full day, 1=partial day)'),
        department_id: z.number().optional().describe('Department ID for department-specific holiday'),
        region_id: z.number().optional().describe('Region ID for region-specific holiday'),
        recurring: z.number().optional().describe('Recurring status (0=one-time, 1=recurring)'),
        recurrence_pattern: z.string().optional().describe('Recurrence pattern for recurring holidays'),
        active: z.number().optional().describe('Active status (0=inactive, 1=active)'),
        notes: z.string().optional().describe('Additional notes'),
        color: z.string().optional().describe('Hex color code for calendar display'),
        all_day: z.number().optional().describe('All day status (0=not all day, 1=all day)'),
        timezone: z.string().optional().describe('Timezone for the holiday'),
      }),
      async (params) => {
        const { holiday_id, ...updateData } = params;
        const holiday = await floatApi.patch(
          `/team-holidays/${holiday_id}`,
          updateData,
          teamHolidaySchema
        );
        return holiday;
      }
    );
  • Zod schema for team holiday response validation. Includes all possible fields returned from the Float API for team holidays.
    export const teamHolidaySchema = z.object({
      holiday_id: z.number().optional(), // Float API uses holiday_id
      name: z.string(),
      description: z.string().nullable().optional(),
      start_date: z.string(), // ISO date format (YYYY-MM-DD)
      end_date: z.string(), // ISO date format (YYYY-MM-DD)
      holiday_type: z.number().nullable().optional(), // 0 = full day, 1 = partial day
      department_id: z.number().nullable().optional(), // Department-specific holiday
      region_id: z.number().nullable().optional(), // Region-specific holiday
      recurring: z.number().nullable().optional(), // 0 = one-time, 1 = recurring
      recurrence_pattern: z.string().nullable().optional(), // For recurring holidays
      active: z.number().nullable().optional(), // 0 = inactive, 1 = active
      created: z.string().nullable().optional(), // Float API uses 'created', not 'created_at'
      modified: z.string().nullable().optional(), // Float API uses 'modified', not 'updated_at'
      created_by: z.number().nullable().optional(), // User ID who created the holiday
      notes: z.string().nullable().optional(),
      color: z.string().nullable().optional(), // Hex color code for calendar display
      all_day: z.number().nullable().optional(), // 0 = not all day, 1 = all day
      timezone: z.string().nullable().optional(), // Timezone for the holiday
    });
  • Tool registered in the legacyTools array for backward compatibility. Exported and included in both 'tools' and 'allTools' arrays.
    updateTeamHoliday,
    deleteTeamHoliday,
  • Import of updateTeamHoliday from the team-holidays module in the central tools index.
    import {
      listTeamHolidays,
      getTeamHoliday,
      createTeamHoliday,
      updateTeamHoliday,
      deleteTeamHoliday,
      listTeamHolidaysByDepartment,
      listTeamHolidaysByDateRange,
      listRecurringTeamHolidays,
      getUpcomingTeamHolidays,
    } from './time-management/team-holidays.js';
  • The FloatApi.patch() method used by the update-team-holiday handler to make the actual HTTP PATCH request to the Float API.
    async patch<T>(
      url: string,
      data: unknown,
      schema?: z.ZodType<T>,
      format: ResponseFormat = 'json'
    ): Promise<T> {
      return this.handleRateLimitRetry(() => this.makeRequest<T>('PATCH', url, data, schema, format));
    }
Behavior2/5

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

No annotations provided, and description does not disclose behaviors such as whether update is partial or full, error handling for missing holiday_id, idempotency, or return value. Only the fact that it mutates is implied.

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?

Description is a concise single sentence with no waste. Could be slightly improved by adding 'Only provided fields are updated' without significant length increase, but current version is efficient.

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 15 parameters, no output schema, and no annotations, the description leaves gaps about return values, partial update behavior, and error conditions. More detail is warranted for a mutation tool of this 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?

Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema; it does not clarify that all parameters except holiday_id are optional or provide constraints like date ordering.

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?

Description clearly states verb 'Update' and resource 'team holiday', distinguishing it from create, delete, and list siblings. However, it lacks nuance about partial updates or that only provided fields are modified.

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 use this tool versus siblings like create-team-holiday or update-public-holiday. No prerequisites or exclusions mentioned; usage is only implicitly clear.

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/asachs01/float-mcp'

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