🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@frihet/mcp-server

Package Overview
Dependencies
Maintainers
1
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@frihet/mcp-server - npm Package Compare versions

Comparing version
1.15.2
to
1.15.3
+11
dist/__tests__/demo-mode.test.d.ts
/**
* Demo mode (`FRIHET_DEMO=1`) — DemoFrihetClient contract + fixture PII safety.
*
* Verifies the fixture-backed client serves stamped example data with ZERO
* network calls, simulates writes with a demo id, labels fiscal actions as
* simulated, and that no fixture email leaks a non-@example.com domain.
*
* Run: npm test (after build)
*/
export {};
//# sourceMappingURL=demo-mode.test.d.ts.map
{"version":3,"file":"demo-mode.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/demo-mode.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
/**
* Demo mode (`FRIHET_DEMO=1`) — DemoFrihetClient contract + fixture PII safety.
*
* Verifies the fixture-backed client serves stamped example data with ZERO
* network calls, simulates writes with a demo id, labels fiscal actions as
* simulated, and that no fixture email leaks a non-@example.com domain.
*
* Run: npm test (after build)
*/
import { test, describe } from "node:test";
import assert from "node:assert/strict";
import { DemoFrihetClient } from "../demo-client.js";
import * as fixtures from "../demo-fixtures.js";
describe("DemoFrihetClient — reads", () => {
test("listInvoices returns a non-empty stamped PaginatedResponse", async () => {
const client = new DemoFrihetClient();
const res = await client.listInvoices();
assert.ok(Array.isArray(res.data), "data is an array");
assert.ok(res.data.length > 0, "data is non-empty");
assert.equal(res.total, res.data.length);
assert.equal(res._demo, true);
assert.ok(res._demoNotice, "_demoNotice present");
});
test("getInvoice(<fixture id>) returns the fixture stamped _demo:true", async () => {
const client = new DemoFrihetClient();
const firstId = fixtures.demoInvoices[0].id;
const res = await client.getInvoice(firstId);
assert.equal(res.id, firstId);
assert.equal(res._demo, true);
assert.ok(res._demoNotice, "_demoNotice present");
});
});
describe("DemoFrihetClient — writes are simulated", () => {
test("createInvoice returns _demo:true with a demo_-prefixed id, purely", async () => {
const client = new DemoFrihetClient();
const res = await client.createInvoice({
clientName: "Test Client",
items: [{ description: "Work", quantity: 2, unitPrice: 100 }],
taxRate: 21,
});
assert.equal(res._demo, true);
assert.equal(typeof res.id, "string");
assert.ok(res.id.startsWith("demo_"), `id "${res.id}" starts with demo_`);
// Echoes input + computes totals.
assert.equal(res.clientName, "Test Client");
assert.equal(res.subtotal, 200);
assert.equal(res.taxAmount, 42);
assert.equal(res.total, 242);
// WRITE notice communicates non-persistence.
assert.match(res._demoNotice, /Simulated — not persisted/);
});
test("createInvoice is a pure function — no throw, no network, repeatable", async () => {
const client = new DemoFrihetClient();
// Called twice back-to-back; neither throws nor hangs on a socket.
const a = await client.createInvoice({ clientName: "A", items: [] });
const b = await client.createInvoice({ clientName: "B", items: [] });
assert.equal(a._demo, true);
assert.equal(b._demo, true);
assert.notEqual(a.id, b.id, "ids are distinct across calls");
});
});
describe("DemoFrihetClient — fiscal actions are simulated only", () => {
test("sendEInvoice returns _demo:true + a simulated queued status, never throws", async () => {
const client = new DemoFrihetClient();
const res = await client.sendEInvoice({ invoiceId: "demo_inv_001", format: "facturae", dispatchMode: "peppol" });
assert.equal(res.status, "queued");
assert.equal(typeof res.workflowRunId, "string");
assert.equal(res._demo, true);
const notice = res._demoNotice;
assert.ok(notice, "_demoNotice present");
assert.match(notice, /no submission was made to any tax authority/);
});
test("faceSubmit + ticketbaiSubmit are labeled simulated, never real submissions", async () => {
const client = new DemoFrihetClient();
const face = await client.faceSubmit({ invoiceId: "demo_inv_001", mode: "sandbox" });
assert.equal(face.status, "submitted");
assert.equal(face._demo, true);
const tbai = await client.ticketbaiSubmit({ invoiceId: "demo_inv_001", sandbox: true });
assert.equal(tbai._demo, true);
assert.match(tbai._demoNotice, /no submission was made to any tax authority/);
});
});
describe("demo fixtures — PII safety", () => {
test("every email string in the fixtures ends with @example.com", () => {
// Collect every string value that looks like an email across all fixture
// exports; assert none uses a domain other than example.com.
const emailRe = /[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g;
const emails = [];
const seen = new Set();
const walk = (val) => {
if (val == null)
return;
if (typeof val === "string") {
const matches = val.match(emailRe);
if (matches)
emails.push(...matches);
return;
}
if (typeof val !== "object")
return;
if (seen.has(val))
return;
seen.add(val);
for (const v of Object.values(val))
walk(v);
};
walk(fixtures);
assert.ok(emails.length > 0, "fixtures contain at least one email (sanity)");
for (const email of emails) {
assert.ok(email.endsWith("@example.com"), `email "${email}" must be under @example.com`);
}
});
test("fixtures use the ECBS/AEAT test IBAN, not a real one", () => {
assert.equal(fixtures.DEMO_TEST_IBAN, "ES9121000418450200051332");
const account = fixtures.demoBankAccounts[0];
assert.equal(account.iban, fixtures.DEMO_TEST_IBAN);
});
});
//# sourceMappingURL=demo-mode.test.js.map
{"version":3,"file":"demo-mode.test.js","sourceRoot":"","sources":["../../src/__tests__/demo-mode.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAI,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACvD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAE,GAAqC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,CAAC,EAAE,CAAE,GAA2C,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAE,CAAC,EAAY,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,IAAI,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACrC,UAAU,EAAE,aAAa;YACzB,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;YAC7D,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,CAAE,GAAG,CAAC,EAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC,EAAY,qBAAqB,CAAC,CAAC;QAChG,kCAAkC;QAClC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7B,6CAA6C;QAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAqB,EAAE,2BAA2B,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,mEAAmE;QACnE,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;IACpE,IAAI,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAE,GAAqC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,MAAM,GAAI,GAA2C,CAAC,WAAW,CAAC;QACxE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,MAAgB,EAAE,6CAA6C,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC5F,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAE,IAAsC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,CAAE,IAAsC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,CAAC,KAAK,CAAE,IAA2C,CAAC,WAAW,EAAE,6CAA6C,CAAC,CAAC;IACxH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACrE,yEAAyE;QACzE,6DAA6D;QAC7D,MAAM,OAAO,GAAG,iDAAiD,CAAC;QAClE,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,GAAY,EAAQ,EAAE;YAClC,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO;YACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnC,IAAI,OAAO;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO;YACpC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO;YAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAA8B,CAAC;gBAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEf,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,8CAA8C,CAAC,CAAC;QAC7E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,KAAK,8BAA8B,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
/**
* DemoFrihetClient — the `FRIHET_DEMO=1` seam.
*
* A drop-in IFrihetClient that makes ZERO network calls: it serves the canned
* PII-safe fixtures in demo-fixtures.ts. index.ts swaps this in for FrihetClient
* when demo mode is on, so tools (which stringify the client's return value)
* automatically propagate the `_demo`/`_demoNotice` banner without any change
* under src/tools/.
*
* Response contract (see SPEC-mcp-demo-mode.md option B/C):
* - reads/lists → fixture data stamped `_demo:true` (READ notice).
* - lists without fixtures → EMPTY PaginatedResponse, still stamped.
* - writes → plausible fixture-shaped object with a `demo_`-prefixed id
* (WRITE notice "…Simulated — not persisted.").
* - fiscal / e-invoice / email / payroll → SIMULATED labeled response, NEVER
* a real submission (FISCAL notice).
* - delete / remove methods → resolve void (interface return type forbids a
* stamp; this is the one accepted, documented gap).
*/
import type { IFrihetClient } from "./client-interface.js";
import type { PaginatedResponse } from "./types.js";
type Rec = Record<string, unknown>;
export declare class DemoFrihetClient implements IFrihetClient {
listInvoices(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getInvoice(id: string): Promise<Rec>;
createInvoice(data: Rec): Promise<Rec>;
updateInvoice(id: string, data: Rec): Promise<Rec>;
deleteInvoice(_id: string): Promise<void>;
searchInvoices(query: string, params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
listExpenses(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getExpense(id: string): Promise<Rec>;
createExpense(data: Rec): Promise<Rec>;
updateExpense(id: string, data: Rec): Promise<Rec>;
deleteExpense(_id: string): Promise<void>;
listClients(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getClient(id: string): Promise<Rec>;
createClient(data: Rec): Promise<Rec>;
updateClient(id: string, data: Rec): Promise<Rec>;
deleteClient(_id: string): Promise<void>;
listProducts(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getProduct(id: string): Promise<Rec>;
createProduct(data: Rec): Promise<Rec>;
updateProduct(id: string, data: Rec): Promise<Rec>;
deleteProduct(_id: string): Promise<void>;
listQuotes(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getQuote(id: string): Promise<Rec>;
createQuote(data: Rec): Promise<Rec>;
updateQuote(id: string, data: Rec): Promise<Rec>;
deleteQuote(_id: string): Promise<void>;
listVendors(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getVendor(id: string): Promise<Rec>;
createVendor(data: Rec): Promise<Rec>;
updateVendor(id: string, data: Rec): Promise<Rec>;
deleteVendor(_id: string): Promise<void>;
sendInvoice(id: string, to?: string): Promise<Rec>;
markInvoicePaid(id: string, paidDate?: string): Promise<Rec>;
getInvoicePdf(id: string): Promise<Rec>;
getInvoiceEInvoice(invoiceId: string): Promise<Rec>;
createCreditNote(invoiceId: string, data: {
reason: string;
reasonDescription?: string;
fullCredit?: boolean;
issueDate?: string;
}): Promise<Rec>;
applyLateFee(invoiceId: string, data?: {
amount?: number;
daysOverdue?: number;
}): Promise<Rec>;
sendQuote(id: string, to?: string): Promise<Rec>;
listWebhooks(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getWebhook(id: string): Promise<Rec>;
createWebhook(data: Rec): Promise<Rec>;
updateWebhook(id: string, data: Rec): Promise<Rec>;
deleteWebhook(_id: string): Promise<void>;
listClientContacts(_clientId: string, params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
createClientContact(clientId: string, data: Rec): Promise<Rec>;
deleteClientContact(_clientId: string, _contactId: string): Promise<void>;
listClientActivities(_clientId: string, params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
logClientActivity(clientId: string, data: Rec): Promise<Rec>;
listClientNotes(_clientId: string, params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
createClientNote(clientId: string, data: Rec): Promise<Rec>;
deleteClientNote(_clientId: string, _noteId: string): Promise<void>;
listDeposits(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getDeposit(id: string): Promise<Rec>;
createDeposit(data: Rec): Promise<Rec>;
updateDeposit(id: string, data: Rec): Promise<Rec>;
deleteDeposit(_id: string): Promise<void>;
applyDeposit(id: string, data?: Rec): Promise<Rec>;
refundDeposit(id: string, data?: Rec): Promise<Rec>;
getBusinessContext(): Promise<Rec>;
getMonthlySummary(month?: string): Promise<Rec>;
getQuarterlyTaxes(quarter?: string): Promise<Rec>;
sendEInvoice(_params: {
invoiceId: string;
format: string;
dispatchMode: string;
}): Promise<{
workflowRunId: string;
status: "queued";
estimatedCompletionSec: number;
}>;
getEInvoiceStatus(_workflowRunId: string): Promise<{
status: "queued" | "running" | "succeeded" | "failed" | "cancelled";
step: string;
error?: string;
ackId?: string;
pdfA3Url?: string;
xmlUrl?: string;
}>;
validateEInvoiceXml(_params: {
xml: string;
format: string;
}): Promise<{
valid: boolean;
errors: Array<{
severity: string;
location: string;
message: string;
rule: string;
}>;
validator: "kosit" | "mustang" | "xsd" | "schematron";
durationMs: number;
}>;
exportDatev(params: {
periodStart: string;
periodEnd: string;
format: string;
}): Promise<{
fileUrl: string;
filename: string;
rowCount: number;
fiscalPeriod: string;
encoding: "cp1252";
}>;
exportEInvoice(params: {
invoiceId: string;
format: string;
signed?: boolean;
}): Promise<{
xmlUrl: string;
filename: string;
format: string;
signed: boolean;
}>;
faceSubmit(params: {
invoiceId: string;
mode: "mock" | "sandbox" | "production";
}): Promise<{
registroFACe: string;
status: "submitted" | "error";
submittedAt: string;
mode: string;
}>;
faceStatus(_params: {
invoiceId: string;
}): Promise<{
registroFACe: string;
statusCode: string;
statusDescription: string;
rejectionReason?: string;
}>;
ticketbaiSubmit(params: {
invoiceId: string;
sandbox: boolean;
}): Promise<{
tbaiId: string;
territory: "bizkaia" | "gipuzkoa" | "araba";
status: "submitted" | "accepted" | "rejected" | "error";
sandbox: boolean;
qrUrl?: string;
}>;
ticketbaiStatus(_params: {
invoiceId: string;
}): Promise<{
tbaiId: string;
territory: "bizkaia" | "gipuzkoa" | "araba";
status: "submitted" | "accepted" | "rejected" | "error";
rejectionReason?: string;
error?: string;
}>;
listReservations(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getReservation(id: string): Promise<Rec>;
createReservation(data: Rec): Promise<Rec>;
listProperties(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
syncChannel(channelId: string, direction: "pull" | "push" | "both"): Promise<Rec>;
listTerminals(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getSale(id: string): Promise<Rec>;
listSales(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
refundSale(id: string, data?: {
amountCents?: number;
reason?: string;
}): Promise<Rec>;
listKitchenTickets(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getKitchenTicket(id: string): Promise<Rec>;
updateKitchenTicket(id: string, data: Rec): Promise<Rec>;
listKitchenStations(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
listMenuItems(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
listBankAccounts(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getBankAccount(id: string): Promise<Rec>;
listTransactions(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
categorizeTransaction(id: string, data: {
category: string;
notes?: string;
}): Promise<Rec>;
matchTransactionToDocument(transactionId: string, data: {
documentId: string;
documentType: "invoice" | "expense";
notes?: string;
}): Promise<Rec>;
getFiscalModeloSummary(modeloCode: string, period?: string): Promise<Rec>;
getVerifactuStatus(invoiceId: string): Promise<Rec>;
resubmitVerifactu(invoiceId: string): Promise<Rec>;
getTicketbaiStatus(invoiceId: string): Promise<Rec>;
listTimeEntries(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getTimeEntry(id: string): Promise<Rec>;
createTimeEntry(data: Rec): Promise<Rec>;
updateTimeEntry(id: string, data: Rec): Promise<Rec>;
deleteTimeEntry(_id: string): Promise<void>;
getTimeSummary(params: {
from: string;
to: string;
}): Promise<Rec>;
listRecurringInvoices(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
getRecurringInvoice(id: string): Promise<Rec>;
createRecurringInvoice(data: Rec): Promise<Rec>;
updateRecurringInvoice(id: string, data: Rec): Promise<Rec>;
pauseRecurringInvoice(id: string): Promise<Rec>;
resumeRecurringInvoice(id: string): Promise<Rec>;
deleteRecurringInvoice(_id: string): Promise<void>;
runRecurringNow(templateId: string, options?: {
draftOnly?: boolean;
}): Promise<Rec>;
listTeamMembers(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
inviteTeamMember(data: {
email: string;
role: string;
name?: string;
}): Promise<Rec>;
updateTeamMemberRole(memberId: string, role: string): Promise<Rec>;
removeTeamMember(_memberId: string): Promise<void>;
approveGLEntry(entryId: string, notes?: string): Promise<Rec>;
rejectGLEntry(entryId: string, reason: string): Promise<Rec>;
getGLEntryAuditLog(entryId: string): Promise<Rec>;
addCustomPortalDomain(data: {
domain: string;
workspaceId?: string;
}): Promise<Rec>;
verifyCustomPortalDomain(data: {
domain: string;
}): Promise<Rec>;
removeCustomPortalDomain(data: {
domain: string;
}): Promise<Rec>;
generatePortalOnboardLink(data: {
email: string;
name?: string;
expiresInHours?: number;
workspaceId?: string;
}): Promise<Rec>;
lookupTaxIdViaVIES(data: {
vatNumber: string;
countryCode: string;
}): Promise<Rec>;
getIgicModeloSummary(modeloCode: string, params?: {
year?: string;
period?: string;
}): Promise<Rec>;
calculateAiem(data: {
ncCode: string;
amount: number;
description?: string;
}): Promise<Rec>;
getISSummary(modeloCode: string, params?: {
year?: string;
installment?: string;
}): Promise<Rec>;
listBankRules(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
createBankRule(data: {
name: string;
conditions: Array<{
field: string;
operator: string;
value: string;
}>;
actions: Array<{
type: string;
value: string;
}>;
isActive?: boolean;
}): Promise<Rec>;
sendGestoriaMessage(data: {
workspaceId: string;
parentType: "documentRequest" | "filingItem" | "obligation";
parentId: string;
body: string;
}): Promise<Rec>;
listGestoriaMessages(_params: {
workspaceId: string;
parentType: "documentRequest" | "filingItem" | "obligation";
parentId: string;
limit?: number;
before?: string;
}): Promise<{
messages: Array<Rec>;
hasMore: boolean;
}>;
createGestoriaTemplate(data: {
name: string;
title: string;
description: string;
dueDateOffsetDays: number;
attachmentRequired?: boolean;
variables?: Array<{
key: string;
label?: string;
defaultValue?: string;
}>;
}): Promise<{
templateId: string;
}>;
bulkSendGestoriaTemplate(data: {
templateId: string;
clientWorkspaceIds: string[];
periodOverrides?: {
quarter?: string | number;
year?: string | number;
month?: string | number;
};
}): Promise<Rec>;
getGestoriaAgingConsolidated(_params?: {
ownerUid?: string;
}): Promise<Rec>;
listLeaves(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
createLeaveRequest(data: {
employeeId: string;
type: string;
startDate: string;
endDate: string;
reason?: string;
}): Promise<Rec>;
approveLeave(leaveId: string, data?: {
reason?: string;
}): Promise<Rec>;
rejectLeave(leaveId: string, data: {
reason: string;
}): Promise<Rec>;
cancelLeave(leaveId: string): Promise<Rec>;
attendanceClockIn(data: {
employeeId: string;
mood?: string;
location?: string;
}): Promise<Rec>;
attendanceClockOut(entryId: string): Promise<Rec>;
getOvertimeReport(params: {
period: string;
employeeId?: string;
}): Promise<Rec>;
listAnomalies(params?: {
limit?: number;
offset?: number;
}): Promise<PaginatedResponse<Rec>>;
testWebhook(id: string, data?: {
eventType?: string;
}): Promise<Rec>;
exportPayroll(params: {
format: "a3" | "contasol" | "sage" | "holded" | "siltra";
month: string;
}): Promise<Rec>;
getPayrollChecklist(params: {
month: string;
}): Promise<Rec>;
getOnboardingStatus(): Promise<Rec>;
setOnboardingPersona(data: {
persona: "autonomo" | "empresa" | "agencia" | "gestoria";
}): Promise<Rec>;
getPermissionsMatrix(): Promise<Rec>;
getMyPermissions(): Promise<Rec>;
getCurrentPeriod(params?: {
periodId?: string;
}): Promise<Rec>;
closePeriod(data: {
type: "monthly" | "quarterly";
}): Promise<Rec>;
reopenPeriod(data: {
periodId: string;
reason: string;
}): Promise<Rec>;
}
export {};
//# sourceMappingURL=demo-client.d.ts.map
{"version":3,"file":"demo-client.d.ts","sourceRoot":"","sources":["../src/demo-client.ts"],"names":[],"mappings":"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"}
/**
* DemoFrihetClient — the `FRIHET_DEMO=1` seam.
*
* A drop-in IFrihetClient that makes ZERO network calls: it serves the canned
* PII-safe fixtures in demo-fixtures.ts. index.ts swaps this in for FrihetClient
* when demo mode is on, so tools (which stringify the client's return value)
* automatically propagate the `_demo`/`_demoNotice` banner without any change
* under src/tools/.
*
* Response contract (see SPEC-mcp-demo-mode.md option B/C):
* - reads/lists → fixture data stamped `_demo:true` (READ notice).
* - lists without fixtures → EMPTY PaginatedResponse, still stamped.
* - writes → plausible fixture-shaped object with a `demo_`-prefixed id
* (WRITE notice "…Simulated — not persisted.").
* - fiscal / e-invoice / email / payroll → SIMULATED labeled response, NEVER
* a real submission (FISCAL notice).
* - delete / remove methods → resolve void (interface return type forbids a
* stamp; this is the one accepted, documented gap).
*/
import { READ_STAMP, FISCAL_STAMP, DEMO_NOW, demoPage, demoEmptyPage, findOrStub, demoId, simulateWrite, simulateAction, demoClients, demoProducts, demoInvoices, demoExpenses, demoQuotes, demoVendors, demoBankAccounts, demoTransactions, } from "./demo-fixtures.js";
export class DemoFrihetClient {
// ---------------------------------------------------------------- Invoices
async listInvoices(params) {
return demoPage(demoInvoices, params);
}
async getInvoice(id) {
return findOrStub(demoInvoices, id);
}
async createInvoice(data) {
const items = Array.isArray(data.items) ? data.items : [];
const subtotal = Math.round(items.reduce((s, i) => s + (i.quantity || 0) * (i.unitPrice || 0), 0) * 100) / 100;
const taxRate = typeof data.taxRate === "number" ? data.taxRate : 21;
const taxAmount = Math.round(subtotal * (taxRate / 100) * 100) / 100;
return simulateWrite("demo_inv", data, {
status: data.status ?? "draft",
subtotal,
taxAmount,
total: Math.round((subtotal + taxAmount) * 100) / 100,
currency: "EUR",
});
}
async updateInvoice(id, data) {
return simulateAction(id, { ...data });
}
async deleteInvoice(_id) {
return;
}
async searchInvoices(query, params) {
const q = query.toLowerCase();
const matched = demoInvoices.filter((inv) => JSON.stringify(inv).toLowerCase().includes(q));
return demoPage(matched, params);
}
// ---------------------------------------------------------------- Expenses
async listExpenses(params) {
return demoPage(demoExpenses, params);
}
async getExpense(id) {
return findOrStub(demoExpenses, id);
}
async createExpense(data) {
return simulateWrite("demo_exp", data, { taxDeductible: data.taxDeductible ?? true });
}
async updateExpense(id, data) {
return simulateAction(id, { ...data });
}
async deleteExpense(_id) {
return;
}
// ---------------------------------------------------------------- Clients
async listClients(params) {
return demoPage(demoClients, params);
}
async getClient(id) {
return findOrStub(demoClients, id);
}
async createClient(data) {
return simulateWrite("demo_cli", data);
}
async updateClient(id, data) {
return simulateAction(id, { ...data });
}
async deleteClient(_id) {
return;
}
// ---------------------------------------------------------------- Products
async listProducts(params) {
return demoPage(demoProducts, params);
}
async getProduct(id) {
return findOrStub(demoProducts, id);
}
async createProduct(data) {
return simulateWrite("demo_prd", data);
}
async updateProduct(id, data) {
return simulateAction(id, { ...data });
}
async deleteProduct(_id) {
return;
}
// ---------------------------------------------------------------- Quotes
async listQuotes(params) {
return demoPage(demoQuotes, params);
}
async getQuote(id) {
return findOrStub(demoQuotes, id);
}
async createQuote(data) {
return simulateWrite("demo_quo", data, { status: data.status ?? "draft" });
}
async updateQuote(id, data) {
return simulateAction(id, { ...data });
}
async deleteQuote(_id) {
return;
}
// ---------------------------------------------------------------- Vendors
async listVendors(params) {
return demoPage(demoVendors, params);
}
async getVendor(id) {
return findOrStub(demoVendors, id);
}
async createVendor(data) {
return simulateWrite("demo_ven", data);
}
async updateVendor(id, data) {
return simulateAction(id, { ...data });
}
async deleteVendor(_id) {
return;
}
// ---------------------------------------------------------------- Invoice actions
async sendInvoice(id, to) {
// Email dispatch — simulated, no email is actually sent.
return { id, status: "sent", sentAt: DEMO_NOW, ...(to ? { to } : {}), ...FISCAL_STAMP };
}
async markInvoicePaid(id, paidDate) {
return simulateAction(id, { status: "paid", paidAt: paidDate ?? DEMO_NOW });
}
async getInvoicePdf(id) {
return { id, url: "https://app.frihet.io/demo/invoice.pdf", contentType: "application/pdf", ...READ_STAMP };
}
async getInvoiceEInvoice(invoiceId) {
return {
xml: `<?xml version="1.0" encoding="UTF-8"?>\n<Invoice><!-- DEMO example e-invoice for ${invoiceId} --></Invoice>`,
filename: `${invoiceId}.xml`,
format: "facturae",
...FISCAL_STAMP,
};
}
async createCreditNote(invoiceId, data) {
return {
success: true,
creditNote: {
id: demoId("demo_cn"),
documentNumber: "R4-DEMO-001",
originalInvoiceId: invoiceId,
reason: data.reason,
fullCredit: data.fullCredit ?? true,
},
...FISCAL_STAMP,
};
}
async applyLateFee(invoiceId, data) {
return simulateAction(invoiceId, { lateFeeApplied: true, amount: data?.amount ?? 45.0, daysOverdue: data?.daysOverdue ?? 30 });
}
// ---------------------------------------------------------------- Quote actions
async sendQuote(id, to) {
return { id, status: "sent", sentAt: DEMO_NOW, ...(to ? { to } : {}), ...FISCAL_STAMP };
}
// ---------------------------------------------------------------- Webhooks
async listWebhooks(params) {
return demoEmptyPage(params);
}
async getWebhook(id) {
return { id, ...READ_STAMP };
}
async createWebhook(data) {
return simulateWrite("demo_wh", data, { active: data.active ?? true });
}
async updateWebhook(id, data) {
return simulateAction(id, { ...data });
}
async deleteWebhook(_id) {
return;
}
// ---------------------------------------------------------------- CRM: Contacts
async listClientContacts(_clientId, params) {
return demoEmptyPage(params);
}
async createClientContact(clientId, data) {
return simulateWrite("demo_contact", data, { clientId });
}
async deleteClientContact(_clientId, _contactId) {
return;
}
// ---------------------------------------------------------------- CRM: Activities
async listClientActivities(_clientId, params) {
return demoEmptyPage(params);
}
async logClientActivity(clientId, data) {
return simulateWrite("demo_act", data, { clientId });
}
// ---------------------------------------------------------------- CRM: Notes
async listClientNotes(_clientId, params) {
return demoEmptyPage(params);
}
async createClientNote(clientId, data) {
return simulateWrite("demo_note", data, { clientId });
}
async deleteClientNote(_clientId, _noteId) {
return;
}
// ---------------------------------------------------------------- Deposits
async listDeposits(params) {
return demoEmptyPage(params);
}
async getDeposit(id) {
return { id, ...READ_STAMP };
}
async createDeposit(data) {
return simulateWrite("demo_dep", data, { status: data.status ?? "held" });
}
async updateDeposit(id, data) {
return simulateAction(id, { ...data });
}
async deleteDeposit(_id) {
return;
}
async applyDeposit(id, data) {
return simulateAction(id, { ...(data ?? {}), status: "applied" });
}
async refundDeposit(id, data) {
return simulateAction(id, { ...(data ?? {}), status: "refunded" });
}
// ---------------------------------------------------------------- Intelligence
async getBusinessContext() {
return {
businessName: "Demo Studio SL",
fiscalRegime: "autonomo",
currency: "EUR",
country: "ES",
metrics: { openInvoices: 4, overdueInvoices: 1, totalClients: demoClients.length, totalProducts: demoProducts.length },
...READ_STAMP,
};
}
async getMonthlySummary(month) {
return {
month: month ?? "2026-07",
revenue: 3960.4,
expenses: 405.6,
net: 3554.8,
invoiceCount: 5,
expenseCount: demoExpenses.length,
currency: "EUR",
...READ_STAMP,
};
}
async getQuarterlyTaxes(quarter) {
return {
quarter: quarter ?? "2026-Q2",
modelo303: { cuotaRepercutida: 1620.0, cuotaDeducible: 85.15, resultado: 1534.85 },
modelo130: { rendimientoNeto: 8200.0, pagoFraccionado: 1640.0 },
currency: "EUR",
readonly: true,
...READ_STAMP,
};
}
// ---------------------------------------------------------------- E-Invoicing (simulated fiscal)
async sendEInvoice(_params) {
return { workflowRunId: demoId("demo_wf"), status: "queued", estimatedCompletionSec: 8, ...FISCAL_STAMP };
}
async getEInvoiceStatus(_workflowRunId) {
return { status: "succeeded", step: "completed", ackId: "DEMO-ACK-001", ...FISCAL_STAMP };
}
async validateEInvoiceXml(_params) {
return { valid: true, errors: [], validator: "xsd", durationMs: 12, ...FISCAL_STAMP };
}
async exportDatev(params) {
return { fileUrl: "https://app.frihet.io/demo/datev.csv", filename: "demo-datev.csv", rowCount: 24, fiscalPeriod: `${params.periodStart}..${params.periodEnd}`, encoding: "cp1252", ...FISCAL_STAMP };
}
async exportEInvoice(params) {
return { xmlUrl: "https://app.frihet.io/demo/einvoice.xml", filename: `${params.invoiceId}.xml`, format: params.format, signed: params.signed ?? false, ...FISCAL_STAMP };
}
async faceSubmit(params) {
return { registroFACe: "DEMO-FACE-0001", status: "submitted", submittedAt: DEMO_NOW, mode: params.mode, ...FISCAL_STAMP };
}
async faceStatus(_params) {
return { registroFACe: "DEMO-FACE-0001", statusCode: "1200", statusDescription: "Registrada (demo)", ...FISCAL_STAMP };
}
async ticketbaiSubmit(params) {
return { tbaiId: "DEMO-TBAI-0001", territory: "bizkaia", status: "submitted", sandbox: params.sandbox, qrUrl: "https://app.frihet.io/demo/tbai-qr.png", ...FISCAL_STAMP };
}
async ticketbaiStatus(_params) {
return { tbaiId: "DEMO-TBAI-0001", territory: "bizkaia", status: "accepted", ...FISCAL_STAMP };
}
// ---------------------------------------------------------------- Stay
async listReservations(params) {
return demoEmptyPage(params);
}
async getReservation(id) {
return { id, ...READ_STAMP };
}
async createReservation(data) {
return simulateWrite("demo_res", data, { status: data.status ?? "confirmed" });
}
async listProperties(params) {
return demoEmptyPage(params);
}
async syncChannel(channelId, direction) {
return simulateAction(channelId, { direction, synced: 0 });
}
// ---------------------------------------------------------------- POS
async listTerminals(params) {
return demoEmptyPage(params);
}
async getSale(id) {
return { id, ...READ_STAMP };
}
async listSales(params) {
return demoEmptyPage(params);
}
async refundSale(id, data) {
return simulateAction(id, { status: "refunded", refundedAmountCents: data?.amountCents ?? 0 });
}
// ---------------------------------------------------------------- Kitchen
async listKitchenTickets(params) {
return demoEmptyPage(params);
}
async getKitchenTicket(id) {
return { id, ...READ_STAMP };
}
async updateKitchenTicket(id, data) {
return simulateAction(id, { ...data });
}
async listKitchenStations(params) {
return demoEmptyPage(params);
}
async listMenuItems(params) {
return demoEmptyPage(params);
}
// ---------------------------------------------------------------- Banking
async listBankAccounts(params) {
return demoPage(demoBankAccounts, params);
}
async getBankAccount(id) {
return findOrStub(demoBankAccounts, id);
}
async listTransactions(params) {
return demoPage(demoTransactions, params);
}
async categorizeTransaction(id, data) {
return simulateAction(id, { category: data.category, ...(data.notes ? { notes: data.notes } : {}) });
}
async matchTransactionToDocument(transactionId, data) {
return simulateAction(transactionId, { matchedDocId: data.documentId, documentType: data.documentType });
}
// ---------------------------------------------------------------- Fiscal (simulated / read summaries)
async getFiscalModeloSummary(modeloCode, period) {
return { model: modeloCode, period: period ?? "2026-Q2", readonly: true, summary: { totalRevenue: 3960.4, totalExpenses: 405.6 }, ...FISCAL_STAMP };
}
async getVerifactuStatus(invoiceId) {
return { invoiceId, status: "accepted", accepted: true, submittedAt: DEMO_NOW, ...FISCAL_STAMP };
}
async resubmitVerifactu(invoiceId) {
return { invoiceId, status: "queued", ...FISCAL_STAMP };
}
async getTicketbaiStatus(invoiceId) {
return { invoiceId, status: "success", province: "bizkaia", ...FISCAL_STAMP };
}
// ---------------------------------------------------------------- Time tracking
async listTimeEntries(params) {
return demoEmptyPage(params);
}
async getTimeEntry(id) {
return { id, ...READ_STAMP };
}
async createTimeEntry(data) {
return simulateWrite("demo_time", data);
}
async updateTimeEntry(id, data) {
return simulateAction(id, { ...data });
}
async deleteTimeEntry(_id) {
return;
}
async getTimeSummary(params) {
return { from: params.from, to: params.to, totalHours: 0, billableHours: 0, nonBillableHours: 0, groups: [], ...READ_STAMP };
}
// ---------------------------------------------------------------- Recurring invoices
async listRecurringInvoices(params) {
return demoEmptyPage(params);
}
async getRecurringInvoice(id) {
return { id, ...READ_STAMP };
}
async createRecurringInvoice(data) {
return simulateWrite("demo_rec", data, { status: "active" });
}
async updateRecurringInvoice(id, data) {
return simulateAction(id, { ...data });
}
async pauseRecurringInvoice(id) {
return simulateAction(id, { status: "paused" });
}
async resumeRecurringInvoice(id) {
return simulateAction(id, { status: "active" });
}
async deleteRecurringInvoice(_id) {
return;
}
async runRecurringNow(templateId, options) {
return simulateAction(templateId, { generatedInvoiceId: demoId("demo_inv"), draftOnly: options?.draftOnly ?? true });
}
// ---------------------------------------------------------------- Team management
async listTeamMembers(params) {
return demoEmptyPage(params);
}
async inviteTeamMember(data) {
return simulateWrite("demo_member", { email: data.email, role: data.role, ...(data.name ? { name: data.name } : {}) }, { status: "pending" });
}
async updateTeamMemberRole(memberId, role) {
return simulateAction(memberId, { role });
}
async removeTeamMember(_memberId) {
return;
}
// ---------------------------------------------------------------- Audit GL
async approveGLEntry(entryId, notes) {
return simulateAction(entryId, { status: "approved", ...(notes ? { notes } : {}) });
}
async rejectGLEntry(entryId, reason) {
return simulateAction(entryId, { status: "rejected", reason });
}
async getGLEntryAuditLog(entryId) {
return { entryId, log: [], ...READ_STAMP };
}
// ---------------------------------------------------------------- White-label portal domain
async addCustomPortalDomain(data) {
return simulateWrite("demo_domain", { domain: data.domain }, { status: "pending_verification" });
}
async verifyCustomPortalDomain(data) {
return { domain: data.domain, verified: true, ...FISCAL_STAMP };
}
async removeCustomPortalDomain(data) {
return { domain: data.domain, removed: true, ...READ_STAMP };
}
// ---------------------------------------------------------------- Self-onboard + VIES
async generatePortalOnboardLink(data) {
return { email: data.email, url: "https://app.frihet.io/demo/onboard/DEMO-TOKEN", expiresInHours: data.expiresInHours ?? 72, ...READ_STAMP };
}
async lookupTaxIdViaVIES(data) {
return { vatNumber: data.vatNumber, countryCode: data.countryCode, valid: true, name: "Demo EU Company", ...FISCAL_STAMP };
}
// ---------------------------------------------------------------- IGIC
async getIgicModeloSummary(modeloCode, params) {
return { model: modeloCode, year: params?.year ?? "2026", period: params?.period ?? "2T", readonly: true, ...FISCAL_STAMP };
}
async calculateAiem(data) {
return { ncCode: data.ncCode, base: data.amount, aiemRate: 5, aiemAmount: Math.round(data.amount * 0.05 * 100) / 100, ...FISCAL_STAMP };
}
// ---------------------------------------------------------------- Impuesto Sociedades
async getISSummary(modeloCode, params) {
return { model: modeloCode, year: params?.year ?? "2026", installment: params?.installment ?? "1P", readonly: true, ...FISCAL_STAMP };
}
// ---------------------------------------------------------------- Bank rules
async listBankRules(params) {
return demoEmptyPage(params);
}
async createBankRule(data) {
return simulateWrite("demo_rule", { name: data.name, conditions: data.conditions, actions: data.actions }, { isActive: data.isActive ?? true });
}
// ---------------------------------------------------------------- Gestoria
async sendGestoriaMessage(data) {
return simulateWrite("demo_gmsg", { parentType: data.parentType, parentId: data.parentId, body: data.body });
}
async listGestoriaMessages(_params) {
return { messages: [], hasMore: false, ...READ_STAMP };
}
async createGestoriaTemplate(data) {
return { templateId: demoId("demo_tpl"), ...FISCAL_STAMP };
}
async bulkSendGestoriaTemplate(data) {
return { success: data.clientWorkspaceIds.length, failed: [], ...FISCAL_STAMP };
}
async getGestoriaAgingConsolidated(_params) {
return { totals: { current: 0, "30_60": 0, "60_90": 0, "90_plus": 0 }, byWorkspace: [], topOverdue: [], generatedAt: DEMO_NOW, ...READ_STAMP };
}
// ---------------------------------------------------------------- HR
async listLeaves(params) {
return demoEmptyPage(params);
}
async createLeaveRequest(data) {
return simulateWrite("demo_leave", { ...data }, { status: "pending" });
}
async approveLeave(leaveId, data) {
return simulateAction(leaveId, { status: "approved", ...(data?.reason ? { decisionReason: data.reason } : {}) });
}
async rejectLeave(leaveId, data) {
return simulateAction(leaveId, { status: "rejected", decisionReason: data.reason });
}
async cancelLeave(leaveId) {
return simulateAction(leaveId, { status: "cancelled" });
}
async attendanceClockIn(data) {
return simulateWrite("demo_att", { employeeId: data.employeeId, ...(data.mood ? { mood: data.mood } : {}), ...(data.location ? { location: data.location } : {}) }, { status: "open", clockInAt: DEMO_NOW });
}
async attendanceClockOut(entryId) {
return simulateAction(entryId, { status: "closed", clockOutAt: DEMO_NOW });
}
async getOvertimeReport(params) {
return { period: params.period, totalRegularHours: 0, totalOvertimeHours: 0, byEmployee: [], generatedAt: DEMO_NOW, ...READ_STAMP };
}
async listAnomalies(params) {
return demoEmptyPage(params);
}
// ---------------------------------------------------------------- Webhook test
async testWebhook(id, data) {
return { webhookId: id, delivered: true, statusCode: 200, responseTimeMs: 42, eventType: data?.eventType ?? "ping", attemptedAt: DEMO_NOW, ...FISCAL_STAMP };
}
// ---------------------------------------------------------------- Payroll (simulated fiscal)
async exportPayroll(params) {
return { format: params.format, month: params.month, fileUrl: "https://app.frihet.io/demo/payroll.txt", filename: "demo-payroll.txt", rowCount: 0, generatedAt: DEMO_NOW, ...FISCAL_STAMP };
}
async getPayrollChecklist(params) {
return { month: params.month, totalEmployees: 0, readyEmployees: 0, missingEmployees: 0, employees: [], generatedAt: DEMO_NOW, ...FISCAL_STAMP };
}
// ---------------------------------------------------------------- Onboarding
async getOnboardingStatus() {
return { workspaceId: "demo_ws_001", persona: "autonomo", completedSteps: ["profile"], pendingSteps: ["bank", "invoice"], percentComplete: 33, startedAt: DEMO_NOW, ...READ_STAMP };
}
async setOnboardingPersona(data) {
return { workspaceId: "demo_ws_001", persona: data.persona, updatedAt: DEMO_NOW, ...READ_STAMP };
}
// ---------------------------------------------------------------- Permissions
async getPermissionsMatrix() {
return { roles: [{ role: "owner", permissions: ["*"] }], resources: ["invoices", "expenses", "clients"], generatedAt: DEMO_NOW, ...READ_STAMP };
}
async getMyPermissions() {
return { userId: "demo_user_001", role: "owner", permissions: ["*"], workspaceId: "demo_ws_001", ...READ_STAMP };
}
// ---------------------------------------------------------------- Period close
async getCurrentPeriod(params) {
return { id: params?.periodId ?? "demo_period_2026_07", type: "monthly", status: "open", startDate: "2026-07-01", endDate: "2026-07-31", ...READ_STAMP };
}
async closePeriod(data) {
return simulateWrite("demo_period", { type: data.type }, { status: "closed", closedAt: DEMO_NOW });
}
async reopenPeriod(data) {
return simulateAction(data.periodId, { status: "reopened", reopenReason: data.reason });
}
}
//# sourceMappingURL=demo-client.js.map
{"version":3,"file":"demo-client.js","sourceRoot":"","sources":["../src/demo-client.ts"],"names":[],"mappings":"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"}
/**
* Demo-mode fixtures for the Frihet MCP server (`FRIHET_DEMO=1`).
*
* These are the canned, PII-SAFE example datasets served by DemoFrihetClient
* when the server runs without an API key. NOTHING here is real customer data:
* - NIF/CIF are AEAT example patterns (B12345678, X9999999X).
* - IBAN is the ECBS/AEAT test IBAN (ES9121000418450200051332).
* - Every email is under @example.com (guarded by demo-mode.test.ts).
* - Business names are generic, invented ES/EU companies.
*
* Amounts follow the same field shape the real /v1 REST API returns (see
* src/tools/*.ts output schemas + src/client-interface.ts return types), so an
* agent evaluating the demo sees exactly the response shape it would get live.
*/
import type { PaginatedResponse } from "./types.js";
/** Marker fields stamped on every demo response's top-level object. */
export interface DemoStamp {
_demo: true;
_demoNotice: string;
}
/** Read/get/list responses. */
export declare const READ_STAMP: DemoStamp;
/** Simulated writes (create/update/apply/mark/etc.). */
export declare const WRITE_STAMP: DemoStamp;
/** Fiscal / e-invoice / email / payroll actions — NEVER a real submission. */
export declare const FISCAL_STAMP: DemoStamp;
/** Empty surfaces (no dedicated fixtures yet) still carry a demo stamp. */
export declare const EMPTY_STAMP: DemoStamp;
/** Frozen timestamp so demo responses are deterministic across calls. */
export declare const DEMO_NOW = "2026-07-15T10:00:00.000Z";
/** Test IBAN (ECBS/AEAT example — never a real account). */
export declare const DEMO_TEST_IBAN = "ES9121000418450200051332";
export type DemoPaginated = PaginatedResponse<Record<string, unknown>> & DemoStamp;
/** Wrap a fixture array in a stamped PaginatedResponse. */
export declare function demoPage(data: Record<string, unknown>[], params?: {
limit?: number;
offset?: number;
}): DemoPaginated;
/** Empty stamped PaginatedResponse for surfaces without dedicated fixtures. */
export declare function demoEmptyPage(params?: {
limit?: number;
offset?: number;
}): DemoPaginated;
export declare const demoClients: Record<string, unknown>[];
export declare const demoProducts: Record<string, unknown>[];
export declare const demoInvoices: Record<string, unknown>[];
export declare const demoExpenses: Record<string, unknown>[];
export declare const demoQuotes: Record<string, unknown>[];
export declare const demoVendors: Record<string, unknown>[];
export declare const demoBankAccounts: Record<string, unknown>[];
export declare const demoTransactions: Record<string, unknown>[];
/** Find a fixture by id, or synthesize a minimal stamped object with that id. */
export declare function findOrStub(collection: Record<string, unknown>[], id: string): Record<string, unknown> & DemoStamp;
/** Deterministic-ish demo id (no network, no clock dependency). */
export declare function demoId(prefix: string): string;
/**
* Simulate a create/update: echo the input, stamp a fabricated demo id +
* timestamps + the WRITE banner. Never persists, never touches the network.
*/
export declare function simulateWrite(idPrefix: string, input: Record<string, unknown>, extra?: Record<string, unknown>): Record<string, unknown> & DemoStamp;
/** Simulate an action on an existing entity (keeps the caller-supplied id). */
export declare function simulateAction(id: string, fields?: Record<string, unknown>): Record<string, unknown> & DemoStamp;
//# sourceMappingURL=demo-fixtures.d.ts.map
{"version":3,"file":"demo-fixtures.d.ts","sourceRoot":"","sources":["../src/demo-fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpD,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+BAA+B;AAC/B,eAAO,MAAM,UAAU,EAAE,SAIf,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,WAAW,EAAE,SAIhB,CAAC;AAEX,8EAA8E;AAC9E,eAAO,MAAM,YAAY,EAAE,SAIjB,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,WAAW,EAAE,SAIhB,CAAC;AAEX,yEAAyE;AACzE,eAAO,MAAM,QAAQ,6BAA6B,CAAC;AAEnD,4DAA4D;AAC5D,eAAO,MAAM,cAAc,6BAA6B,CAAC;AAMzD,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;AAEnF,2DAA2D;AAC3D,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,MAAM,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,aAAa,CAQf;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAQzF;AAMD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAmDhD,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EASjD,CAAC;AAsDF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAUjD,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAOjD,CAAC;AAMF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAgC/C,CAAC;AAMF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAGhD,CAAC;AAMF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAYrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAKrD,CAAC;AAMF,iFAAiF;AACjF,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACrC,EAAE,EAAE,MAAM,GACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAIrC;AAID,mEAAmE;AACnE,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CASrC;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAErC"}
/**
* Demo-mode fixtures for the Frihet MCP server (`FRIHET_DEMO=1`).
*
* These are the canned, PII-SAFE example datasets served by DemoFrihetClient
* when the server runs without an API key. NOTHING here is real customer data:
* - NIF/CIF are AEAT example patterns (B12345678, X9999999X).
* - IBAN is the ECBS/AEAT test IBAN (ES9121000418450200051332).
* - Every email is under @example.com (guarded by demo-mode.test.ts).
* - Business names are generic, invented ES/EU companies.
*
* Amounts follow the same field shape the real /v1 REST API returns (see
* src/tools/*.ts output schemas + src/client-interface.ts return types), so an
* agent evaluating the demo sees exactly the response shape it would get live.
*/
/** Read/get/list responses. */
export const READ_STAMP = {
_demo: true,
_demoNotice: "DEMO MODE — example data, nothing persisted. For real data: app.frihet.io → Settings → API keys.",
};
/** Simulated writes (create/update/apply/mark/etc.). */
export const WRITE_STAMP = {
_demo: true,
_demoNotice: "DEMO MODE — example data, nothing persisted. Simulated — not persisted.",
};
/** Fiscal / e-invoice / email / payroll actions — NEVER a real submission. */
export const FISCAL_STAMP = {
_demo: true,
_demoNotice: "Simulated fiscal action — no submission was made to any tax authority.",
};
/** Empty surfaces (no dedicated fixtures yet) still carry a demo stamp. */
export const EMPTY_STAMP = {
_demo: true,
_demoNotice: "DEMO MODE — no demo fixtures for this surface yet. For real data: app.frihet.io → Settings → API keys.",
};
/** Frozen timestamp so demo responses are deterministic across calls. */
export const DEMO_NOW = "2026-07-15T10:00:00.000Z";
/** Test IBAN (ECBS/AEAT example — never a real account). */
export const DEMO_TEST_IBAN = "ES9121000418450200051332";
/** Wrap a fixture array in a stamped PaginatedResponse. */
export function demoPage(data, params) {
return {
data,
total: data.length,
limit: params?.limit ?? 50,
offset: params?.offset ?? 0,
...READ_STAMP,
};
}
/** Empty stamped PaginatedResponse for surfaces without dedicated fixtures. */
export function demoEmptyPage(params) {
return {
data: [],
total: 0,
limit: params?.limit ?? 50,
offset: params?.offset ?? 0,
...EMPTY_STAMP,
};
}
/* ------------------------------------------------------------------ */
/* Clients (5) — mix of ES peninsula, Canarias (IGIC), autónomo, EU */
/* ------------------------------------------------------------------ */
export const demoClients = [
{
id: "demo_cli_001",
name: "Panadería La Espiga SL",
email: "hola@example.com",
phone: "+34 600 000 001",
taxId: "B12345678",
address: { street: "Calle Mayor 12", city: "Madrid", state: "Madrid", postalCode: "28013", country: "ES" },
createdAt: DEMO_NOW,
updatedAt: DEMO_NOW,
},
{
id: "demo_cli_002",
name: "Estudio Nórdico Arquitectura SL",
email: "info@example.com",
phone: "+34 600 000 002",
taxId: "B87654321",
address: { street: "Passeig de Gràcia 45", city: "Barcelona", state: "Barcelona", postalCode: "08010", country: "ES" },
createdAt: DEMO_NOW,
updatedAt: DEMO_NOW,
},
{
id: "demo_cli_003",
name: "Servicios Insulares Canarias SL",
email: "contacto@example.com",
phone: "+34 600 000 003",
taxId: "B35700000",
address: { street: "Avenida de Anaga 8", city: "Santa Cruz de Tenerife", state: "Canarias", postalCode: "38001", country: "ES" },
createdAt: DEMO_NOW,
updatedAt: DEMO_NOW,
},
{
id: "demo_cli_004",
name: "Marina Delgado (autónoma)",
email: "marina@example.com",
phone: "+34 600 000 004",
taxId: "X9999999X",
address: { street: "Carrer de Colón 3", city: "Valencia", state: "Valencia", postalCode: "46004", country: "ES" },
createdAt: DEMO_NOW,
updatedAt: DEMO_NOW,
},
{
id: "demo_cli_005",
name: "TechFlow Solutions GmbH",
email: "billing@example.com",
phone: "+49 30 0000000",
taxId: "DE123456789",
address: { street: "Unter den Linden 10", city: "Berlin", state: "Berlin", postalCode: "10117", country: "DE" },
createdAt: DEMO_NOW,
updatedAt: DEMO_NOW,
},
];
/* ------------------------------------------------------------------ */
/* Products (8) — IVA 21% / 10% / 4% */
/* ------------------------------------------------------------------ */
export const demoProducts = [
{ 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 },
{ id: "demo_prd_002", name: "Desarrollo web (jornada)", unitPrice: 480, taxRate: 21, description: "Jornada de desarrollo full-stack", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
{ id: "demo_prd_003", name: "Mantenimiento mensual", unitPrice: 150, taxRate: 21, description: "Soporte y mantenimiento mensual", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
{ id: "demo_prd_004", name: "Diseño de marca", unitPrice: 1200, taxRate: 21, description: "Identidad visual completa", createdAt: DEMO_NOW, updatedAt: DEMO_NOW },
{ 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 },
{ 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 },
{ 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 },
{ 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 },
];
function money(n) {
return Math.round(n * 100) / 100;
}
function invoice(opts) {
const subtotal = money(opts.items.reduce((s, i) => s + i.quantity * i.unitPrice, 0));
const taxAmount = money(subtotal * (opts.taxRate / 100));
const irpfAmount = opts.irpfRate ? money(subtotal * (opts.irpfRate / 100)) : 0;
const total = money(subtotal + taxAmount - irpfAmount);
return {
id: opts.id,
clientId: opts.clientId,
clientName: opts.clientName,
items: opts.items,
issueDate: opts.issueDate,
dueDate: opts.dueDate,
status: opts.status,
taxRate: opts.taxRate,
subtotal,
taxAmount,
...(opts.irpfRate ? { irpfRate: opts.irpfRate, irpfAmount } : {}),
total,
currency: "EUR",
...(opts.clientLocation ? { clientLocation: opts.clientLocation } : {}),
...(opts.notes ? { notes: opts.notes } : {}),
createdAt: DEMO_NOW,
updatedAt: DEMO_NOW,
};
}
export const demoInvoices = [
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" }),
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" }),
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" }),
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" }),
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" }),
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" }),
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" }),
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" }),
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" }),
];
/* ------------------------------------------------------------------ */
/* Expenses (6) — categorized */
/* ------------------------------------------------------------------ */
export const demoExpenses = [
{ 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 },
{ 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 },
{ 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 },
{ 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 },
{ 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 },
{ 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 },
];
/* ------------------------------------------------------------------ */
/* Quotes (2) */
/* ------------------------------------------------------------------ */
export const demoQuotes = [
{
id: "demo_quo_001",
clientId: "demo_cli_002",
clientName: "Estudio Nórdico Arquitectura SL",
items: [{ description: "Desarrollo web (jornada)", quantity: 10, unitPrice: 480 }],
taxRate: 21,
subtotal: 4800,
taxAmount: 1008,
total: 5808,
currency: "EUR",
status: "sent",
validUntil: "2026-08-15",
createdAt: DEMO_NOW,
updatedAt: DEMO_NOW,
},
{
id: "demo_quo_002",
clientId: "demo_cli_005",
clientName: "TechFlow Solutions GmbH",
items: [{ description: "Consultoría estratégica (hora)", quantity: 30, unitPrice: 90 }],
taxRate: 0,
subtotal: 2700,
taxAmount: 0,
total: 2700,
currency: "EUR",
status: "draft",
validUntil: "2026-08-30",
notes: "Reverse charge (intracomunitario B2B)",
createdAt: DEMO_NOW,
updatedAt: DEMO_NOW,
},
];
/* ------------------------------------------------------------------ */
/* Vendors (2) */
/* ------------------------------------------------------------------ */
export const demoVendors = [
{ 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 },
{ 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 },
];
/* ------------------------------------------------------------------ */
/* Banking — 1 account + 4 transactions */
/* ------------------------------------------------------------------ */
export const demoBankAccounts = [
{
id: "demo_bank_001",
alias: "Cuenta principal",
iban: DEMO_TEST_IBAN,
ibanLast4: "1332",
currency: "EUR",
balance: 12450.75,
lastSyncedAt: DEMO_NOW,
createdAt: DEMO_NOW,
updatedAt: DEMO_NOW,
},
];
export const demoTransactions = [
{ 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 },
{ 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 },
{ 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 },
{ 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 },
];
/* ------------------------------------------------------------------ */
/* Lookups + write simulation helpers */
/* ------------------------------------------------------------------ */
/** Find a fixture by id, or synthesize a minimal stamped object with that id. */
export function findOrStub(collection, id) {
const found = collection.find((item) => item.id === id);
if (found)
return { ...found, ...READ_STAMP };
return { id, ...READ_STAMP };
}
let demoIdCounter = 0;
/** Deterministic-ish demo id (no network, no clock dependency). */
export function demoId(prefix) {
demoIdCounter += 1;
return `${prefix}_${String(demoIdCounter).padStart(3, "0")}`;
}
/**
* Simulate a create/update: echo the input, stamp a fabricated demo id +
* timestamps + the WRITE banner. Never persists, never touches the network.
*/
export function simulateWrite(idPrefix, input, extra = {}) {
return {
id: demoId(idPrefix),
...input,
...extra,
createdAt: DEMO_NOW,
updatedAt: DEMO_NOW,
...WRITE_STAMP,
};
}
/** Simulate an action on an existing entity (keeps the caller-supplied id). */
export function simulateAction(id, fields = {}) {
return { id, success: true, ...fields, updatedAt: DEMO_NOW, ...WRITE_STAMP };
}
//# sourceMappingURL=demo-fixtures.js.map
{"version":3,"file":"demo-fixtures.js","sourceRoot":"","sources":["../src/demo-fixtures.ts"],"names":[],"mappings":"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"}
+15
-3

@@ -17,2 +17,3 @@ #!/usr/bin/env node

import { FrihetClient } from "./client.js";
import { DemoFrihetClient } from "./demo-client.js";
// Single source of truth for the server version: package.json (read at runtime

@@ -41,3 +42,8 @@ // from dist/../package.json). Hardcoding it here caused repeated version drift

const apiKey = process.env.FRIHET_API_KEY;
if (!apiKey) {
// Demo mode: FRIHET_DEMO=1|true serves fixture-backed example data with NO
// network calls and NO API key required. It's an explicit opt-in, so it wins
// even if a real key happens to be present. See demo-client.ts / demo-fixtures.ts.
const demoFlag = process.env.FRIHET_DEMO;
const demoMode = demoFlag === "1" || demoFlag === "true";
if (!demoMode && !apiKey) {
console.error("Error: FRIHET_API_KEY environment variable is required.\n\n" +

@@ -48,2 +54,3 @@ "Get your API key:\n" +

" 3. Create a key and add it to your MCP configuration\n\n" +
"Or try it instantly with no key: set FRIHET_DEMO=1 for example data.\n\n" +
"Documentation: https://docs.frihet.io/desarrolladores/mcp-server\n");

@@ -53,3 +60,3 @@ process.exit(1);

const baseUrl = process.env.FRIHET_API_URL;
if (baseUrl !== undefined) {
if (!demoMode && baseUrl !== undefined) {
let parsed;

@@ -74,3 +81,8 @@ try {

}
const client = new FrihetClient(apiKey, baseUrl);
const client = demoMode
? new DemoFrihetClient()
: new FrihetClient(apiKey, baseUrl);
if (demoMode) {
console.error("[frihet-mcp] DEMO MODE — serving example fixtures, no real data, nothing persisted");
}
// Set trace context for Langfuse (reads LANGFUSE_* from process.env automatically).

@@ -77,0 +89,0 @@ // clientName can be overridden via FRIHET_CLIENT_NAME env var by the MCP host.

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}

@@ -51,2 +51,3 @@ /**

export declare const eInvoiceFormatSchema: z.ZodEnum<{
facturae: "facturae";
"xrechnung-cii": "xrechnung-cii";

@@ -62,3 +63,2 @@ "xrechnung-ubl": "xrechnung-ubl";

"peppol-bis-3": "peppol-bis-3";
facturae: "facturae";
}>;

@@ -65,0 +65,0 @@ export type EInvoiceFormat = z.infer<typeof eInvoiceFormatSchema>;

@@ -236,5 +236,5 @@ /**

cancelled: "cancelled";
completed: "completed";
confirmed: "confirmed";
pending: "pending";
completed: "completed";
no_show: "no_show";

@@ -330,4 +330,4 @@ }>;

cancelled: "cancelled";
refunded: "refunded";
pending: "pending";
refunded: "refunded";
partially_refunded: "partially_refunded";

@@ -403,4 +403,4 @@ }>>;

status: z.ZodOptional<z.ZodEnum<{
posted: "posted";
pending: "pending";
posted: "posted";
excluded: "excluded";

@@ -845,4 +845,4 @@ }>>;

closed: "closed";
reopened: "reopened";
closing: "closing";
reopened: "reopened";
}>>;

@@ -849,0 +849,0 @@ startDate: z.ZodOptional<z.ZodString>;

{
"name": "@frihet/mcp-server",
"version": "1.15.2",
"version": "1.15.3",
"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.",

@@ -12,3 +12,3 @@ "type": "module",

"build": "tsc",
"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",
"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",
"start": "node dist/index.js",

@@ -15,0 +15,0 @@ "postinstall": "node scripts/postinstall.js || true",

@@ -42,3 +42,3 @@ <p align="center">

> **Tool count:** npm `latest` (1.15.2) ships all 157 tools, same as the remote endpoint (`mcp.frihet.io`).
> **Tool count:** npm `latest` (1.15.3) ships all 157 tools, same as the remote endpoint (`mcp.frihet.io`).

@@ -62,2 +62,16 @@ ---

## Try it instantly (no signup)
Kick the tires with zero setup — no account, no API key:
```bash
FRIHET_DEMO=1 npx -y @frihet/mcp-server
```
In demo mode the server answers from realistic **example fixtures** (Spanish invoices with IVA/IGIC, expenses, clients, products, a bank account, and more) — every record uses `demo_`-prefixed IDs and the server prints a `DEMO MODE` banner on startup. **Nothing is persisted** and no network call is ever made. Writes are simulated and fiscal actions (e-invoice, VeriFactu, TicketBAI, FACe, payroll) return a clearly-labeled simulation — never a real submission to any tax authority.
When you're ready for your real data, drop the flag and add your key ([app.frihet.io](https://app.frihet.io) → Settings → API keys). See [Install](#install) below.
---
## Install

@@ -71,2 +85,20 @@

### Claude Code plugin (skill + MCP server in one install)
This repository is also a Claude Code plugin (`frihet-erp`): installing it wires up both the business-management skill and the MCP server.
```bash
# Try it locally
claude --plugin-dir /path/to/frihet-mcp
```
Once available in the community marketplace:
```text
/plugin marketplace add anthropics/claude-plugins-community
/plugin install frihet-erp@claude-community
```
Skill invocation: `/frihet-erp:frihet-mcp`. The bundled `.mcp.json` launches `@frihet/mcp-server` via `npx` — set `FRIHET_API_KEY` in your environment (get one at [app.frihet.io](https://app.frihet.io) → Settings → API keys).
### Claude Code / Claude Desktop

@@ -73,0 +105,0 @@