Skip to main content
Glama

set_hydration

Log daily water consumption in milliliters. Specify date to track hydration accurately.

Instructions

Set daily hydration intake in milliliters

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format. Defaults to today
valueMlYesHydration value in milliliters

Implementation Reference

  • The tool handler function for 'set_hydration' - registers tool, calls client.setHydration, returns JSON response.
    server.registerTool(
      'set_hydration',
      {
        description: 'Set daily hydration intake in milliliters',
        inputSchema: setHydrationSchema.shape,
      },
      async ({ valueMl, date }) => {
        const data = await client.setHydration(valueMl, date);
        return {
          content: [{ type: 'text' as const, text: JSON.stringify(data, null, 2) }],
        };
      },
  • Input schema for set_hydration: requires valueMl (0-20000) and optional date (YYYY-MM-DD).
    export type SetHydrationDto = {
      date?: string;
      valueMl: number;
    };
    
    export const setHydrationSchema = z.object({
      date: dateString.optional().describe('Date in YYYY-MM-DD format. Defaults to today'),
      valueMl: z.number().min(0).max(20000).describe('Hydration value in milliliters'),
    });
  • Client method that sends PUT request to the hydration endpoint with calendarDate, valueInML, and timestampLocal.
    async setHydration(valueMl: number, date?: string): Promise<unknown> {
      const resolvedDate = date ?? todayString();
      return this.request(SET_HYDRATION_ENDPOINT, {
        method: 'PUT',
        body: {
          calendarDate: resolvedDate,
          valueInML: valueMl,
          timestampLocal: `${resolvedDate}T00:00:00.0`,
        },
      });
    }
  • Registration of the 'set_hydration' tool via server.registerTool with its schema and handler.
    server.registerTool(
      'set_hydration',
      {
        description: 'Set daily hydration intake in milliliters',
        inputSchema: setHydrationSchema.shape,
      },
      async ({ valueMl, date }) => {
        const data = await client.setHydration(valueMl, date);
        return {
          content: [{ type: 'text' as const, text: JSON.stringify(data, null, 2) }],
        };
      },
    );
  • API endpoint constant for the hydration log service.
    export const SET_HYDRATION_ENDPOINT = '/usersummary-service/usersummary/hydration/log';
Behavior2/5

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

With no annotations, the description carries the full burden. It only states 'set', implying a write operation, but does not disclose side effects (e.g., overwriting existing data), validation beyond schema, or response behavior. Minimal transparency.

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 sentence with no fluff, which is concise. However, given the simplicity, some could argue it is under-specified, but for conciseness it scores well.

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?

The tool has no output schema and no annotations. The description is minimal and does not explain what happens upon successful setting, error conditions, or the behavior of the optional date parameter. For a mutation tool, more context is needed.

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 baseline 3 is appropriate. The description adds no meaning beyond the schema; it repeats 'milliliters' which is already in the valueMl description.

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 action (set) and resource (daily hydration intake) with units (milliliters). It distinguishes from siblings like get_hydration. However, it doesn't explicitly mention the optional date parameter or the default behavior, leaving some ambiguity.

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 provided on when to use this tool versus alternatives (e.g., other set tools or get_hydration). There is no mention of prerequisites, conflicts, or typical 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/Nicolasvegam/garmin-connect-mcp'

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