Skip to main content
Glama
cmendezs

mcp-invoicenow-sg

generate_invoice_sg

Generate Singapore e-invoice UBL 2.1 XML from structured invoice data, returning the applied customization and profile IDs for PINT-SG or Peppol BIS Billing 3.0.

Instructions

Build an SGInvoice from structured data and serialize it to UBL 2.1 XML.

invoice_data['profile'] (CustomizationID) and invoice_data['business_process'] (ProfileID) select PINT-SG or SG Peppol BIS Billing 3.0, and must be a matched pair (TX2_Annex Annex B) — use get_profile_urn_sg to look up both values together rather than setting them independently. Returns the UBL XML (as a string) plus the customization_id/profile_id that were applied. Does not validate against Schematron — call validate_invoice_sg on the returned XML for that.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
invoice_dataYesInvoice fields matching the SGInvoice schema (see get_profile_urn_sg for the profile URN to set).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses the output shape (UBL XML string plus customization_id/profile_id), the TX2_Annex Annex B matched-pair requirement, and the important boundary that Schematron validation is not performed. This is strong behavioral transparency beyond the schema.

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 three compact paragraphs with no filler. The first sentence states the core purpose, the second handles profile-selection semantics, and the third covers return values and the validation boundary. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one complex structured parameter and an output schema, the description covers input semantics, profile selection rules, return format, and the downstream validation step. It gives an agent everything needed to call the tool correctly and know what to do next.

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?

Although schema coverage is 100%, the description adds crucial meaning beyond the generic invoice_data schema. It identifies invoice_data['profile'] as CustomizationID and invoice_data['business_process'] as ProfileID, explains that they select PINT-SG or SG Peppol BIS Billing 3.0, and requires them to be a matched pair. This materially helps an agent construct valid input.

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-resource pair: 'Build an SGInvoice from structured data and serialize it to UBL 2.1 XML.' It clearly distinguishes itself from the sibling validate_invoice_sg by explicitly stating that it does not validate against Schematron, and from get_profile_urn_sg by directing the agent there for profile lookup.

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?

The description gives explicit routing guidance: use get_profile_urn_sg to look up both customization_id and profile_id together, and call validate_invoice_sg on the returned XML for Schematron validation. It also explains the matched-pair constraint, which tells the agent when not to set profile values independently.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cmendezs/mcp-invoicenow-sg'

If you have feedback or need assistance with the MCP directory API, please join our Discord server