Zuletzt aktualisiert: 22. April 2026
Documentation
Everything MSPercury can do today, in the order you'll probably encounter it. All features are available on every beta workspace — no paywalled tiers during the beta.
1. Getting in
Invite-only signup
MSPercury is in closed beta. To get access you need an invite code from the operator. The sign-up link looks like https://mspercury.com/signup?invite=<code>. The code is single-use and tied to the email address you give at signup (unless the inviter left the email field blank).
Microsoft 365 login (optional)
Once MS_CLIENT_ID is configured on the server, a "Sign in with Microsoft" button appears on /login. The first time a user signs in with M365, a workspace is created automatically and they become its admin. Existing users with a password can also link their M365 identity by signing in with it — the system matches on email.
2. Customers, projects, and their shapes
A customer is the company you service. A project belongs to a customer and carries three counts — workstations, servers, users — which drive quantity-based line items on quotes.
Create a customer first (/customers/new), then add one or more projects to it. You can have multiple projects per customer if you want to price different sites or plan tiers separately.
3. Catalog: services, packages, findings library
Service items
The building blocks of every quote. A service has a unit (workstation / server / user / hour / unit), a billing period (monthly / yearly / one_time), a net unit price and optional cost price for margin tracking. Services can be marked inactive to hide them from pickers without breaking existing quotes (which always snapshot the data).
Package templates
Bundles of services with quantity rules: fixed (always N), per_workstation, per_server, per_user. Applying a package to a project expands it into real quote line items, multiplying by the project's counts.
One package can be marked as default — it's pre-selected when you create a new quote.
Finding templates library
Reusable audit items at /catalog/findings. Each template carries a description, category, default priority/effort, suggested solution text, and optionally a link to one catalog service. The service link is what turns a CheckUp into a quote with one click.
4. CheckUp workflow
The audit-to-quote flow is MSPercury's core loop. It goes:
- Create a CheckUp at
/checkups/new. Pick a customer; optionally attach a project (required if you want to generate a quote from it). - Document findings in the editor. Quick-add from your library dropdown, or add custom findings inline. Set priority (hoch / mittel / niedrig) and effort. Link a finding to a catalog service to make it billable.
- Save. The system auto-saves whenever you click "Save findings".
- (Optional) Click Generate executive summary in the sidebar if you've configured an AI provider. The summary is stored with the CheckUp and embedded in the PDF.
- Click Finalize. The CheckUp becomes read-only — findings are immutable like quote line items.
- Download the PDF report (WeasyPrint-rendered, cover page, TOC, risk matrix, findings by category, methodology, appendix).
- Click Create quote from CheckUp. Each mapped finding becomes a line item on a new draft quote, sized by the attached project's counts.
The quote keeps a link back to the source CheckUp (source_checkup_id) — on the quote detail page you'll see a green badge "Created from CheckUp" linking back to the audit.
5. Quotes
A quote is an immutable snapshot: line items carry their own copy of name / description / unit price / billing period at the moment they were created. That means editing a catalog service doesn't retroactively change accepted quotes — they represent the commitment you made at that specific date.
Every quote has:
- A number like
Q-2026-0001(per-org, per-year sequence) - A status: draft / sent / accepted / rejected
- Currency (defaults to the workspace currency — configurable in Settings → Finance)
- VAT rate (defaults to workspace VAT rate) and discount percentage
- Optional intro + outro text
Totals are computed grouped by billing period: monthly net, yearly net, one-time net, plus discount, gross (with VAT), and ARR (monthly × 12 + yearly). The PDF shows all three groups with per-group subtotals and an ARR row at the bottom.
6. PDF reports
Both CheckUps and quotes have branded PDF endpoints rendered by WeasyPrint:
GET /checkups/[id]/report.pdfGET /quotes/[id]/pdf
PDFs embed the workspace logo (uploaded in Settings → Branding) as a base64 image and replace the default emerald accent with the configured Primary Color. Headers and footers use WeasyPrint @page margin boxes that native browser print views can't reproduce faithfully.
On machines without WeasyPrint installed (typically Windows dev), the endpoints return a graceful 503 with install instructions and a link back to the HTML print view.
7. Settings
Workspace
Name, legal name (printed on quotes), contact email, phone, website, VAT ID, address, quote footer. The quote footer appears at the bottom of every PDF.
Finance
Default currency (EUR, USD, GBP, CHF, SEK, DKK, NOK, PLN, CZK) and default VAT rate applied to new quotes.
Language
Per-user preference: English, German, Spanish. Affects dashboard UI only — customer-facing documents follow your workspace's default language.
Branding
Logo upload (PNG / JPG / SVG / WebP, max 2 MB) and primary accent color. Both flow through to PDF templates, the app sidebar, and the dashboard.
AI integrations
Connect Anthropic (Claude) or OpenAI (GPT). Supply an API key; it's encrypted with AES-256-GCM using a key derived from SESSION_SECRET before being stored. Once configured, a "✨ Generate executive summary" button appears on the CheckUp editor sidebar.
Beta invites (superadmin only)
Users listed in SUPERADMIN_EMAILS see /settings/invites, a page to create, send and revoke beta invite codes. Each invite can be scoped to a specific email address, given an expiry window, and optionally sent via the configured mailer.
8. Dark mode
Three-state toggle in the top header: system (default, follows OS preference) / light / dark. Preference stored in localStorage. No flash on page load — a blocking script in <head> sets the class before first paint.
9. Global search (Cmd/Ctrl + K)
Press ⌘K (macOS) or Ctrl+K (Windows/Linux) anywhere in the app, or click the search bar in the header. Results span customers, projects, CheckUps, quotes, finding templates, services and packages. Arrow keys to navigate, Enter to open.
10. Data exports
CSV per entity
Every list page has an "Export CSV" button. Endpoints:
/api/export/customers.csv/api/export/projects.csv/api/export/quotes.csv/api/export/checkups.csv/api/export/findings.csv/api/export/services.csv/api/export/packages.csv
Full workspace ZIP
/api/export/workspace.zip streams a zip of all customers, projects, quotes, CheckUps and catalogs as JSON + CSV, plus your uploaded logo. Per-customer exports live at /api/export/customer/[id].zip. Both satisfy GDPR Art. 20 (right to data portability).
11. Installable PWA
MSPercury is a Progressive Web App. On iOS Safari: Share → "Add to Home Screen". On Android Chrome: "Install app" in the menu. Desktop Chrome / Edge: the install icon in the URL bar. Once installed, the app launches standalone (no browser chrome), uses its own icon, and handles offline with a fallback page.
12. Legal
Imprint · Terms · Privacy · DPA · Cookies. All available in English and German.
Questions?
Email info@mspercury.com. During the beta we reply fast.