InvoiceVista Invoice Maker
Server Details
See revenue, unpaid invoices, open quotes and your product catalog for each of your businesses.
- Status
- Healthy
- Uptime
- 99.4% over 23 days
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-11-25
- URL
TDQS
Scored across 9 tools
The four summary tools (quotes, receivables, revenue, subscription) each target a clearly distinct metric, and the descriptions explicitly cross-reference what they are NOT for. The only mild overlap is among get_business, list_businesses, and show_business_overview, which all touch business data, but the descriptions distinguish settings vs. listing vs. dashboard.
All tools follow a predictable snake_case verb_noun pattern (get_business, list_products, get_revenue_summary, show_business_overview), with open_invoicevista being the only slightly compressed name. No mixing of camelCase or inconsistent verb styles.
Nine tools is well within the ideal 3-15 range and each one earns its place covering a distinct reporting or lookup need. No redundant or filler tools.
The surface is a read-only analytics set, but it lacks customer-level and invoice/payment-level retrieval (no list_customers, get_invoice, or list_payments), which the descriptions repeatedly disclaim. For an invoicing domain this leaves notable gaps an agent would hit when asked about specific records.
Available Tools
9 toolsget_businessGet business detailsARead-onlyIdempotentInspect
Use this when someone asks about one business's invoicing setup, such as its currency, country, language or timezone. Returns the business's name, currency, country code, language and timezone, or not-found. Not for revenue or unpaid invoices.
| Name | Required | Description | Default |
|---|---|---|---|
| businessId | Yes | Business id: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| business | Yes | Null when not found. Contact, legal-entity, address, banking and integration fields are omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read profile (readOnly, idempotent, non-destructive), so the lower bar applies; the description still adds the 'or not-found' outcome, which the annotations do not convey. It does not mention auth or rate-limit behavior, so it stops short of 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the usage condition and return fields come first, and the exclusion is appended as a short guardrail. No filler or restated name/title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with annotations covering the safety profile and an output schema present, nothing needed to invoke it correctly is missing. Field enumeration is mildly redundant with the output schema but reinforces the invocation trigger.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage, including the 24-hex-char pattern, so the schema carries the full semantics. The description adds no extra meaning about businessId, which is the expected baseline when coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('one business's invoicing setup') and enumerates the fields involved (currency, country, language, timezone), which cleanly separates it from the revenue/receivables siblings. The explicit 'Not for revenue or unpaid invoices' sharpens the boundary further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('when someone asks about one business's invoicing setup') and names the exclusions, implicitly routing the agent to get_revenue_summary and get_receivables_summary instead. Both when-to-use and when-not-to-use are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quote_pipeline_summarySummarize quotes and acceptanceARead-onlyIdempotentInspect
Use this when someone asks how many quotes or estimates they sent, what they were worth, or how many were accepted or rejected. Returns quote count, total value, counts by status and an acceptance rate; defaults to the last 90 days, at most 366, skipping drafts and counting at most 500 quotes. Not for a single quote.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | Last UTC day to include, YYYY-MM-DD, at most 366 days after startDate; defaults to today | |
| startDate | No | First UTC day to include, YYYY-MM-DD; defaults to 89 days before endDate (a 90-day window) | |
| businessId | Yes | Business id: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| range | Yes | |
| currency | Yes | ISO 4217 alpha-3 business currency, or null when unset |
| quoteCount | Yes | |
| quotedAmount | Yes | |
| statusBreakdown | Yes | Non-draft quotes issued in the range, per status, with count and amount. Quote and customer identifiers, contacts, tax ids, addresses, notes, line descriptions and free text are never returned. |
| amountMissingCount | Yes | |
| acceptanceRatePercent | Yes | Approved quotes as a percentage of approved plus rejected; null when the count is a lower bound or none was decided |
| quoteCountIsLowerBound | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe-read profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds genuinely useful behavior beyond that: the 90-day default window, the 366-day cap, draft-skipping, and a 500-quote counting limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the usage trigger followed by the returned fields and constraints. No filler or repetition; every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't enumerate return values, and the annotations cover safety semantics. It supplies default window, caps, and draft exclusion, leaving only minor gaps such as permissions or rejection-handling nuances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (businessId, startDate, endDate) are already documented in the schema, including the date defaults and window cap. The description largely restates these; the extra 500-quote cap applies to results rather than a parameter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (summarize) and resource (quotes/estimates), plus the exact outputs: quote count, total value, counts by status, and acceptance rate. This clearly distinguishes it from sibling tools like get_receivables_summary and get_revenue_summary, which cover different domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with a concrete user-intent trigger ("when someone asks how many quotes or estimates they sent, what they were worth, or how many were accepted or rejected") and adds an exclusion ("Not for a single quote"). It does not name a specific alternative tool for single-quote retrieval, but no such sibling exists in the list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_receivables_summaryCheck unpaid and overdue invoicesARead-onlyIdempotentInspect
Use this when someone asks how much customers owe, what is unpaid or overdue, or how old unpaid invoices are. Returns open invoice count and amount, the invoices marked overdue, and age buckets by days past due, from the newest 500 invoices; partially paid ones are counted but left out of amounts. Not for chasing or charging a customer.
| Name | Required | Description | Default |
|---|---|---|---|
| businessId | Yes | Business id: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| aging | Yes | Fully owed open invoices by days past their due date (issue date when none) as of asOfDate. Invoice and customer identifiers, exact dates, contacts, tax ids, addresses, notes, line text, bank or card data, processor data and payment actions are never returned. |
| asOfDate | Yes | UTC calendar date in YYYY-MM-DD format |
| currency | Yes | ISO 4217 alpha-3 business currency, or null when unset |
| overdueAmount | Yes | |
| openInvoiceCount | Yes | |
| outstandingAmount | Yes | |
| amountMissingCount | Yes | |
| sourceInvoiceCount | Yes | |
| overdueInvoiceCount | Yes | Fully owed invoices whose status is OVERDUE; a PENDING invoice past its due date is counted only in aging |
| sourceInvoiceCountIsLowerBound | Yes | |
| partiallyPaidCountExcludedFromAmount | Yes | Open partially paid invoices left out of every amount because their remaining balance is not stored |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the 500-newest-invoice cap and the quirk that partially paid invoices are counted but excluded from amounts. It doesn't mention auth or rate limits, but those are not implied by the annotations either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all load-bearing: usage trigger, return shape with caveats, and exclusion. The most decision-relevant information (what it's for) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations cover the safety profile, an output schema exists so return structure need not be re-explained, and the description still supplies the non-obvious limits (500-invoice scope, partial-payment handling) and boundary against adjacent tools. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (businessId) and schema description coverage is 100%, with the schema documenting the 24-hex-character pattern. The description adds no additional meaning about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (receivables) with concrete outcomes: open invoice count/amount, overdue invoices, and age buckets by days past due. An agent can distinguish this from get_revenue_summary or get_quote_pipeline_summary without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggering conditions ('when someone asks how much customers owe, what is unpaid or overdue') and an explicit exclusion ('Not for chasing or charging a customer'). Both the when and the when-not are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_revenue_summarySummarize invoiced and paid amountsARead-onlyIdempotentInspect
Use this when someone asks how much they invoiced or were paid in a period, like last month. Returns invoice and payment counts and totals in the business currency, invoices by status and a collection rate; defaults to the last 90 days, at most 366, skipping drafts and counting at most 500 documents. Not for a single invoice or customer.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | Last UTC day to include, YYYY-MM-DD, at most 366 days after startDate; defaults to today | |
| startDate | No | First UTC day to include, YYYY-MM-DD; defaults to 89 days before endDate (a 90-day window) | |
| businessId | Yes | Business id: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| range | Yes | |
| currency | Yes | ISO 4217 alpha-3 business currency, or null when unset |
| invoiceCount | Yes | |
| paymentCount | Yes | |
| invoicedAmount | Yes | |
| collectedAmount | Yes | Sum of the payments recorded in the range, whatever their status; not proof of bank settlement |
| collectionRatePercent | Yes | collectedAmount as a percentage of invoicedAmount; null when a total is incomplete or nothing was invoiced |
| invoiceStatusBreakdown | Yes | Non-draft invoices issued in the range, per status, with count and amount. Aggregates only: invoice, payment, customer, line-item, processor, card, bank, note and identifier data are never returned. |
| invoiceCountIsLowerBound | Yes | |
| paymentCountIsLowerBound | Yes | |
| invoiceAmountMissingCount | Yes | |
| paymentAmountMissingCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds real behavioral context beyond them: a default 90-day window, a hard 366-day ceiling, that drafts are skipped, and that at most 500 documents are counted. These are exactly the silent constraints that would otherwise cause a wrong call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the trigger phrase and followed by the return payload and the scoping limit. No filler, and the exclusion is placed last as a natural boundary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail is optional, yet the description briefly signals the shape (counts, totals, status breakdown, collection rate). Combined with the default window, caps, draft exclusion, and scope boundary, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 and the schema already documents businessId, startDate, and endDate formats and defaults. The description nonetheless reinforces the window semantics (default 90 days, cap 366) and adds a non-parameter constraint (500-document counting cap), slightly exceeding the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('how much they invoiced or were paid in a period') and enumerates the returned artifacts: invoice and payment counts and totals in business currency, invoices by status, and a collection rate. The closing exclusion ('Not for a single invoice or customer') further sharpens its scope against narrower siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use this when someone asks how much they invoiced or were paid in a period, like last month') and an explicit when-not ('Not for a single invoice or customer'). It stops short of naming which sibling to use instead for per-customer or receivables questions, so routing between get_receivables_summary and this tool is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subscriptionCheck InvoiceVista plan and limitsARead-onlyIdempotentInspect
Use this when someone asks which InvoiceVista plan a business is on, or how many customers, invoices or users it allows. Returns the active or past-due plan's name, status, billing frequency and limits, or the Free plan's defaults when there is none. Not for customer invoices or payments.
| Name | Required | Description | Default |
|---|---|---|---|
| businessId | Yes | Business id: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| subscription | Yes | Plan entitlements; limits are caps, not usage. Payment-processor identifiers and credentials are never returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds real behavioral context beyond that: it returns the active OR past-due plan, and falls back to Free plan defaults when no plan exists โ a non-obvious edge case an agent would otherwise have to discover at runtime.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler: usage trigger first, return contract and boundary second. Every clause earns its place, and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape detail is already structured; the description still summarizes the useful cases (active, past-due, no-plan fallback). With a single well-documented parameter and full annotation coverage, nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema coverage is 100% โ the schema documents businessId including its 24-hex-character pattern. The description adds nothing about the parameter, so the baseline 3 applies when structured data does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (retrieve the InvoiceVista subscription plan for a business) and enumerates exactly what it yields: plan name, status, billing frequency and limits. The closing sentence distinguishes it from sibling reporting tools by ruling out customer invoices and payments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use this when someone asks which plan a business is on, or how many customers, invoices or users it allows') and adds an explicit exclusion ('Not for customer invoices or payments'). Both when-to-use and when-not-to-use are present, so no inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_businessesList your businessesARead-onlyIdempotentInspect
Use this when someone asks which businesses they invoice from in InvoiceVista, or a business's id is needed. Returns each business's id, name, currency, country, language and timezone, 25 per page by default (no addresses or bank details). Not for listing customers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Businesses per page, from 1 to 100; defaults to 25 | |
| cursor | No | The nextCursor of the previous page of this listing; absent for the first page |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Businesses in the signed-in organization. Addresses, contact details, payment settings and secrets are omitted. |
| hasMore | Yes | |
| nextCursor | No | Cursor for the next page; absent on the last page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely useful context beyond that: the default page size, what is deliberately omitted (addresses, bank details), and the field set returned. It stops short of explaining pagination via cursor, but that is largely in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the trigger condition, then the payload shape, then the exclusion. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a two-parameter, zero-required listing tool. An output schema exists, yet the description helpfully summarizes the returned fields and pagination default, and the omission of addresses/bank details preempts wrong expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both limit and cursor are fully documented in the schema, which sets the baseline at 3. The description's mention of '25 per page by default' corroborates the limit parameter but adds no cursor semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list businesses) plus the exact fields returned (id, name, currency, country, language, timezone) and the page size. It explicitly distinguishes itself from the sibling case by noting 'Not for listing customers'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering conditions ('when someone asks which businesses they invoice from, or a business's id is needed') and an explicit exclusion ('Not for listing customers'). An agent can route to or away from this tool without inspecting siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsList products and pricesARead-onlyIdempotentInspect
Use this when someone asks what products or services a business sells or what it charges for them. Returns each catalog item's name, price and stored tax value, most recently edited first, 25 per page by default. Not for what a customer was invoiced.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Products per page, from 1 to 100; defaults to 25 | |
| cursor | No | The nextCursor of the previous page of this listing; absent for the first page | |
| businessId | Yes | Business id: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Catalog items, most recently edited first. price is in the business currency; tax is the product's stored tax value, null when unset. Record identifiers, line-item text and customer data are excluded. |
| hasMore | Yes | |
| nextCursor | No | Cursor for the next page; absent on the last page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuinely new behavior: result ordering (most recently edited first) and default page size (25 per page), which the agent cannot infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler: the trigger comes first, then return/ordering/pagination facts, then the exclusion. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not enumerate return values, and it still adds ordering and paging context. Cursor mechanics are left to the schema, which documents them fully, so the definition is essentially complete for this read-only listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter already carries format and range documentation; the description only restates limit's default of 25. Baseline 3 is appropriate when the schema does the parameter work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list catalog products/services with prices) and explicitly scopes what it is not (what a customer was invoiced), which cleanly separates it from the invoice/receivables-oriented siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger condition ('when someone asks what products or services a business sells or what it charges') and adds a negative boundary ('Not for what a customer was invoiced'), so the agent knows both when and when not to reach for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_invoicevistaInvoiceVista Invoice MakerARead-onlyIdempotentInspect
Use this when someone wants to open InvoiceVista and browse their businesses, billing overview, revenue, receivables and quote pipeline in an interactive sidebar. Returns up to 100 businesses to start from (no customer or individual financial records). Not for creating invoices or recording payments.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| truncated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds useful scope context: the interactive sidebar nature, the 100-business cap, and the explicit exclusion of customer or individual financial records, which tells the agent what this tool will not surface. Minor gap: no mention of how the interactive session terminates or refreshes, but that is marginal. No contradiction 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary trigger ('when someone wants to open InvoiceVista'), followed by scope and exclusions. Every phrase earns its place; no filler or repetition of annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description rightly avoids explaining return values and instead focuses on trigger, scope cap, and exclusions. Combined with annotations that cover safety and idempotency, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so schema coverage is effectively complete and there is nothing to document. The baseline for 0 params is 4, and the description appropriately does not invent or confuse any parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('open InvoiceVista') and enumerates exactly what surfaces appear (businesses, billing overview, revenue, receivables, quote pipeline). It also distinguishes from siblings by clarifying it returns up to 100 businesses rather than the focused summaries that get_receivables_summary or get_quote_pipeline_summary provide.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('when someone wants to open InvoiceVista and browse') and when not to ('Not for creating invoices or recording payments'). This gives a clear routing decision against the sibling read-only summary tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_business_overviewShow business overviewARead-onlyIdempotentInspect
Use this when someone wants a quick overview or dashboard of one business in InvoiceVista. Returns an overview card with the business details, counts of customers, invoices, payments and quotes with status mixes (each capped at 100), and up to 12 catalog products (no customer or invoice details). Not for revenue over a period.
| Name | Required | Description | Default |
|---|---|---|---|
| businessId | Yes | Business id: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| business | Yes | Null when not found. Individual customer or financial records, identifiers, numbers, exact dates or amounts, contacts, tax ids, addresses, notes, line descriptions, PCI or bank data, processor data, credentials and payment actions are never returned. |
| products | Yes | |
| quoteCount | Yes | |
| invoiceCount | Yes | |
| paymentCount | Yes | |
| productCount | Yes | |
| customerCount | Yes | |
| quoteStatusBreakdown | Yes | |
| invoiceStatusBreakdown | Yes | |
| quoteCountIsLowerBound | Yes | |
| invoiceCountIsLowerBound | Yes | |
| paymentCountIsLowerBound | Yes | |
| productCountIsLowerBound | Yes | |
| customerCountIsLowerBound | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavioral detail beyond them: per-status counts are capped at 100 and only up to 12 catalog products are returned, and it explicitly excludes customer/invoice details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences that front-load the use case and then the payload shape; every clause carries information. 'quick overview or dashboard' is mildly redundant but overall there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full annotations and an output schema, nothing needed to invoke it correctly is missing. The description goes beyond the minimum by describing caps, product limits, and excluded data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single businessId parameter is fully documented (24 lowercase hex chars), so the schema does the work. The description adds no syntax or format detail for the parameter, which is the expected baseline when the schema is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (shows a business overview card) and enumerates the exact payload: business details, counts of customers/invoices/payments/quotes with status mixes, and up to 12 catalog products. It also carves itself away from a sibling with 'Not for revenue over a period', so an agent can distinguish it from get_revenue_summary without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use condition ('when someone wants a quick overview or dashboard of one business') and an explicit exclusion ('Not for revenue over a period'). It stops short of naming the alternative sibling tool by name, leaving the agent to infer get_revenue_summary from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_quote_pipeline_summary3 fields changed- removed
Input schema / properties / endDate / $refRemoved value: -"#/properties/startDate" - added
Input schema / properties / endDate / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / endDate / typeAdded value: +"string"
- Changed
get_revenue_summary3 fields changed- removed
Input schema / properties / endDate / $refRemoved value: -"#/properties/startDate" - added
Input schema / properties / endDate / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / endDate / typeAdded value: +"string"
1 tool update
- Added
open_invoicevista
1 tool update
- Changed
get_subscription1 field changed- changed
Output schema / properties / subscription / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "billingFrequency": { - "anyOf": [ - { - "enum": [ - "MONTHLY", - "YEARLY" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "maxNumberOfCustomers": { - "type": [ - "number", - "null" - ] - }, - "maxNumberOfInvoices": { - "type": [ - "number", - "null" - ] - }, - "maxNumberOfReminders": { - "type": [ - "number", - "null" - ] - }, - "maxNumberOfUsers": { - "type": [ - "number", - "null" - ] - }, - "productName": { - "anyOf": [ - { - "maxLength": 200, - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "enum": [ - "ACTIVE", - "PAST_DUE", - "CANCELED" - ], - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "status", - "productName", - "billingFrequency", - "maxNumberOfCustomers", - "maxNumberOfInvoices", - "maxNumberOfReminders", - "maxNumberOfUsers" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "billingFrequency": { + "anyOf": [ + { + "enum": [ + "MONTHLY", + "YEARLY" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "maxNumberOfCustomers": { + "type": [ + "number", + "null" + ] + }, + "maxNumberOfInvoices": { + "type": [ + "number", + "null" + ] + }, + "maxNumberOfUsers": { + "type": [ + "number", + "null" + ] + }, + "productName": { + "anyOf": [ + { + "maxLength": 200, + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "enum": [ + "ACTIVE", + "PAST_DUE", + "CANCELED" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "status", + "productName", + "billingFrequency", + "maxNumberOfCustomers", + "maxNumberOfInvoices", + "maxNumberOfUsers" + ], + "type": "object" + }, + { + "type": "null" + } +]
8 tool updates
- Changed
get_business2 fields changed- changed
Input schema / properties / businessId / descriptionPrevious value: -"24-character lowercase hexadecimal business id"New value: +"Business id: 24 lowercase hexadecimal characters" - added
Output schema / properties / business / descriptionAdded value: +"Null when not found. Contact, legal-entity, address, banking and integration fields are omitted."
- Changed
get_quote_pipeline_summary5 fields changed- changed
Input schema / properties / businessId / descriptionPrevious value: -"Tenant-owned InvoiceVista business id"New value: +"Business id: 24 lowercase hexadecimal characters" - changed
Input schema / properties / endDate / descriptionPrevious value: -"Last UTC day to include; defaults to today"New value: +"Last UTC day to include, YYYY-MM-DD, at most 366 days after startDate; defaults to today" - changed
Input schema / properties / startDate / descriptionPrevious value: -"First UTC day to include; defaults to 89 days before endDate"New value: +"First UTC day to include, YYYY-MM-DD; defaults to 89 days before endDate (a 90-day window)" - added
Output schema / properties / acceptanceRatePercent / descriptionAdded value: +"Approved quotes as a percentage of approved plus rejected; null when the count is a lower bound or none was decided" - added
Output schema / properties / statusBreakdown / descriptionAdded value: +"Non-draft quotes issued in the range, per status, with count and amount. Quote and customer identifiers, contacts, tax ids, addresses, notes, line descriptions and free text are never returned."
- Changed
get_receivables_summary4 fields changed- changed
Input schema / properties / businessId / descriptionPrevious value: -"Tenant-owned InvoiceVista business id"New value: +"Business id: 24 lowercase hexadecimal characters" - added
Output schema / properties / aging / descriptionAdded value: +"Fully owed open invoices by days past their due date (issue date when none) as of asOfDate. Invoice and customer identifiers, exact dates, contacts, tax ids, addresses, notes, line text, bank or card data, processor data and payment actions are never returned." - added
Output schema / properties / overdueInvoiceCount / descriptionAdded value: +"Fully owed invoices whose status is OVERDUE; a PENDING invoice past its due date is counted only in aging" - added
Output schema / properties / partiallyPaidCountExcludedFromAmount / descriptionAdded value: +"Open partially paid invoices left out of every amount because their remaining balance is not stored"
- Changed
get_revenue_summary6 fields changed- changed
Input schema / properties / businessId / descriptionPrevious value: -"Tenant-owned InvoiceVista business id"New value: +"Business id: 24 lowercase hexadecimal characters" - changed
Input schema / properties / endDate / descriptionPrevious value: -"Last UTC day to include; defaults to today"New value: +"Last UTC day to include, YYYY-MM-DD, at most 366 days after startDate; defaults to today" - changed
Input schema / properties / startDate / descriptionPrevious value: -"First UTC day to include; defaults to 89 days before endDate"New value: +"First UTC day to include, YYYY-MM-DD; defaults to 89 days before endDate (a 90-day window)" - added
Output schema / properties / collectedAmount / descriptionAdded value: +"Sum of the payments recorded in the range, whatever their status; not proof of bank settlement" - added
Output schema / properties / collectionRatePercent / descriptionAdded value: +"collectedAmount as a percentage of invoicedAmount; null when a total is incomplete or nothing was invoiced" - added
Output schema / properties / invoiceStatusBreakdown / descriptionAdded value: +"Non-draft invoices issued in the range, per status, with count and amount. Aggregates only: invoice, payment, customer, line-item, processor, card, bank, note and identifier data are never returned."
- Changed
get_subscription2 fields changed- changed
Input schema / properties / businessId / descriptionPrevious value: -"24-character lowercase hexadecimal business id"New value: +"Business id: 24 lowercase hexadecimal characters" - added
Output schema / properties / subscription / descriptionAdded value: +"Plan entitlements; limits are caps, not usage. Payment-processor identifiers and credentials are never returned."
- Changed
list_businesses4 fields changed- changed
Input schema / properties / cursor / descriptionPrevious value: -"Opaque cursor from a previous page"New value: +"The nextCursor of the previous page of this listing; absent for the first page" - added
Input schema / properties / limit / descriptionAdded value: +"Businesses per page, from 1 to 100; defaults to 25" - added
Output schema / properties / items / descriptionAdded value: +"Businesses in the signed-in organization. Addresses, contact details, payment settings and secrets are omitted." - added
Output schema / properties / nextCursor / descriptionAdded value: +"Cursor for the next page; absent on the last page"
- Changed
list_products5 fields changed- changed
Input schema / properties / businessId / descriptionPrevious value: -"Tenant-owned InvoiceVista business id"New value: +"Business id: 24 lowercase hexadecimal characters" - changed
Input schema / properties / cursor / descriptionPrevious value: -"Opaque cursor from a previous page"New value: +"The nextCursor of the previous page of this listing; absent for the first page" - added
Input schema / properties / limit / descriptionAdded value: +"Products per page, from 1 to 100; defaults to 25" - added
Output schema / properties / items / descriptionAdded value: +"Catalog items, most recently edited first. price is in the business currency; tax is the product's stored tax value, null when unset. Record identifiers, line-item text and customer data are excluded." - added
Output schema / properties / nextCursor / descriptionAdded value: +"Cursor for the next page; absent on the last page"
- Changed
show_business_overview2 fields changed- changed
Input schema / properties / businessId / descriptionPrevious value: -"Tenant-owned InvoiceVista business id"New value: +"Business id: 24 lowercase hexadecimal characters" - added
Output schema / properties / business / descriptionAdded value: +"Null when not found. Individual customer or financial records, identifiers, numbers, exact dates or amounts, contacts, tax ids, addresses, notes, line descriptions, PCI or bank data, processor data, credentials and payment actions are never returned."
8 tool updates
- First observed
get_business - First observed
get_quote_pipeline_summary - First observed
get_receivables_summary - First observed
get_revenue_summary - First observed
get_subscription - First observed
list_businesses - First observed
list_products - First observed
show_business_overview
Related MCP Connectors
Bookkeeping for owner-operated businesses. Query transactions, invoices, and reports.
Financial OS for small businesses: transactions, invoices, customers, time tracking and reports.
Run a service business from chat: clients, jobs, quotes, invoices, payments, expenses.
Search customers, manage quotes, work orders, action items, and calendar events for your business
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides structured, read-mostly access to small-business back-office data including customers, invoices, and account notes, allowing Claude to query overdue invoices, revenue summaries, and more.MIT
- AlicenseBqualityAmaintenanceAI-native business management โ invoices, expenses, clients, products, quotes, and webhooks. 31 tools for Claude, Cursor, Windsurf, and Cline.100356 npm11MIT
- AlicenseAqualityCmaintenanceEnables MCP clients to work with Wave invoicing for a single business, including looking up customers and invoices, creating customers and draft invoices, and approving, sending, or recording payments behind a preview-then-confirm step.17MIT
- AlicenseNot gradedqualityBmaintenanceQuery customers, invoices, and accounts via QuickBooks Online API.27 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.