@frihet/mcp-server 1.15.1 → 1.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -1
- package/dist/__tests__/demo-mode.test.d.ts +11 -0
- package/dist/__tests__/demo-mode.test.d.ts.map +1 -0
- package/dist/__tests__/demo-mode.test.js +119 -0
- package/dist/__tests__/demo-mode.test.js.map +1 -0
- package/dist/__tests__/pagination-cursor-param.test.d.ts +27 -0
- package/dist/__tests__/pagination-cursor-param.test.d.ts.map +1 -0
- package/dist/__tests__/pagination-cursor-param.test.js +96 -0
- package/dist/__tests__/pagination-cursor-param.test.js.map +1 -0
- package/dist/client.d.ts +8 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +24 -16
- package/dist/client.js.map +1 -1
- package/dist/demo-client.d.ts +468 -0
- package/dist/demo-client.d.ts.map +1 -0
- package/dist/demo-client.js +554 -0
- package/dist/demo-client.js.map +1 -0
- package/dist/demo-fixtures.d.ts +63 -0
- package/dist/demo-fixtures.d.ts.map +1 -0
- package/dist/demo-fixtures.js +276 -0
- package/dist/demo-fixtures.js.map +1 -0
- package/dist/index.js +15 -3
- package/dist/index.js.map +1 -1
- package/dist/tools/einvoice.d.ts +1 -1
- package/dist/tools/shared.d.ts +4 -4
- package/package.json +2 -2
- package/scripts/no-public-leak.sh +16 -1
- package/scripts/test-openai-grouped-compose.mjs +1 -1
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Demo-mode fixtures for the Frihet MCP server (`FRIHET_DEMO=1`).
|
|
3
|
+
*
|
|
4
|
+
* These are the canned, PII-SAFE example datasets served by DemoFrihetClient
|
|
5
|
+
* when the server runs without an API key. NOTHING here is real customer data:
|
|
6
|
+
* - NIF/CIF are AEAT example patterns (B12345678, X9999999X).
|
|
7
|
+
* - IBAN is the ECBS/AEAT test IBAN (ES9121000418450200051332).
|
|
8
|
+
* - Every email is under @example.com (guarded by demo-mode.test.ts).
|
|
9
|
+
* - Business names are generic, invented ES/EU companies.
|
|
10
|
+
*
|
|
11
|
+
* Amounts follow the same field shape the real /v1 REST API returns (see
|
|
12
|
+
* src/tools/*.ts output schemas + src/client-interface.ts return types), so an
|
|
13
|
+
* agent evaluating the demo sees exactly the response shape it would get live.
|
|
14
|
+
*/
|
|
15
|
+
/** Read/get/list responses. */
|
|
16
|
+
export const READ_STAMP = {
|
|
17
|
+
_demo: true,
|
|
18
|
+
_demoNotice: "DEMO MODE — example data, nothing persisted. For real data: app.frihet.io → Settings → API keys.",
|
|
19
|
+
};
|
|
20
|
+
/** Simulated writes (create/update/apply/mark/etc.). */
|
|
21
|
+
export const WRITE_STAMP = {
|
|
22
|
+
_demo: true,
|
|
23
|
+
_demoNotice: "DEMO MODE — example data, nothing persisted. Simulated — not persisted.",
|
|
24
|
+
};
|
|
25
|
+
/** Fiscal / e-invoice / email / payroll actions — NEVER a real submission. */
|
|
26
|
+
export const FISCAL_STAMP = {
|
|
27
|
+
_demo: true,
|
|
28
|
+
_demoNotice: "Simulated fiscal action — no submission was made to any tax authority.",
|
|
29
|
+
};
|
|
30
|
+
/** Empty surfaces (no dedicated fixtures yet) still carry a demo stamp. */
|
|
31
|
+
export const EMPTY_STAMP = {
|
|
32
|
+
_demo: true,
|
|
33
|
+
_demoNotice: "DEMO MODE — no demo fixtures for this surface yet. For real data: app.frihet.io → Settings → API keys.",
|
|
34
|
+
};
|
|
35
|
+
/** Frozen timestamp so demo responses are deterministic across calls. */
|
|
36
|
+
export const DEMO_NOW = "2026-07-15T10:00:00.000Z";
|
|
37
|
+
/** Test IBAN (ECBS/AEAT example — never a real account). */
|
|
38
|
+
export const DEMO_TEST_IBAN = "ES9121000418450200051332";
|
|
39
|
+
/** Wrap a fixture array in a stamped PaginatedResponse. */
|
|
40
|
+
export function demoPage(data, params) {
|
|
41
|
+
return {
|
|
42
|
+
data,
|
|
43
|
+
total: data.length,
|
|
44
|
+
limit: params?.limit ?? 50,
|
|
45
|
+
offset: params?.offset ?? 0,
|
|
46
|
+
...READ_STAMP,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Empty stamped PaginatedResponse for surfaces without dedicated fixtures. */
|
|
50
|
+
export function demoEmptyPage(params) {
|
|
51
|
+
return {
|
|
52
|
+
data: [],
|
|
53
|
+
total: 0,
|
|
54
|
+
limit: params?.limit ?? 50,
|
|
55
|
+
offset: params?.offset ?? 0,
|
|
56
|
+
...EMPTY_STAMP,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/* ------------------------------------------------------------------ */
|
|
60
|
+
/* Clients (5) — mix of ES peninsula, Canarias (IGIC), autónomo, EU */
|
|
61
|
+
/* ------------------------------------------------------------------ */
|
|
62
|
+
export const demoClients = [
|
|
63
|
+
{
|
|
64
|
+
id: "demo_cli_001",
|
|
65
|
+
name: "Panadería La Espiga SL",
|
|
66
|
+
email: "hola@example.com",
|
|
67
|
+
phone: "+34 600 000 001",
|
|
68
|
+
taxId: "B12345678",
|
|
69
|
+
address: { street: "Calle Mayor 12", city: "Madrid", state: "Madrid", postalCode: "28013", country: "ES" },
|
|
70
|
+
createdAt: DEMO_NOW,
|
|
71
|
+
updatedAt: DEMO_NOW,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: "demo_cli_002",
|
|
75
|
+
name: "Estudio Nórdico Arquitectura SL",
|
|
76
|
+
email: "info@example.com",
|
|
77
|
+
phone: "+34 600 000 002",
|
|
78
|
+
taxId: "B87654321",
|
|
79
|
+
address: { street: "Passeig de Gràcia 45", city: "Barcelona", state: "Barcelona", postalCode: "08010", country: "ES" },
|
|
80
|
+
createdAt: DEMO_NOW,
|
|
81
|
+
updatedAt: DEMO_NOW,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: "demo_cli_003",
|
|
85
|
+
name: "Servicios Insulares Canarias SL",
|
|
86
|
+
email: "contacto@example.com",
|
|
87
|
+
phone: "+34 600 000 003",
|
|
88
|
+
taxId: "B35700000",
|
|
89
|
+
address: { street: "Avenida de Anaga 8", city: "Santa Cruz de Tenerife", state: "Canarias", postalCode: "38001", country: "ES" },
|
|
90
|
+
createdAt: DEMO_NOW,
|
|
91
|
+
updatedAt: DEMO_NOW,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: "demo_cli_004",
|
|
95
|
+
name: "Marina Delgado (autónoma)",
|
|
96
|
+
email: "marina@example.com",
|
|
97
|
+
phone: "+34 600 000 004",
|
|
98
|
+
taxId: "X9999999X",
|
|
99
|
+
address: { street: "Carrer de Colón 3", city: "Valencia", state: "Valencia", postalCode: "46004", country: "ES" },
|
|
100
|
+
createdAt: DEMO_NOW,
|
|
101
|
+
updatedAt: DEMO_NOW,
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
id: "demo_cli_005",
|
|
105
|
+
name: "TechFlow Solutions GmbH",
|
|
106
|
+
email: "billing@example.com",
|
|
107
|
+
phone: "+49 30 0000000",
|
|
108
|
+
taxId: "DE123456789",
|
|
109
|
+
address: { street: "Unter den Linden 10", city: "Berlin", state: "Berlin", postalCode: "10117", country: "DE" },
|
|
110
|
+
createdAt: DEMO_NOW,
|
|
111
|
+
updatedAt: DEMO_NOW,
|
|
112
|
+
},
|
|
113
|
+
];
|
|
114
|
+
/* ------------------------------------------------------------------ */
|
|
115
|
+
/* Products (8) — IVA 21% / 10% / 4% */
|
|
116
|
+
/* ------------------------------------------------------------------ */
|
|
117
|
+
export const demoProducts = [
|
|
118
|
+
{ id: "demo_prd_001", name: "Consultoría estratégica (hora)", unitPrice: 90, taxRate: 21, description: "Sesión de consultoría por hora", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
119
|
+
{ id: "demo_prd_002", name: "Desarrollo web (jornada)", unitPrice: 480, taxRate: 21, description: "Jornada de desarrollo full-stack", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
120
|
+
{ id: "demo_prd_003", name: "Mantenimiento mensual", unitPrice: 150, taxRate: 21, description: "Soporte y mantenimiento mensual", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
121
|
+
{ id: "demo_prd_004", name: "Diseño de marca", unitPrice: 1200, taxRate: 21, description: "Identidad visual completa", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
122
|
+
{ id: "demo_prd_005", name: "Auditoría SEO", unitPrice: 600, taxRate: 21, description: "Auditoría técnica y de contenidos", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
123
|
+
{ id: "demo_prd_006", name: "Formación in-company (hora)", unitPrice: 75, taxRate: 21, description: "Formación presencial por hora", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
124
|
+
{ id: "demo_prd_007", name: "Menú catering (por persona)", unitPrice: 18, taxRate: 10, description: "Servicio de catering, IVA reducido hostelería", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
125
|
+
{ id: "demo_prd_008", name: "Libro técnico impreso", unitPrice: 24, taxRate: 4, description: "Publicación impresa, IVA superreducido", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
126
|
+
];
|
|
127
|
+
function money(n) {
|
|
128
|
+
return Math.round(n * 100) / 100;
|
|
129
|
+
}
|
|
130
|
+
function invoice(opts) {
|
|
131
|
+
const subtotal = money(opts.items.reduce((s, i) => s + i.quantity * i.unitPrice, 0));
|
|
132
|
+
const taxAmount = money(subtotal * (opts.taxRate / 100));
|
|
133
|
+
const irpfAmount = opts.irpfRate ? money(subtotal * (opts.irpfRate / 100)) : 0;
|
|
134
|
+
const total = money(subtotal + taxAmount - irpfAmount);
|
|
135
|
+
return {
|
|
136
|
+
id: opts.id,
|
|
137
|
+
clientId: opts.clientId,
|
|
138
|
+
clientName: opts.clientName,
|
|
139
|
+
items: opts.items,
|
|
140
|
+
issueDate: opts.issueDate,
|
|
141
|
+
dueDate: opts.dueDate,
|
|
142
|
+
status: opts.status,
|
|
143
|
+
taxRate: opts.taxRate,
|
|
144
|
+
subtotal,
|
|
145
|
+
taxAmount,
|
|
146
|
+
...(opts.irpfRate ? { irpfRate: opts.irpfRate, irpfAmount } : {}),
|
|
147
|
+
total,
|
|
148
|
+
currency: "EUR",
|
|
149
|
+
...(opts.clientLocation ? { clientLocation: opts.clientLocation } : {}),
|
|
150
|
+
...(opts.notes ? { notes: opts.notes } : {}),
|
|
151
|
+
createdAt: DEMO_NOW,
|
|
152
|
+
updatedAt: DEMO_NOW,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export const demoInvoices = [
|
|
156
|
+
invoice({ id: "demo_inv_001", clientId: "demo_cli_001", clientName: "Panadería La Espiga SL", items: [{ description: "Consultoría estratégica (hora)", quantity: 10, unitPrice: 90 }], taxRate: 21, status: "paid", issueDate: "2026-06-03", dueDate: "2026-07-03", clientLocation: "peninsula" }),
|
|
157
|
+
invoice({ id: "demo_inv_002", clientId: "demo_cli_002", clientName: "Estudio Nórdico Arquitectura SL", items: [{ description: "Desarrollo web (jornada)", quantity: 5, unitPrice: 480 }], taxRate: 21, status: "sent", issueDate: "2026-06-10", dueDate: "2026-07-10", clientLocation: "peninsula" }),
|
|
158
|
+
invoice({ id: "demo_inv_003", clientId: "demo_cli_003", clientName: "Servicios Insulares Canarias SL", items: [{ description: "Consultoría estratégica (hora)", quantity: 8, unitPrice: 90 }], taxRate: 7, status: "paid", issueDate: "2026-06-12", dueDate: "2026-07-12", notes: "IGIC 7% — cliente en Canarias", clientLocation: "canarias" }),
|
|
159
|
+
invoice({ id: "demo_inv_004", clientId: "demo_cli_004", clientName: "Marina Delgado (autónoma)", items: [{ description: "Formación in-company (hora)", quantity: 12, unitPrice: 75 }], taxRate: 21, status: "draft", issueDate: "2026-07-01", dueDate: "2026-07-31", clientLocation: "peninsula" }),
|
|
160
|
+
invoice({ id: "demo_inv_005", clientId: "demo_cli_001", clientName: "Panadería La Espiga SL", items: [{ description: "Menú catering (por persona)", quantity: 40, unitPrice: 18 }], taxRate: 10, status: "sent", issueDate: "2026-06-20", dueDate: "2026-07-20", notes: "IVA reducido 10% (hostelería)", clientLocation: "peninsula" }),
|
|
161
|
+
invoice({ id: "demo_inv_006", clientId: "demo_cli_002", clientName: "Estudio Nórdico Arquitectura SL", items: [{ description: "Libro técnico impreso", quantity: 50, unitPrice: 24 }], taxRate: 4, status: "paid", issueDate: "2026-05-28", dueDate: "2026-06-28", notes: "IVA superreducido 4% (libros)", clientLocation: "peninsula" }),
|
|
162
|
+
invoice({ id: "demo_inv_007", clientId: "demo_cli_005", clientName: "TechFlow Solutions GmbH", items: [{ description: "Consultoría estratégica (hora)", quantity: 20, unitPrice: 90 }], taxRate: 0, status: "sent", issueDate: "2026-06-15", dueDate: "2026-07-15", notes: "Inversión del sujeto pasivo (reverse charge, operación intracomunitaria B2B)", clientLocation: "eu" }),
|
|
163
|
+
invoice({ id: "demo_inv_008", clientId: "demo_cli_003", clientName: "Servicios Insulares Canarias SL", items: [{ description: "Mantenimiento mensual", quantity: 3, unitPrice: 150 }], taxRate: 7, status: "overdue", issueDate: "2026-04-05", dueDate: "2026-05-05", notes: "IGIC 7% — factura vencida", clientLocation: "canarias" }),
|
|
164
|
+
invoice({ id: "demo_inv_009", clientId: "demo_cli_004", clientName: "Marina Delgado (autónoma)", items: [{ description: "Diseño de marca", quantity: 1, unitPrice: 1200 }, { description: "Auditoría SEO", quantity: 1, unitPrice: 600 }], taxRate: 21, status: "draft", issueDate: "2026-07-08", dueDate: "2026-08-08", irpfRate: 15, notes: "Autónoma con retención IRPF 15%", clientLocation: "peninsula" }),
|
|
165
|
+
];
|
|
166
|
+
/* ------------------------------------------------------------------ */
|
|
167
|
+
/* Expenses (6) — categorized */
|
|
168
|
+
/* ------------------------------------------------------------------ */
|
|
169
|
+
export const demoExpenses = [
|
|
170
|
+
{ id: "demo_exp_001", description: "Suscripción software de diseño", amount: 15.4, category: "software", date: "2026-07-01", vendor: "Herramientas Digitales SL", taxDeductible: true, createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
171
|
+
{ id: "demo_exp_002", description: "Material de oficina", amount: 48.2, category: "office_supplies", date: "2026-06-18", vendor: "Papelería Central", taxDeductible: true, createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
172
|
+
{ id: "demo_exp_003", description: "Comida de trabajo con cliente", amount: 62.0, category: "meals", date: "2026-06-22", vendor: "Restaurante El Puerto", taxDeductible: true, createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
173
|
+
{ id: "demo_exp_004", description: "Combustible desplazamiento", amount: 70.0, category: "travel", date: "2026-06-25", vendor: "Estación de Servicio Norte", taxDeductible: true, createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
174
|
+
{ id: "demo_exp_005", description: "Cuota gestoría mensual", amount: 90.0, category: "professional_services", date: "2026-07-01", vendor: "Gestoría Ramírez", taxDeductible: true, createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
175
|
+
{ id: "demo_exp_006", description: "Hosting anual", amount: 120.0, category: "software", date: "2026-05-30", vendor: "Proveedor Cloud SL", taxDeductible: true, createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
176
|
+
];
|
|
177
|
+
/* ------------------------------------------------------------------ */
|
|
178
|
+
/* Quotes (2) */
|
|
179
|
+
/* ------------------------------------------------------------------ */
|
|
180
|
+
export const demoQuotes = [
|
|
181
|
+
{
|
|
182
|
+
id: "demo_quo_001",
|
|
183
|
+
clientId: "demo_cli_002",
|
|
184
|
+
clientName: "Estudio Nórdico Arquitectura SL",
|
|
185
|
+
items: [{ description: "Desarrollo web (jornada)", quantity: 10, unitPrice: 480 }],
|
|
186
|
+
taxRate: 21,
|
|
187
|
+
subtotal: 4800,
|
|
188
|
+
taxAmount: 1008,
|
|
189
|
+
total: 5808,
|
|
190
|
+
currency: "EUR",
|
|
191
|
+
status: "sent",
|
|
192
|
+
validUntil: "2026-08-15",
|
|
193
|
+
createdAt: DEMO_NOW,
|
|
194
|
+
updatedAt: DEMO_NOW,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
id: "demo_quo_002",
|
|
198
|
+
clientId: "demo_cli_005",
|
|
199
|
+
clientName: "TechFlow Solutions GmbH",
|
|
200
|
+
items: [{ description: "Consultoría estratégica (hora)", quantity: 30, unitPrice: 90 }],
|
|
201
|
+
taxRate: 0,
|
|
202
|
+
subtotal: 2700,
|
|
203
|
+
taxAmount: 0,
|
|
204
|
+
total: 2700,
|
|
205
|
+
currency: "EUR",
|
|
206
|
+
status: "draft",
|
|
207
|
+
validUntil: "2026-08-30",
|
|
208
|
+
notes: "Reverse charge (intracomunitario B2B)",
|
|
209
|
+
createdAt: DEMO_NOW,
|
|
210
|
+
updatedAt: DEMO_NOW,
|
|
211
|
+
},
|
|
212
|
+
];
|
|
213
|
+
/* ------------------------------------------------------------------ */
|
|
214
|
+
/* Vendors (2) */
|
|
215
|
+
/* ------------------------------------------------------------------ */
|
|
216
|
+
export const demoVendors = [
|
|
217
|
+
{ id: "demo_ven_001", name: "Gestoría Ramírez", email: "gestoria@example.com", phone: "+34 600 000 010", taxId: "B11111111", address: { city: "Madrid", postalCode: "28004", country: "ES" }, createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
218
|
+
{ id: "demo_ven_002", name: "Proveedor Cloud SL", email: "facturacion@example.com", phone: "+34 600 000 011", taxId: "B22222222", address: { city: "Barcelona", postalCode: "08007", country: "ES" }, createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
219
|
+
];
|
|
220
|
+
/* ------------------------------------------------------------------ */
|
|
221
|
+
/* Banking — 1 account + 4 transactions */
|
|
222
|
+
/* ------------------------------------------------------------------ */
|
|
223
|
+
export const demoBankAccounts = [
|
|
224
|
+
{
|
|
225
|
+
id: "demo_bank_001",
|
|
226
|
+
alias: "Cuenta principal",
|
|
227
|
+
iban: DEMO_TEST_IBAN,
|
|
228
|
+
ibanLast4: "1332",
|
|
229
|
+
currency: "EUR",
|
|
230
|
+
balance: 12450.75,
|
|
231
|
+
lastSyncedAt: DEMO_NOW,
|
|
232
|
+
createdAt: DEMO_NOW,
|
|
233
|
+
updatedAt: DEMO_NOW,
|
|
234
|
+
},
|
|
235
|
+
];
|
|
236
|
+
export const demoTransactions = [
|
|
237
|
+
{ id: "demo_txn_001", accountId: "demo_bank_001", amount: 1089.0, currency: "EUR", description: "Cobro factura demo_inv_001", postedAt: "2026-07-03", category: "sales_income", status: "posted", matchedDocId: "demo_inv_001", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
238
|
+
{ id: "demo_txn_002", accountId: "demo_bank_001", amount: -90.0, currency: "EUR", description: "Cuota gestoría mensual", postedAt: "2026-07-01", category: "professional_services", status: "posted", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
239
|
+
{ id: "demo_txn_003", accountId: "demo_bank_001", amount: -15.4, currency: "EUR", description: "Suscripción software de diseño", postedAt: "2026-07-01", category: "software", status: "posted", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
240
|
+
{ id: "demo_txn_004", accountId: "demo_bank_001", amount: 770.4, currency: "EUR", description: "Cobro factura demo_inv_003", postedAt: "2026-07-12", category: "sales_income", status: "posted", matchedDocId: "demo_inv_003", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
|
|
241
|
+
];
|
|
242
|
+
/* ------------------------------------------------------------------ */
|
|
243
|
+
/* Lookups + write simulation helpers */
|
|
244
|
+
/* ------------------------------------------------------------------ */
|
|
245
|
+
/** Find a fixture by id, or synthesize a minimal stamped object with that id. */
|
|
246
|
+
export function findOrStub(collection, id) {
|
|
247
|
+
const found = collection.find((item) => item.id === id);
|
|
248
|
+
if (found)
|
|
249
|
+
return { ...found, ...READ_STAMP };
|
|
250
|
+
return { id, ...READ_STAMP };
|
|
251
|
+
}
|
|
252
|
+
let demoIdCounter = 0;
|
|
253
|
+
/** Deterministic-ish demo id (no network, no clock dependency). */
|
|
254
|
+
export function demoId(prefix) {
|
|
255
|
+
demoIdCounter += 1;
|
|
256
|
+
return `${prefix}_${String(demoIdCounter).padStart(3, "0")}`;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Simulate a create/update: echo the input, stamp a fabricated demo id +
|
|
260
|
+
* timestamps + the WRITE banner. Never persists, never touches the network.
|
|
261
|
+
*/
|
|
262
|
+
export function simulateWrite(idPrefix, input, extra = {}) {
|
|
263
|
+
return {
|
|
264
|
+
id: demoId(idPrefix),
|
|
265
|
+
...input,
|
|
266
|
+
...extra,
|
|
267
|
+
createdAt: DEMO_NOW,
|
|
268
|
+
updatedAt: DEMO_NOW,
|
|
269
|
+
...WRITE_STAMP,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
/** Simulate an action on an existing entity (keeps the caller-supplied id). */
|
|
273
|
+
export function simulateAction(id, fields = {}) {
|
|
274
|
+
return { id, success: true, ...fields, updatedAt: DEMO_NOW, ...WRITE_STAMP };
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=demo-fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-fixtures.js","sourceRoot":"","sources":["../src/demo-fixtures.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,7 @@ import { fileURLToPath } from "node:url";
|
|
|
14
14
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
15
15
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
16
16
|
import { FrihetClient } from "./client.js";
|
|
17
|
+
import { DemoFrihetClient } from "./demo-client.js";
|
|
17
18
|
// Single source of truth for the server version: package.json (read at runtime
|
|
18
19
|
// from dist/../package.json). Hardcoding it here caused repeated version drift
|
|
19
20
|
// (server.json/index.ts/console out of sync → audit:mcp-refs gate failure).
|
|
@@ -37,17 +38,23 @@ import { registerShutdownHook } from "./metrics.js";
|
|
|
37
38
|
import { setTraceContext } from "./observability.js";
|
|
38
39
|
function main() {
|
|
39
40
|
const apiKey = process.env.FRIHET_API_KEY;
|
|
40
|
-
|
|
41
|
+
// Demo mode: FRIHET_DEMO=1|true serves fixture-backed example data with NO
|
|
42
|
+
// network calls and NO API key required. It's an explicit opt-in, so it wins
|
|
43
|
+
// even if a real key happens to be present. See demo-client.ts / demo-fixtures.ts.
|
|
44
|
+
const demoFlag = process.env.FRIHET_DEMO;
|
|
45
|
+
const demoMode = demoFlag === "1" || demoFlag === "true";
|
|
46
|
+
if (!demoMode && !apiKey) {
|
|
41
47
|
console.error("Error: FRIHET_API_KEY environment variable is required.\n\n" +
|
|
42
48
|
"Get your API key:\n" +
|
|
43
49
|
" 1. Create a free account at https://app.frihet.io\n" +
|
|
44
50
|
" 2. Go to Settings > Developers > API Keys\n" +
|
|
45
51
|
" 3. Create a key and add it to your MCP configuration\n\n" +
|
|
52
|
+
"Or try it instantly with no key: set FRIHET_DEMO=1 for example data.\n\n" +
|
|
46
53
|
"Documentation: https://docs.frihet.io/desarrolladores/mcp-server\n");
|
|
47
54
|
process.exit(1);
|
|
48
55
|
}
|
|
49
56
|
const baseUrl = process.env.FRIHET_API_URL;
|
|
50
|
-
if (baseUrl !== undefined) {
|
|
57
|
+
if (!demoMode && baseUrl !== undefined) {
|
|
51
58
|
let parsed;
|
|
52
59
|
try {
|
|
53
60
|
parsed = new URL(baseUrl);
|
|
@@ -67,7 +74,12 @@ function main() {
|
|
|
67
74
|
process.exit(1);
|
|
68
75
|
}
|
|
69
76
|
}
|
|
70
|
-
const client =
|
|
77
|
+
const client = demoMode
|
|
78
|
+
? new DemoFrihetClient()
|
|
79
|
+
: new FrihetClient(apiKey, baseUrl);
|
|
80
|
+
if (demoMode) {
|
|
81
|
+
console.error("[frihet-mcp] DEMO MODE — serving example fixtures, no real data, nothing persisted");
|
|
82
|
+
}
|
|
71
83
|
// Set trace context for Langfuse (reads LANGFUSE_* from process.env automatically).
|
|
72
84
|
// clientName can be overridden via FRIHET_CLIENT_NAME env var by the MCP host.
|
|
73
85
|
setTraceContext({
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/einvoice.d.ts
CHANGED
|
@@ -48,6 +48,7 @@ import type { IFrihetClient } from "../client-interface.js";
|
|
|
48
48
|
* | facturae | Facturae | Spain (ES B2G mandatory) | Facturae 3.2.x — AEAT/FACe submission |
|
|
49
49
|
*/
|
|
50
50
|
export declare const eInvoiceFormatSchema: z.ZodEnum<{
|
|
51
|
+
facturae: "facturae";
|
|
51
52
|
"xrechnung-cii": "xrechnung-cii";
|
|
52
53
|
"xrechnung-ubl": "xrechnung-ubl";
|
|
53
54
|
"facturx-en16931": "facturx-en16931";
|
|
@@ -58,7 +59,6 @@ export declare const eInvoiceFormatSchema: z.ZodEnum<{
|
|
|
58
59
|
ubl: "ubl";
|
|
59
60
|
cii: "cii";
|
|
60
61
|
"peppol-bis-3": "peppol-bis-3";
|
|
61
|
-
facturae: "facturae";
|
|
62
62
|
}>;
|
|
63
63
|
export type EInvoiceFormat = z.infer<typeof eInvoiceFormatSchema>;
|
|
64
64
|
export declare const sendEInvoiceOutput: z.ZodObject<{
|
package/dist/tools/shared.d.ts
CHANGED
|
@@ -233,9 +233,9 @@ export declare const reservationItemOutput: z.ZodObject<{
|
|
|
233
233
|
guestId: z.ZodOptional<z.ZodString>;
|
|
234
234
|
status: z.ZodEnum<{
|
|
235
235
|
cancelled: "cancelled";
|
|
236
|
+
completed: "completed";
|
|
236
237
|
confirmed: "confirmed";
|
|
237
238
|
pending: "pending";
|
|
238
|
-
completed: "completed";
|
|
239
239
|
no_show: "no_show";
|
|
240
240
|
}>;
|
|
241
241
|
checkIn: z.ZodString;
|
|
@@ -326,8 +326,8 @@ export declare const posSaleItemOutput: z.ZodObject<{
|
|
|
326
326
|
status: z.ZodOptional<z.ZodEnum<{
|
|
327
327
|
succeeded: "succeeded";
|
|
328
328
|
cancelled: "cancelled";
|
|
329
|
-
pending: "pending";
|
|
330
329
|
refunded: "refunded";
|
|
330
|
+
pending: "pending";
|
|
331
331
|
partially_refunded: "partially_refunded";
|
|
332
332
|
}>>;
|
|
333
333
|
amountCents: z.ZodOptional<z.ZodNumber>;
|
|
@@ -398,8 +398,8 @@ export declare const bankTransactionItemOutput: z.ZodObject<{
|
|
|
398
398
|
postedAt: z.ZodOptional<z.ZodString>;
|
|
399
399
|
category: z.ZodOptional<z.ZodString>;
|
|
400
400
|
status: z.ZodOptional<z.ZodEnum<{
|
|
401
|
-
pending: "pending";
|
|
402
401
|
posted: "posted";
|
|
402
|
+
pending: "pending";
|
|
403
403
|
excluded: "excluded";
|
|
404
404
|
}>>;
|
|
405
405
|
matchedDocId: z.ZodOptional<z.ZodString>;
|
|
@@ -839,8 +839,8 @@ export declare const periodStatusOutput: z.ZodObject<{
|
|
|
839
839
|
status: z.ZodOptional<z.ZodEnum<{
|
|
840
840
|
open: "open";
|
|
841
841
|
closed: "closed";
|
|
842
|
-
closing: "closing";
|
|
843
842
|
reopened: "reopened";
|
|
843
|
+
closing: "closing";
|
|
844
844
|
}>>;
|
|
845
845
|
startDate: z.ZodOptional<z.ZodString>;
|
|
846
846
|
endDate: z.ZodOptional<z.ZodString>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frihet/mcp-server",
|
|
3
|
-
"version": "1.15.
|
|
3
|
+
"version": "1.15.3",
|
|
4
4
|
"description": "AI-native MCP server for business management — invoices, expenses, deposits, clients, products, quotes, webhooks, CRM, e-invoicing (Facturae/XRechnung/Factur-X/FatturaPA/PEPPOL + FACe Spain B2G + TicketBAI Basque Country + KSeF Poland), vacation rentals, POS, banking, fiscal (Modelo 303/130/390/180/347/415/425/418, VeriFactu, TicketBAI, IS M200/M202), IGIC, AIEM, GL audit approval, white-label portal domain, VIES EU VAT lookup, bank rules, time tracking, recurring invoices, team management, gestoria. 157 tools. Remote endpoint at mcp.frihet.io (zero install). Works with Claude, Cursor, Windsurf, Cline.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsc",
|
|
12
|
-
"test": "npm run build && node --test dist/__tests__/openai-profile.test.js dist/__tests__/tool-exposure.test.js dist/__tests__/einvoice-tools.test.js dist/__tests__/einvoice-day4-tools.test.js dist/__tests__/stay-tools.test.js dist/__tests__/pos-tools.test.js dist/__tests__/kitchen-tools.test.js dist/__tests__/banking-tools.test.js dist/__tests__/banking-client-contract.test.js dist/__tests__/fiscal-tools.test.js dist/__tests__/time-tools.test.js dist/__tests__/recurring-tools.test.js dist/__tests__/team-tools.test.js dist/__tests__/d4b-hr-payroll-onboarding-tools.test.js dist/__tests__/audit-server-version.test.js dist/__tests__/openai-grouped-compose.test.js dist/__tests__/contract.test.js dist/__tests__/observability-redaction.test.js dist/__tests__/intelligence-duplicate-invoice.test.js dist/__tests__/get-envelope-unwrap-regression.test.js dist/__tests__/mutation-unwrap-and-schema-regression.test.js dist/__tests__/schema-envelope-guard.test.js",
|
|
12
|
+
"test": "npm run build && node --test dist/__tests__/openai-profile.test.js dist/__tests__/tool-exposure.test.js dist/__tests__/einvoice-tools.test.js dist/__tests__/einvoice-day4-tools.test.js dist/__tests__/stay-tools.test.js dist/__tests__/pos-tools.test.js dist/__tests__/kitchen-tools.test.js dist/__tests__/banking-tools.test.js dist/__tests__/banking-client-contract.test.js dist/__tests__/pagination-cursor-param.test.js dist/__tests__/fiscal-tools.test.js dist/__tests__/time-tools.test.js dist/__tests__/recurring-tools.test.js dist/__tests__/team-tools.test.js dist/__tests__/d4b-hr-payroll-onboarding-tools.test.js dist/__tests__/audit-server-version.test.js dist/__tests__/openai-grouped-compose.test.js dist/__tests__/contract.test.js dist/__tests__/observability-redaction.test.js dist/__tests__/intelligence-duplicate-invoice.test.js dist/__tests__/get-envelope-unwrap-regression.test.js dist/__tests__/mutation-unwrap-and-schema-regression.test.js dist/__tests__/schema-envelope-guard.test.js dist/__tests__/demo-mode.test.js",
|
|
13
13
|
"start": "node dist/index.js",
|
|
14
14
|
"postinstall": "node scripts/postinstall.js || true",
|
|
15
15
|
"prepublishOnly": "npm run build && npm run audit:mcp-refs -- --repo frihet-mcp",
|
|
@@ -39,7 +39,22 @@ if grep -rinE "distribution-roadmap|first-mover advantage|cease.?(and|&).?desist
|
|
|
39
39
|
note "Business-secret / legal-strategy marker found on public surface — move to a private location."
|
|
40
40
|
fi
|
|
41
41
|
|
|
42
|
+
# 4. No internal doctrine / internal-tooling markers on prose surfaces (July-2026
|
|
43
|
+
# leak class: CLAUDE.md carried the "north star" roadmap + moat doctrine, and
|
|
44
|
+
# AGENTS.md carried internal multi-agent dispatch + LLM-router cost rules).
|
|
45
|
+
# Public-repo CLAUDE.md/AGENTS.md are docs for EXTERNAL contributors, never
|
|
46
|
+
# internal operating docs.
|
|
47
|
+
if grep -rinE "north.?star|moat|SOUL\.md|~/\.claude/bin|litellm|sonnet worker|multi-agent dispatch|doctrina|doctrine" \
|
|
48
|
+
--include="*.md" --include="*.ts" --include="*.js" --include="*.toml" . 2>/dev/null | grep -v node_modules | grep -v "/dist/" | grep -v "scripts/no-public-leak.sh"; then
|
|
49
|
+
note "Internal doctrine / internal-tooling marker found — public repo docs are for external contributors only."
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
# 5. Strategy/secret-named files must never be tracked (recurrence guard).
|
|
53
|
+
if git ls-files | grep -inE "strategy|roadmap|secrets?\.md$|decision_spec" ; then
|
|
54
|
+
note "Strategy/secrets-named file tracked in public repo — keep these in a private repo."
|
|
55
|
+
fi
|
|
56
|
+
|
|
42
57
|
if [ "$fail" -eq 0 ]; then
|
|
43
|
-
echo "✓ no-public-leak: clean (no competitor comparison
|
|
58
|
+
echo "✓ no-public-leak: clean (no competitor comparison, strategy secret, or internal doctrine on public surface)"
|
|
44
59
|
fi
|
|
45
60
|
exit $fail
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* ⚠️ DO NOT RUN until the openai-mcp Worker has been deployed with
|
|
6
6
|
* FRIHET_TOOL_MODE=grouped (env.openai). The composition is gated behind
|
|
7
|
-
*
|
|
7
|
+
* a production flip + an OpenAI app re-review.
|
|
8
8
|
* Running it before deploy asserts against the OLD ("full") surface and will
|
|
9
9
|
* fail on the meta-tool checks — that failure is expected pre-deploy.
|
|
10
10
|
*
|