Skip to main content
Glama

Update project invoicing settings

projects_update_invoicing
Idempotent

Create or update a project's invoicing settings (upsert on project_id). billing_model: time_and_materials|fixed_fee. invoice_frequency: monthly|quarterly|specific_date. approval_type: none|sequential. Requires finance.edit.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYes
approval_typeNonone | sequential
billing_modelNotime_and_materials | fixed_fee
default_vat_rateNoPercent, e.g. 25.
invoice_currencyNoISO code, e.g. DKK.
invoice_frequencyNomonthly | quarterly | specific_date
payment_terms_daysNo
invoice_anchor_dateNoISO date YYYY-MM-DD.
invoice_interval_unitNo
expense_default_markupNoPercent.
invoice_interval_valueNo
fx_rate_to_company_currencyNo
invoice_billing_day_of_monthNo
invoice_specific_day_of_monthNo

TDQS

B3.1/5.0
Behavior4/5

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

The annotations already carry the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description adds value beyond them by disclosing upsert semantics, the finance.edit permission requirement, and the allowed values for three settings. These details are consistent with the annotations — an upsert is idempotent and non-destructive — so there is no contradiction.

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?

The description is compact, with the purpose front-loaded in the first clause and the enum lists compressed into terse pipe-separated forms. Each sentence earns its place; the only minor redundancy is restating schema enum values, but that keeps the description self-sufficient for quick scanning.

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

Completeness2/5

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

For a 14-parameter tool with no output schema, the description is under-specified: it does not describe the return value, does not explain how frequency-related parameters interact (e.g., specific_date requiring invoice_specific_day_of_month), and leaves several parameters undefined. It covers core purpose, permission, and key enums, but an agent would still struggle to invoke it correctly in edge cases.

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 description coverage is only about 50%, so the description should compensate for the undocumented parameters, but it merely repeats the enum values already present in the schema (billing_model, invoice_frequency, approval_type). It adds nothing about payment_terms_days, invoice_interval_unit, invoice_interval_value, fx_rate_to_company_currency, or the relationship between invoice_billing_day_of_month and invoice_specific_day_of_month, leaving half the parameters unexplained in both places.

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 opens with a specific verb and resource — 'Create or update a project's invoicing settings' — and the '(upsert on project_id)' parenthetical clarifies the exact scope and merge behavior. The name and title are also unambiguous. It does not explicitly name a sibling it is not (e.g., projects_update or projects_get_invoicing), 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 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 the many relevant siblings such as projects_update, projects_get_invoicing, or projects_update_billing_milestone. The only constraint offered, 'Requires finance.edit,' is a permission prerequisite rather than alternative-selection guidance, so an agent gets little help deciding which tool to pick.

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.