Skip to main content
Glama

wefact-mcp

PyPI version Python License: AGPL-3.0

An MCP server for the Dutch invoicing platform WeFact. Lets any MCP-compatible client (Claude Desktop, Claude Code, Cursor, Zed, …) read and modify your WeFact administration via natural language.

Stop typing in WeFact. Just tell Claude what to do.

Looking for the polished install + EULA + email support? Buy a commercial license: https://easeo.nl/diensten/wefact-mcp.

Quick start

1. Install

pip install wefact-mcp

2. Get a WeFact API key

In WeFact: Instellingen → API. Generate a key and whitelist your machine's IPv4 address (the API does not yet support IPv6).

3. Configure your MCP client

Claude Code

claude mcp add wefact -e WEFACT_API_KEY=your-key-here -- wefact-mcp

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "wefact": {
      "command": "wefact-mcp",
      "env": { "WEFACT_API_KEY": "your-key-here" }
    }
  }
}

Restart your MCP client and the WeFact tools should appear. Try:

Use the wefact-mcp whoami tool.

Related MCP server: AbraFlexi MCP Server

Tools

Generic escape hatch

Tool

Purpose

wefact_request(controller, action, params)

Call any WeFact endpoint.

whoami()

Sanity-check the connection.

Debtors (klanten)

list_debtors, get_debtor, create_debtor, update_debtor

Invoices (verkoopfacturen)

list_invoices, get_invoice, create_invoice, send_invoice, credit_invoice, mark_invoice_paid

Products

list_products, get_product

Subscriptions (abonnementen)

list_subscriptions, get_subscription

Credit invoices (inkoopfacturen)

list_credit_invoices, get_credit_invoice

Prompts

Prompt

Purpose

export_to_nixfact

Walk through migrating a WeFact administration to a Frappe/ERPNext successor.

feature_audit

Inventory which WeFact features your account actually uses.

Field names

Tools that take fields or params use the WeFact field names verbatim (DebtorCode, InvoiceLines, PriceExcl, …). The docs at developer.wefact.com stay directly applicable — copy parameter names from the docs without translation.

Pagination & filtering

List tools fetch all pages by default. Pass limit_pages=1 for the first page only (useful while exploring). Pass modified_since="2026-01-01" for incremental sync.

Limitations

  • WeFact's API is IPv4 only. Hosting this MCP behind an IPv6-only proxy will fail.

  • WeFact rate-limits the API. The client retries on transient failures with exponential backoff; persistent 429s surface as errors.

  • The API is not RESTful: every call is a POST to a single endpoint.

  • Some list endpoints return a flat list rather than the controller-plural key; the client falls back to the first list-valued field. If you hit an oddity, fall back to wefact_request and parse the response yourself.

Security model

  • The MCP server runs on your machine. No data passes through external servers.

  • The WeFact API key stays in your local environment (or your MCP client's config) — never in our hands.

  • No telemetry, no usage tracking, no phone-home.

  • Source available for audit (see Repository).

  • Independently reviewed for SQL injection, auth bypass, and credential leak vectors.

License

wefact-mcp is dual-licensed:

  • AGPL-3.0-or-later — free for AGPL-compatible use. If you run a modified version on a server that interacts with users over a network, you must offer those users the source code (per AGPL §13).

  • Commercial license — €197/year or €497 lifetime, ex VAT. For proprietary integrations, closed-source products, or hosted services that don't meet AGPL §13. Includes email support and 12 months of updates. Buy at https://easeo.nl/diensten/wefact-mcp.

For agency, white-label or platform partnerships — including a WeFact-side official integration — email nick@easeo.nl.

Disclaimer

This project is not affiliated with or endorsed by WeFact B.V. "WeFact" is a trademark of WeFact B.V. Use of this MCP server requires a valid WeFact account and API key, and is bound by WeFact's terms of service.

Available Tools

18 tools
create_debtorA

Create a new debtor.

Args: fields: Dict of WeFact debtor fields. Common ones: CompanyName, Initials, SurName, EmailAddress, Address, ZipCode, City, Country, TaxNumber, Sex. See developer.wefact.com for the full list.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral disclosures. It states 'Create a new debtor' but does not mention side effects (e.g., idempotency, duplicate handling), authentication needs, or rate limits. The behavior is straightforward but minimally described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences with no extraneous information. First sentence states purpose, second explains parameter. Efficiently front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values may be covered. However, the description lacks mention of required fields (schema shows 'fields' required, but not stated), error behavior, or confirmation of success. It partially compensates for low schema coverage but has gaps.

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

Parameters4/5

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

The schema has 0% coverage (only an object with additionalProperties). The description adds significant meaning by listing common fields and directing to external documentation, compensating for the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Create a new debtor.' It uses a specific verb and resource, distinguishing it from sibling tools like update_debtor and get_debtor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating a new debtor but does not explicitly state when to use it versus alternatives, nor does it mention prerequisites or scenarios to avoid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_invoiceB

Create a draft invoice.

Args: debtor_code: e.g. 'DB10000'. invoice_lines: list of line dicts. Each can have ProductCode, or free-form Description + PriceExcl + Number + TaxCode etc. extra_fields: any other invoice-level fields (Date, Term, Discount, ReferenceNumber, Comment, ...).

ParametersJSON Schema
NameRequiredDescriptionDefault
debtor_codeYes
invoice_linesYes
extra_fieldsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only mentions 'draft invoice' but omits important traits such as whether the invoice is editable after creation, any workflow triggers, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description contains an Args block that adds structure but is somewhat verbose. Each sentence is informative, but front-loading could be improved. A more concise version might say 'Creates a draft invoice with required debtor_code and invoice_lines, plus optional extra_fields.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While an output schema exists, the description does not mention return values or side effects. Given the complexity (3 parameters, one nested array, one catch-all object), the description is adequate but could be improved by noting that the tool returns something (e.g., invoice ID).

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

Parameters4/5

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

Schema description coverage is 0%, so the description compensates well. It explains debtor_code with an example, describes invoice_lines composition (ProductCode or free-form fields), and clarifies extra_fields as catch-all for invoice-level fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a draft invoice,' which is a specific verb+resource combination. It distinguishes this tool from siblings like credit_invoice and send_invoice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 description merely states what it does, without indicating when it is appropriate or when other tools should be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

credit_invoiceC

Credit (reverse) an existing invoice.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_codeNo
identifierNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure. It only states the action without explaining effects (e.g., whether it creates a credit note, voids the invoice, or requires special permissions). No information about reversibility or 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, and it places the purpose first. While very concise, it could benefit from more structure or additional context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has two undocumented optional parameters and no annotations, the description is incomplete. It does not explain what the output is (despite having an output schema), what 'credit' entails, or how to distinguish between the parameters for selection.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain the parameters (invoice_code, identifier). The agent has no guidance on which to use, their formats, or how they relate to the target invoice. This is a critical gap for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool credits an existing invoice, using 'reverse' in parentheses for clarity. It specifies the verb and resource, but lacks differentiation from sibling tools like get_credit_invoice or create_invoice, which are distinct operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., create_invoice, mark_invoice_paid). There is no context about prerequisites, such as the invoice existing or being in a state that allows crediting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_credit_invoiceC

Fetch a single purchase invoice.

ParametersJSON Schema
NameRequiredDescriptionDefault
credit_invoice_codeNo
identifierNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so the description must carry the burden. It only says 'Fetch,' implying a read-only operation, but lacks details about authentication, rate limits, or any side effects. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single short sentence, no wasted words. However, for a tool with parameters and output schema, more structure would be beneficial. It is efficient but could be expanded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and an output schema existing, the description is under-specified. It does not explain return values or provide context about the nature of a credit invoice. Incomplete for reliable tool selection.

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

Parameters1/5

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

Schema coverage is 0%. The description adds no meaning to the two parameters (credit_invoice_code, identifier). The agent gets no help understanding which parameter to use or their distinction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'Fetch a single purchase invoice,' which is a clear verb+resource. However, the name has 'credit_invoice' but description says 'purchase invoice,' causing slight inconsistency. It does not differentiate from siblings like get_invoice or credit_invoice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. For instance, it doesn't clarify when to use get_credit_invoice vs get_invoice or list_credit_invoices. Missing usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_debtorA

Fetch a single debtor by DebtorCode (e.g. 'DB10000') or Identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
debtor_codeNo
identifierNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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 states the basic fetch operation, lacking details on idempotence, error handling (e.g. if not found), authentication requirements, or read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of 14 words that conveys the essential purpose without redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema (not shown), the description need not detail return values. However, it could mention handling of absent debtor or exact output structure. Overall, adequate for a simple fetch tool.

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

Parameters4/5

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

Schema description coverage is 0%, but the description adds meaning by explaining that either debtor_code (with example 'DB10000') or identifier can be used to fetch a single debtor. This clarifies the relationship and provides format guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fetch', the resource 'single debtor', and the lookup criteria 'by DebtorCode (e.g. 'DB10000') or Identifier'. It distinguishes from siblings like list_debtors (list) and create/update (modify).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching a specific debtor by code/identifier, but does not explicitly contrast with list_debtors or provide when-not guidance. The context is implied but not directly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_invoiceB

Fetch one invoice by InvoiceCode (e.g. '202401001') or Identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_codeNo
identifierNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, so the description must carry the full burden. It only states 'Fetch', which suggests read-only behavior, but lacks disclosure of error states, authentication requirements, or any other side effects. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no extraneous information. Efficient and immediately clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, the description does not need to explain return values. However, the tool is simple and the description is adequate for a basic fetch operation, though it lacks error context.

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

Parameters2/5

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

Schema description coverage is 0%. The description adds an example for InvoiceCode ('202401001') and clarifies that Identifier is an integer, but does not explain the distinction between the two or when to use each. Marginal added value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fetch', the resource 'invoice', and the lookup fields 'InvoiceCode' or 'Identifier'. It distinguishes itself from sibling tools like list_invoices by focusing on fetching a single invoice by specific identifiers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (fetch by code or ID) but provides no explicit guidance on when to use this tool versus alternatives like list_invoices, nor any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_productC

Fetch a single product.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_codeNo
identifierNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. Only states 'Fetch', implying read-only, but no details on behavior for null parameters, missing products, or 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise and front-loaded, but lacks critical information. It earns its place in brevity but at the cost of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (reducing need for return description), the description fails to cover parameter behavior, uniqueness constraints, or error conditions for a 2-param tool with no schema descriptions.

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

Parameters2/5

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

Schema description coverage is 0%, so description must explain parameters. It does not clarify difference between product_code and identifier, nor which to use or if both can be used.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Fetch a single product.' It uses a specific verb and resource, and distinguishes from sibling tools like list_products and get_invoice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., list_products for multiple). No exclusions or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subscriptionC

Fetch a single subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierNo
subscription_codeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only says 'Fetch' with no disclosure of side effects, authentication needs, rate limits, or return behavior beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, but it lacks necessary detail. It is concise but incomplete, sacrificing informativeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and the presence of an output schema, the description fails to provide sufficient context. For a simple fetch tool, it should explain how to identify the subscription and what the response contains.

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

Parameters1/5

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

Schema coverage is 0% and the description does not explain the parameters (identifier, subscription_code) - their purpose, format, or how they relate to fetching a subscription.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch a single subscription' which identifies the action and resource. It implies uniqueness by saying 'a single', but does not explicitly contrast with list_subscriptions or mention retrieval by identifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like list_subscriptions. No prerequisites or scenario hints provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_credit_invoicesC

List purchase invoices (inkoopfacturen).

ParametersJSON Schema
NameRequiredDescriptionDefault
creditor_codeNo
modified_sinceNo
limit_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. Description does not disclose behavior like pagination (despite 'limit_pages' parameter), filtering behavior, or ordering. Missing context about what happens with null creditor_code.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise with a single sentence, but lacks structure. Does not include any breakdown of parameters or usage scenarios.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although output schema exists, description is too minimal. Missing details on pagination, filtering, and default behavior. Does not compensate for low schema coverage.

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

Parameters2/5

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

Schema description coverage is 0%. Description adds no explanation for the three parameters. Parameter names are somewhat self-explanatory but lack additional context like format or meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'List' and resource 'purchase invoices' with Dutch translation. Distinguishes from siblings like 'list_invoices' (likely sales invoices) and 'get_credit_invoice' (single invoice).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as 'list_invoices' or 'get_credit_invoice'. No exclusions or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_debtorsA

List all debtors (customers).

Args: search_at: Field to search in (e.g. "EmailAddress", "CompanyName", "DebtorCode"). Optional. search_for: Value to search for. Required if search_at is given. modified_since: ISO date or datetime. Only return debtors modified after this point. Critical for incremental sync. limit_pages: If set, fetch at most this many pages (each ~100 items). Default fetches all pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
search_atNo
search_forNo
modified_sinceNo
limit_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses pagination behavior and the importance of modified_since for incremental sync. However, it does not mention idempotency, error handling, or authentication requirements. The behavioral information is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear heading and organized Args section. Every sentence provides essential information without redundancy. The structure is front-loaded with the main action and followed by parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema (not visible here), the description covers the input parameters thoroughly and includes behavioral hints (pagination, incremental sync). It lacks details on error conditions or ordering, but for a list endpoint with good parameter descriptions, this is largely complete.

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

Parameters5/5

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

Schema description coverage is 0%, requiring the description to fully define parameters. Each parameter is explained with examples (search_at field names), constraints (search_for required with search_at), format (ISO date for modified_since), and behavior (limit_pages default all). This adds significant value beyond the schema properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('debtors'), with additional context 'customers'. The distinction from sibling 'get_debtor' is implied through plural vs singular and the presence of filtering parameters. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains each parameter's role and provides explicit guidance (e.g., 'Critical for incremental sync' for modified_since, pagination behavior for limit_pages). However, it does not explicitly state when not to use this tool or contrast with alternatives, leaving some implicit assumptions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_invoicesB

List invoices.

Args: status: WeFact invoice status (0=concept, 1=sent, 2=partly paid, 3=paid, 4=expired, 5=summation, 6=collection). Optional filter. debtor_code: Filter to a specific debtor. modified_since: ISO date for incremental sync. limit_pages: Cap on pages (1 = first page only).

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
debtor_codeNo
modified_sinceNo
limit_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It does not disclose whether the operation is read-only, any side effects, authorization requirements, or rate limits. Only the function name and parameters imply a read operation, but this is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a one-line summary followed by a bulleted list of arguments. Every sentence adds value, no redundancy or fluff. Ideal for quick agent scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (so return structure is documented), the input parameters are covered well. The description explains optional filters and pagination hints. It lacks explicit mention of default behavior (e.g., returns all invoices if no filters) or sorting, but is otherwise sufficient for a list operation.

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

Parameters4/5

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

The description adds meaning to all 4 parameters: status values are enumerated, debtor_code and modified_since are explained as filters, and limit_pages is described as a page cap. This supplements the schema which had no descriptions (0% coverage). The missing format for modified_since (ISO date) is relatively clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List invoices' with optional filters. It distinguishes from sibling tools like get_invoice (single invoice) and list_credit_invoices (different resource) by resource name and parameter differences. However, it does not explicitly contrast with closely related siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_invoice or list_credit_invoices. There are no exclusions or context hints for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_productsC

List all products.

ParametersJSON Schema
NameRequiredDescriptionDefault
modified_sinceNo
limit_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility. It only states 'List all products' without disclosing behavior such as being read-only, or handling of pagination, rate limits, or scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is minimal and to the point, with no wasted words. However, it could be more informative without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema, return values are covered. However, the description lacks context on filtering, pagination, or use cases, making it barely adequate for a list tool with siblings.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the parameters. 'modified_since' and 'limit_pages' have titles but no explanation of their purpose or format beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'list' and the resource 'products', making the purpose unambiguous. However, it does not differentiate from sibling tools like 'list_debtors' or 'list_invoices', which also list resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. The description lacks any context about prerequisites, limitations, or comparison with 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_subscriptionsD

List subscriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
debtor_codeNo
modified_sinceNo
limit_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.5/5.0
Behavior1/5

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

With no annotations provided, the description carries full burden but discloses no behavioral traits: no mention of pagination, filtering limits, authentication needs, or whether it is a read-only operation. The description is completely opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While short, the description is under-specified and fails to convey necessary information. It is not concise in a helpful way; it is merely minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has three optional parameters and likely returns a list of subscriptions, the description lacks details about filtering, pagination behavior, or the structure of the output. It is far from complete for effective use.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain what debtor_code, modified_since, or limit_pages mean. The agent must guess from parameter names alone, which may be ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List subscriptions.' is essentially a tautology of the tool name, providing no additional context or differentiation from sibling tools like list_debtors or list_invoices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as get_subscription (for a single subscription) or other list tools. The agent must infer usage from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_invoice_paidB

Mark an invoice as paid.

Args: invoice_code: e.g. '202401001'. pay_date: ISO date. Defaults to today. payment_method: e.g. 'cash', 'banktransfer', 'directdebit'.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_codeYes
pay_dateNo
payment_methodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like irreversibility, side effects, or authorization needs, but it only provides parameter examples. No mention of what happens if invoice is already paid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence plus a concise list. Front-loaded purpose. The 'Args:' block is slightly verbose but acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple parameters and presence of an output schema, the description is minimally adequate. Lacks details on error handling, idempotency, or state changes, but covers basic usage.

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

Parameters4/5

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

Schema description coverage is 0%, so the description adds critical meaning: examples for invoice_code, ISO date format and default for pay_date, and payment_method options. Clarifies formatting and defaults beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Mark an invoice as paid', providing a specific verb and resource. It effectively distinguishes from sibling tools like credit_invoice and send_invoice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. Lacks context on prerequisites (e.g., invoice must exist and be unpaid) or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_invoiceA

Send an existing draft invoice to the debtor.

Args: invoice_code: e.g. '[concept]0001' for a draft. send_method: optional, e.g. 'email' or 'mail'. Omit for the debtor's default.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_codeYes
send_methodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description bears the full burden of behavioral disclosure. It indicates that the tool sends a draft invoice, implying a state change from draft to sent, but does not detail side effects (e.g., status changes, email generation), permissions needed, or idempotency. The description adds moderate transparency but lacks comprehensive disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with a clear first sentence stating the purpose and a bullet-like Args section. Every sentence adds value without unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity with two parameters and an output schema (presumably indicating success/failure), the description covers the essential information. It explains the required parameter and the optional send_method with its default. However, it could be more complete by clarifying the immediate effects (e.g., status change, email dispatch) and whether the action is synchronous.

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

Parameters4/5

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

The input schema has 0% description coverage, so the description fully compensates. It provides an example for invoice_code ('[concept]0001') and lists possible values for send_method ('email' or 'mail'), adding meaning beyond the bare schema. However, it does not precisely define the expected format for invoice_code or restrict send_method to only those two values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: sending an existing draft invoice to the debtor. It distinguishes itself from sibling tools like create_invoice (creating a new invoice) and mark_invoice_paid (changing payment status) by specifying that the invoice must be a draft.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does and provides context for when to use it (when you have a draft invoice to send). It mentions the optional send_method and default behavior, giving clear usage guidance. However, it does not explicitly state when not to use it or list prerequisites beyond the invoice being a draft.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_debtorA

Update an existing debtor. Only fields you provide are changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
debtor_codeYes
fieldsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It reveals the partial update nature ('Only fields you provide are changed'), which is valuable. However, it does not mention destructive potential, authentication needs, or error handling (e.g., what happens if debtor_code doesn't exist).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—one sentence that conveys the essential action and key behavior. It is front-loaded with the verb and resource, and every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 need not detail return values. However, for a mutation tool with a nested object parameter and no annotations, the description should provide more context, such as valid field keys or prerequisites. The partial update hint is helpful but insufficient for safe use.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by indicating the 'fields' object contains the attributes to update. However, it does not specify valid keys or data types within the fields object, leaving ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'debtor', with the additional detail that only provided fields are changed. This distinguishes it from sibling tools like create_debtor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (when you want to update an existing debtor) but does not explicitly state when not to use or provide alternatives like create_debtor for new debtors. The partial update behavior is mentioned but no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wefact_requestA

Call any WeFact controller/action directly.

Use this for endpoints not covered by the dedicated tools below, or to pass parameters that the dedicated tools don't expose.

Args: controller: WeFact controller name (e.g. "debtor", "invoice", "subscription", "creditinvoice", "product", "ticket", "group"). action: Action on that controller (e.g. "list", "show", "add", "edit", "delete", "send", "credit", "markaspaid"). params: Extra parameters as a dict. Field names match the WeFact docs at developer.wefact.com (e.g. "DebtorCode", "Identifier", "InvoiceLines"). Do NOT include the api_key.

Returns: JSON-encoded response from WeFact.

ParametersJSON Schema
NameRequiredDescriptionDefault
controllerYes
actionYes
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Discloses that it makes direct API calls, returns JSON, and warns not to include api_key. However, does not discuss side effects, required permissions, or potential destructive actions for mutation operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs with clear Args/Returns sections. Every sentence adds value. No redundant or vague language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given its generic nature and lack of annotations, the description effectively covers purpose, usage, parameters, and return value. References external docs. Could still mention potential error handling or rate limits, but overall nearly complete.

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

Parameters5/5

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

Schema has 0% description coverage, but description adds extensive meaning: examples of controller values, action values, explanation that params are a dict matching WeFact docs, and explicit instruction to omit api_key. Greatly enhances agent understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Call any WeFact controller/action directly.' Explicitly distinguishes from dedicated sibling tools by noting it handles endpoints and parameters not covered by them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this for endpoints not covered by the dedicated tools below, or to pass parameters that the dedicated tools don't expose.' Provides clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiA

Sanity-check the API connection. Returns a tiny debtor list response.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Without annotations, the description carries full burden. It discloses the output ('Returns a tiny debtor list response') and implies read-only operation, but could be more explicit about side effects or idempotence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. Front-loaded with purpose, followed by output description. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple connection check tool with zero parameters and an output schema, the description is complete. It tells what the tool does and what it returns.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. The description adds no further parameter info, which is acceptable given the absence of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Sanity-check the API connection.' It distinguishes itself from sibling CRUD tools by focusing on connectivity verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking API connectivity but does not provide explicit when-to-use or when-not-to-use guidance, nor alternatives among siblings.

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.

  1. 18 tool updatesv0.1.0
    • First observedcreate_debtor
    • First observedcreate_invoice
    • First observedcredit_invoice
    • First observedget_credit_invoice
    • First observedget_debtor
    • First observedget_invoice
    • First observedget_product
    • First observedget_subscription
    • First observedlist_credit_invoices
    • First observedlist_debtors
    • First observedlist_invoices
    • First observedlist_products
    • First observedlist_subscriptions
    • First observedmark_invoice_paid
    • First observedsend_invoice
    • First observedupdate_debtor
    • First observedwefact_request
    • First observedwhoami

TDQS

C2.9/5.0

Scored across 18 tools

Disambiguation4/5

Most tools target distinct entities with clear actions (create/get/list/update). Potential confusion exists between credit_invoice (credit action) and get_credit_invoice (fetch a purchase invoice) due to name mismatch, but descriptions clarify. The generic wefact_request covers gaps but adds ambiguity. Overall, an agent can differentiate most tools.

Naming Consistency3/5

Tools mostly follow verb_noun snake_case pattern (create_debtor, list_invoices). However, credit_invoice (specific verb), mark_invoice_paid (non-standard verb), and utilities wefact_request and whoami break the pattern. Mixed conventions reduce predictability.

Tool Count4/5

18 tools is reasonable for an accounting system covering 5 main entities plus utilities. Slightly high due to generic wefact_request and whoami, but still well-scoped. Not excessive.

Completeness3/5

Covers create/get/list for debtors and invoices, but missing update/delete for most entities (no update_invoice, no delete tools). Credit and send operations exist but lifecycle is incomplete. Generic wefact_request fills some gaps but indicates incompleteness.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server for the bol.com Retailer API that enables managing orders, offers, shipments, returns, invoices, and commissions via natural language.
    76
    15
    6
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Provides a comprehensive MCP interface to the AbraFlexi ERP REST API, enabling management of invoices, contacts, products, bank transactions, and other evidence through natural language.
    68
    1
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    MCP server to interact with the Cuéntica accounting API, allowing users to manage invoices, expenses, income, clients, providers, and bank accounts via natural language.
    59
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for e-invoice platforms. Enables natural language querying of invoices, partners, company data, and financial reports.
    18
    8
    6
    MIT