Skip to main content
Glama
xuanji86

GunStore-POS Admin MCP

by xuanji86

tax_liability

Calculate sales-tax liability roll-forward for a period directly from GL sales-tax accounts, with collections and remittances split by voucher type and closing balance verified.

Instructions

Sales-tax liability roll-forward for the period, straight from the GL. TRAP: an invoice's "Total Taxes and Charges" includes shipping and other charges — it is NOT the sales tax; only GL rows on the sales-tax account(s) count, which is all this tool reads.

Accounts are resolved dynamically — the default enabled Sales Taxes and Charges Template's distinct account_heads (the same rule the server's setup/tax.py and Sales Report use; nothing hardcoded) — and echoed back in the result. Rows are is_cancelled=0; cancel+amend restatements land on the amended invoice's posting_date.

Output: opening_balance (before from_date), collected credits split by voucher (Sales Invoice = sales accrual; Journal Entry = adjustments, listed separately, never merged into sales), remitted debits split by voucher (Journal Entry = remittance payments; Sales Invoice = return / amend reversals), any other voucher type fail-closed into its own "other" bucket, and closing_balance. The identity closing == opening + credits − debits is asserted internally to the cent; a classification that drops rows raises instead of returning numbers. Single-state (TX) system — there is deliberately no state parameter. Read-only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
companyNo
to_dateYes
from_dateYes
Behavior5/5

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

With no annotations, the description carries the full burden, and it is exceptionally transparent. It discloses read-only behavior, dynamic account resolution rules, is_cancelled=0 filtering, voucher-level splits in output, internal identity assertion to the cent, fail-closed behavior on dropped rows, and the deliberate single-state design with no state parameter. This far exceeds what annotations alone would provide.

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?

The description is long but information-dense; the core purpose is front-loaded in the first sentence and the rest of the paragraphs each add necessary behavioral or output detail. The only minor concern is length, but no sentence is filler and the structure flows from purpose to trap to mechanics to output.

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?

Despite no output schema and no annotations, the description provides a full picture: source, calculation rule, account resolution, row filtering, output composition, validation behavior, and state limitations. For a financial computation tool with three parameters, this is complete enough for an agent to invoke it correctly without additional documentation.

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 description coverage is 0%, so the description must compensate. It gives meaningful semantics for from_date and to_date through 'for the period' and 'opening_balance (before from_date)', and explicitly explains why there is no state parameter. However, it does not explain the optional company parameter or date formats, so parameter documentation remains incomplete.

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 and resource: 'Sales-tax liability roll-forward for the period, straight from the GL.' The first sentence names exactly what the tool computes and from which source, distinguishing it from siblings like gl_entries, financial_statement, and sales_report. The follow-up trap clarifies that this tool reads only GL rows on sales-tax accounts, so an agent can immediately understand what it is and is not.

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 clearly implies the tool is for period-based sales-tax liability roll-forward and explicitly says it reads the GL, so an agent can infer when to use it versus broader GL or financial-statement tools. It does not name alternatives or state explicit 'when not to use' conditions, but the scope and the trap about 'Total Taxes and Charges' give strong contextual guidance.

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/xuanji86/gunstore-pos-mcp'

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