Skip to main content
Glama

billcom_create_bill

DestructiveIdempotent

Create a Bill.com bill for a saved vendor with invoice number, dates, and amount. Optional line items must sum to the amount, and approval is required for accuracy.

Instructions

Create one Bill.com bill for a saved vendor with exact dates and amount; optional line items must sum to the amount. Approval required.

Args: vendorId (required): Saved Bill.com vendor id. invoiceNumber (required): Supplier invoice number. invoiceDate (required): Invoice date (YYYY-MM-DD). dueDate (required): Due date (YYYY-MM-DD), not before the invoice date. amount (required): Positive amount with at most two decimals. description: Optional memo (up to 140 characters). billLineItems: Optional line items as JSON objects with amount, description, chartOfAccountId. project_id: Authenticated Project UUID. project_ref: Exact project correlation reference. connector_account_ref: Project-bound connector account alias. idempotency_key: Stable business-action identity. effect: Claimed read or write effect; Spring verifies it. approval_ref: Approved platform task UUID when resuming a write.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
amountNo
effectNo
dueDateNo
vendorIdNo
project_idNo
descriptionNo
invoiceDateNo
project_refNo
approval_refNo
billLineItemsNo
invoiceNumberNo
idempotency_keyNo
connector_account_refNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changedv0.1.1
    • addedInput schema / properties / amount
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Amount"
      +}
    • addedInput schema / properties / approval_ref
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Approval Ref"
      +}
    • removedInput schema / properties / arguments
      Removed value: -{
      -  "default": "{}",
      -  "title": "Arguments",
      -  "type": "string"
      -}
    • addedInput schema / properties / billLineItems
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Billlineitems"
      +}
    • addedInput schema / properties / connector_account_ref
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Connector Account Ref"
      +}
    • addedInput schema / properties / description
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Description"
      +}
    • addedInput schema / properties / dueDate
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Duedate"
      +}
    • addedInput schema / properties / effect
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Effect"
      +}
    • addedInput schema / properties / idempotency_key
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Idempotency Key"
      +}
    • addedInput schema / properties / invoiceDate
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Invoicedate"
      +}
    • addedInput schema / properties / invoiceNumber
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Invoicenumber"
      +}
    • addedInput schema / properties / project_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Project Id"
      +}
    • addedInput schema / properties / project_ref
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Project Ref"
      +}
    • addedInput schema / properties / vendorId
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Vendorid"
      +}
  2. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the annotations, the description discloses that approval is required, that line items must sum to the amount, and that dates and amounts are validated ('due date not before invoice date', 'positive amount with at most two decimals'). This adds meaningful behavioral context. It does not contradict the annotations; readOnlyHint=false aligns with a create operation, and idempotentHint is supported by the idempotency_key parameter.

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?

The description is efficiently structured: a one-sentence purpose statement, a short approval warning, then a compact Args list with each parameter on its own line. With 13 parameters, the length is justified, and there is no filler or redundant explanation.

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 a complex 13-parameter tool with 0% schema coverage, the description is highly complete: it covers required fields, formats, constraints, line-item structure, idempotency, effect verification, and approval references. The presence of an output schema reduces the need to document return values. It falls just short of a 5 because it does not explain error outcomes or how approval_ref is obtained, but those are partially inferable from surrounding platform tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden of parameter meaning. It compensates thoroughly: it marks required parameters, explains each argument (e.g., 'Saved Bill.com vendor id', 'Supplier invoice number', 'Stable business-action identity'), and gives validation rules and formats such as YYYY-MM-DD and at most two decimals. This is exactly what an agent needs to invoke the tool correctly.

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?

The description opens with a specific verb and resource: 'Create one Bill.com bill for a saved vendor.' It clearly names Bill.com as the target system, which distinguishes it from sibling creations like xero_create_bill, quickbooks_create_bill, and clio_create_bill. The scope ('saved vendor', 'exact dates and amount') adds precision beyond the tool name.

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?

The description gives clear usage context: this is for creating a new Bill.com bill against an already-saved vendor, and it flags that approval is required. It does not explicitly name alternatives or state when not to use this tool, but the Bill.com-specific wording and the distinction from list/approve siblings make the intended use reasonably clear.

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