Skip to main content
Glama

Add a bill

purch_add_bill

Record a bill a vendor sent: who, their number, the dates, the amount. It waits for a person to approve paying it; nothing is paid from here. You were handed a vendor's invoice (a PDF, a photo, an email). Record what it says: the vendor's name, their invoice number, the bill date, the due date (or the days they give), the amount and currency as printed, and the category in the person's words. Never invent a number or a date; empty beats guessed. The same vendor and number is refused a second time, so a bill forwarded twice is caught. Then tell the person it is waiting for their approval: only a person approves paying a bill (purch_approve_bill), and the payment itself happens in their bank. purch_payables shows what is coming due against the cash on their latest statement. Effects: bill recorded, waiting for approval.

Input Schema

NameRequiredDescriptionDefault
amountYesThe total due, as printed. In cents (integer minor units) — 1250 means $12.50.
numberNoThe vendor's own invoice number, as printed.
reasonNoWhere it came from: "emailed by Acme on the 3rd".
vendorYesThe vendor's name as a person would say it (Acme Supply).
categoryNoWhat it is for, in the person's words (supplies, contractor, rent).
currencyNoISO 4217, as printed. Defaults to the company currency.
due_dateNoWhen it is due, as printed. ISO date, YYYY-MM-DD.
bill_dateYesThe date on the bill. ISO date, YYYY-MM-DD.
file_hashNoA hash of that file, if you have one.
file_nameNoThe file you were handed, for the record. The file itself stays with the person.
terms_daysNoOr the days the bill gives (30 for net 30), when it prints no due date.
descriptionNoA line about it, if the bill has one.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations it discloses the dedupe rule ('the same vendor and number is refused a second time'), the approval lifecycle, and the preservation rule ('Never invent a number or a date; empty beats guessed'). It closes with an explicit effects statement. These are behaviors an agent could not infer from readOnlyHint=false/idempotentHint=false alone.

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?

Front-loaded with the core purpose, then extraction guidance, then workflow routing. Slightly long and the closing 'Effects: bill recorded, waiting for approval' restates the earlier approval sentence, but no sentence is filler.

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 12 params, no output schema, and mutation annotations, the description covers what to extract, what happens on success, duplicate handling, and who approves next. It stops short of saying how to recover from a rejected duplicate or what the created bill's identifier looks like, which matters without an output schema.

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?

Schema coverage is already 100%, so the baseline is 3; the description adds genuine guidance on how to fill fields — vendor name 'as a person would say it', amount and currency 'as printed', category 'in the person's words', and bill date vs due date vs terms_days. That is more than restating the schema.

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?

Specific verb and resource: 'Record a bill a vendor sent: who, their number, the dates, the amount,' and it explicitly bounds scope with 'nothing is paid from here.' It does not, however, address the near-identical sibling p2p_record_vendor_bill (PO-matched vendor bills), leaving an agent to guess between the two.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit triggering situation ('You were handed a vendor's invoice (a PDF, a photo, an email)') and rules out the wrong expectation ('nothing is paid from here'), pointing to purch_approve_bill for approval, the bank for payment, and purch_payables for cash-against-due.

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.