MCP server for WeFact — let Claude (Desktop, Code, Cursor) read and modify your WeFact administration via the v2 API.
WeFact MCP has solid naming conventions (verb_noun pattern) and comprehensive parameter descriptions. All 8 tools have clear, actionable descriptions (avg ~150 chars). Input schemas are present with type definitions and parameter descriptions. However, output schemas are not documented, tools return JSON but the structure is not formally specified. Error handling returns structured JSON with error details but lacks recovery guidance. The generic 'wefact_request' tool is well-designed as an escape hatch but reduces the need for specialized tools. Missing: output schema documentation, error classification (retryable vs fatal), and confirmation patterns for destructive operations (create_invoice, update_debtor, create_debtor).
Create a new debtor.
Create a draft invoice.
Fetch a single debtor by DebtorCode (e.g. 'DB10000') or Identifier.
Fetch one invoice by InvoiceCode (e.g. '202401001') or Identifier.
List all debtors (customers).
List invoices.
Update an existing debtor. Only fields you provide are changed.
Output schemas not documented. Tools return JSON but structure is not formally specified. LLMs cannot plan downstream calls or extract fields reliably.
Destructive operations (create_debtor, update_debtor, create_invoice) lack confirmation or dry-run patterns. Agents can accidentally modify production data without safeguards.
Error responses return structured JSON but lack recovery guidance. 'status: error' with error list does not tell LLM what to do next or whether to retry.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
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.
create_invoice 'invoice_lines' parameter accepts array of dicts but structure is not formally specified. LLMs must infer valid fields from description text alone.
get_debtor and get_invoice accept either code or identifier but do not validate that at least one is provided. Tool returns error but description does not warn LLM of mutual requirement.