well_get_pennylane_statements
shallowio.github.WellApp-ai/well-mcp · Verify this server
Build a profit and loss (compte de résultat) and a balance sheet (bilan) from the trial balance of the workspace's connected Pennylane. Pennylane shares no ready profit and loss or balance sheet, only its trial balance (`getTrialBalance`). Well reads every page of it and computes the totals itself, account class by account class of the French chart of accounts (PCG). Every amount is a decimal string in euros, such as `"5000.00"`. State each amount exactly as returned and name the source: "computed by Well from the Pennylane trial balance". Never add, round or recompute an amount, and never call `getTrialBalance` yourself to rebuild one. Use it when the user asks for a profit and loss, an income statement, a compte de résultat, a balance sheet or a bilan, and the workspace's accounting tool is Pennylane. Do not use it for QuickBooks or Xero, whose own reports `well_invoke_connector_tool` reads. **Inputs.** `workspace_connector_id` is the Pennylane accounting row's id from `well_get_connector_coverage`. `statements` is `income_statement`, `balance_sheet` or `both`. `to` is the last day, YYYY-MM-DD, never after today: the profit and loss ends on it and the balance sheet is dated on it. `from` is the first day of the profit and loss, required for `income_statement` and `both`. The period must sit inside one Pennylane fiscal year. **Output.** `income_statement` gives `revenue` (class 7) and `expenses` (class 6), each with its `total` and its two-digit PCG `groups`, and `net_result` (revenue minus expenses, negative is a loss). `balance_sheet` gives `assets` and `equity_and_liabilities`, each with its `total` and `sections`, and `result_for_the_year` (from the fiscal year start to `to`, inside equity). The two totals are equal. `source` names the connection, the tool, the chart and each trial balance read with its dates and row count. `opening_balances` says how the balance sheet was shown to include the opening balances: carried from the closed previous year, or an opening entry on the first day of the fiscal year. `fiscal_year.status` is the year's status in Pennylane: `open` or `reopen` means entries can still be booked in it, so the figures can still change; say so once. **Refusals carry no statement.** `opening_balances_unverified`: Well cannot show that the balance sheet includes the opening balances (à-nouveaux) of the fiscal year, usually because the previous year is not closed in Pennylane yet or its opening entry is not imported yet; the profit and loss alone still works. `trial_balance_semantics_unproven`: Well cannot show that Pennylane's trial balance holds only the movements of the dates asked for. Before every profit and loss and every balance sheet, Well splits the trial balance at one day (the day before `from` for a profit and loss that starts after the fiscal year start, otherwise the day before `to`) and checks that the two parts add up to the whole on every class 6 and 7 account. The check failed, or a statement dated on the first day of the fiscal year left no day to split at. Well then builds neither statement, and the refusal carries `trial_balance`: Pennylane's trial balance for the dates asked for, with its full `row_count` and at most its first twenty rows, each exactly as Pennylane returned it. `closing_entries_suspected`: either every profit and loss account nets to zero on `to` although the earlier days of the year moved some, or the result of the year (chapter 12) moves on `to` (checked on the last day of the span, and on the last day of the fiscal year for a later period), which means Pennylane probably booked the closing entries of the fiscal year on that day; Well builds no statement and the refusal carries `trial_balance` the same way. Show those rows as Pennylane's trial balance, never as a profit and loss or a balance sheet, and add nothing up; when `row_count` is above the rows returned, say the full trial balance is in Pennylane. `connection_not_found`: no Pennylane connection matches `workspace_connector_id` in this workspace. `unsupported_source`: the connection is not a Pennylane input connection served over MCP (`pennylane` or `pennylane-token`). `unsupported_currency`: the workspace's base currency is not EUR. `unsupported_framework`: the Pennylane company does not use a French chart of accounts. `framework_not_reviewed`: the company uses a French sector chart (agriculture, non-profit or notary) that Well's statements do not cover yet. `scope_missing`: the connection was not granted the trial balance; it needs a reconnect. `tool_not_read_only`: Well's record of the connection does not mark a Pennylane read as read-only, so Well calls nothing. `connection_not_readable`: the connection is not enabled, or its grant expired during the read (`connection_status` says which state). When the connection is in the state `need_reconnect` or `error`, a `scope_missing` or `connection_not_readable` refusal carries `reconnect_url`, the link that reconnects this Pennylane connection: give it to the user as a clickable link, exactly as returned, and never build a connector link yourself. Without `reconnect_url`, give no link. `read_incomplete`: the trial balance did not come back whole. `invalid_trial_balance`: the trial balance came back whole but does not balance or holds a row Well cannot read (`defect` says which). `fiscal_year_not_found` and `invalid_period`: the dates do not fit one Pennylane fiscal year. `failed`: the read failed and nothing is known. Say each refusal in one plain line and state no figure, except the `trial_balance` rows of `trial_balance_semantics_unproven` and `closing_entries_suspected`, shown as returned. When the token authorizes one workspace, call this directly — no workspace call is needed first. When it authorizes several, this read will not guess which one you mean: pass `workspace_id` on the call.
1 trials · measured 3 days ago
well_get_pennylane_statements scores 100.0/100 on Vouch's measured behaviour index, from 1 real invocation trials against io.github.WellApp-ai/well-mcp, measured 18 Oct 2026 under methodology v0.2.0. Every measured component scored 100.
Component breakdown
| Component | Weight | Value |
|---|---|---|
| Reliability | 35% | not applicable |
| Schema integrity | 25% | 100.0 |
| Failure behaviour | 15% | not applicable |
| Latency | 15% | not applicable |
| Concurrency | 10% | not applicable |
Tool details
- Transport
- remote
- Credential class
- gated
- Input schema
- not declared
- Output schema
- not declared
- Side-effect classification
- unclassified
Score history
| Day | Score | Tier | Methodology |
|---|---|---|---|
| 2026-10-18 | 100.0 | shallow | v0.2.0 |
Probe evidence
| Probe | Outcomes |
|---|---|
| schema_integrity | pass: 1 |
Raw request/response logs are not archived yet — the outcome counts above are drawn directly from every recorded trial.
Embed this score
Available for every tool, scored or not — not a verification perk. Always links back to this page.
[](https://vouch.tools/tools/af1b1c73-0011-4ecf-af6f-1df5fc7f0c9c)