Skip to main content
Glama
uol-mcp

uol-mcp

by jakubbegera

Get received invoice

get_purchase_invoice
Read-onlyIdempotent

Retrieve a single received purchase invoice by ID, including line items, VAT, and payment symbols for bookkeeping review.

Instructions

One received (purchase) invoice with line items, VAT and payment symbols.

Input Schema

NameRequiredDescriptionDefault
invoice_idYesinvoice_id from search_purchase_invoices

Output Schema

NameRequiredDescriptionDefault
vatYesSum of VAT amounts
noteYes
typeYes
itemsYes
totalYesTotal including VAT (Celkem s DPH)
numberYesSupplier's invoice number
sellerYes
statusYesdraft = koncept (UOL "valid"), issued = vystavená ("confirmed"), cancelled = storno ("invalid")
currencyYes
due_dateYes
tax_dateYesDUZP — taxable supply date
invoice_idYesInternal id, usable with get_purchase_invoice
issue_dateYes
external_idYes
vat_amountsYesUOL vat1..vat3 amounts in rate order
department_idYes
exchange_rateYes
received_dateYes
payment_methodYes
constant_symbolYes
specific_symbolYes
variable_symbolYes
total_without_vatYesTax base (Celkem bez DPH)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.1

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety and idempotency profile needs no restating. The description does add useful content about what the response holds (line items, VAT, payment symbols), but it says nothing about not-found behavior, error cases, or what the openWorld flag means for external data freshness.

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?

A single short line with no filler and the scope qualifier front-loaded. It is slightly under-specified as a sentence fragment rather than a statement of what the tool does, but nothing is wasted.

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?

The tool is simple, carries rich annotations, has a fully described schema and an output schema, so the description does not need to explain returns in depth. It could have stated the retrieval-in-by-ID semantics and pointed at search_purchase_invoices, but almost everything an agent needs sits in structured fields.

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?

There is a single parameter at 100% schema description coverage, so the schema already carries the meaning and even names the producing tool. The description adds nothing about the ID's format or source, which is the correct baseline for a fully documented one-parameter 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?

It names a specific resource, a received (purchase) invoice, and enumerates what comes back (line items, VAT, payment symbols), which cleanly separates it from the sibling get_sales_invoice. The only weakness is the absence of an explicit verb, since the fragment reads as an object rather than an action.

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

Usage Guidelines2/5

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

It supplies no guidance on when to call this or when to call search_purchase_invoices instead, nor any prerequisite such as needing the ID first. The workflow hint only appears in the schema as 'invoice_id from search_purchase_invoices', so the agent has to infer the lookup pattern from structured fields rather than the description.

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