Skip to main content
Glama
cotletdev

Contractor Foreman MCP Server

by cotletdev

Create bill

create_bill

Records a vendor bill with line items and optional project assignment, entering invoice details so costs appear in job costing. Saves the bill as Open without payment or sending.

Instructions

Records a vendor bill with its line items, optionally against a project.

Enters a bill from a vendor in Contractor Foreman: the vendor's invoice number, bill and due date, subject, notes and line items (description, quantity, unit, unit cost, cost type). With a project_id the cost shows in that project's job costing. The bill starts Open and nothing is paid or sent. Returns the saved bill.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemsYesLine items. The total is the sum of quantity times unit cost.
notesNo
numberYesThe vendor's invoice number.
subjectNo
due_dateNoYYYY-MM-DD.
bill_dateNoYYYY-MM-DD. Default: today.
vendor_idYesA vendor's contact_id (list_contacts type vendor).
project_idNoThe project the cost belongs to.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.1

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the write/safe/idempotency profile, and the description adds genuinely new behavioral facts: the bill starts in Open status, nothing is paid or sent, and it returns the saved bill. It does not mention prerequisites such as the vendor record existing or any permission requirements, so a 4 rather than 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 sentences, front-loaded with the one-line summary before the detail, and no filler. Mild redundancy between the opening sentence and the more specific second sentence keeps it from a 5.

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 an 8-parameter mutation with no output schema, the description covers the important unknowns: what the call creates, its initial state, and that it returns the saved bill. Missing are prerequisite notes (vendor must pre-exist) and any indication of failure modes, which keeps it just under complete.

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?

At 75% schema coverage the schema does much of the work, but the description reinforces the non-obvious mappings ('the vendor's invoice number' for number, the line-item fields including cost type) and explains the consequence of project_id on job costing, which the schema only states flatly. It does not clarify defaults like bill_date=today beyond what the schema provides.

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 names a specific verb and resource ('Records a vendor bill with its line items, optionally against a project'), and the second expands on the exact payload. It never explicitly distinguishes itself from the sibling create_invoice, which is the nearest ambiguity, 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?

Usage is implied by 'Enters a bill from a vendor in Contractor Foreman' and by the note that supplying project_id routes the cost into job costing, which is real selection context. There is no explicit when-not-to-call or named alternative (e.g. create_invoice for customer-side billing, create_expense for non-vendor costs), so routing remains inferred.

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