Skip to main content
Glama

Get expenses

timelog_get_expenses
Read-onlyIdempotent

List expenses. Without 'time.approve' (or full Time Tracking data scope) you only see your own, even though the underlying table is workspace-wide. Optional filters: project, employee, status, date range, billable. Max limit 200 - the response carries pagination.total plus has_more/next_cursor. NEVER total these rows while has_more is true; page with next_cursor until it is false.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax 200.
cursorNoOpaque cursor from a previous response's pagination.next_cursor. Preferred over offset: keyset paging never skips or duplicates rows.
offsetNoRow offset for offset-based paging. Ignored when cursor is supplied.
statusNoDRAFT | SUBMITTED | APPROVED | REJECTED
to_dateNoInclusive, YYYY-MM-DD.
from_dateNoInclusive, YYYY-MM-DD.
project_idNo
employee_idNoRequires 'time.approve' or full data scope to look at someone else.
is_billableNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
metaNo
warningNoPresent only when the page is truncated.
expensesYes
paginationYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only mark the operation as read-only and idempotent. The description adds meaningful behavior beyond those: permission-scoped row visibility despite a workspace-wide table, the 200-row cap, pagination.total, has_more/next_cursor, and an explicit warning not to total rows while more pages exist.

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 concise sentences, all substantive, with the core purpose front-loaded. Each sentence contributes either scope guidance, filter information, or a critical pagination warning; there is no filler.

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

Completeness5/5

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

Given that annotations cover safety, an output schema exists, and the schema documents most parameters, the description fills the remaining critical gaps: permission scope, the workspace-wide underlying table, and the pagination contract. Nothing essential is missing 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?

With 78% schema description coverage, the input schema already explains most parameters. The description summarizes the filter groups and emphasizes pagination behavior, but it does not add much individual parameter detail beyond what the schema provides, 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?

The description opens with the specific verb and resource 'List expenses' and then expands with optional filters and a key scope detail (own rows vs workspace-wide). This clearly distinguishes it from sibling timelog_get_entries without ambiguity.

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 conveys when to use the tool through the permission-dependent scope explanation and the pagination requirements. It does not explicitly state 'use this for expense listings, not time entries,' but no direct alternative expense-list sibling exists, so the context is sufficient.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

B3.4/5.0
Disambiguation4/5

Most tools follow a clear resource+action pattern and the descriptions are unusually precise about boundaries. A few near-overlaps remain: projects_get_finance vs projects_get_financials, and notes_create vs crm_log_activity on a deal are both plausible for recording a note on a deal.

Naming Consistency4/5

The domain_prefix_action convention is consistent across nearly all tools, e.g. crm_create_lead, projects_update_risk, timelog_approve_time. Deviations include standalone list_trash, meta tools like whoami/tool_search/tool_invoke, and the confusing projects_get_finance/projects_get_financials pair.

Tool Count1/5

With 105 tools, this far exceeds the 50+ threshold defined as an extreme mismatch. Even for a full ERP/CRM suite, the fine-grained split—39 project tools alone—creates a massive tool-selection surface that is hard for an agent to navigate reliably.

Completeness4/5

The surface covers CRM, projects, tasks, time/expenses, HR, notes, notifications, contracts, and reporting with create/read/update/delete for most primary entities. Minor gaps exist: crm_log_activity has no read-back path, contracts lack delete/restore, and proposals are intentionally read-only, but agents can work around these.