Skip to main content
Glama

Stackin

list_invoices

Read-onlyIdempotent

List the invoices this company issued, newest first.

One document type at a time: pass nfse for services or nfe for goods. A company that issues both has to be asked twice.

Use it for "my last invoices", "what was rejected today", and to find a document whose access key the user does not have at hand. Read-only.

An authorized document is stored as issued, which is the value the rows carry; authorized is accepted as a synonym and asks for the same thing.

Every row carries both identifiers the other tools need: id, which reissue_invoice takes, and access_key, which consult_invoice, cancel_invoice and get_invoice_pdf take. A rejected row has an id and no access key — the authorizer never assigned one.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
statusNo
document_typeNonfse

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNoThe rows on this page.
pageNo
totalNoHow many exist, not how many are here.
per_pageNo
next_pageNo
prev_pageNo
total_pagesNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A5/5.0
Behavior5/5

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

Annotations already mark the tool as read-only and idempotent, and the description aligns with these without contradiction. It adds valuable behavioral details beyond annotations: the status synonym handling ('authorized' = 'issued'), the guarantee that every row carries the needed identifiers, and the specific caveat that rejected rows lack an access key. This is substantive and non-redundant.

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 longer than typical but every sentence earns its place. It opens with the core purpose, then layers constraints, usage hints, synonym nuances, and row semantics in a logical order. There is no fluff or repetition; the density of useful information justifies the length.

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?

Given that an output schema exists (so return format is already documented), the description covers all other essential context: ordering, one-document-type-at-a-time behavior, synonym handling, identifier semantics, and rejected-row behavior. No critical detail an agent needs to call this tool correctly is missing.

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 coverage is 0%, so the description must compensate, and it does thoroughly. It explains document_type ('nfse' for services, 'nfe' for goods), interprets status (synonym, rejected implications), and clarifies the meaning of the row output (id vs access_key). Even though limit and offset are not explicitly described, their schema defaults and bounds make them self-evident; the description adds value where it is needed most.

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 states a precise verb-resource pair ('List the invoices this company issued') and adds ordering (newest first), which clearly identifies the tool's function. It also differentiates from siblings by specifying that it only returns issued (not received) invoices and references other tools that consume the returned identifiers, making it unambiguous which tool to select.

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 usage scenarios ('my last invoices', 'what was rejected today', finding a document without an access key) and states a key constraint (one document type at a time). It also clarifies the read-only nature and the importance of passing the correct document_type, effectively directing the agent when to use this tool over alternatives.

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.