Skip to main content
Glama

Create timesheet entry

kiwihr_create_timesheet_entry

WRITE: add a time entry to the timesheet of one employee on one day (user_id omitted = the admin user the key acts as). type MANUAL = worked time (give start_at and end_at as HH:mm:ss, or a part_of_day), BREAK = a break. Optional project and note. Creates a new entry each call (not idempotent). Returns the updated day. GraphQL mutation createTimesheetEntry.

Input Schema

NameRequiredDescriptionDefault
dateYesDay (YYYY-MM-DD).
noteNoNote for the entry.
typeYesMANUAL = worked time, BREAK = break.
end_atNoEnd time HH:mm:ss.
user_idNoEmployee id. Omit for the admin user the API key acts as.
start_atNoStart time HH:mm:ss.
project_idNoProject id (from kiwihr_list_projects).
part_of_dayNoFor day-based tracking instead of start/end.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=false, destructive=false, so the bar is lower; the description reinforces non-idempotency with the concrete consequence that duplicate calls create duplicate entries. It also discloses the return ('updated day') and that project_id comes from kiwihr_list_projects, though it does not cover auth/permission requirements.

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?

Front-loaded with 'WRITE:' and packs scope, type semantics, defaults, idempotency and return into a few dense lines. Slightly compact to the point of being terse, but no sentence is filler.

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?

For an 8-parameter mutation with no output schema, the description covers the write nature, the enum branches, the optional fields, the non-idempotent consequence, and what the call returns. An agent has what it needs to invoke correctly.

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 baseline would be 3. The description goes beyond the schema by explaining the cross-parameter relationship: MANUAL requires start_at/end_at as HH:mm:ss or a part_of_day, while BREAK is a break, and it repeats the user_id omission default in context.

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?

States a specific verb and resource ('add a time entry to the timesheet of one employee on one day') plus the WRITE marker and the underlying GraphQL mutation name. It distinguishes itself from kiwihr_update_timesheet_entry and kiwihr_delete_timesheet_entry by noting it 'Creates a new entry each call'.

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?

Gives explicit conditional guidance: type MANUAL vs BREAK, start_at/end_at vs part_of_day, and that an omitted user_id targets the admin user the key acts as. It never names the update or delete siblings as the alternative path for modifying an existing entry, so it stops short of full when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.