Skip to main content
Glama

Server Details

Freelancer time tracking for AI assistants: log time, timers, timesheets, sign-off links, invoices.

Ownership verified
Status
Healthy
Uptime
77.5% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
Zontak-LLC/usehourly
GitHub Stars
0
Server Listing
UseHourly
ChatGPT
–
Claude
–

TDQS

A3.5/5.0

Scored across 32 tools

Disambiguation4/5

Most tools have clearly distinct purposes, especially around clients, projects, invoices, and timers. There is some overlap among reporting tools (list_entries, get_timesheet, project_totals, annual_report) and time-writing tools (log_time, log_time_on_days, set_day_totals), but the descriptions generally clarify the boundaries.

Naming Consistency4/5

The set is overwhelmingly consistent snake_case with verb_noun names, such as create_invoice, list_projects, and update_entry. Minor deviations are the noun-like report tools and whoami, but the overall pattern is predictable.

Tool Count2/5

At 32 tools, the server is heavy for the surface area and includes several convenience or narrowly scoped operations. While the domain is broad, this exceeds a well-scoped set and increases selection burden for an agent.

Completeness4/5

Core workflows are well covered: clients and projects can be managed, time can be logged and edited, invoices can be issued and paid, timers are handled, and reporting/sharing exists. There are minor gaps such as no unarchive_client and no direct invoice update, but most workarounds are plausible.

Available Tools

32 tools
annual_reportYear summary for taxesA
Read-onlyIdempotent
Inspect

One calendar year: hours and earnings by quarter, month, client and project, plus invoices issued and paid (cash and accrual views).

NameRequiredDescriptionDefault
yearYesCalendar year, e.g. 2026

Output Schema

NameRequiredDescription
yearYes
monthsYes
totalsYes
clientsYes
invoicesYesInvoices issued in the year (accrual view)
projectsYes
quartersYes
receivedYesPayments received in the year (cash view)
outstandingYesIssued this year and still unpaid at year end

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely useful behavioral content beyond that: the report is produced in both cash and accrual views and covers both hours/earnings and invoice issuance/payment status, which tells the agent what the call will and won't include.

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?

It is a single front-loaded sentence with no filler, and the breakdown dimensions are listed compactly. The colon-fragment style is dense but readable; nothing needs to be cut.

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?

With one required parameter, an output schema to describe the return shape, and annotations covering the safety profile, the description only needs to convey scope — which it does (dimensions, both accounting bases). The lack of explicit routing guidance against sibling aggregation tools is the only real gap.

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?

There is a single parameter and schema description coverage is 100%, with the schema already giving the calendar-year meaning, the 2000-2100 range and an example. The description adds no additional semantics for 'year' beyond what the schema supplies, so the baseline 3 applies.

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 names the resource (one calendar year) and enumerates exactly what it reports: hours and earnings broken down by quarter, month, client and project, plus invoice status. That is specific enough to distinguish it from aggregate siblings like project_totals, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

Usage is only implied by the title 'Year summary for taxes' and the annual scope of the description; there is no statement of when to choose this over project_totals or list_entries, and no exclusions or prerequisites. An agent can infer the tax/annual-reporting context but must guess the boundary against sibling aggregation tools.

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

archive_clientArchive a clientA
Idempotent
Inspect

Hide a client from the lists. Its time and invoices are kept.

NameRequiredDescriptionDefault
clientYesClient id or exact client name

Output Schema

NameRequiredDescription
okYes
archivedYesThe client's name

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already state readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is partly covered. The description adds genuinely new behavioral context: related time entries and invoices are retained, which tells the agent this is a reversible-looking soft-hide rather than a cascade delete.

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?

Two short sentences with zero filler; the visibility effect is front-loaded and the data-retention caveat follows immediately. Nothing is wasted.

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?

With an output schema present and annotations covering safety, the description only needs to convey scope and side effects, which it does. The one gap is that it never says whether the archive can be undone, and no unarchive_client sibling exists to fall back on.

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 description coverage is 100% and the single 'client' parameter is documented there as an id or exact client name. The description adds no extra parameter meaning, so the baseline of 3 applies.

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 gives a concrete verb ('Hide') and resource ('a client'), plus the effect on visibility ('from the lists'). It implicitly distinguishes archiving from deletion by stating data is preserved, though it never names a sibling such as delete_entry or archive_project.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is the right call when a client should be removed from view without losing data. There is no explicit when-to-use, no when-not-to-use, and no mention of how this differs from update_client or whether it can be reversed.

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

archive_projectArchive a projectA
Idempotent
Inspect

Hide a project from the lists. Its time and invoices are kept.

NameRequiredDescriptionDefault
projectYesProject id, or "Client / Project" (just the project name works when it is unique)

Output Schema

NameRequiredDescription
okYes
archivedYes"Client / Project"

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare idempotentHint=true and destructiveHint=false, and the description reinforces this by stating that time and invoices are kept, telling the agent what is NOT lost. It still does not state that the action is reversible via unarchive_project, but the retention detail is genuine value beyond the annotations.

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?

Two short sentences with no filler; the core effect (hiding from lists) is front-loaded and the retention guarantee follows immediately.

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?

With an output schema present and annotations covering safety and idempotency, the description only needs to convey the semantic effect, which it does. Mentioning reversibility (unarchive_project) would fully close the loop.

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?

Only one parameter, and schema description coverage is 100% — the schema already documents that it accepts a project id or a "Client / Project" string. The description adds nothing about parameter format, so the baseline 3 applies.

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?

States a specific verb (hide/archive) and resource (project), and clarifies the non-destructive nature by noting time and invoices are kept. It does not name the sibling unarchive_project, which would make the archive/reverse pairing explicit, but the operation is unambiguous.

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

Usage Guidelines3/5

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

Usage is implied: use this to hide a project from lists while retaining its data, which implicitly contrasts with deletion. There is no explicit when-to-use statement, no mention of the unarchive_project counterpart, and no prerequisites or exclusions.

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

create_clientCreate a clientCInspect

Add a client. Names are unique per account.

NameRequiredDescriptionDefault
nameYesThe client's name (unique per account, max 80 characters)
colorNoHex colour such as #6366f1

Output Schema

NameRequiredDescription
clientYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the write/repeat-safety profile is covered structurally. The only behavioral claim in the description (names unique per account) largely restates the 'name' schema field description, adding little beyond structured data, and it doesn't explain what happens on a duplicate (error vs upsert) or what the response returns.

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?

Two short sentences, front-loaded with the core action and no filler. It is appropriately sized, though the second sentence's uniqueness note is redundant with the schema.

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

Completeness3/5

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

With annotations covering the write/safety profile and an output schema present, the description needn't explain return values. However, for a creation tool it omits useful context such as the duplicate-name failure mode, whether 'color' is optional at creation, and any prerequisite permissions, leaving it only minimally adequate.

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 description coverage is 100%, so both the 'name' (uniqueness, max 80) and 'color' (hex format) semantics are already fully documented in the schema. The description adds no parameter detail beyond that, so the baseline of 3 is appropriate.

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?

States a specific verb and resource ('Add a client'), which clearly distinguishes it from read-oriented siblings like get_client and list_clients. It does not, however, differentiate itself from the other creation/mutation siblings such as create_project or create_invoice, so sibling routing is only implied.

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?

There is no guidance on when to use this tool versus create_project, update_client, or the other client-management siblings. The uniqueness note reads as a constraint rather than a usage condition, so the agent gets no explicit context or exclusions.

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

create_invoiceCreate an invoiceAInspect

Issue an invoice for a client from billable time between two dates. Totals are computed on the server from the logged entries (one line per project). Time already on another invoice is left out, so the same hours are never billed twice. The number defaults to the next free INV--NNN. This creates a permanent record; confirm the client, period and dates with the user first.

NameRequiredDescriptionDefault
toYesLast day of the billed period
fromYesFirst day of the billed period
notesNoNotes printed on the invoice (max 1,000 characters)
clientYesClient id or exact client name
numberNoInvoice number; defaults to the next INV-<year>-NNN
due_dateNoPayment due date, YYYY-MM-DD, or null for none
issue_dateYesThe invoice date, YYYY-MM-DD
compact_notesNoShorten entry descriptions to about 100 characters
include_detailNoPrint each entry under the lines

Output Schema

NameRequiredDescription
idYes
hoursYes
linesYesOne line per project
totalYesDollars
clientYes
numberYes
periodYes"YYYY-MM-DD to YYYY-MM-DD"

TDQS

A4.4/5.0
Behavior5/5

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

Adds behavior annotations cannot express: totals are computed server-side, entries already invoiced are silently excluded so hours are not double-billed, numbering auto-assigns INV-<year>-NNN, and the record is permanent. The dedupe rule in particular is non-obvious and changes how an agent should construct the call.

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?

Four sentences, front-loaded with what is billed, then the computation/ dedupe rule, then the numbering default, then the confirmation warning. No filler and no repetition of schema text.

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?

An output schema exists so return values need no explanation, and annotations declare the write profile; the description covers the non-obvious generation logic well. It leaves open the failure case (no billable entries in the range) and whether the invoice is issued as draft or final, which matter for a permanent record.

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 description coverage is 100%, so the schema already documents all nine parameters and the description correctly does not restate them at length. It adds only that `number` defaults to next free INV-<year>-NNN (already in the schema) and says nothing about compact_notes, include_detail, or due_date behavior. Baseline 3 applies.

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 and, crucially, the data source: an invoice built from billable time between two dates, with one line per project. That distinguishes it from get_invoice, list_invoices, and next_invoice_number without needing the schemas.

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 a concrete pre-flight instruction ('confirm the client, period and dates with the user first'), which is exactly the guidance needed before a non-idempotent write. It does not point at alternatives (e.g. next_invoice_number or list_entries to preview billables) or state what to do if no unbilled time exists, so it stops short of explicit when/when-not routing.

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

create_projectCreate a projectBInspect

Add a project under a client, with an hourly rate in the client's currency (its own, else the account's) and whether it is billable.

NameRequiredDescriptionDefault
nameYesThe project's name (max 80 characters)
clientYesClient id or exact client name
billableNoWhether the time goes on invoices (default true)
hourly_rateNoAmount per hour in the client's currency (its own, else the account's), e.g. 85 or 62.5 (default 0)

Output Schema

NameRequiredDescription
projectYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the mutation profile is covered structurally. The description adds genuine value with the currency-resolution rule, but it omits any warning that repeated calls create duplicate projects (non-idempotent) or that a client must pre-exist.

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?

A single compact sentence that front-loads the verb and parent relationship. The nested parenthetical about currency is slightly dense but every clause carries information.

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

Completeness3/5

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

Because an output schema exists, return values need no explanation, and all four parameters are documented. What is missing is failure behavior for a non-idempotent create: duplicate names, unknown client ids, or validation limits are left unaddressed.

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 description coverage is 100% and every parameter is documented in-schema, including the same currency fallback rule the description repeats. The description therefore adds no meaning beyond the structured fields, making the baseline 3 appropriate.

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?

States a specific verb and resource ('Add a project') plus its parent relationship ('under a client') and the key attributes set at creation. It is clearly distinguishable from create_client and create_invoice, though it never names those siblings to reinforce the distinction.

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 on when to use this versus update_project or archive_project, and no stated prerequisites (e.g. the client must already exist via create_client). The agent must infer the workflow from the sibling list alone.

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

delete_entryDelete an entryA
Destructive
Inspect

Permanently delete one time entry. Confirm with the user before calling this.

NameRequiredDescriptionDefault
idYesThe entry id (from list_entries)

Output Schema

NameRequiredDescription
okYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds value beyond those flags by emphasizing permanence ('Permanently') and requiring user confirmation before invocation, which is not captured by the annotations.

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?

Two short sentences with no filler. The destructive action is front-loaded, and the safety instruction follows immediately, making the description efficient and easy to act on.

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?

Given the rich annotations, full schema coverage, and existence of an output schema, the description covers what is needed to call the tool safely. It could mention whether deleting an entry affects related totals or invoices, but the core destructive context is present.

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 description coverage is 100%, and the single id parameter is fully documented in the schema as coming from list_entries. The description adds no additional parameter meaning, so the baseline of 3 is appropriate.

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 states a specific verb and resource: 'Permanently delete one time entry.' It distinguishes this tool from the sibling delete_invoice by scoping to a single time entry, so an agent can identify the correct deletion tool without inspecting schemas.

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 a clear prerequisite for a destructive operation: 'Confirm with the user before calling this.' It does not name alternatives like update_entry, but no sibling offers an archive or soft-delete for entries, so the lack of explicit alternatives is minor.

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

delete_invoiceDelete an invoiceA
Destructive
Inspect

Permanently delete an invoice record. The time entries stay. Confirm with the user before calling this.

NameRequiredDescriptionDefault
invoiceYesInvoice id or invoice number, e.g. INV-2026-004

Output Schema

NameRequiredDescription
okYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds genuinely new behavioral context: the deletion is permanent/irreversible and the associated time entries are NOT cascaded away. It also mandates user confirmation. It stops short of stating permission requirements or exactly what else references the invoice.

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?

Three short sentences, no filler, with the destructive/permanent nature and cascade behavior front-loaded ahead of the confirmation instruction. Every sentence earns its place.

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 a one-parameter destructive tool with an output schema and full annotation coverage, the description supplies exactly the additional facts an agent needs: irreversibility, non-cascading of time entries, and a confirmation requirement.

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 description coverage is 100% and the single parameter is fully documented in the schema with a format example (INV-2026-004), so the description adds no parameter meaning beyond it. Baseline 3 is correct when the schema does all the lifting.

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+resource ('Permanently delete an invoice record') and immediately clarifies scope by saying the time entries stay, which separates it from the sibling delete_entry that removes time data. An agent can distinguish it from delete_entry without opening either schema.

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 an explicit precondition for invocation ('Confirm with the user before calling this'), which is the key usage constraint for a destructive tool. It does not name an alternative action (e.g., marking paid or voiding) that would avoid deletion, so it falls short of full when-not guidance.

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

get_clientGet client billing detailsA
Read-onlyIdempotent
Inspect

One client's billing details: full legal name and address as printed on invoices, and how often the client is invoiced (invoice_schedule: null = whenever the freelancer chooses).

NameRequiredDescriptionDefault
clientYesClient id or exact client name

Output Schema

NameRequiredDescription
idYes
nameYes
addressYes
currencyYesThe currency this client's rates and invoices are in
has_logoYes
legal_nameYes
invoice_scheduleYesHow often this client is invoiced; null = whenever the freelancer chooses

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real semantic context beyond that: what the payload contains and the non-obvious null semantics for invoice_schedule (null = freelancer chooses cadence), which an agent cannot infer from the schema.

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?

One compact sentence with zero filler; the resource is front-loaded and the clarifying parenthetical about invoice_schedule is the only elaboration, and it earns its place by removing ambiguity.

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 trivial single-record read with an output schema, annotations, and fully documented parameters, the description is essentially complete. The one gap is behavior on a missing/unknown client, which an agent would want to know before calling.

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 description coverage is 100% and there is a single required parameter ('client': id or exact client name), which the schema documents fully. The description adds nothing about how to form that argument, so the baseline of 3 applies.

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?

Clearly conveys that this retrieves billing details for a single client, listing the concrete fields returned (legal name, address, invoice schedule). It reads as a noun phrase rather than a verb+resource statement and never names the near siblings (list_clients, update_client, get_invoice) it must be distinguished from, so it stops short of a 5.

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

Usage Guidelines3/5

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

The singular-client scope implies when to use it (you know which client you want) versus list_clients, but there is no explicit when-to-use statement, no stated alternative, and no mention of what happens if the client is not found. Usage is inferred rather than guided.

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

get_invoiceGet an invoiceA
Read-onlyIdempotent
Inspect

The frozen invoice as issued: seller, client, lines per project and totals. Set include_detail for the per-entry breakdown. Logos are left out.

NameRequiredDescriptionDefault
invoiceYesInvoice id or invoice number, e.g. INV-2026-004
include_detailNoInclude the per-entry breakdown under the lines

Output Schema

NameRequiredDescription
idYes
snapshotYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely new behavior: the invoice is a frozen snapshot 'as issued' rather than a recomputation, and logos are deliberately omitted from the result.

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?

Three economical sentences, front-loaded with what the resource is and what it contains, then the one optional flag, then a deliberate omission. No 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?

An output schema exists so return values need no explanation, and the description covers content and the detail flag. Minor gap: no mention of error behavior for an unknown/nonexistent invoice id.

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, but the description adds meaning by describing the output shape in each parameter state: default returns lines per project and totals, while include_detail expands to a per-entry breakdown.

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+resource implicitly (retrieving the frozen invoice) and enumerates its content (seller, client, lines per project, totals). This clearly separates it from list_invoices, create_invoice, and mark_invoice_paid in the sibling set.

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

Usage Guidelines3/5

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

Usage is implied: fetch one already-issued invoice by id. There is no explicit when-to-use vs. list_invoices (to find an id) or create_invoice, and no note about whether drafts or unpaid invoices can be retrieved.

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

get_running_timerRunning timerA
Read-onlyIdempotent
Inspect

The timer that is running now, with elapsed minutes, or null when none is running.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
runningYesThe running timer, or null

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the null-when-idle contract, which is genuinely useful behavioral context, but it discloses nothing further (no cost, no scope, no freshness). The null case is also arguably part of the return contract covered by the output schema.

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?

A single front-loaded sentence with no filler. The most decision-relevant fact (what is returned) leads, and the edge case (null) closes it.

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 a zero-parameter, read-only singleton lookup with a declared output schema, the description covers everything an agent needs: what it fetches, what it includes, and what happens when there is nothing to fetch.

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?

The tool takes zero parameters, so there is nothing to document and the schema/description cannot conflict. Baseline of 4 applies; the description neither needs to nor attempts to explain inputs.

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 names a specific resource ('the timer that is running now') and its payload ('elapsed minutes'), so an agent knows exactly what this returns. It does not explicitly contrast itself with siblings like start_timer or stop_timer, but the verb/resource combination is unambiguous enough that confusion is unlikely.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is the read used to check whether a timer is active before starting/stopping one. There is no explicit when-to-use statement, no mention of alternatives, and no prerequisites or side conditions called out.

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

get_timesheetGet a timesheetA
Read-onlyIdempotent
Inspect

The timesheet for a date range as a grid: one row per project, hours per day, totals per project and per day, and the weekdays with nothing logged. Optionally for one client or one project. Use this to 'show me my timesheet for last week' or to check a sheet before sharing it. Days marked non-billable still count here.

NameRequiredDescriptionDefault
toYesLast day to include (inclusive), YYYY-MM-DD
fromYesFirst day to include, YYYY-MM-DD
clientNoOnly this client: id or exact name
projectNoOnly this project: id or "Client / Project"

Output Schema

NameRequiredDescription
toYes
daysYesThe dates that have time logged, oldest first
fromYes
rowsYes
scopeYesThe client or project the sheet is for, or All clients
day_totalsYesHours per date across the rows
total_hoursYes
weekdays_without_timeYesMonday to Friday dates in the range with nothing logged

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds useful behavioral detail beyond annotations: the output is a project-by-day grid with totals and includes weekdays with nothing logged, and non-billable days still count. It does not describe pagination or auth, but the added shape context is substantive.

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 front-loaded with the return shape and then gives usage context. Every sentence carries useful information, and the dense enumeration of grid contents is appropriate for a tool whose value depends on knowing what the grid includes.

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?

With annotations covering safety traits and an output schema present, the description does not need to explain return values in full. It covers date-range scope, optional client/project filtering, grid contents, and inclusion of non-billable days. Minor omissions such as timezone or maximum range handling keep it from being fully complete, but it is sufficient for correct invocation.

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 description coverage is 100%, and the schema already explains from/to as inclusive YYYY-MM-DD and client/project as id or name. The description confirms that client and project are optional filters for one client or one project, but adds little syntax or constraint detail beyond the schema, so the baseline of 3 applies.

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 states a specific verb and resource — retrieving a timesheet for a date range — and details the returned shape: one row per project, hours per day, totals, and empty weekdays. This distinguishes it from generic entry listing or project-total tools by emphasizing a grid timesheet view.

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 clear usage context: "Use this to 'show me my timesheet for last week' or to check a sheet before sharing it," which connects naturally to share_timesheet. It does not explicitly exclude alternatives like list_entries or project_totals, so it stops short of a full when/when-not routing rule.

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

list_clientsList clientsA
Read-onlyIdempotent
Inspect

Active clients, each with its currency and its active projects. Rates are in the client's currency (its own, else the account's).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
clientsYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description adds genuine behavioral scope by restricting results to ACTIVE clients and explaining the rate-currency resolution rule, but says nothing about ordering, pagination, or result size.

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?

Two compact sentences, front-loaded with the result scope and followed by the currency rule. Every clause carries information; no 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?

An output schema exists, so return values need no explanation, and the description covers scope (active only) plus currency/rate semantics. Ordering and pagination behavior are left unspecified, which is the only real gap for a zero-parameter list tool.

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?

The tool takes zero parameters, so the baseline is 4; there is no parameter semantics to document. The description's note about currency resolution is data semantics rather than parameter guidance, but nothing is missing on the parameter front.

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?

Names a specific resource and scope: active clients, each with currency and active projects. An agent can distinguish it from get_client (singular) and list_projects, though the verb 'list' is only implied by the title rather than stated.

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 when-to-use guidance and no alternatives named. With siblings like get_client, list_projects, and archive_client in the catalog, the description never says when to pick this tool over them or that it returns all clients unfiltered.

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

list_entriesList time entriesA
Read-onlyIdempotent
Inspect

Time entries between two dates (inclusive), newest first, with totals per project and per day. Optionally limited to one project. Use this for 'what did I log last week' and to check a day before adding time.

NameRequiredDescriptionDefault
toYesLast day to include (inclusive), YYYY-MM-DD
fromYesFirst day to include, YYYY-MM-DD
projectNoOnly this project: id or "Client / Project"

Output Schema

NameRequiredDescription
toYes
fromYes
entriesYesNewest first, at most 500
summaryYes
truncatedYesTrue when more than 500 entries matched

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world. The description goes beyond them by disclosing result ordering (newest first) and that aggregated totals per project and per day are included, which sets expectations an agent can't get from the hints alone.

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?

Three short sentences, front-loaded with scope and return shape before the usage hint. No filler and nothing repeated from the name or title.

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?

With an output schema handling return values and annotations handling safety, the description covers all the behavioral context an agent needs to call this correctly. Only minor gaps remain, such as any practical limit on the date span or how an unknown project string is treated.

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%: from/to inclusivity and the project id-or-name format are already documented in the schema. The description only echoes 'inclusive' and the optional project limit, adding no syntax or matching detail, so the baseline 3 is appropriate.

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 (list) and resource (time entries) plus the exact scope and return shape: date-bounded, inclusive, newest-first, with per-project and per-day totals, optionally filtered to one project. That combination of ordering/aggregation semantics cleanly separates it from siblings like project_totals, annual_report, and get_running_timer.

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 concrete trigger scenarios ('what did I log last week', checking a day before adding time), which maps the tool to real intents. It stops short of naming alternatives or exclusions (e.g., when to prefer project_totals or merge_entries instead), so it is clear context without routing.

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

list_invoicesList invoicesA
Read-onlyIdempotent
Inspect

Invoice history (newest 200 at most), each with the currency it was issued in. Filter by text, client, paid status or issue-date range. unpaid_totals has one figure per currency; unpaid_total is only set when every match is in one currency.

NameRequiredDescriptionDefault
sortNonewest/oldest by issue date, highest/lowest by totalnewest
queryNoMatches number, client, notes, project names and entry notes
clientNoOnly this client: id or exact name
statusNoFilter by whether the invoice has been paidall
issued_toNoOnly invoices issued on or before this date
issued_fromNoOnly invoices issued on or after this date

Output Schema

NameRequiredDescription
countYes
invoicesYes
unpaid_totalYesStill unpaid across the matches, in their currency; null when the matches use more than one currency
unpaid_totalsYesStill unpaid per currency code, e.g. { USD: 150 }

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description goes further by disclosing the 200-record result cap and the conditional output semantics of unpaid_totals (per currency) vs unpaid_total (only when a single currency matches). That is real behavioral context an agent could not infer from annotations or schema.

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?

Three dense sentences, with the scope constraint front-loaded ahead of the filter list. Every clause carries information, though the trailing unpaid_totals/unpaid_total sentence is somewhat compressed and takes a moment to parse.

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?

An output schema exists so return-value documentation is not required, and the description still fills the key gaps: result cap, per-invoice currency, filter dimensions, and the conditional totals fields. Only the sort behavior and any pagination/ordering interaction with the 200 cap go unexplained.

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 description coverage is 100%, so the schema already documents query, client, status, issued_from/issued_to and sort. The description restates the filter axes in prose but adds no syntax, formats, or precedence rules beyond the schema; baseline 3 applies. It also omits any mention of the sort parameter.

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?

States a specific resource (invoice history) and adds concrete scope details: the 200-item cap, per-invoice currency, and the available filter dimensions. It clearly reads as a paginated list operation rather than the single-record get_invoice sibling, though it never names that sibling explicitly.

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

Usage Guidelines3/5

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

Filter dimensions are listed ('Filter by text, client, paid status or issue-date range'), which implies when the tool is useful, but there is no explicit when-to-use/when-not guidance or routing to alternatives like get_invoice for a single record.

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

list_projectsList projectsA
Read-onlyIdempotent
Inspect

Every active project with its client and hourly rate. Use the "label" ("Client / Project") or the id wherever a project is asked for. Set include_archived to also see archived ones.

NameRequiredDescriptionDefault
include_archivedNoAlso list archived projects

Output Schema

NameRequiredDescription
archivedNo
projectsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds value beyond that by disclosing the default filter (active only) and the opt-in for archived projects, which is the key behavioral trait of this tool.

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?

Three short sentences, each carrying distinct information (scope/return fields, identifier convention, archived toggle), with the primary scope statement front-loaded. Nothing is redundant.

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?

The tool is simple, has an output schema so return structure needn't be explained, and annotations cover the safety profile. The description completes the picture with default filtering, the archived override, and the identifier convention used by sibling tools.

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 description coverage is 100% and there is only one parameter, so baseline is 3. The description goes beyond the schema by documenting the label format ("Client / Project") used to identify projects elsewhere, which the schema does not carry.

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 first sentence states a specific verb and resource plus the returned fields (client, hourly rate), so an agent knows exactly what comes back. It does not explicitly distinguish itself from siblings that also enumerate projects-adjacent data (list_clients, get_client), so it stops short of a 5.

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 real operational guidance: reference projects by "label" ("Client / Project") or id, and set include_archived to widen scope. It lacks explicit when-not-to-use steering (e.g., versus get_client or project_totals), but the context it provides is clear and actionable.

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

log_timeLog timeAInspect

Add one time entry: a project, a date, how long, and what was done. Give minutes or a duration text. This adds a new entry; it never merges with an existing one. Check list_entries first if the day may already be logged.

NameRequiredDescriptionDefault
dateYesThe day the work was done, YYYY-MM-DD
noteNoWhat was done (max 2,000 characters)
minutesNoWhole minutes worked (use this or duration)
projectYesProject id, or "Client / Project" (just the project name works when it is unique)
durationNoDuration text such as "1h30" (use this or minutes)

Output Schema

NameRequiredDescription
loggedYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the write/safe profile is covered. The description adds the non-obvious consequence — "it never merges with an existing one" — which tells the agent that duplicate days produce duplicate entries, something idempotentHint alone does not convey.

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?

Four short sentences, front-loaded with the action, then the input choice, then the key non-merge behavior, then the pre-check. The opening field enumeration slightly restates the schema but is compact and orienting rather than wasteful.

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?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. Combined with the no-merge warning and the list_entries pre-check, the definition is sufficient for correct invocation; only the differing behavior for already-logged days is left unstated.

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 description coverage is 100%, so the schema already documents project, date, minutes, duration, and note. "Give minutes or a duration text" restates the mutual exclusivity already stated in the schema ("use this or minutes"), adding no format or precedence guidance, so the baseline 3 applies.

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?

Specific verb + resource ("Add one time entry") with the fields it carries, which implicitly separates it from bulk/day-level siblings like log_time_on_days and set_day_totals. It does not explicitly name those siblings, so differentiation is left to inference.

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 a concrete when-to-use condition and a named alternative: "Check list_entries first if the day may already be logged." It stops short of stating what to do instead when a day is already logged (update_entry vs set_day_totals), so the routing is clear but not exhaustive.

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

log_time_on_daysLog the same time on several daysAInspect

Add the same entry (project, minutes, note) on up to 31 dates. Days that already have time for this project are skipped and reported unless skip_existing is false.

NameRequiredDescriptionDefault
noteNoWhat was done (max 2,000 characters)
datesYesThe days to log, YYYY-MM-DD (1 to 31 dates)
minutesNoWhole minutes per day (use this or duration)
projectYesProject id, or "Client / Project" (just the project name works when it is unique)
durationNoDuration text per day, such as "1h30" (use this or minutes)
skip_existingNoSkip days that already have time for this project (default true)

Output Schema

NameRequiredDescription
createdYesDays that got an entry
minutesYesMinutes logged on each day
projectYes"Client / Project"
skippedYesDays skipped because they already had time

TDQS

A3.8/5.0
Behavior4/5

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

Adds real behavioral detail beyond the annotations: days already holding time for this project are skipped and reported, with the skip controlled by skip_existing (default true). The annotations already declare write/non-destructive/non-idempotent, so this extra context on skip semantics is the meaningful addition; it stops short of covering partial-failure or overwrite behavior.

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?

Two tight sentences with zero waste, front-loading the core action (add the same entry on up to 31 dates) before the conditional skip rule.

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?

An output schema exists, so return values need not be described, and the annotations cover the safety profile. The description covers the key edge case (existing time), though it leaves open what happens to a skipped day's data and whether minutes/duration are mutually exclusive.

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 description coverage is 100%, so the schema fully documents all six parameters, making 3 the correct baseline. The description only loosely echoes project/minutes/note and mentions skip_existing, adding no format or syntax detail beyond the schema.

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?

States a specific verb and resource: adds the same time entry across up to 31 dates, with the fields (project, minutes, note) called out. It is clearly a batch variant of the sibling log_time, but it does not name log_time or otherwise explicitly distinguish itself from that sibling, so a 4 rather than 5.

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

Usage Guidelines3/5

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

The batch nature (multiple dates, same entry) implies when to use it versus a single-day logger, but there is no explicit when-to-use statement, no prerequisites, and no named alternative such as log_time or set_day_totals.

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

mark_invoice_paidMark an invoice paid or unpaidA
Idempotent
Inspect

Record the date an invoice was paid (this matters for cash-basis taxes), or pass null to mark it unpaid again.

NameRequiredDescriptionDefault
invoiceYesInvoice id or invoice number, e.g. INV-2026-004
paid_dateYesYYYY-MM-DD, or null for unpaid

Output Schema

NameRequiredDescription
okYes
paidDateYesThe paid date, or null when marked unpaid

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=true), so the bar is lower. The description adds useful context beyond them: that the call is reversible via null ('mark it unpaid again') and why the date matters (cash-basis tax treatment). It does not discuss permissions or audit behavior, but for a two-parameter setter that is minor.

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?

A single sentence that front-loads the primary action and appends the inverse case. No filler, no repetition of the title, nothing that could be cut without losing information.

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?

An output schema exists, so return values need no explanation, and the annotations carry the idempotency and safety profile. Both modes of the operation and the date format are covered, so an agent has everything needed to invoke this correctly.

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% — both 'invoice' and 'paid_date' are documented in the schema, including the YYYY-MM-DD format and null option. The description's 'pass null to mark it unpaid again' largely restates the schema's 'null for unpaid', so it adds rationale rather than new parameter semantics. Baseline 3 is correct.

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 (record the paid date) on a specific resource (an invoice), and covers both directions of the operation — set paid or null to unmark. An agent can distinguish it from get_invoice, list_invoices, and create_invoice without opening any schema.

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 clear context for when to use it (recording a payment date, which matters for cash-basis taxes) and explicitly describes the inverse case via null. It names no sibling alternatives, but no sibling competes for this action, so the absence is not a real gap.

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

merge_entriesMerge entriesA
Destructive
Inspect

Fold several entries (same project, same day) into the first one: minutes are added and notes joined. The others are removed.

NameRequiredDescriptionDefault
idsYesIds of the entries to merge; the first one is kept (2 to 20, same project and day)

Output Schema

NameRequiredDescription
idYesThe kept entry
mergedYesHow many entries were folded together
minutesYesIts new total

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, and the description meaningfully expands on this by stating exactly what is destroyed ('The others are removed') and how data is preserved (minutes added, notes joined, first entry kept). It stops short of noting non-idempotency or permissions, but adds real value beyond the annotations.

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?

Two tight sentences, no filler, and the key data-preservation behavior is front-loaded before the destructive consequence. Every clause earns its place.

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?

With an output schema present, return values need not be described, and the constraints, kept-entry rule, and destructive outcome are all covered. Only the absence of alternative-tool routing and non-idempotency detail keeps it slightly short of complete.

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% and the single parameter is fully documented, including the 2-20 range and the 'first one is kept' rule. The description largely restates the schema's own constraint ('same project, same day'), so it does not add notable meaning beyond the structured field.

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 states a concrete verb (fold/merge) and resource (entries) plus the actual effect: minutes added, notes joined, first kept, others removed. This clearly distinguishes it from sibling delete_entry or update_entry, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

The parenthetical constraint 'same project, same day' implies the scenario (collapsing duplicate entries) but there is no explicit when-to-use guidance or comparison against update_entry/delete_entry for cleaning up entries. Usage is inferable rather than stated.

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

next_invoice_numberNext invoice numberB
Read-onlyIdempotent
Inspect

The suggested next invoice number for a year, such as INV-2026-004.

NameRequiredDescriptionDefault
yearYesYear of the invoice issue date, e.g. 2026

Output Schema

NameRequiredDescription
numberYesFor example INV-2026-004

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only the nuance that the number is 'suggested' rather than guaranteed, and says nothing about whether the value is reserved or how it is derived. Adequate, but adds little beyond the annotations.

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?

One tight sentence that front-loads the return value and immediately illustrates the format. There is no filler or redundant restatement of the tool name.

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?

An output schema exists, so return values need not be explained, and the single required parameter is fully documented. For a trivial read-only lookup this is nearly complete; the only missing nuance is whether the returned number is reserved or merely advisory.

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 description coverage is 100% and the single 'year' parameter is fully documented in the schema, including its 2000-2100 range and an example. The description's 'INV-2026-004' example reinforces the year-to-number relationship but adds no syntax or semantics beyond what the schema already supplies. Baseline 3 applies.

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?

States exactly what is returned (the suggested next invoice number) scoped to a year, with a concrete format example ('INV-2026-004'). It is a noun phrase rather than a verb+resource, but it is unambiguous and distinguishable from invoice siblings like create_invoice, list_invoices, and get_invoice.

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?

The description gives no when-to-use guidance, no prerequisites, and names no alternatives. The usage (call it before creating an invoice) must be inferred entirely from the name and context. 'Suggested' hints the value is advisory, but nothing states when it should be consulted or whether it reserves the number.

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

parse_durationParse a durationA
Read-onlyIdempotent
Inspect

Turn text like "1h30", "1:30" or "2.5" into whole minutes, the way UseHourly reads it.

NameRequiredDescriptionDefault
textYesThe duration text to read, e.g. 1h30

Output Schema

NameRequiredDescription
errorNo
hoursNo
minutesYesWhole minutes, or null when the text could not be read

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds genuinely non-structured context: the output unit is whole minutes and the parsing convention is 'the way UseHourly reads it', which tells the agent the app-specific format is authoritative. It does not say what happens on invalid input, keeping it from a 5.

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?

One sentence, front-loaded with the concrete format examples, with zero filler. Every clause carries information.

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?

An output schema exists, so return values needn't be explained, and the description supplies the unit and parsing convention. The only material gap is error behaviour for malformed input, which is minor for a pure read-only conversion utility.

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% for the single 'text' parameter, so the baseline is 3. The description earns an extra point by enumerating formats ('1h30', '1:30', '2.5') that the schema only partially shows (schema example is just '1h30'), clarifying the accepted grammar.

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 precise verb (turn/convert), the input form (duration text), the output unit (whole minutes), and names three concrete example formats. No sibling tool in the list does anything comparable, so it is trivially distinguishable.

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

Usage Guidelines3/5

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

Usage is implied by the naming of input formats, but there is no explicit 'use this when...' or indication of what to do with unparseable input, nor any comparison to alternatives (none exist, but that isn't stated). Adequate but leaves routing to inference.

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

project_totalsHours per projectB
Read-onlyIdempotent
Inspect

Logged hours per project: all time and within a date range (for example this month).

NameRequiredDescriptionDefault
toYesLast day of the range (inclusive), YYYY-MM-DD
fromYesFirst day of the range, YYYY-MM-DD

Output Schema

NameRequiredDescription
toYes
fromYes
projectsYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds the scoping dimension (all-time vs. range) but doesn't clarify pagination, grouping, or how projects with zero hours appear.

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?

One short sentence, front-loaded with the resource and aggregation before the range qualifier. Nothing redundant, though the trailing parenthetical adds little.

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

Completeness3/5

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

With an output schema present, return values need no explanation, and the tool is a simple two-param read. Still, the required-range versus 'all time' ambiguity and the absence of any alternative-tool routing leave gaps for an agent deciding how to call it.

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

Parameters2/5

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

Schema coverage is 100% with explicit format and inclusivity notes on both params, so the schema carries the semantics. The description's 'all time and within a date range' actively implies the range may be optional, which conflicts with 'from' and 'to' both being required.

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 names a specific aggregation (logged hours) and the grouping dimension (per project), so an agent can tell it apart from raw listing tools like list_entries. The only blur is the 'all time and within a date range' phrasing, which is ambiguous given both range params are required.

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?

It never says when to use this instead of the many sibling reporting tools (annual_report, list_entries) or whether a date range is mandatory. Usage is only loosely implied by the mention of 'this month'.

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

set_day_totalsSet a project's total for daysA
Idempotent
Inspect

Set one project's total minutes for up to 31 days: more than 0 creates or updates that day's single entry, 0 clears it. Days that hold several entries or a running timer are skipped and reported, never merged. A note, when given, is applied to every day written.

NameRequiredDescriptionDefault
noteNoDescription applied to every day written
cellsYesOne item per day to set (1 to 31 days)
projectYesProject id, or "Client / Project" (just the project name works when it is unique)

Output Schema

NameRequiredDescription
createdYes
deletedYes
projectYes"Client / Project"
skippedYesDays skipped: several entries or a running timer
updatedYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say it is a non-read-only, idempotent, non-destructive write. The description goes well beyond that: create-or-update semantics for positive minutes, deletion semantics for 0, explicit refusal to merge multi-entry days, partial-failure reporting, and the note being applied to every written day. That is exactly the extra side-effect detail annotations cannot convey.

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?

Three sentences, no filler, front-loaded with the scope ('up to 31 days') and then the write/clear rule and the skip rule. Every clause carries actionable information.

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?

An output schema exists, so return formatting need not be explained, and the description already covers the mutation semantics, skip behavior, and reporting of skipped days. Nothing material is missing for correct 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, but the description adds real meaning: the meaning of minutes=0 (clears the day) versus >0 (create/update), which is only implied by the schema's minimum of 0, and the fact that note is broadcast to every day written.

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 (set), resource (one project's total minutes), and bound (up to 31 days) in the first clause. The behavior 'more than 0 creates or updates that day's single entry, 0 clears it' distinguishes it from additive siblings like log_time and log_time_on_days without needing to open their schemas.

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 clear context for when a day is written versus skipped: days holding several entries or a running timer are skipped and reported rather than merged. It does not name an explicit alternative tool for those skipped cases (e.g. update_entry, merge_entries), so the when-not path is described but not routed.

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

share_timesheetCreate a timesheet link for a clientAInspect

Freeze the hours of a date range (optionally one client or project) into a private link a client can open without an account, read, print and approve. The link shows hours and, unless include_notes is false, the work descriptions; never rates or amounts. Anyone with the link can read it until it expires, so confirm the range, the client and whether to include notes with the user before calling. The link is returned only once: pass it on to the user. Not available on demo accounts.

NameRequiredDescriptionDefault
toYesLast day to include (inclusive), YYYY-MM-DD
fromYesFirst day to include, YYYY-MM-DD
titleNoA heading for the sheet (default: client and dates)
clientNoOnly this client: id or exact name
projectNoOnly this project: id or "Client / Project"
include_notesNoShow the work descriptions to the client (default true)
expires_in_daysNoHow long the link works: 7, 30, 90 days (default 30)

Output Schema

NameRequiredDescription
toYes
urlYesThe private link to send to the client. Shown only once
fromYes
noteYes
includes_notesYes
expires_in_daysYes

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that anyone with the link can read it until it expires, that rates and amounts are never shown, that notes are included unless include_notes is false, that the link is returned only once and must be passed to the user, and that demo accounts cannot use it. These are exactly the behavioral traits an agent needs before invoking a non-idempotent, irreversible link-creation tool.

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?

Four sentences, each carrying distinct information: what it produces, what the link reveals, the confirm-before-calling rule, and the one-time-return plus demo restriction. Front-loaded with the core action.

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 an output schema present, the description needn't explain return shape, and it still flags the critical one-time-visibility constraint. Annotations cover the safety profile and the description covers exposure, prerequisites and availability, leaving no meaningful gap for a 7-parameter tool.

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 still adds meaning by explaining that client/project scope the frozen hours, that include_notes=false suppresses work descriptions, and that the link expires. It does not add new detail on from/to/title/expires_in_days beyond what the schema already documents.

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 ('Freeze the hours of a date range ... into a private link') plus the recipient and scope (optionally one client or project). It is clearly distinguishable from get_timesheet because the output is an externally openable, account-free link rather than the caller's own view.

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?

Explicitly says to confirm the range, the client and the include_notes choice with the user before calling, and adds a hard availability gate ('Not available on demo accounts'). That is concrete when-to-use and precondition guidance rather than vague context.

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

start_timerStart the timerAInspect

Start a timer on a project. A timer that is already running is stopped first, so only one runs at a time.

NameRequiredDescriptionDefault
dateYesThe day the timer starts on, YYYY-MM-DD
noteNoWhat is being worked on (max 2,000 characters)
projectYesProject id, or "Client / Project" (just the project name works when it is unique)

Output Schema

NameRequiredDescription
startedYes

TDQS

A3.8/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 safety is covered. The description adds real behavioral value beyond that: it discloses the side effect that any already-running timer is stopped first, which is essential for an agent to predict state changes.

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?

Two short sentences, purpose front-loaded, with the constraint sentence adding genuinely new information. No wasted words.

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?

With an output schema present, return values need not be explained, and annotations carry the safety profile. The description covers purpose and the key state-changing constraint, leaving only minor gaps like permission requirements.

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 description coverage is 100%, so all three parameters (date, note, project) are already documented in the schema. The description adds no additional parameter detail, so the baseline 3 applies.

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?

States a specific verb and resource ('Start a timer on a project') with the scope of the operation clear. It does not name any sibling (e.g., stop_timer, log_time) explicitly, but the 'only one runs at a time' clause implicitly separates it from the other time-tracking tools.

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

Usage Guidelines3/5

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

Usage is implied by the purpose statement but there is no explicit when-to-use guidance or named alternative. An agent must infer that it should call this instead of stop_timer/log_time when it wants a live timer running.

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

stop_timerStop the timerAInspect

Stop the running timer. Elapsed time is rounded up to the next minute (at least 1).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
stoppedYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds genuinely new behavioral context beyond that: elapsed time is rounded up to the next minute with a minimum of 1, which materially affects the recorded result.

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?

Two short sentences, front-loaded with the action and followed by the one behavioral caveat. Nothing is padded and every clause earns its place.

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?

With an output schema present, return values need not be explained, and the rounding rule is the key behavioral detail an agent needs. The only gap is the error/edge-case behavior when no timer is running, which is left unstated.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Per the baseline for zero-parameter tools, a 4 is appropriate.

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?

States a specific verb and resource ('Stop the running timer'), which is unambiguous against siblings like start_timer and get_running_timer. It does not explicitly name or contrast with any sibling, so it falls just short of a 5.

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

Usage Guidelines3/5

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

The usage is implied by the verb: you call this to stop a timer that is currently running. There is no explicit guidance on prerequisites (e.g., what happens if no timer is running) or routing to alternatives such as get_running_timer to check state first.

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

unarchive_projectRestore a projectA
Idempotent
Inspect

Bring an archived project (and its client, if archived) back.

NameRequiredDescriptionDefault
projectYesArchived project id or "Client / Project"

Output Schema

NameRequiredDescription
okYes
restoredYes"Client / Project"

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuine value by disclosing a side effect beyond the parameter: the associated client may also be unarchived, which the agent could not learn from the schema or annotations.

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?

A single, front-loaded sentence with no wasted words, and the dual scope (project + client) is packed into the parenthetical rather than padded out.

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?

An output schema exists, so return values need no explanation, and the single simple parameter is fully documented. The main gap is the absence of any explicit rejection/failure behavior when the target is not archived, but overall it is complete for a simple restore operation.

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?

Only one parameter with 100% schema description coverage that already documents both the id and the 'Client / Project' format. The description adds no format or resolution detail beyond that, so the baseline 3 applies.

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?

States a specific verb ('bring back' = restore) and resource (archived project), and the parenthetical scope clarifies that an archived client is also restored. It implicitly contrasts with the sibling archive_project but never names it, so the agent must infer the inverse relationship.

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

Usage Guidelines3/5

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

The phrase 'archived project' implies the precondition that the project must currently be archived, but there is no explicit when-to-use or when-not-to-use guidance and no alternative tool is named. Usage is implied rather than stated.

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

update_clientEdit a clientA
Idempotent
Inspect

Rename a client or change the legal name and address printed on its invoices. Only the fields you pass change; the logo is kept.

NameRequiredDescriptionDefault
nameNoNew display name
clientYesClient id or exact client name
addressNoEmpty string clears it
legal_nameNoEmpty string clears it

Output Schema

NameRequiredDescription
okYes
clientYesThe client's name now

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the mutation safety profile is covered. The description adds genuine context beyond that: partial-update semantics and the fact that the logo is preserved, which an agent could not infer from the annotations.

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?

Two tight sentences with the core action front-loaded and no filler; every clause (field scope, partial update, logo retention) carries information.

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?

An output schema exists, so return values need not be described, and annotations cover the safety profile. What remains is minor: no statement of error behavior for a nonexistent client, and the 'logo is kept' note references a field that has no corresponding parameter.

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 all four parameters (including the required 'client' identifier and the 'empty string clears it' semantics for address/legal_name) are already documented. The description restates the editable fields but adds no format or identifier syntax beyond the schema, so the baseline 3 applies.

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 ('Rename a client', 'change the legal name and address') and names the exact fields that can be edited, which cleanly separates it from create_client, archive_client, and get_client without opening any schema.

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

Usage Guidelines3/5

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

The description implies usage through its partial-update framing ('Only the fields you pass change'), which tells the agent this is for edits rather than creation. However, it names no alternative tools and gives no when-not guidance (e.g. use archive_client to retire a client), so usage is only implied.

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

update_entryEdit an entryA
Idempotent
Inspect

Change an entry's project, date, minutes or note. Only the fields you pass change.

NameRequiredDescriptionDefault
idYesThe entry id (from list_entries)
dateNoMove the entry to this day, YYYY-MM-DD
noteNoNew description (max 2,000 characters)
minutesNoNew whole minutes (use this or duration)
projectNoMove the entry to this project: id or "Client / Project"
durationNoNew duration text such as "1h30" (use this or minutes)

Output Schema

NameRequiredDescription
updatedYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a genuine behavioral trait not present in annotations: partial-update semantics where omitted fields are preserved. It stops short of describing failure behavior for invalid ids or field conflicts.

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?

Two short sentences, zero waste, with the action front-loaded and the patch-semantics caveat immediately after. Nothing superfluous and nothing buried.

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?

An output schema exists and annotations cover the safety and idempotency profile, so the description needn't explain return values. It is nearly complete for a partial-update tool, missing only notes on validation failures or the minutes/duration exclusivity that would help prevent a malformed call.

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 description coverage is 100%, so each of the six parameters is already documented, including the id source ('from list_entries'), date format, note max length, and the minutes/duration exclusivity. The description only re-lists a subset of fields, adding no syntax or constraint detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb ('Change') and resource ('an entry') and enumerates the mutable fields (project, date, minutes, note), so the agent knows exactly what the tool operates on. It does not, however, distinguish itself from nearby siblings like merge_entries, delete_entry, or log_time.

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

Usage Guidelines3/5

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

The clause 'Only the fields you pass change' implies patch-style editing of an existing entry, which is useful invocation guidance. But it never says when to prefer this over merge_entries, delete_entry, or log_time, so usage is only implied rather than directed.

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

update_projectEdit a projectA
Idempotent
Inspect

Rename a project, move it to another client, or change its rate or billable flag. Only the fields you pass change.

NameRequiredDescriptionDefault
nameNoNew project name
clientNoMove the project to this client
projectYesProject id, or "Client / Project" (just the project name works when it is unique)
billableNoWhether the time goes on invoices
hourly_rateNoNew amount per hour in the client's currency (its own, else the account's), e.g. 85 or 62.5

Output Schema

NameRequiredDescription
projectYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond the annotations: it is a partial/patch update where unspecified fields are left untouched, which is or is not obvious from a mutation tool. It stops short of what happens to existing time entries or reports when a rate or client changes.

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?

Two sentences, no filler, with the scope of changes front-loaded ahead of the patch-semantics clarification. Every sentence carries information an agent needs.

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?

An output schema exists, so return values need not be described, and annotations plus a fully documented 5-parameter schema cover most of the surface. Left implicit are the unstated required-parameter behavior (project is the sole required arg, but the description implies any field is optional) and any side effects of moving a project to a new client.

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 description coverage is 100% and each parameter (name, client, project, billable, hourly_rate) already has a descriptive string, including the flexible "Client / Project" id resolution and the hourly_rate currency rule. The description only restates the field set, adding no syntax or constraint detail beyond the schema, so the baseline of 3 applies.

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?

Names a specific verb set (rename, move, change rate/flag) against one resource (project), enumerating exactly which attributes the tool mutates. This cleanly separates it from update_client and from archive_project/unarchive_project in the sibling list.

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

Usage Guidelines3/5

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

"Only the fields you pass change" tells the agent how to call it, but there is no explicit guidance on when to prefer this over siblings such as archive_project, unarchive_project, or project_totals, nor any prerequisites (e.g. needing write access or a resolvable project id).

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

whoamiWho am IA
Read-onlyIdempotent
Inspect

The signed-in account (name, email, currency, business details printed on invoices) and what this token may do (read or write). Call this first to confirm the connection.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
idYes
nameYes
emailYes
businessYes
currencyYesISO 4217 code every amount is in, e.g. USD or EUR
member_sinceYesISO time the account was made
token_accessYesWhat this token may do

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and a closed world, so the safety profile is covered. The description still adds real value beyond them by disclosing what the call reports back — account identity plus the token's permission level — which tells the agent this is a preflight/authorization probe.

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?

A single sentence, front-loaded with the returned identity data, with the call-to-action appended at the end. No filler and nothing redundant with the annotations.

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 no parameters, rich annotations, and an output schema present (so return shapes need not be explained), the description supplies exactly the missing piece: what the tool tells you and when to reach for it. Nothing an agent needs to invoke it correctly is absent.

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?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate and it correctly does not invent parameter details.

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, concrete output: the signed-in account's identity fields (name, email, currency, invoice business details) plus the token's read/write capability. No sibling tool in this list does identity/authorization introspection, so it is cleanly distinguishable.

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?

"Call this first to confirm the connection" gives explicit ordering guidance and a clear trigger condition. It does not name a when-not case or an alternative, but no realistic alternative exists for this capability.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedget_client2 fields changed
      • addedOutput schema / properties / invoice_schedule
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {
        +        "anchor": {
        +          "description": "The first day of the first two-week period (YYYY-MM-DD), or null",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "every": {
        +          "description": "month = on the 1st for the month before; 2weeks = every 14 days",
        +          "enum": [
        +            "month",
        +            "2weeks"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "every",
        +        "anchor"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "How often this client is invoiced; null = whenever the freelancer chooses"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "legal_name",
        -  "address",
        -  "currency",
        -  "has_logo"
        -]New value: +[
        +  "id",
        +  "name",
        +  "legal_name",
        +  "address",
        +  "currency",
        +  "has_logo",
        +  "invoice_schedule"
        +]
  2. 2 tool updates
    • Addedget_timesheet
    • Addedshare_timesheet
  3. 5 tool updates
    • Changedcreate_project1 field changed
      • changedInput schema / properties / hourly_rate / description
        Previous value: -"Amount per hour in the account's currency, e.g. 85 or 62.5 (default 0)"New value: +"Amount per hour in the client's currency (its own, else the account's), e.g. 85 or 62.5 (default 0)"
    • Changedget_client2 fields changed
      • addedOutput schema / properties / currency
        Added value: +{
        +  "description": "The currency this client's rates and invoices are in",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "legal_name",
        -  "address",
        -  "has_logo"
        -]New value: +[
        +  "id",
        +  "name",
        +  "legal_name",
        +  "address",
        +  "currency",
        +  "has_logo"
        +]
    • Changedlist_clients2 fields changed
      • addedOutput schema / properties / clients / items / properties / currency
        Added value: +{
        +  "description": "The currency this client's rates and invoices are in",
        +  "type": "string"
        +}
      • changedOutput schema / properties / clients / items / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "color",
        -  "legal_name",
        -  "address",
        -  "projects"
        -]New value: +[
        +  "id",
        +  "name",
        +  "color",
        +  "legal_name",
        +  "address",
        +  "currency",
        +  "projects"
        +]
    • Changedlist_invoices4 fields changed
      • changedOutput schema / properties / unpaid_total / description
        Previous value: -"Dollars still unpaid across the matches"New value: +"Still unpaid across the matches, in their currency; null when the matches use more than one currency"
      • changedOutput schema / properties / unpaid_total / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • addedOutput schema / properties / unpaid_totals
        Added value: +{
        +  "additionalProperties": {
        +    "type": "number"
        +  },
        +  "description": "Still unpaid per currency code, e.g. { USD: 150 }",
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "count",
        -  "unpaid_total",
        -  "invoices"
        -]New value: +[
        +  "count",
        +  "unpaid_total",
        +  "unpaid_totals",
        +  "invoices"
        +]
    • Changedupdate_project1 field changed
      • changedInput schema / properties / hourly_rate / description
        Previous value: -"New amount per hour in the account's currency, e.g. 85 or 62.5"New value: +"New amount per hour in the client's currency (its own, else the account's), e.g. 85 or 62.5"
  4. 3 tool updates
    • Changedcreate_project1 field changed
      • changedInput schema / properties / hourly_rate / description
        Previous value: -"Dollars per hour, e.g. 85 or 62.5 (default 0)"New value: +"Amount per hour in the account's currency, e.g. 85 or 62.5 (default 0)"
    • Changedupdate_project1 field changed
      • changedInput schema / properties / hourly_rate / description
        Previous value: -"New dollars per hour, e.g. 85 or 62.5"New value: +"New amount per hour in the account's currency, e.g. 85 or 62.5"
    • Changedwhoami2 fields changed
      • addedOutput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code every amount is in, e.g. USD or EUR",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "email",
        -  "member_since",
        -  "token_access",
        -  "business"
        -]New value: +[
        +  "id",
        +  "name",
        +  "email",
        +  "member_since",
        +  "token_access",
        +  "currency",
        +  "business"
        +]
  5. 30 tool updates
    • First observedannual_report
    • First observedarchive_client
    • First observedarchive_project
    • First observedcreate_client
    • First observedcreate_invoice
    • First observedcreate_project
    • First observeddelete_entry
    • First observeddelete_invoice
    • First observedget_client
    • First observedget_invoice
    • First observedget_running_timer
    • First observedlist_clients
    • First observedlist_entries
    • First observedlist_invoices
    • First observedlist_projects
    • First observedlog_time
    • First observedlog_time_on_days
    • First observedmark_invoice_paid
    • First observedmerge_entries
    • First observednext_invoice_number
    • First observedparse_duration
    • First observedproject_totals
    • First observedset_day_totals
    • First observedstart_timer
    • First observedstop_timer
    • First observedunarchive_project
    • First observedupdate_client
    • First observedupdate_entry
    • First observedupdate_project
    • First observedwhoami

Publisher details

Operator
Zontak LLC · Publisher source
Vendor relationship
First-party · Publisher source
Restrictions
Free and open source, no paid plan. Needs a free UseHourly account and either a personal access token (Account > AI assistants) or log-in-and-approve OAuth. Tokens can be read-only, expire, and stop working if the password changes. · Publisher source

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables time tracking and invoicing through natural conversation with MCP clients like Claude or ChatGPT, allowing users to log work hours, query unbilled time, and draft invoices, with a minimal web app for settings, CSV import, and Stripe-powered billing.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for time tracking and billing that allows freelancers to control timers, manage projects, and export invoices via natural language in any MCP-compatible AI assistant.
    6 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.