Skip to main content
Glama

Log a time entry

goalslot_log_time

Log time spent on tasks in minutes, optionally crediting to a goal. Preview batches with dryRun before committing to avoid errors.

Instructions

WRITES. Records time the user already spent. This is the workhorse tool for catching up on untracked work. durationMinutes is in whole MINUTES: an hour and a half is 90. date is a calendar date in the user's timezone, taken from get_context.today, never guessed. When goalId is set this ALSO increases that goal's logged hours. That is usually what the user wants, but it means a wrong goalId quietly corrupts goal progress, so confirm the goal before logging. Never invent a duration. If the user did not say how long something took, ask. Restate the minutes back in hours when you confirm, so a units mistake is visible. Entries count against the per-day task limit on free plans. Use dryRun true to show a batch to the user before committing it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYesThe day the work happened. Calendar date as YYYY-MM-DD, for example 2026-08-25, interpreted in the user's timezone (get_context.timezone). Never include a time or a Z suffix. Use get_context.today rather than assuming what today is.
notesNoOptional detail about the session.
dryRunNoWhen true nothing is written. The tool validates the arguments and returns exactly what it would have done. Use this to show the user a plan before committing to it.
goalIdNoCredit the time to this goal. This increases the goal's loggedHours.
taskIdNoLink the entry to an existing task.
taskNameYesWhat the time was spent on, in the user's own words.
startedAtNoOptional ISO 8601 instant with an explicit offset or Z, for example 2026-08-25T09:00:00Z, recording when the work began. Its calendar date in the user's timezone must match the date field or the call is rejected with DATE_MISMATCH.
durationMinutesYesDuration in whole minutes. One hour thirty minutes is 90. Never send hours here and never send a decimal. Minimum 1.
scheduleBlockIdNoLink the entry to the weekly schedule block it belongs to, which is what makes schedule adherence reports work.
Behavior5/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false, but the description goes further, disclosing side effects: 'When goalId is set this ALSO increases that goal's logged hours... wrong goalId quietly corrupts goal progress.' It also reveals free-plan per-day limits and the dryRun validation behavior. No contradiction with annotations; the description adds substantial behavioral context beyond the structured data.

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 dense but well-structured, front-loading the purpose and then layering warnings and usage notes. It is perhaps longer than strictly necessary but every sentence adds critical operational detail (units, date sourcing, goal confirmation, dryRun). No filler; efficient for the complexity involved.

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

Completeness5/5

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

With 9 parameters and no output schema, the description covers all critical aspects: unit correctness, date handling, side effects, error prevention, and free-plan limits. It explains the dryRun mechanism for previewing batches. For a write tool, it anticipates the likely failure modes and equips the agent to handle them, making it complete for safe invocation.

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?

Schema coverage is 100%, so the baseline is 3. The description adds value by giving concrete examples ('an hour and a half is 90') and explicit prohibitions ('Never send hours here and never send a decimal'). It also reinforces date sourcing from get_context.today and the goal side-effect warning. These enrich parameter understanding beyond the schema definitions.

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 opens with 'WRITES.' and states 'Records time the user already spent,' specifying the exact verb and resource. It positions itself as 'the workhorse tool for catching up on untracked work,' clearly distinguishing it from sibling tools like start_timer or list_time_entries. The purpose is unmistakable and specific.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: it is for recording already-spent time, warns 'Never invent a duration' and to ask if the user didn't specify length, and instructs to use 'dryRun true to show a batch to the user before committing it.' It also advises confirming goalId before logging to avoid corrupting progress. This goes beyond implied context to actionable do/don't guidance.

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/ZeeshanAdilButt/goalslot-mcp'

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