InvoiceFlow
Server Details
Create invoices, clients, and Stripe payment links from any agent. 7 tools. No email or deletes.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- EarthyPunyapat/invoiceflow
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
Each tool pairs a distinct resource with a distinct action: create_client vs list_clients, create_invoice vs get_invoice vs list_invoices vs share_invoice. The descriptions explicitly separate the easily-confused pair (create_invoice produces a draft; share_invoice returns the payment link), so an agent can select correctly.
All seven tools use the same namespace prefix followed by a consistent verb_noun snake_case pattern (create_client, list_invoices, get_invoice, share_invoice). No mixed casing or verb-style drift.
Seven tools is well within the ideal 3-15 range for a focused invoicing server, and each tool covers a distinct, necessary step (identity check, client setup, invoice creation/read, sharing). Nothing feels padded or redundant.
The surface covers the happy path (identify account, create client, create/read/list invoices, share for payment) but has notable lifecycle gaps: no update or void/delete for invoices or clients, no get_client, and no explicit finalize/send transition despite create_invoice producing only a DRAFT. An agent hitting a correction or cancellation scenario has no tool to recover.
Available Tools
7 toolsinvoiceflow_create_clientAInspect
Create a customer record. A client is required before an invoice can be created. Returns the new client id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Customer or company name. Required. | |
| Yes | Billing email. Required in practice - it is where the invoice goes if a human later sends it. | ||
| notes | No | Optional internal note. Never shown to the customer. | |
| company | No | Optional company name if it differs from name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load. It does disclose the key outcome ('Returns the new client id') and the ordering constraint, which is genuinely useful. But it says nothing about permissions, duplicate-email handling, or whether repeated calls create duplicates — significant gaps for a write tool with zero annotation coverage.
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 short sentences, each earning its place: the action, the business prerequisite, and the return value. Front-loaded and waste-free.
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 simple four-parameter create with a fully documented schema and no output schema, the description covers the action, prerequisite, and return value. Missing duplicate/uniqueness behavior and error cases keeps it from a 5.
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 schema itself spells out name, email, notes, and company semantics, so the baseline is 3. The description adds no parameter-level detail beyond what is already structured.
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: 'Create a customer record.' Combined with the note that a client is a prerequisite for an invoice, an agent can tell this apart from invoiceflow_create_invoice and invoiceflow_list_clients. It stops short of explicitly naming those siblings as alternatives.
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?
'A client is required before an invoice can be created' gives a clear condition that triggers use of this tool. There is no guidance on the reverse case (e.g., checking list_clients for an existing record before creating a duplicate), so work 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.
invoiceflow_create_invoiceAInspect
Create a DRAFT invoice for an existing client. Amounts are INTEGER CENTS: unitPrice 25000 means $250.00, not $25,000. Do not send totals - the server derives subtotal and total from the line items. Does not email anyone.
| Name | Required | Description | Default |
|---|---|---|---|
| tax | No | Optional total tax in INTEGER CENTS. Defaults to 0. | |
| items | Yes | One or more line items. At least one is required. | |
| notes | No | Optional note printed on the invoice. | |
| dueDate | No | Due date, ISO yyyy-mm-dd. If omitted, 14 days from today is used. | |
| clientId | Yes | id of an existing client, from list_clients or create_client. Required. | |
| currency | No | 3-letter ISO code. Defaults to USD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description provides essential behavioral traits: amounts must be in 'integer cents', the server automatically calculates totals, and it does not trigger an email notification. These are critical operational 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?
The description is perfectly sized. The first sentence establishes the core action, and the second sentence immediately addresses critical implementation constraints, ensuring no waste of words.
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 the complexity of billing and invoicing, the description addresses all necessary constraints: unit handling (cents), calculation logic (server-derived totals), and side effects (no email). It is contextually complete for the operation.
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?
While the schema confirms the data types, the description adds high-value semantics by explaining the conversion rule (25000 means $250.00) and clarifies that the `total` is not an input parameter as it is derived by the server.
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?
The description clearly and immediately defines the tool's purpose: creating a DRAFT invoice for an existing client. This scope distinguishes it from other invoice-related siblings like list_invoices or share_invoice.
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?
It clearly states the required context ('for an existing client'), which is a usage guideline. However, it does not explicitly guide the agent on when to use this tool versus potentially an 'invoice generation' tool (if one existed), focusing instead on the state (Draft).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoiceflow_get_invoiceAInspect
Fetch one invoice by id, including line items and derived totals.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Invoice id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears the full burden. It does add value by disclosing that line items and derived totals come back, but says nothing about permissions, error behavior for a missing id, or whether totals are computed server-side at read time.
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?
One sentence, zero waste, and the key information (single invoice, by id, returns line items and totals) 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?
For a simple single-parameter read with a complete schema, the description covers what it returns well enough that an agent can call it confidently. The absence of any output schema makes the brief return-value note valuable, though error and permission context is still 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?
Schema coverage is 100% for the single 'id' parameter, so the schema already does the documentation work. The description adds only 'by id' with no format, prefix, or example, 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?
Specific verb ('Fetch') plus resource ('one invoice') and scope ('by id'), with a note that line items and derived totals are included. It is distinguishable from invoiceflow_list_invoices by the singular/id-based framing, though it never names that sibling.
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?
Usage is only implied: the singular 'by id' framing signals retrieval of one known invoice rather than a listing. There is no explicit when-to-use statement and no pointer to invoiceflow_list_invoices as the alternative for discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoiceflow_list_clientsAInspect
List existing clients. Use this before create_client to avoid making duplicate customer records.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional search term matched against name or email. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden; it implies a read-only listing and gives a dedupe motivation, which is useful. But it never states result limits, pagination, ordering, or what happens when the list is large — material gaps for a listing tool with zero annotation coverage.
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, zero filler, with the action and the motivating workflow constraint 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?
For a one-optional-param read tool with no output schema and no annotations, the definition covers purpose, trigger condition, and the one parameter via schema. The only meaningful omission is return behavior such as result caps or whether the full client list is returned.
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 coverage is 100% and the single `query` parameter is fully documented as an optional substring match on name or email. The description adds no extra semantics beyond that, 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 verb and resource ("List existing clients"), immediately distinguishing it from the sibling write tool create_client. It doesn't mention the other list sibling (list_invoices), but the resource noun makes the split obvious.
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 says to call this before create_client to avoid duplicate customer records, which names the alternative and the ordering condition. It stops short of saying when not to use it (e.g., when a client ID is already known), so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoiceflow_list_invoicesAInspect
List invoices with their status and totals. Invoices belonging to other accounts are not visible and return as absent, not as errors.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional maximum number of results. | |
| status | No | Optional filter: DRAFT, SENT, PAID, OVERDUE, or CANCELLED. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers a genuinely non-obvious trait: invoices from other accounts appear as absent rather than raising errors, which prevents an agent from misreading a missing record as a permission failure. It stops short of covering ordering, pagination defaults, or required scopes.
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 short sentences, both load-bearing: the first frames the resource and return payload, the second front-loads the cross-account gotcha. Nothing is redundant or 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?
For a read-only two-optional-parameter list tool with no output schema, the description covers purpose and the key visibility caveat. Only minor gaps remain, such as default limit or result ordering, which are not essential to invoking 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 both limit and the status enum are already fully documented in the schema. The description adds no format, default, or interaction detail beyond that, 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 verb and resource ('List invoices') and adds what each result carries (status and totals). It is clearly distinguishable from the singular get_invoice and the mutating create_invoice, though it never names a sibling explicitly.
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?
The verb 'List' implies the browsing use case versus get_invoice for a known ID, but the description never says when to prefer one over the other or any preconditions. Usage is inferred from the name rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoiceflow_whoamiAInspect
Check which InvoiceFlow account this key belongs to and that the key works. Call this first; it is the cheapest way to fail early.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the cost profile ('cheapest') and its validation role, implying a non-mutating read. It stops short of explicitly stating it is read-only or whether failures surface as errors, but the fail-early framing conveys the key behavioral trait.
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 short sentences, zero waste, with the primary purpose front-loaded and the usage directive immediately after.
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?
No output schema exists, so the description ideally would hint at what comes back (account name/ID, key validity). It covers purpose and when-to-call well but leaves the return shape unspecified, a minor gap for a zero-param diagnostic.
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?
The tool takes zero parameters, so there is nothing to disambiguate; baseline 4 applies. The description correctly implies the implicit input is the API key itself.
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: check which InvoiceFlow account the key belongs to and whether the key works. This is unmistakably an identity/credential diagnostic, distinct from every sibling (create/list/get/share tools), though it doesn't explicitly contrast itself with them.
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 directs 'Call this first' and explains why: 'the cheapest way to fail early.' That is a clear when-to-use rule with a stated rationale, leaving little to inference.
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.
7 tool updates
- First observed
invoiceflow_create_client - First observed
invoiceflow_create_invoice - First observed
invoiceflow_get_invoice - First observed
invoiceflow_list_clients - First observed
invoiceflow_list_invoices - First observed
invoiceflow_share_invoice - First observed
invoiceflow_whoami
Related MCP Connectors
Send invoices from Claude and ChatGPT. One sentence becomes a PDF with a Stripe payment link.
Free invoice drafts, templates and direct PDF generation for AI agents. No account needed.
Invoicing tools for AI assistants: clients, draft invoices with computed tax, and email sending.
Stripe payments for AI agents. Create links, verify, manage customers.
Related MCP Servers
- AlicenseBqualityAmaintenanceAI-native business management — invoices, expenses, clients, products, quotes, and webhooks. 31 tools for Claude, Cursor, Windsurf, and Cline.100497 npm13MIT
- AlicenseAqualityCmaintenanceCreate free, no-signup invoices from your AI assistant — the create_invoice tool returns a link that opens blankinvoicemaker.com pre-filled, ready to download as a watermark-free PDF.240 npm1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query invoice data through tools that list and filter invoices, fetch a single invoice by ID, compute counts and USD totals, and surface overdue rows with totals. Keeps tabular finance data out of the prompt by exposing small, Zod-validated queries over a sample invoice CSV.MIT
- AlicenseNot gradedqualityBmaintenanceLets AI agents accept US payments (cards, Apple Pay, Google Pay) via Stripe hosted checkout. Includes tools to create payment links and query payment status.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.