e-conomic MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@e-conomic MCP ServerList the first 10 customers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
e-conomic-mcp-server
Perfect for anyone who, like me, is more geek than bookkeeper. Finally there is a bit of fun in bookkeeping. Who would have thought.
Getting started
Install dependencies:
npm installRun the server:
npm startRelated MCP server: fiken-mcp
Environment variables
The server reads e-conomic credentials from the environment:
ECONOMIC_APP_SECRET_TOKEN(required)ECONOMIC_AGREEMENT_GRANT_TOKEN(required)ECONOMIC_BASE_URL(optional, defaults tohttps://restapi.e-conomic.com)ECONOMIC_DEBUG(optional, set totrueto emit JSON debug logs to stderr)
You'll find all the information on both tokens you need to get started here. It's a bit complex but not as boring and annoying as it looks like by first glimpse. Pinky promise!
Recommended ways to supply tokens
Local development: keep secrets in
.envand runnpm startfrom the repo root sodotenvloads them.Desktop MCP clients: either start the server from a shell that has
.envloaded, or pass env variables in the client config if you want the client to spawn the server for you.CI/shared environments: use your secret manager (GitHub Actions secrets, etc.) and inject env vars at runtime. Do not commit
.env.
Tools
Tool list:
Connectivity:
helloCustomers:
list_customers,get_customer,update_customerProducts:
list_products,upsert_productDraft invoices:
list_invoice_drafts,get_invoice_draft,create_invoice_draft,update_invoice_draft,book_invoice_draftBooked invoices:
list_booked_invoices,get_booked_invoice,download_invoice_pdfReference data:
list_payment_terms,list_customer_groups,list_vat_zones
Tool reference
Category | Tool | Purpose | Arguments | Returns / Notes |
Connectivity |
| Sanity check to confirm the server is reachable. |
| Greeting text. |
Customers |
| List customers with pagination. |
| Paginated customer collection. |
Customers |
| Fetch one customer by customer number. |
| Customer details. |
Customers |
| Update customer fields. |
| Updated customer object. |
Products |
| List products with pagination. |
| Paginated product collection. |
Products |
| Create or update a product. |
| Product object. |
Draft invoices |
| List draft invoices with pagination. |
| Paginated draft collection. |
Draft invoices |
| Fetch a draft invoice. |
| Draft invoice details. |
Draft invoices |
| Create a new draft invoice. |
| Created draft. If a line omits |
Draft invoices |
| Update a draft invoice. |
| Updated draft invoice. |
Draft invoices |
| Book a draft into a booked invoice. |
| Booked invoice payload. |
Booked invoices |
| List booked invoices with pagination. |
| Paginated booked invoice collection. |
Booked invoices |
| Fetch a booked invoice. |
| Booked invoice details. |
Booked invoices |
| Download a booked invoice PDF. |
|
|
Reference data |
| List payment terms. |
| Payment terms collection. |
Reference data |
| List customer groups. |
| Customer groups collection. |
Reference data |
| List VAT zones. |
| VAT zones collection. |
MCP client setup
Claude Desktop
Add an MCP server entry to your Claude Desktop config file and restart Claude Desktop:
{
"mcpServers": {
"e-conomic": {
"command": "node",
"args": ["/absolute/path/to/e-conomic-mcp-server/src/server.js"],
"env": {
"ECONOMIC_APP_SECRET_TOKEN": "your_token",
"ECONOMIC_AGREEMENT_GRANT_TOKEN": "your_token",
"ECONOMIC_BASE_URL": "https://restapi.e-conomic.com"
}
}
}
}Common config locations:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\\Claude\\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Claude Code
Add the MCP server via Claude Code:
claude mcp add-json e-conomic '{
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/e-conomic-mcp-server/src/server.js"],
"env": {
"ECONOMIC_APP_SECRET_TOKEN": "...",
"ECONOMIC_AGREEMENT_GRANT_TOKEN": "...",
"ECONOMIC_BASE_URL": "https://restapi.e-conomic.com"
}
}'Use --scope project to write a shared .mcp.json file in the repo, or --scope user to make it global for your user.
Codex CLI (OpenAI)
Add the MCP server using Codex CLI:
codex mcp add e-conomic --env ECONOMIC_APP_SECRET_TOKEN=... \
--env ECONOMIC_AGREEMENT_GRANT_TOKEN=... \
--env ECONOMIC_BASE_URL=https://restapi.e-conomic.com \
-- node /absolute/path/to/e-conomic-mcp-server/src/server.jsCodex stores MCP configuration in ~/.codex/config.toml if you prefer to edit it directly.
Gemini CLI
Add to your Gemini CLI settings (user or project settings):
{
"mcpServers": {
"e-conomic": {
"command": "node",
"args": ["/absolute/path/to/e-conomic-mcp-server/src/server.js"],
"env": {
"ECONOMIC_APP_SECRET_TOKEN": "your_token",
"ECONOMIC_AGREEMENT_GRANT_TOKEN": "your_token",
"ECONOMIC_BASE_URL": "https://restapi.e-conomic.com"
}
}
}
}Settings files are located at ~/.gemini/settings.json (user) or <project>/.gemini/settings.json (project). System-wide settings live under /etc/gemini-cli/settings.json (Linux), C:\\ProgramData\\gemini-cli\\settings.json (Windows), or /Library/Application Support/GeminiCli/settings.json (macOS).
License
MIT License. See LICENSE for details.
Available Tools
17 toolsbook_invoice_draftBook invoice draftC
Book a draft invoice into a booked invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| bookWithNumber | No | Optional booked invoice number | |
| draftInvoiceNumber | Yes | Draft invoice number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states the basic action. It does not mention side effects such as whether the draft is deleted, whether the operation is reversible, required permissions, or error conditions. The optional 'bookWithNumber' parameter's effect is also unexplained, leaving the agent to guess about behavior.
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 a single, focused sentence that directly conveys the tool's core purpose. It contains no filler or irrelevant details, making it efficient and easy to parse.
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?
The tool lacks an output schema and annotations, and the description is minimal, failing to explain the operation's full impact. For example, it does not describe what happens to the draft invoice after booking, nor the return value. Given the low complexity, the description is still under-specified for an agent to use it safely without additional context.
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 schema descriptions for both parameters are present and cover 100% of the parameters, so the baseline is 3. The description adds no additional meaning beyond the schema—it does not explain how 'bookWithNumber' interacts with the booking process or why it is optional.
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 states the action ('book') and the resource ('draft invoice'), with the outcome being 'booked invoice'. This distinguishes it from sibling tools like create_invoice_draft and update_invoice_draft, though it does not explicitly name alternatives. The verb 'book' is domain-specific but clear in the invoice context.
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 description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or scenarios where other tools (e.g., update_invoice_draft) would be more appropriate. This is a significant gap given the presence of related draft and booked invoice tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_invoice_draftCreate invoice draftC
Create a draft invoice in e-conomic.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Invoice date (YYYY-MM-DD) | |
| lines | Yes | Invoice lines | |
| dueDate | No | ||
| currency | Yes | Invoice currency (ISO 4217) | |
| newCustomer | No | Customer payload when creating a missing customer | |
| layoutNumber | No | ||
| recipientName | No | ||
| customerNumber | Yes | Customer number in e-conomic | |
| paymentTermsNumber | No | ||
| recipientVatZoneNumber | No | ||
| createCustomerIfMissing | No | Create customer if it does not exist |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only states the action. It does not disclose side effects like automatic customer creation via createCustomerIfMissing, or that it creates a draft rather than a booked invoice, nor does it mention error conditions or permissions.
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 extremely short, almost to the point of under-specification. While concise, it sacrifices needed detail and does not earn its place as a standalone, informative description.
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 complex tool with 11 parameters, nested objects, and no output schema, this one-sentence description is drastically incomplete. It fails to cover prerequisites, return values, or behavior, making it insufficient for an agent to use confidently.
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 55%, yet the description adds no parameter information whatsoever. It does not explain required fields, optional fields like newCustomer, or behaviors such as how createCustomerIfMissing works, leaving the agent to rely entirely on 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?
The description clearly states the tool creates a draft invoice in e-conomic, using a specific verb and resource. It is distinct from siblings like update_invoice_draft and book_invoice_draft by emphasizing the creation step.
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?
No guidance is provided on when to use this tool versus alternatives like update_invoice_draft or book_invoice_draft. It also lacks context on prerequisites, such as requiring an existing customer or how to handle missing customers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_invoice_pdfDownload invoice PDFA
Download a booked invoice PDF as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| bookedInvoiceNumber | Yes | Booked invoice number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the output is base64, which is a useful behavioral detail beyond a simple 'download'. However, it does not mention error handling, permissions, or behavior for invalid/not-booked invoice numbers.
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 a single, clear sentence that conveys the action, the target, and the output format with no unnecessary words. It is front-loaded and easily parsed.
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 tool with one parameter and no output schema, the description adequately communicates the return format (base64 PDF) and identifies the resource type (booked invoice). Minor gaps exist around error cases and the need for prior booking, but the tool's purpose and primary use are clear.
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 schema has 100% coverage and the single parameter 'bookedInvoiceNumber' is described as 'Booked invoice number'. The description adds no further meaning beyond the schema, so the baseline score of 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?
The description uses a specific action verb ('Download') with a clear resource ('a booked invoice PDF') and specifies the output format ('as base64'). It clearly distinguishes this tool from sibling tools like get_booked_invoice, which likely returns invoice data rather than the PDF file.
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?
No guidance is provided on when to use this tool versus alternatives such as get_booked_invoice or list_booked_invoices. The description does not mention prerequisites, scenarios where this is the preferred choice, or any explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_booked_invoiceGet booked invoiceA
Fetch a booked invoice by number.
| Name | Required | Description | Default |
|---|---|---|---|
| bookedInvoiceNumber | Yes | Booked invoice number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Fetch', which implies a read operation, but it does not disclose error handling (e.g., not found), required permissions, or response structure. This leaves significant behavioral gaps.
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 a single, front-loaded sentence with no redundant wording. It efficiently communicates the tool's purpose and fits the simplicity of the tool.
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 tool, the description covers the core purpose and input. However, it lacks details on return values, error behavior, and usage context. Since there is no output schema and no annotations, the description is minimally adequate but with clear gaps.
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 schema fully documents the only parameter (bookedInvoiceNumber) with type, description, and constraint. The description's 'by number' reiterates the schema without adding extra meaning, so the baseline of 3 applies due to 100% schema coverage.
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 states 'Fetch a booked invoice by number' with a specific verb ('fetch'), a specific resource ('booked invoice'), and the identifier method ('by number'). This distinguishes it from sibling tools like get_invoice_draft and list_booked_invoices.
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 usage is implied: you use this tool when you have a booked invoice number and need the invoice details. However, there is no explicit guidance on when to use this vs alternatives like list_booked_invoices or get_invoice_draft, nor any exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customerGet customerA
Fetch a single customer by customer number.
| Name | Required | Description | Default |
|---|---|---|---|
| customerNumber | Yes | Customer number in e-conomic |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It indicates a read operation ('Fetch') but does not disclose behavior such as error handling if the customer is not found, whether it returns null or throws, or any authentication requirements. This is minimal for a simple fetch.
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 a single, focused sentence that front-loads the action and resource, with no redundant words or fluff.
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-fetch tool with one parameter, the description conveys the essential operation. However, without an output schema or error behavior, it leaves some ambiguity about return format and edge cases, making it adequate but not comprehensive.
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 schema already fully describes the only parameter with 100% coverage, including a description ('Customer number in e-conomic'). The description merely repeats 'by customer number' without adding additional context, so it adds little 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?
The description uses the specific verb 'Fetch' and resource 'a single customer' with the key 'customer number', clearly distinguishing it from siblings like list_customers (plural) and update_customer. It precisely conveys both the operation and its scope.
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 description implies use when you have a specific customer number, providing clear context for a single-record lookup. However, it does not explicitly name alternatives or state when not to use it, such as 'use list_customers to retrieve multiple customers'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoice_draftGet invoice draftA
Fetch a draft invoice by number.
| Name | Required | Description | Default |
|---|---|---|---|
| draftInvoiceNumber | Yes | Draft invoice number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the basic read operation but does not disclose return behavior (e.g., what happens if the draft invoice is not found), response structure, or any authorization requirements. It adds no information beyond what the title and schema already indicate.
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 a single, front-loaded sentence with no redundant words. It directly conveys the operation without excessive detail, making it appropriately concise for a simple fetch tool.
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 fetch, the description is adequate but lacks information about the return value (no output schema exists) and error handling. It also does not clarify the distinction from get_booked_invoice beyond the word 'draft'. This is a minimal viable description but has clear gaps.
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 input schema provides full coverage with a description for draftInvoiceNumber. The description's 'by number' adds only marginal context, as the schema already describes the parameter. With 100% schema coverage, the baseline of 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?
The description 'Fetch a draft invoice by number' uses a specific verb ('fetch') and resource ('draft invoice') with a clear lookup criterion. It distinguishes this tool from siblings like list_invoice_drafts (which lists drafts) and get_booked_invoice (which retrieves booked invoices).
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 description clearly implies use when a specific draft invoice needs to be retrieved by its number. It does not explicitly state when not to use it or mention alternatives, but the context is unambiguous for a single-item fetch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
helloHelloA
Return a friendly greeting.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name to greet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the return type (a greeting) but does not mention optional parameters, formatting, or any side effects. For a simple read-only utility, this is adequate but minimal.
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?
A single concise sentence that is front-loaded and contains no filler. Every word 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?
Given the extreme simplicity of the tool and the schema's parameter description, the description is largely complete. It lacks an example output or explicit statement that the tool is a testing utility, but it is sufficient for the trivial nature of the 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 coverage is 100% with the name parameter described as 'Name to greet'. The description adds no extra meaning beyond the schema, so the baseline score of 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?
The description 'Return a friendly greeting' uses a specific verb and resource, clearly distinguishing it from sibling business tools. It fully states what the tool does.
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?
No explicit guidance on when to use this tool versus alternatives. The context of being a greeting tool is implied but not stated, and no exclusions or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_booked_invoicesList booked invoicesB
Fetch a page of booked invoices.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to fetch (default 1). | |
| pageSize | No | Number of booked invoices per page (default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Fetch a page of booked invoices,' which largely restates the title and adds little behavioral context. It does not disclose read-only semantics, ordering, default behavior, or what 'booked' implies, leaving the agent to infer safety and side effects.
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 a single, focused sentence that is front-loaded with the action and resource. Every word contributes meaning without redundancy or filler.
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 paginated list tool, the description is minimally viable. However, with no output schema, no annotations, and no guidance on distinguishing from sibling list tools, it lacks richer context about response format or typical use cases that would make it fully complete.
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% with both 'page' and 'pageSize' having descriptive comments. The description adds no extra meaning beyond the schema, so a baseline score of 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?
The description uses a specific verb ('Fetch') and resource ('booked invoices') with a scope ('a page'), clearly distinguishing it from sibling tools like list_invoice_drafts (drafts) and get_booked_invoice (single invoice). It indicates pagination, which is a key differentiator.
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 description provides no guidance on when to use this tool versus alternatives. It does not mention that this is for browsing booked invoices or that sister tools like list_invoice_drafts are for different states. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customer_groupsList customer groupsA
Fetch a page of customer groups.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to fetch (default 1). | |
| pageSize | No | Number of customer groups per page (default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is minimal, using 'Fetch' to imply a read operation, but with no annotations, it does not disclose other behavioral aspects such as authentication, side effects, or pagination behavior beyond what the schema indicates. It is not misleading but lacks depth.
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 a single, front-loaded sentence without filler words. It efficiently communicates the tool's purpose with no 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 simple list operation, the description is mostly adequate. It clearly states what is fetched and the schema covers pagination parameters. However, since there is no output schema, the description could provide a bit more detail on the return format, but it does not severely hinder comprehension.
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 input schema provides full descriptions for both page and pageSize, so the tool description does not need to add parameter semantics. The description adds no extra value beyond referring to 'a page', which is already covered in the schema, so 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?
The description clearly states the tool's function with the verb 'Fetch' and the resource 'customer groups', distinguishing it from sibling tools like list_customers and get_customer. It precisely indicates a paginated read operation.
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 description implies usage for listing customer groups, but it does not provide explicit guidance on when to use this tool versus alternatives. There is no mention of exclusions or preferred scenarios compared to other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customersList customersA
Fetch a page of customers from the e-conomic API.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to fetch (default 1). | |
| pageSize | No | Number of customers per page (default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. The verb 'Fetch' clearly indicates a read-only operation, and the pagination parameters imply a non-mutating list action. However, it lacks details on potential rate limits, sorting/filtering behavior, or any side effects, which would be useful for a complete picture.
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 a single, concise sentence that directly states the tool's purpose without any fluff or repetition. Every word contributes value.
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 list tool with optional pagination parameters and no output schema, the description is adequate. It identifies the resource and pagination behavior without needing to explain return fields. However, it could benefit from a brief note that it returns an array of customer objects, given the absence of an output schema.
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 input schema already fully describes both parameters (page and pageSize) with defaults and ranges. The description's mention of 'page' adds no new meaning beyond the schema, so it aligns with the baseline for high schema coverage.
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 states the action ('Fetch') and resource ('customers'), and specifies it is paginated ('a page'). This distinguishes it from siblings like get_customer (which fetches a single customer) and list_products (different resource).
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 description implies use for retrieving customers in a paginated manner, which provides clear context. However, it does not explicitly mention when not to use it or point to alternatives like get_customer for single records, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invoice_draftsList invoice draftsB
Fetch a page of draft invoices.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to fetch (default 1). | |
| pageSize | No | Number of drafts per page (default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does convey read-only intent via 'Fetch' and pagination via 'a page', but lacks detail on return format, sorting, filtering, or any side effects. It adds only marginal behavior beyond the title and name.
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 a single concise sentence with no fluff. It is appropriately sized for a simple list tool, though it is slightly too terse to include any usage guidance. It is front-loaded and easy to parse.
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 tool's simplicity, the description is adequate: it states the primary function and pagination is covered by the schema. However, without an output schema or annotations, there is no mention of return fields, ordering, or permission requirements, leaving some gaps for an agent to infer.
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 parameters page and pageSize are fully documented with types, ranges, and defaults. The description adds no additional meaning beyond what the schema already provides, earning the baseline score of 3.
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 uses the specific verb 'Fetch' with resource 'a page of draft invoices', clearly indicating a listing operation for draft invoices. It implicitly distinguishes from sibling tools like get_invoice_draft (singular) and list_booked_invoices (booked vs draft), though it does not explicitly name 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?
The description provides no guidance on when to use this tool versus other sibling tools such as get_invoice_draft or book_invoice_draft. There is no context for selecting this tool, no exclusions, and no mention of prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payment_termsList payment termsA
Fetch a page of payment terms.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to fetch (default 1). | |
| pageSize | No | Number of payment terms per page (default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It mentions pagination via 'a page', but it does not describe sorting, filtering, authentication requirements, or the return format. This is minimal but not misleading.
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 a single sentence, immediately stating the core action. It contains no filler or redundant information, making it highly concise and well-structured.
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 list operation with no output schema, the description provides the essential information: it fetches a page of payment terms. However, it lacks details about the shape of the returned data or any behavioral caveats, though the schema covers the pagination parameters.
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 input schema already provides full descriptions for both 'page' and 'pageSize', including defaults and constraints. The description does not add any additional parameter semantics beyond using the word 'page', so it remains at 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?
The description clearly states the verb 'Fetch' and resource 'payment terms', adding scope with 'a page' to distinguish it from other list tools for different resources. This is a specific and unambiguous statement of purpose.
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 description implies the tool is used to fetch payment terms, but it does not explicitly state when to use it over alternatives or provide exclusions. Since no sibling tool for payment terms exists, the guidance is minimal but adequate for the task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsList productsA
Fetch a page of products.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to fetch (default 1). | |
| pageSize | No | Number of products per page (default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that this is a read operation returning a single page, which implies pagination and read-only behavior. However, with no annotations, it omits details like error handling, pagination edge cases, or any side effects. It meets the minimum bar but lacks richer behavioral context.
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?
A single, focused sentence that states exactly the core function. It is front-loaded with the essential information and contains no unnecessary 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?
For a simple list tool with fully documented optional parameters, this description is largely complete. It does not describe the return format, but the tool name and title make it obvious that products are returned. The lack of an output schema is not problematic here.
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 input schema already provides full descriptions for both page and pageSize (100% coverage). The description adds no additional parameter meaning beyond what the schema states, so it earns the baseline score.
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 'Fetch a page of products' uses a specific verb and resource, making it clear what the tool does. It distinguishes the tool from siblings like list_customers or upsert_product by naming both the action and the target entity.
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?
No usage guidance is provided. There is no mention of when to choose this tool over alternatives, nor any exclusions or context about other list tools. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vat_zonesList VAT zonesB
Fetch a page of VAT zones.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to fetch (default 1). | |
| pageSize | No | Number of VAT zones per page (default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a 'fetch' operation (implying read-only), but does not mention authorization requirements, rate limits, response format, or any side effects. The description is too minimal to disclose behavioral traits beyond the basic action.
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 a single, concise sentence that front-loads the core action and resource. No wasted words or redundant information, and it appropriately avoids repeating schema details.
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?
The tool is simple with two well-documented parameters, but no output schema or annotations exist. The description covers the basic purpose and pagination, but leaves out any mention of the return value structure or whether it returns a list of VAT zones. It is minimally viable but lacks some context that would help the agent fully understand the tool's behavior.
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 input schema fully describes both parameters (page and pageSize) with clear descriptions and defaults, so schema coverage is 100%. The description adds no extra parameter-specific meaning, but the baseline of 3 is appropriate since the schema already provides the necessary 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?
The description clearly states the tool's action ('Fetch') and resource ('a page of VAT zones'), using a specific verb and resource that distinguishes it from sibling tools like list_customers or list_products. The pagination aspect is also explicitly mentioned, making the purpose unambiguous.
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 description provides no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. It simply states the function without contextual cues about use cases or comparisons to other list tools. No alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_customerUpdate customerC
Update an existing customer in e-conomic.
| Name | Required | Description | Default |
|---|---|---|---|
| cvr | No | ||
| ean | No | ||
| zip | No | ||
| city | No | ||
| name | No | ||
| No | |||
| address | No | ||
| country | No | ||
| website | No | ||
| currency | No | Customer currency (ISO 4217) | |
| attention | No | ||
| vatZoneNumber | No | ||
| customerNumber | Yes | Customer number to update | |
| paymentTermsNumber | No | ||
| customerGroupNumber | No | ||
| telephoneAndFaxNumber | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It indicates a mutation (update) but does not mention whether it performs partial updates, how missing fields are handled, whether it validates input, what happens if the customer does not exist, or any error behavior.
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 a single concise sentence that communicates the core action without waste. However, it is under-specified for a tool with many parameters and no annotations, so it does not fully earn its place as the only descriptive text.
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 tool's complexity (16 parameters, no annotations, no output schema), the description is completely inadequate. It fails to explain return values, error scenarios, or which fields are supported for update, leaving the agent without crucial decision-making information.
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 input schema has 16 parameters with only 13% description coverage (customerNumber and currency). The description adds no parameter-level meaning, merely saying 'update an existing customer' without explaining any fields or the update 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?
The description clearly states the tool updates an existing customer in e-conomic, which identifies the action and resource. It distinguishes from sibling tools like list_customers and get_customer, though it does not enumerate which fields can be updated.
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?
No explicit guidance is provided on when to use this tool versus alternatives or any preconditions (e.g., customer must exist). Usage is only implied by the verb 'update', but there is no context about when to choose this over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_invoice_draftUpdate invoice draftC
Update an existing draft invoice in e-conomic.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Invoice date (YYYY-MM-DD) | |
| lines | No | Invoice lines | |
| dueDate | No | Due date (YYYY-MM-DD) | |
| currency | No | Invoice currency (ISO 4217) | |
| layoutNumber | No | ||
| recipientName | No | ||
| draftInvoiceNumber | Yes | Draft invoice number | |
| paymentTermsNumber | No | ||
| recipientVatZoneNumber | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden for behavioral disclosure. It only says 'Update an existing draft invoice', which barely restates the tool name. There is no mention of whether the update is partial or full replacement, what happens to unspecified fields, or any side effects. This is a tautology of the title.
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 concise and free of fluff, but it is arguably too terse for the tool's complexity. It is a single sentence that sacrifices useful specifics. It earns a middle score for being short and clear, yet under-specified relative to the 9-parameter schema.
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 9 parameters, no annotations, and no output schema, this one-sentence description is severely incomplete. It does not explain required fields (beyond the schema), update semantics, return values, or any edge cases. The agent would have to rely entirely on the schema and guess significant behavioral aspects.
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 description adds no meaning to the parameters. While five of nine properties have schema descriptions, the remaining four (layoutNumber, recipientName, paymentTermsNumber, recipientVatZoneNumber) lack any explanation, and the description does not compensate for these gaps or clarify how the nested 'lines' array behaves during an update.
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 states the action ('Update') and the resource ('existing draft invoice'), which distinguishes it from sibling tools like create_invoice_draft (new) and book_invoice_draft (booking). The word 'existing' is a specific differentiator.
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?
No guidance is provided on when to use this tool versus alternatives. It does not mention that it should be used for modifying an already-created draft, nor does it reference create_invoice_draft for new drafts. The only hint is 'existing', but no explicit usage context or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_productUpsert productB
Create or update a product by productNumber.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Product name | |
| barCode | No | Barcode | |
| costPrice | No | Cost price | |
| salesPrice | No | Sales price | |
| unitNumber | No | Unit number | |
| productNumber | Yes | Product number | |
| departmentNumber | No | Department number | |
| productGroupNumber | No | Product group number (required when creating) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It only says 'Create or update,' but does not disclose whether the operation is idempotent, what happens to existing fields on update, whether specific permissions are needed, or any side effects. This is inadequate for a mutation tool.
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 a single sentence that front-loads the operation ('Create or update') and identifies the resource ('product'). It is concise, clear, and every word 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?
For an 8-parameter mutation tool with no annotations and no output schema, the description is too sparse. It does not explain upsert behavior, distinguishing between create and update paths, or the significance of required vs optional parameters. The schema covers parameter details but not the behavioral semantics needed for correct invocation.
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 parameters are fully documented in the schema. The description adds the key fact that productNumber is the lookup key, which is helpful but not substantial. It does not clarify upsert-specific requirements like productGroupNumber being required only on create, which is left to 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?
The description clearly states 'Create or update a product by productNumber.' This is a specific verb+resource+key, distinguishing it from sibling tools like list_products or update_customer. It precisely communicates the upsert operation and the unique identifier.
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 description implies usage: use this when you need to create or update a product. However, it does not explicitly mention when not to use it or contrast with alternatives. Since there is no other product-write tool among siblings, the context is clear but not fully explicit.
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.
17 tool updates
v1.0.0- First observed
book_invoice_draft - First observed
create_invoice_draft - First observed
download_invoice_pdf - First observed
get_booked_invoice - First observed
get_customer - First observed
get_invoice_draft - First observed
hello - First observed
list_booked_invoices - First observed
list_customer_groups - First observed
list_customers - First observed
list_invoice_drafts - First observed
list_payment_terms - First observed
list_products - First observed
list_vat_zones - First observed
update_customer - First observed
update_invoice_draft - First observed
upsert_product
TDQS
Scored across 17 tools
Each tool targets a distinct resource-action pair: customers, products, invoice drafts, booked invoices, and reference data. List vs. get operations are clearly separated, and even the 'hello' tool is unambiguous.
Tools consistently use verb_noun snake_case (list_, get_, create_, update_, book_, download_, upsert_). The only outlier is 'hello', which breaks the pattern but is a trivial helper.
At 17 tools, this is slightly above the typical 3-15 range, but the count is justified by covering customers, products, invoices, and reference data. No tool feels redundant.
The invoice workflow is well covered from draft creation through booking to PDF download. However, customers lack a create operation and products lack a single get operation, leaving minor gaps.
Maintenance
Related MCP Connectors
Create PDF invoices from your AI chat: clients, numbering, VAT, overdue reports. All data is local.
Spanish Veri*factu invoicing: create invoices and manage billing from your AI assistant.
Chilean DTE/SII invoicing — issue invoices, reconcile payments and manage clients with AI agents.
Malaysian SME accounting, e-Invoice and payroll for your AI. 64 tools; writes are approved drafts.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables interaction with the Estonian e-arveldaja (RIK e-Financials) REST API to manage financial records like invoices and journal entries using natural language. It supports automating purchase invoice entry from PDFs, reconciling bank transactions, and generating financial reports.130234 npm34Apache 2.0
- AlicenseCqualityCmaintenanceEnables AI assistants to manage invoices, contacts, purchases, journal entries, and other accounting operations via the Fiken API.10013 npm1MIT
- AlicenseBqualityDmaintenanceEnables AI agents to manage invoices, customers, suppliers, accounting entries, orders, and more through Fortnox's cloud accounting platform via natural language.2027 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with the SuperFaktura invoicing system for managing invoices, clients, and expenses via natural language.1Apache 2.0