Skip to main content
Glama
jais2402
by jais2402

Log many time records in one call

everhour_log_time_batch

Log up to 60 time records in a single call, each for a specific task and date. Reports per-row success or failure, with duration rounding and comment validation.

Instructions

Log a batch of time records in a single call — one entry per (task, date). Built for the log-everhour daily/weekly/monthly workflow: pass already-resolved task IDs and already-rephrased comments.

Each entry is logged sequentially. A single row failing (404 not synced, 409 already exists, etc.) does NOT abort the batch unless stop_on_error is true — failures are reported per row.

Durations are normalized to increment_hours (default 30 min). Comments are checked against absolute rules; a forbidden word or empty comment rejects that row unless allow_rule_violations is true.

Args:

  • entries (array, 1-60): { task_id: 'as:' | native, duration: { hours } | { seconds }, date: 'YYYY-MM-DD', comment: string }

  • increment_hours (number, optional): rounding grid, default 0.5

  • stop_on_error (boolean, optional): default false

  • allow_rule_violations (boolean, optional): default false

  • user_id (number, optional): defaults to caller

  • response_format ('markdown' | 'json')

Returns: { "results": [{ "ok": boolean, "task_id": string, "date": string, "hours": number, "rounded"?: boolean, "warnings"?: string[], "record_id"?: number, "error"?: string }], "summary": { "logged": number, "failed": number, "totalHours": number } }

Examples:

  • Log a full day: entries=[{ task_id:'as:1208...', duration:{hours:3}, date:'2026-06-12', comment:'Reviewed and submitted changes for review.' }, ...]

Error Handling:

  • Per-row 404 → that Asana task is not synced; other rows still log.

  • Per-row 409 → a record already exists for that user/date; fix with everhour_update_time_record.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
entriesYesResolved, rephrased entries to log. The log-everhour skill prepares these (tickets already resolved to Everhour IDs, comments already rephrased).
user_idNoEverhour user ID to log for. Defaults to the authenticated user.
stop_on_errorNoIf true, stop at the first failing row. Default false: log every reachable row and report failures.
increment_hoursNoDuration rounding grid in hours. 0.5 = 30 min (default). 0.25 = 15 min, consultant special cases only.
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown
allow_rule_violationsNoIf false (default), rows whose comment breaks a hard rule (forbidden word / empty) are rejected instead of logged.
Behavior5/5

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

Disclosures beyond annotations: sequential logging, no batch abort unless stop_on_error, duration rounding, comment rule checking, per-row error types (404, 409) with suggested fixes. Annotations only provide openWorldHint=true, so description adds critical behavioral context.

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?

Well-structured: front-loaded with purpose, then behavior, args, returns, examples, errors. Every sentence earns its place, though slightly verbose in parts. Could be tighter but overall efficient.

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?

Covers all aspects: purpose, prerequisites, behavior, complete parameter details, return format, examples, error handling. No gaps despite missing output schema and complex nested parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage, description adds meaning: explains entries structure, rounding grid (increment_hours), rule checking (allow_rule_violations), user_id default, response_format enum meaning, and return structure in detail with examples.

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?

Description clearly states 'Log a batch of time records in a single call — one entry per (task, date)'. Distinguishes from siblings (everhour_log_time, everhour_log_time_for_asana_task) by emphasizing batch processing and the specific workflow it supports.

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

Usage Guidelines4/5

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

Provides strong guidance: 'Built for the log-everhour daily/weekly/monthly workflow', implying use after preparation. Describes sequential logging and per-row failure handling, guiding away from transactional all-or-nothing needs. Does not explicitly exclude single-entry tools but implies them.

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/jais2402/ever-hour-mcp-for-jais'

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