Skip to main content
Glama

Mark time entries as billed

entry_mark_billed

Mark tracked hours as billed with an invoice number to prevent double billing and exclude them from future reports and invoice summaries.

Instructions

Close the loop after an invoice is issued: stamp the tracked hours that went on it with the invoice number, so report and invoice_summary stop offering them and the same hours are never billed twice.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNoISO date/time end of the billed period, used with project
idsNoExact entry ids, normally the entry_ids invoice_summary returned. Pass either ids or project plus from and to. Entries already billed are left alone and listed back to you.
fromNoISO date/time start of the billed period, used with project
projectNoProject or client, used with from and to instead of ids; every billable entry in that range is stamped.
billed_atNoISO timestamp of the stamp, defaults to now
invoice_numberYesThe invoice these hours were put on, e.g. INV-2026-0001

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.20.0

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose the main behaviors: entries get stamped, reports and invoice_summary stop offering them, and double-billing is prevented. The ids parameter description adds that already-billed entries are left alone and listed back, which is useful idempotency behavior. It does not detail reversibility or permissions, but the core mutable effect is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one tight sentence that front-loads the purpose and consequence. Every clause earns its place, with no repetition of the title or filler.

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

Completeness4/5

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

For a mutation tool with no output schema and no annotations, it covers what it does, when to run it, why it exists, and how to select entries. Minor gaps are an explicit statement of what is returned for successfully billed entries and whether the change can be undone, but the tool is callable with the information provided.

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 descriptions already cover parameters, so the baseline is 3. The description adds meaningful selection semantics: 'Pass either ids or project plus from and to' plus the typical source 'entry_ids invoice_summary returned'. This clarifies the two mutually exclusive calling modes and helps an agent avoid passing conflicting parameters.

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 uses a concrete verb and object ('stamp the tracked hours ... with the invoice number') and explains the business purpose ('so report and invoice_summary stop offering them and the same hours are never billed twice'). This clearly differentiates it from siblings like invoice_mark_paid, which marks an invoice paid rather than the underlying time entries.

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?

It gives an explicit trigger condition ('after an invoice is issued') and references invoice_summary as the source of entry ids, making the workflow placement clear. It does not enumerate exclusions or alternatives, but an agent can infer when this tool is the right step.

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