Skip to main content
Glama

Invio Xero MCP

list_xero_quotes

list_xero_quotes
Read-only

List quotes from Xero for the current organisation, optionally filtered by status, by one contact, by an exact quote number, or by issue-date range (fromDate/toDate) or expiry-date range (expiryFromDate/expiryToDate) - all inclusive. Read-only; nothing is created or changed. Each quote carries its OWN currency straight from Xero - never assume it matches this user's Invio business currency. Returns up to 100 quotes for the requested page. Xero does NOT report a total page or item count for this endpoint (unlike invoices and credit notes) - if this call returns exactly 100 quotes, say there may be more and ask for the next page rather than treating 100 as the whole list; a shorter result IS the complete list for whatever filters were applied. The result always echoes back exactly which filters were applied (appliedFilters) - relay that, not just your own memory of what you asked for. Use get_xero_quote for full line-item detail on one quote.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number - Xero returns up to 100 quotes per page. Omit for page 1.
statusNoFilter to one Xero quote status (e.g. DRAFT, SENT, ACCEPTED). Omit for every status.
toDateNoOnly include quotes issued ON OR BEFORE this date, YYYY-MM-DD (inclusive).
fromDateNoOnly include quotes issued ON OR AFTER this date, YYYY-MM-DD (inclusive). Filters the issue date, never the expiry date.
contactIdNoFilter to quotes for one specific contact.
quoteNumberNoFilter to an exact quote number (e.g. "QU-0001").
expiryToDateNoOnly include quotes expiring ON OR BEFORE this date, YYYY-MM-DD (inclusive).
organisationNoThe Xero organisation to use, by its display name. Only needed if this connection reaches more than one organisation - omit it when there is only one.
expiryFromDateNoOnly include quotes expiring ON OR AFTER this date, YYYY-MM-DD (inclusive).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, but the description adds substantial behavioral context beyond that: currency is independent of the user's business currency, Xero does not report total counts for this endpoint, and the result echoes applied filters. These are critical behavioral traits the agent must know to avoid misinterpretation. No contradictions with annotations.

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 long but every sentence earns its place. It front-loads the core purpose and filters, then addresses pagination, currency, appliedFilters, and the sibling pointer in a logical order. There is zero fluff; each clause conveys a distinct, necessary fact.

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 9 optional parameters, no output schema, and unusual pagination behavior, the description covers everything the agent needs to call it correctly: the filter semantics, inclusive date boundaries, the no-total-count caveat, the 100-per-page limit, the appliedFilters echo, and the currency warning. It even points to get_xero_quote for line-item detail. Nothing essential is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by clarifying that date ranges are inclusive, that fromDate/toDate filter the issue date while expiryFromDate/expiryToDate filter the expiry date, and that quoteNumber is an exact match. It does not repeat every parameter but covers the nuances an agent would otherwise miss.

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 specific verb and resource ('List quotes from Xero') and enumerates the optional filters (status, contact, quote number, date ranges). It also explicitly distinguishes itself from the sibling get_xero_quote ('Use get_xero_quote for full line-item detail on one quote'), making it clear this tool is for listing summaries, not details. No ambiguity about what it does.

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 explicitly routes to the sibling get_xero_quote for line-item detail, telling the agent when to use that alternative. It also states this tool is read-only and that it returns up to 100 quotes per page, guiding the agent on pagination. The note about relaying appliedFilters is a direct usage instruction. This is explicit, actionable guidance.

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.

Resources