Skip to main content
Glama

Create product or service

wave_create_product

Create a product or service with a name and unit price, then assign income or expense accounts to make it sellable on invoices or buyable for expenses.

Instructions

Create a product or service. Give it an incomeAccountId to sell it on invoices, an expenseAccountId to buy it, or both.

Input Schema

NameRequiredDescriptionDefault
nameYes
unitPriceYesPrice per unit, major currency units
businessIdNoBusiness ID; defaults to the one wave_get_context reports
descriptionNo
incomeAccountIdNoMakes it sellable. Account subtype must be INCOME, DISCOUNTS or OTHER_INCOME
expenseAccountIdNoMakes it buyable. Account subtype must be EXPENSE, COST_OF_GOODS_SOLD, PAYMENT_PROCESSING_FEES or PAYROLL_EXPENSES
defaultSalesTaxIdsNoSales taxes applied by default on invoice lines

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the agent knows this is a non-destructive local write. The description adds that providing account IDs changes downstream behavior (sellable on invoice lines), which is genuine context. But it is silent on the practical consequences of idempotentHint=false — that repeated calls may create duplicates — and on what is returned or what errors arise from mismatched account subtypes.

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 filler, and the core action is front-loaded before the optional configuration detail. Every clause earns its place by telling the agent something about how the account IDs affect the created item.

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?

For a 7-parameter creation tool with no output schema, the description covers the what and the sellable/buyable configuration but omits the return payload (presumably a product ID) and any note about duplicate creation given idempotentHint=false. It is adequate to make the call, but a meaningful mutation tool warrants slightly more.

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 71%, so the schema already documents unitPrice, businessId, incomeAccountId, expenseAccountId and defaultSalesTaxIds with meaningful detail. The description largely restates the income/expense account meaning already present in the property descriptions and adds no format or constraint detail beyond that. A baseline 3 is appropriate given the schema does most of the work, with three undocumented fields (name, description, defaultSalesTaxIds semantics) left thin.

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 a product or service'), which is immediately distinguishable from siblings like wave_update_product, wave_archive_product and wave_list_products. It does not name those alternatives explicitly, but the create verb alone 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?

It explains the configuration choice well: supply incomeAccountId to make the item sellable, expenseAccountId to make it buyable, or both. However, it never says when to prefer this over alternatives (e.g., creating an account first via wave_create_account, or checking for an existing product with wave_list_products) nor what prerequisites must be resolved before calling.

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

Deploy Server

Other Tools