Skip to main content
Glama
cotletdev

Contractor Foreman MCP Server

by cotletdev

Add invoice items

add_invoice_items

Add priced line items to an invoice and return the saved items, new total, and balance due for accurate billing.

Instructions

Adds priced line items to an invoice.

Adds plain priced lines at the end of an invoice: name, type, quantity, unit, unit cost in dollars, markup percent. Items billed from an estimate, change order or schedule of values are added in the app. Returns the saved items, the new total and the balance due.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemsYes
invoice_idYesFrom list_invoices or create_invoice.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.1

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare mutation, non-idempotent, non-destructive, open-world. The description adds real value beyond them: it discloses append-to-end semantics ('at the end of an invoice') and the response payload (saved items, new total, balance due), which matters because there is no output schema. It does not warn that retries duplicate items (only implied by idempotentHint=false), which keeps it off 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.

Conciseness4/5

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

Three short sentences, front-loaded with the action and followed by scope and return values. The item-field enumeration partially repeats the schema, but it is compact enough to justify its space.

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 no output schema, the description correctly covers returns, and with 50% schema coverage it covers most item fields plus the append behavior. Only the undocumented cost_code_id/description fields and duplicate-on-retry behavior are left unaddressed, which are minor given the annotations.

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 50%, so the description needs to carry weight; it enumerates item fields (name, type, quantity, unit, unit cost in dollars, markup percent), which helps, but omits cost_code_id and the per-item description field and adds no syntax beyond the schema. Adequate but leaves gaps at a borderline coverage level.

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 (add priced line items to an invoice) and scopes it to 'plain priced lines,' explicitly noting that estimate / change order / schedule-of-values items are added in the app rather than here. That indirectly but effectively separates it from sibling tools like add_estimate_items and add_change_order_items.

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 clear condition for what belongs here ('plain priced lines at the end of an invoice') and an exclusion ('Items billed from an estimate, change order or schedule of values are added in the app'). It does not name alternative siblings directly or discuss when to use update_invoice instead, so it stops short of a full 5.

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