Skip to main content
Glama
stornoro

Storno CLI

by stornoro

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
auth_loginA

Authenticate with the Storno.ro API using email and password. Returns JWT access and refresh tokens, and stores them in the session config for all subsequent requests. Must be called before any other tool if STORNO_TOKEN is not set.

auth_registerA

Create a new Storno.ro user account. A default organization is automatically created. Returns JWT tokens on success.

auth_refreshA

Refresh an expired JWT access token using the refresh token. Both tokens are rotated. The new tokens are stored in the session config. Use when the current token has expired.

auth_meA

Get the current authenticated user profile including organization memberships and subscription plan. Returns flat JSON with user, organization, memberships, and subscription.

auth_update_profileA

Update the authenticated user's profile. Can update name, phone, timezone, quiet-hours preference, preferences, or change password (requires currentPassword when changing password).

auth_forgot_passwordA

Request a password reset email. Always returns success to prevent user enumeration — the email is only sent if the account exists. The reset link is valid for 1 hour.

auth_reset_passwordA

Reset a user password using the token received via email from auth_forgot_password. The token is single-use and expires after 1 hour. All existing sessions are revoked on success.

companies_listA

List all companies belonging to the authenticated user's organization. Returns company details including CIF, addresses, bank info, sync settings, and ANAF token status. Use this to find company UUIDs for the companies_select tool.

companies_getA

Get detailed information for a specific company by UUID. Returns all configuration settings, bank info, sync settings, and ANAF token validity status.

companies_createA

Add a company or an individual person to the organization. Company: give the CIF (with or without RO); ANAF supplies name, address and VAT status. Individual person (persoană fizică, the landlord who files D212 / C168 as a person): type "individual" with the CNP, full name, city and county (address optional); nothing is fetched from ANAF and the CNP is checked (13 digits, control digit). Never invent a CNP.

companies_updateA

Update configuration settings for a company. Note: core ANAF data (CIF, registration number, VAT status, official address) cannot be modified as they are synced from official ANAF sources. Only editable fields like contact info, bank details, and sync settings can be changed.

companies_deleteA

Permanently delete a company and all associated data (invoices, clients, products, ANAF tokens). This triggers an asynchronous cascade deletion. Only Owner or Admin roles can delete companies. This action cannot be undone.

companies_upload_logoB

Upload a logo image for a company. Accepts PNG, JPG, or SVG files up to 2MB. The logo appears on PDF documents (invoices, proformas, delivery notes, receipts).

companies_delete_logoB

Remove the logo from a company. PDFs will no longer include the company logo.

companies_toggle_syncA

Toggle ANAF SPV / e-Factura synchronization on or off for a specific company. Calls POST /api/v1/companies/{uuid}/toggle-sync — flips the company's syncEnabled boolean. Requires COMPANY_EDIT permission. Enabling fails with 422 (messageKey ERR_SYNC_ENABLE_NO_TOKEN) when the company has no valid ANAF OAuth token; connect via anaf_create_token_link first. Returns { syncEnabled, message }. To enable on a fresh company, the recipe is: companies_list → anaf_create_token_link (open the URL, complete OAuth) → anaf_validate_cif → companies_toggle_sync.

companies_set_activeA

Set the organization-level active company by UUID. Calls PUT /api/v1/companies/{uuid}/set-active on the server and returns the updated list of all companies with the new active company reflected. Requires COMPANY_EDIT permission. Use companies_list first to find available company UUIDs.

companies_selectA

Select the active company for the current session. This sets the X-Company header used by all subsequent invoice, client, product, and other company-scoped requests. Call companies_list first to find available company UUIDs.

invoices_listA

List invoices for the active company with pagination, filtering, and sorting. Supports filtering by status (draft/issued/sent_to_provider/validated/rejected/cancelled), direction (incoming/outgoing), date range, client, and search term. Returns paginated results with totals.

invoices_getA

Get complete details for a specific invoice by UUID, including all line items, payment history, events timeline, attachments, client and supplier info, XML/PDF generation status, and ANAF submission details.

invoices_createA

Create a new draft invoice. Requires at least one line item and either a clientId or receiverName/receiverCif. The invoice starts in "draft" status and can be edited until issued. Use invoices_issue to finalize and generate XML/PDF.

invoices_updateA

Update an existing draft invoice. Only invoices with status "draft" can be updated. When updating the lines array, the entire array is replaced — include all lines you want to keep. Once issued, use invoices_cancel instead.

invoices_deleteA

Permanently delete a draft invoice. Only invoices with status "draft" can be deleted. This action is irreversible. For issued invoices, use invoices_cancel instead.

invoices_issueA

Issue a draft invoice. Validates the data, assigns a series number, generates UBL 2.1 XML, generates PDF (Pro plan), and changes status from "draft" to "issued". Once issued, the invoice cannot be edited. Use invoices_submit to send to ANAF e-Factura.

invoices_submitA

Submit an issued invoice to the ANAF e-Factura system. The invoice must be in "issued" status. Changes status to "sent_to_provider". ANAF validates the invoice asynchronously — poll invoices_get or use invoices_events to check validation result.

invoices_validateA

Validate an invoice before issuing or submitting. Returns a list of errors and warnings. Use mode "quick" for fast validation (basic rules) or "full" for comprehensive UBL Schematron and CIUS-RO compliance checks.

invoices_cancelA

Cancel an issued invoice. Requires a cancellation reason (minimum 10 characters). Changes status to "cancelled". Cancelled invoices remain in the system for record-keeping. Use invoices_restore to undo an accidental cancellation.

invoices_sync_clientA

Resync a single invoice with its client's current profile data (receiver name, CUI/CNP, buyer snapshot, VAT rules). Only allowed while the invoice has not been uploaded to ANAF (or was rejected) and is not cancelled. Cached XML/PDF files are invalidated so they regenerate with the corrected data. Use clients_sync_invoices to resync all unsent invoices of a client at once.

invoices_restoreA

Restore a cancelled invoice back to "draft" status. Only for accidental cancellations. Cannot restore if the invoice was submitted to ANAF, has credit notes, or has recorded payments. The invoice can then be edited and reissued.

invoices_pdfA

Download the PDF representation of an invoice. Returns base64-encoded binary data with content type. Requires Pro plan. PDF is generated automatically on issue or on-demand when first requested.

invoices_xmlB

Download the UBL 2.1 XML file for an issued invoice. Returns the XML text content. The XML is the format required for ANAF e-Factura submission and conforms to CIUS-RO and EN 16931 standards.

invoices_emailA

Send an invoice via email with optional PDF and XML attachments. Use invoices_email_defaults first to get pre-filled subject and body. Emails are sent asynchronously via queue. PDF attachment requires Pro plan. Recipients (to, cc, bcc) must be client emails registered on the company; other addresses are rejected with EMAIL_RECIPIENT_NOT_CLIENT.

invoices_email_defaultsA

Get pre-filled email content for an invoice based on the company email template. Returns suggested "to", "cc", "subject", and "body" with template variables already substituted. Use this to populate the email form before calling invoices_email.

invoices_email_historyA

Get the complete history of emails sent for an invoice, including delivery status, open/click tracking, bounce information, and who sent each email. Useful for audit trails and verifying client received the invoice.

invoices_eventsA

Get the complete timeline of events for an invoice: status changes, ANAF submissions, validations, emails sent, payments received, and user actions. Useful for audit trails, debugging, and understanding invoice lifecycle history.

invoices_attachmentsA

Download a file attachment from an invoice. Returns base64-encoded binary data with the MIME type. Get attachment UUIDs from invoices_get (the "attachments" array). Supports PDF, images, Word, Excel, ZIP, and other file types.

invoices_verify_signatureA

Verify the ANAF digital signature on a validated invoice. Checks certificate validity, signature cryptographic integrity, and XML content integrity. Requires Pro plan and the invoice must be in "validated" status (ANAF-signed).

invoices_export_csvA

Export a filtered list of invoices to CSV format. Accepts the same filters as invoices_list (status, direction, date range, client, etc.). Returns CSV text with UTF-8 BOM for Excel compatibility. Max 10,000 invoices; use invoices_export_zip for large exports with files.

invoices_export_zipA

Export a set of invoices (by UUID list) to a ZIP archive containing PDFs, XMLs, and a CSV summary. Processed asynchronously — returns an exportId and statusUrl. Poll the statusUrl or wait for webhook. Requires Pro plan. Max 100 invoices per export.

invoices_bulk_deleteA

Delete multiple draft invoices in batch. Only invoices with status "draft" can be deleted. This action is irreversible. Returns count of deleted invoices and any per-item errors.

invoices_bulk_cancelB

Cancel multiple invoices in batch with an optional reason. Returns count of cancelled invoices and any per-item errors.

invoices_bulk_stornoA

Create storno (refund/credit note) invoices for multiple invoices in batch. Only outgoing invoices with status "issued" or "validated" are eligible. Returns count of created storno invoices and any per-item errors.

invoices_bulk_mark_paidA

Mark multiple invoices as fully paid in batch. Creates payment records for each invoice's remaining balance. paymentMethod defaults to "bank_transfer". Returns count of updated invoices and any per-item errors.

invoices_export_saga_xmlA

Export invoices in Saga XML format for accounting software integration (e.g., Saga C). Accepts the same filters as invoices_export_csv. Returns XML text content.

invoices_export_receipts_saga_xmlA

Export payment receipts (incasari) in Saga XML format. Exports all outgoing invoice payments for accounting software integration. Use accountCash/accountBank/accountCard to override the chart-of-accounts for this export (defaults come from the company’s stored SAGA settings; SAGA requires the leaf analytic for cards, e.g. 5125.2).

invoices_export_payments_saga_xmlA

Export supplier payments (plati) in Saga XML format. Exports all incoming invoice payments for accounting software integration. Use accountCash/accountBank/accountCard to override the chart-of-accounts for this export (defaults come from the company’s stored SAGA settings).

invoices_export_efactura_zipB

Export e-Factura XML files as a ZIP archive. For large batches (>100 invoices), the export is processed asynchronously and returns a job ID to poll for completion.

invoices_share_links_listB

List all share links for an invoice, including view counts, expiry info, and status (active/revoked/expired).

invoices_share_links_createB

Create a new shareable link for an invoice. Returns the share URL, token, and expiry date. The link allows the recipient to view the invoice without authentication.

invoices_share_links_revokeB

Revoke/delete a share link for an invoice, making it permanently inaccessible. Get linkId from invoices_share_links_list.

clients_listA

List clients for the active company. Results are grouped alphabetically by name and can be filtered by type (company/individual) or searched by name, CUI/CNP, or email.

clients_getA

Get detailed information about a specific client by UUID, including invoice summary statistics (total count, unpaid amount, overdue amount, total revenue) and a list of the 10 most recent invoices.

clients_createA

Create a new client manually. Supports both company and individual client types. Company details (address, VAT, bank account, etc.) can be auto-filled using clients_anaf_lookup or clients_from_registry before calling this tool.

clients_updateA

Update an existing client by UUID. All fields are optional — only the provided fields will be updated.

clients_sync_invoicesA

Resync all unsent invoices with the client's current profile data (name, CUI, tax details). Unlike the automatic propagation on client update (current month only), this also rewrites older invoices, as long as they were not uploaded to ANAF and are not cancelled. Cached XML/PDF files are invalidated so they regenerate with the new data. Returns the number of invoices updated.

clients_deleteB

Permanently delete a client by UUID. Clients with existing invoices or documents cannot be deleted.

clients_bulk_deleteB

Delete multiple clients in a single request. Accepts up to 100 client UUIDs. Clients with existing documents will be skipped or cause an error depending on server configuration.

clients_anaf_lookupA

Look up company details by CUI in the ANAF public registry without creating a client. Returns pre-filled form data (name, address, VAT status, registration number, etc.) that can be used to populate a clients_create call.

clients_vies_lookupA

Validate a VAT code against the EU VIES system. Returns whether the VAT number is valid and the registered company name/address. Use this to verify EU intra-community VAT numbers before applying reverse charge.

clients_from_registryA

Create a client by looking up a CUI in the ANAF registry and auto-filling all available details (name, address, VAT status, registration number, etc.). Use this instead of clients_create when you only have a CUI and want the company details resolved automatically.

clients_export_csvB

Export all clients for the active company as a CSV file. Returns base64-encoded binary data representing the CSV file contents.

clients_export_saga_xmlC

Export clients in Saga XML format for import into Saga accounting software. Returns the XML document as text.

products_listA

List products for the active company. Products are sync-only and are automatically extracted from invoice line items during ANAF synchronization — they cannot be manually created or edited. Results can be filtered by active status and searched by name, code, or description.

products_getB

Get detailed information about a specific product by UUID, including usage statistics (total usage count, total revenue generated, average quantity, first and last usage dates).

products_updateA

Update an existing product by UUID. All fields are optional — only provided fields are changed. Useful for assigning product codes (so sales can be grouped per plan/SKU), fixing names, or adjusting default prices on sync-created products. Pass code=null to clear a code.

product_categories_listA

List all product categories for the active company, ordered by sortOrder then name. Categories appear as a chip strip above the POS product grid and double as fallback colour swatches for products that don't have their own colour.

product_categories_createB

Create a new POS product category. Categories are scoped to a single company.

product_categories_updateA

Update a product category. All fields optional; omitted fields stay unchanged. Pass color=null to clear the swatch.

product_categories_deleteA

Delete a product category. Products that were in the category lose the assignment (categoryId is set to null) but are not deleted.

payments_listA

List all payments recorded for a specific invoice, ordered by payment date (most recent first). Returns payment amount, date, method, reference number, and notes. The sum of payments determines the invoice amountPaid and balance.

payments_createA

Record a payment received for an invoice. Updates the invoice amountPaid and balance, and automatically changes invoice status to "partially_paid" or "paid" as appropriate. Supports partial payments with full details (method, reference, notes).

payments_deleteA

Permanently delete a recorded payment from an invoice. Updates the invoice amountPaid and balance, and may change the invoice status back to "unpaid" or "partially_paid". This action is irreversible — use with caution for corrections.

defaults_invoiceA

Get all default values and dropdown options needed for invoice creation. Returns VAT rates, currencies with symbols, payment terms (in days), units of measure, payment methods, and current BNR exchange rates for EUR/USD/GBP/CHF relative to RON. Always fetch this before creating invoices — never hardcode these values.

vat_category_codes_listA

List all available VAT category codes with their i18n message keys. Codes: S (standard rate), Z (zero-rated), E (exempt from tax), AE (reverse charge), K (exempt for export), L (intra-community supply), O (outside scope), M (margin scheme). Does not require authentication.

vat_rates_listA

List all VAT rates configured for the active company, sorted by display position. Returns rate percentage, display label, e-Factura category code, and which rate is the default. Common Romanian rates: 19% (standard), 9% (reduced), 5% (super-reduced), 0% (exempt).

vat_rates_createA

Create a new VAT rate for the active company. If isDefault is true, any existing default rate is demoted. If this is the first VAT rate, it automatically becomes the default. Common e-Factura category codes: S=standard, AA=reduced, E=exempt, O=outside scope, Z=zero rated, AE=reverse charge.

vat_rates_updateA

Update an existing VAT rate. Note: changing the rate percentage does not retroactively affect existing invoices — those preserve the original rate. Only updates display label, category code, default status, or position. At least one field must be provided.

vat_rates_deleteA

Soft-delete a VAT rate. The rate is marked as deleted but not physically removed, preserving historical invoice integrity. Cannot delete the default rate (set another as default first) or the last remaining rate. Existing invoices are not affected.

bank_accounts_listA

List all bank accounts configured for the active company. Returns IBAN, bank name, currency, and which account is the default per currency. Bank accounts appear on invoices as payment instructions.

bank_accounts_createA

Add a new bank account to the active company. For type=bank, IBAN is required and must be unique within the company. For type=cash (the till that backs POS / cash-register reports), IBAN is optional and openingBalance/openingBalanceDate enable cash-register tracking. A company can have at most one cash account. If isDefault is true, any existing default account for that currency is demoted.

bank_accounts_updateA

Update an existing bank account. Can update type, IBAN, bank name, currency, default status, or initial opening balance. Once openingBalance has been persisted with a value > 0 it locks — further changes are rejected and corrections must be made via cash movements. At least one field must be provided.

bank_accounts_deleteA

Permanently delete a bank account. Cannot delete the last bank account for a company or the default account (set another as default first). Existing invoices that referenced this account retain the IBAN in their stored data.

cash_register_balanceA

Live snapshot of the till — opening balance, cash in/out since opening, manual movements, and current balance. Returns { configured: false } if no cash-type bank account exists or its opening balance is not set.

cash_register_ledgerA

Daily cash ledger across the requested date range. Each day bucket includes opening balance, chronological entries (receipts, cash payments, manual movements), totals, and closing balance. Range capped at 366 days.

cash_register_movements_listA

List manual cash movements (deposits, withdrawals, miscellaneous) in a date range. Receipts and invoice payments are NOT returned here — use cash_register_ledger for the full picture.

cash_register_movements_createA

Record a manual cash movement (deposit, withdrawal, or miscellaneous). Direction is auto-set for deposits (out) and withdrawals (in); for kind=other, direction must be supplied. movementDate cannot be earlier than the cash account opening date.

cash_register_movements_updateA

Update a manual cash movement. All fields optional; omitted fields keep their current value. Currency cannot be changed. Changing kind between deposit/withdrawal re-applies auto-direction.

cash_register_movements_deleteA

Permanently delete a manual cash movement. Receipts and invoice payments cannot be deleted via this endpoint — use their respective resources.

document_series_listA

List all document series for the active company, optionally filtered by type. Document series define the numbering prefixes for invoices (e.g., "FAC"), proformas ("PRO"), credit notes, and delivery notes. Each series tracks the current and next available number.

document_series_createA

Create a new document series. The prefix must be unique per company and document type. Common patterns: "FAC" for invoices, "FAC2026" for annual series, "PRO" for proformas. Use currentNumber to set the starting number (default: 0, so first document gets number 1).

document_series_updateA

Update an existing document series. Only "currentNumber" and "active" can be changed — prefix and type are immutable after creation. Use active=false to deactivate a series (e.g., at end of fiscal year). Changing currentNumber affects the next document number, use with extreme caution to avoid duplicates.

document_series_set_defaultA

Set a document series as the default for its type. The default series is auto-selected when creating new documents of that type. Only one series can be default per type.

document_series_deleteA

Permanently delete a document series. Cannot delete a series that has been used for any documents. Consider marking as inactive (active=false) instead, to preserve referential integrity and the audit trail. Only delete if the series was created by mistake and never used.

proforma_invoices_listA

List proforma invoices for the selected company with optional filtering by status, date range, client, and search term. Returns paginated results.

proforma_invoices_getB

Get complete details for a specific proforma invoice including all line items, client information, and calculated totals.

proforma_invoices_createB

Create a new proforma invoice in draft status with line items. Supports multiple currencies, discounts, and optional references.

proforma_invoices_updateA

Update an existing proforma invoice. Only invoices in draft status can be updated. Replaces all line items with the provided array.

proforma_invoices_deleteA

Permanently delete a proforma invoice. Only draft proforma invoices can be deleted. Use cancel for sent/accepted/rejected proformas to preserve audit trail.

proforma_invoices_sendB

Mark a proforma invoice as sent to the client. Transitions status from draft to sent. Once sent, the proforma becomes read-only.

proforma_invoices_acceptB

Mark a proforma invoice as accepted by the client. Transitions status to accepted. Once accepted, the proforma is ready to be converted to a final invoice.

proforma_invoices_rejectA

Mark a proforma invoice as rejected by the client. Optionally provide a rejection reason and notes. Once rejected, the proforma cannot be converted to an invoice.

proforma_invoices_cancelA

Cancel a proforma invoice. Can be cancelled from any status except converted or already cancelled. Preserves historical record unlike deletion.

proforma_invoices_convertA

Convert a proforma invoice into a final invoice. Creates a new invoice with all proforma data, marks proforma as converted, and links the two documents. Returns both the new invoice and updated proforma.

proforma_invoices_pdfA

Download the PDF of a proforma invoice. Returns base64-encoded binary data. Requires Pro plan.

proforma_invoices_bulk_deleteA

Delete multiple proforma invoices in batch. Only draft proformas can be deleted. Returns count of deleted and any errors.

recurring_invoices_listB

List recurring invoice templates for the selected company. Supports filtering by active status and frequency.

recurring_invoices_getA

Get detailed information about a specific recurring invoice template including all line items used as a template for generated invoices.

recurring_invoices_createB

Create a new recurring invoice template. The system will automatically generate invoices based on the specified frequency and schedule. Supports fixed, updated_product, bnr_rate and bnr_rate_markup pricing rules on line items.

recurring_invoices_updateA

Update an existing recurring invoice template. All fields are optional but at least one must be provided. When updating lines, the entire lines array replaces existing lines.

recurring_invoices_deleteA

Permanently delete a recurring invoice template. Previously generated invoices from this template are not affected. Use toggle to temporarily pause instead.

recurring_invoices_toggleB

Toggle the active status of a recurring invoice template to pause or resume automatic invoice generation. If active, it will be paused; if paused, it will be resumed.

recurring_invoices_bulk_deleteB

Delete multiple recurring invoice templates in a single request. Returns the count of deleted items and any errors for items that could not be deleted.

recurring_invoices_bulk_toggle_activeA

Toggle the active/paused status of multiple recurring invoices at once. Set active=true to resume or active=false to pause invoice generation.

recurring_invoices_bulk_issue_nowA

Immediately generate invoices from multiple recurring invoice templates. Useful for triggering generation outside the normal schedule. Does not update the nextIssuanceDate.

recurring_invoices_issue_nowA

Manually trigger immediate invoice generation from a recurring invoice template, bypassing the scheduled generation. Useful for testing configurations or creating one-off invoices. Does not update the nextIssuanceDate.

delivery_notes_listB

List delivery notes for the selected company with optional filtering by status, date range, client, and search term. Delivery notes document physical delivery of goods or completion of services.

delivery_notes_getB

Get complete details for a specific delivery note including all line items, client information, deputy details, and calculated totals.

delivery_notes_createA

Create a new delivery note in draft status. Delivery notes document physical delivery of goods or services and can later be converted to invoices. Include deputy information for proof of delivery. A default delivery_note series is auto-assigned if neither seriesId nor documentSeriesId is provided.

delivery_notes_updateA

Update an existing delivery note. Delivery notes in draft or issued status can be updated. Replaces all line items with the provided array.

delivery_notes_deleteA

Permanently delete a delivery note. Only draft delivery notes can be deleted. Use cancel for issued delivery notes to preserve audit trail.

delivery_notes_issueA

Mark a delivery note as issued when the physical delivery of goods or completion of services occurs. Transitions status from draft to issued. Once issued, the delivery note becomes read-only.

delivery_notes_cancelA

Cancel a delivery note when delivery will not occur. Can be cancelled from draft or issued status. Preserves historical record unlike deletion. Optionally provide a cancellation reason.

delivery_notes_pdfA

Download the PDF for a delivery note. Returns base64-encoded PDF binary data. The delivery note must be in issued or converted status. Optionally hide VAT or prices for simplified delivery documents.

delivery_notes_convertA

Convert a delivery note into a final invoice. Creates a new invoice with all delivery note data, marks the delivery note as converted, and establishes a link between the two documents. Returns both the new invoice and updated delivery note.

delivery_notes_restoreA

Restore a cancelled delivery note back to draft status. Only cancelled delivery notes can be restored. This reverses the cancellation and allows the delivery note to be re-issued.

delivery_notes_emailA

Send a delivery note to a client via email with the PDF attached. Supports custom subject, body, CC, and BCC recipients. Recipients (to, cc, bcc) must be client emails registered on the company; other addresses are rejected with EMAIL_RECIPIENT_NOT_CLIENT.

delivery_notes_email_defaultsA

Get pre-filled email content for a delivery note including default recipient, subject, and body text with template variables already substituted.

delivery_notes_email_historyA

Get the email sending history for a delivery note, including all sent emails with their status, timestamps, and recipient information.

delivery_notes_stornoB

Create a storno (return) delivery note with negated quantities from an existing issued delivery note. The storno delivery note is created as a draft and can be issued separately.

delivery_notes_from_proformaA

Create a new delivery note from an existing proforma invoice. Copies client, lines, dates, currency, and notes from the proforma. The delivery note is created in draft status.

delivery_notes_bulk_convertA

Convert multiple issued delivery notes into a single invoice. All delivery notes must be issued, have the same client, and use the same currency. Creates one invoice combining all lines and marks all delivery notes as invoiced.

delivery_notes_validate_etransportA

Validate a delivery note against Romania's e-Transport schema before submitting. Checks entity validation, XSD schema, and Schematron rules. Returns validation result with errors and warnings. Use this before submit_etransport to catch issues early.

delivery_notes_submit_etransportA

Submit an issued delivery note to Romania's ANAF e-Transport system for domestic transport declaration (TTN). The delivery note must be in issued status with e-Transport fields filled (vehicle number, route, transport data, line tariff codes and weights). Submission is asynchronous — the status will update from uploaded to ok (with UIT) or nok (with error).

suppliers_listB

List suppliers for the selected company grouped alphabetically. Suppliers are automatically created from incoming invoices via ANAF e-Factura synchronization. Supports search by name, CUI, or email.

suppliers_createB

Create a new supplier manually. Requires name, county, city, address, and registration number. If a supplier with the same CIF already exists, returns the existing supplier instead.

suppliers_export_csvA

Export all suppliers for the active company as a CSV file. Returns base64-encoded UTF-8 CSV with BOM.

suppliers_export_saga_xmlC

Export all suppliers in SAGA accounting XML format. Returns base64-encoded XML file compatible with SAGA import.

suppliers_bulk_deleteA

Soft-delete multiple suppliers in a single request. Returns the count of deleted items and any errors.

suppliers_getA

Get detailed information about a specific supplier including invoice history summary and the last 10 recent incoming invoices. Core data (name, CUI) comes from ANAF and is read-only.

suppliers_updateA

Update editable fields of a supplier record. Core data (name, CUI) from ANAF cannot be modified. Only contact information, address details, banking details, and internal notes can be updated.

suppliers_deleteA

Soft-delete a supplier record. The supplier is marked as deleted but not permanently removed. Existing incoming invoices from this supplier remain intact. If new invoices arrive from this supplier via ANAF sync, the supplier record will be restored automatically.

exchange_rates_listA

Get current BNR (Banca Nationala a Romaniei) exchange rates. Rates are updated daily around 13:00 EET. Returns rates for all supported currencies expressed as: 1 foreign currency = X RON. On weekends and holidays, the last available rates are returned.

exchange_rates_convertA

Convert an amount between two currencies using current BNR exchange rates. For non-RON to non-RON conversions, cross-rates through RON are calculated. Result is rounded to 2 decimal places.

email_templates_listA

List all email templates configured for the selected company. Templates support dynamic variables that are replaced with actual data when emails are sent. Use the category parameter to filter by document type: "invoice" (default), "delivery_note", or "receipt".

email_templates_createA

Create a new email template. Templates support dynamic variables that are replaced with actual data when emails are sent. Use the category parameter to specify the document type: "invoice" (default), "delivery_note", or "receipt".

email_templates_updateA

Update an existing email template. All fields are optional but at least one must be provided. Setting isDefault to true will unset the current default template in the same category.

email_templates_deleteA

Permanently delete an email template. Cannot delete the last remaining template or the default template (set another as default first). Emails already sent using this template are not affected.

anaf_statusA

Check the current ANAF integration status for the authenticated user. Returns token count, overall validity, and per-token details including CIF, expiry, and validity for each saved ANAF token.

anaf_tokensA

List all ANAF OAuth tokens associated with the authenticated user. Each token enables e-Factura synchronization for a specific company CIF. Returns token ID, CIF, expiry, and validity status.

anaf_create_token_linkA

Create a device-based authentication token link for completing the ANAF OAuth flow. Returns a unique URL that can be opened in a browser to complete ANAF authentication. Maximum 5 active links per user. Link expires after a short period.

anaf_delete_tokenA

Delete an ANAF OAuth token. This revokes e-Factura synchronization access for the CIF associated with this token. The token ID is an integer obtained from anaf_tokens.

anaf_validate_cifA

Validate that an ANAF token has proper access to e-Factura for a specific CIF. Checks organization ownership, ANAF registry, and e-Factura access permissions. Returns validation result with any error messages.

anaf_sync_triggerA

Manually trigger e-Factura synchronization for all companies with valid ANAF tokens. Validates token availability and subscription plan rate limits, then dispatches an async sync job to fetch new invoices from ANAF SPV.

anaf_sync_statusA

Get the current e-Factura synchronization status and configuration. Returns whether sync is enabled, the last successful sync timestamp, token validity, and the sync frequency interval.

anaf_sync_logA

Retrieve the recent e-Factura sync activity log showing the last 50 synced invoices. Each entry shows the invoice ID, company CIF, sync timestamp, and status (success, failed, or skipped).

efactura_messages_listA

List e-Factura messages from the ANAF SPV platform with pagination and filtering. Messages include responses to uploaded invoices, notifications (accepted/rejected), errors, warnings, and informational messages. Useful for troubleshooting invoice upload issues.

efactura_messages_getA

Get full details of a specific e-Factura message including both parsed details and raw ANAF response data. Includes related invoice information when available. Useful for diagnosing specific invoice upload errors.

einvoice_providersA

List all available e-invoicing providers. Returns provider identifiers, labels, and country codes. Providers include: anaf (Romania), xrechnung (Germany), sdi (Italy), ksef (Poland), facturx (France).

einvoice_submitA

Submit an invoice to an e-invoicing provider. Supports all EU providers: anaf (Romania e-Factura), xrechnung (Germany), sdi (Italy), ksef (Poland), facturx (France). For ANAF, uses the existing e-Factura submission flow. For other providers, generates country-specific XML and optionally submits via API if credentials are configured.

einvoice_submissionsB

List all e-invoice submissions for a specific invoice. Shows submission history across all providers (ANAF, XRechnung, SDI, KSeF, Factur-X) with status, external IDs, error messages, and metadata. Note: ANAF submissions are tracked separately via the existing e-Factura flow and may not appear here.

einvoice_config_listA

List all e-invoice provider configurations for a company. Shows which providers are enabled and their settings (API credentials, routing codes, etc.). Provider-specific config fields: anaf (managed via ANAF tokens), xrechnung (clientId, clientSecret for ZRE), sdi (certPath, certPassword or apiEndpoint, apiKey), ksef (authToken, nip), facturx (clientId, clientSecret, siret for Chorus Pro).

einvoice_config_saveA

Create or update an e-invoice provider configuration for a company. Use this to enable a provider and set API credentials. Config is provider-specific JSON: xrechnung requires {clientId, clientSecret} for ZRE API; sdi requires {certPath, certPassword} or {apiEndpoint, apiKey} for intermediary; ksef requires {authToken, nip}; facturx requires {clientId, clientSecret, siret} for Chorus Pro. ANAF config is managed separately via ANAF tokens.

einvoice_config_deleteB

Delete an e-invoice provider configuration for a company. Removes the provider settings and disables submissions for that provider. Existing submissions are not affected.

einvoice_config_testA

Test e-invoice provider connection with given credentials before saving. Validates that the credentials can authenticate with the provider API. Supports: xrechnung (ZRE OAuth2), sdi (intermediary API or cert validation), ksef (session init), facturx (Chorus Pro OAuth2). ANAF uses a separate OAuth flow and cannot be tested here.

dashboard_statsA

Get comprehensive dashboard statistics for the selected company. Returns invoice counts (total, draft, issued, paid, overdue), revenue amounts (total revenue, VAT, paid, unpaid), monthly breakdown, top clients, top products, recent activity, and payment summary. Supports predefined periods (month, quarter, year) or custom date ranges.

members_listA

List all members of the organization with their roles, active status, and allowed company access. Only organization admins and owners can list members.

members_updateA

Update a member's role, active status, allowed company access, and custom permissions. Cannot change role to OWNER or modify the organization owner. Roles: ADMIN, ACCOUNTANT, EMPLOYEE. Pass permissions as an array of permission strings to set custom permissions, or null to reset to role defaults.

members_deleteA

Deactivate (soft-delete) a member from the organization. Preserves historical data but prevents login. Cannot deactivate yourself, the organization owner, or super admins.

members_permissions_referenceA

Get the permissions reference: all available permissions grouped by category, and role default permissions for each role (owner, admin, accountant, employee). Useful for understanding which permissions exist before setting custom permissions on a member.

invitations_listA

List all pending invitations for the organization. Only returns invitations that have not yet been accepted. Only organization admins and owners can view invitations.

invitations_createA

Invite a new user to join the organization by email. An invitation email is sent automatically. Invitations expire after 7 days. Roles: ADMIN, ACCOUNTANT, EMPLOYEE (cannot invite as OWNER).

invitations_deleteA

Cancel a pending invitation. The invitation token is immediately invalidated and cannot be used. Cannot cancel invitations that have already been accepted.

invitations_resendA

Resend the invitation email for a pending invitation. Does not extend the expiration date. If the invitation has expired, cancel it and create a new one instead.

notifications_listA

Retrieve a paginated list of notifications for the authenticated user. Notification types include: invoice_received, invoice_paid, sync_completed, sync_failed, token_expiring, token_expired, payment_overdue, invitation_received.

notifications_unread_countA

Get the count of unread notifications for the authenticated user. This lightweight endpoint is suitable for polling to update notification badges.

notifications_read_allA

Mark all notifications as read for the authenticated user in a single operation. Resets the unread count to zero. This operation is idempotent.

notifications_mark_readA

Mark a specific notification as read. This operation is idempotent — marking an already-read notification has no error. Decrements the unread count by one.

notification_preferences_getA

Get the authenticated user's notification preferences for all event types. Returns per-event settings for email, in-app, push, and WhatsApp channels.

notification_preferences_updateB

Update notification preferences for specific event types. Each preference controls email, in-app, push, and WhatsApp delivery channels. Event types include: invoice.validated, invoice.rejected, invoice.due_soon, invoice.due_today, invoice.overdue, sync.completed, sync.error, efactura.new_documents, token.expiring_soon, token.refresh_failed, export_ready.

webhooks_listA

List all webhook endpoints configured for the current company. Secrets are masked in the listing. Requires X-Company header (companyId param or STORNO_COMPANY_ID env var).

webhooks_getA

Retrieve the full configuration of a single webhook endpoint. The secret is always masked in this response — use webhooks_regenerate_secret to obtain a new full secret.

webhooks_createA

Register a new webhook endpoint for the current company. The response includes the full signing secret — store it securely immediately as it will be masked in all subsequent responses. URL must use HTTPS. Use ["*"] for events to subscribe to all event types.

webhooks_updateA

Partially update an existing webhook endpoint. Only provided fields are changed. Providing events replaces the entire subscription list — send the complete desired set each time. URL must use HTTPS.

webhooks_deleteA

Permanently delete a webhook endpoint and all its delivery history. This is a hard delete with no recovery. To pause deliveries temporarily, use webhooks_update with isActive: false instead.

webhooks_eventsA

List all available webhook event types that can be subscribed to, including their descriptions and categories (invoices, payments, clients, sync, proforma). Use this to discover valid event names for webhook configuration.

webhooks_deliveriesA

Retrieve a paginated list of delivery attempts for a webhook endpoint. Can filter by status (success/failed), event type, and date range. Use webhooks_delivery_detail to inspect full request/response payloads.

webhooks_delivery_detailA

Retrieve the complete details of a single webhook delivery attempt, including the full request payload, request headers (with signature), and the full response received. Use this to debug failed deliveries.

webhooks_regenerate_secretA

Issue a new HMAC-SHA256 signing secret for a webhook endpoint, immediately invalidating the previous one. The new secret is returned in full only in this response — store it securely. Update your endpoint verification logic before calling this in production.

webhooks_testA

Send a synchronous test delivery to a webhook endpoint and return the outcome immediately. Uses a synthetic webhook.test event payload. The webhook must be active. The delivery is recorded in delivery history.

api_keys_listA

List all API tokens for the authenticated user within the current organization. Returns both active and revoked tokens sorted by creation date, newest first. The raw token value is never included — only the tokenPrefix for identification.

api_keys_scopesA

List all permission scopes available to the current user, grouped by category. Only scopes the user already holds are returned — useful for inspecting what permissions a token can be granted.

oauth2_clients_listA

List all registered OAuth2 applications for the current organization. Returns app name, client ID, client type, scopes, status, and creation date.

oauth2_clients_getA

Get details of a specific OAuth2 application by its UUID.

oauth2_clients_createA

Register a new OAuth2 application (third-party integration). Returns the client secret once for confidential clients — store it securely. Cannot be called via API key or OAuth2 token; requires a browser session JWT.

oauth2_clients_updateB

Update an existing OAuth2 application. Only provided fields are changed. Cannot be called via API key or OAuth2 token.

oauth2_clients_revokeA

Revoke an OAuth2 application and all its associated access and refresh tokens. This action is irreversible. Cannot be called via API key or OAuth2 token.

oauth2_clients_rotate_secretA

Rotate the client secret of a confidential OAuth2 application. Returns the new secret once — store it securely. The old secret is immediately invalidated. Cannot be called via API key or OAuth2 token.

oauth2_clients_scopesA

List all available permission scopes that can be granted to OAuth2 applications, grouped by category. Only returns scopes the authenticated user holds.

reports_vatB

Generate a detailed VAT (TVA) report for a specific month. Returns a summary of sales, purchases, VAT collected, VAT deductible, and net VAT due, along with per-invoice details. Requires X-Company header (companyId param or STORNO_COMPANY_ID env var).

reports_sales_analysisB

Generate a sales analysis report for a date range. Returns KPI summary (annual total, invoiced, collected, outstanding), monthly revenue trends, recent invoices, top clients, and top products. Requires X-Company header (companyId param or STORNO_COMPANY_ID env var).

balance_analysisA

Get balance analysis (Analiza Balante) for a year. Returns the standard indicator bag (revenue, expenses, profit, turnover, salaries, etc.), monthly evolution, top expenses, year-over-year comparison, plus 8 grouped financial-ratio sections: balanceSheet (raw figures), liquidity (current/quick/cash ratio + working capital + NFR + net cash), solvency (debt-to-equity, financial autonomy, debt ratio, general solvency, interest coverage), profitabilityRatios (gross/operating/EBITDA/net margins, ROA/ROE/ROCE, EBIT, EBITDA), efficiency (asset/fixed-asset/inventory turnover, DSO/DPO/CCC), fiscal (VAT payable, salary debts, state-budget debts, micro-enterprise EUR threshold, VAT RON threshold), cashflow (cash runway in months, burn rate, break-even, contribution rate, operating leverage), aging (receivables aging buckets 0-30/31-60/61-90/90+ with IFRS 9 simplified provision), concentration (top 5/10 client revenue share, top clients list). Each ratio carries status: normal|warning|critical|na. Trial-balance sections show hasData=false until balances are uploaded; aging and concentration come from invoice data. Requires X-Company header.

balance_listB

List uploaded trial balances (Balante de verificare) for a year. Shows upload status (pending/processing/completed/failed), month, account count, and source software for each uploaded balance.

balance_rowsA

Get the parsed account rows for a trial balance. Returns all account codes, names, and 10 numeric columns (initial/previous/current/total/final debit & credit). Useful for verifying PDF parsing results.

balance_reprocessB

Reprocess a trial balance PDF. Re-parses the PDF file and updates the account rows. Useful after parser improvements.

balance_deleteB

Delete an uploaded trial balance by ID. This soft-deletes the balance and its parsed account rows.

exports_downloadA

Download a generated export file (ZIP archive). Export files are single-use and auto-deleted after download. The filename is typically provided by the endpoint that generated the export (e.g. POST /api/v1/invoices/export). Common formats: invoices-export-YYYY-MM.zip, vat-report-YYYY-MM.zip, clients-export-YYYY-MM-DD.zip.

admin_organizationsA

List all organizations on the platform with pagination and filtering. SUPER_ADMIN only. Returns organization details including owner info, subscription plan, member/company/invoice counts, and ANAF token status.

admin_statsA

Get platform-wide statistics including user counts, organization metrics, company sync status, invoice totals, and system info. SUPER_ADMIN only. Results are typically cached for 5 minutes.

admin_usersA

List all users on the platform with pagination and filtering. SUPER_ADMIN only. Returns user account details, verification status, role, last login timestamp, and organization memberships.

admin_version_overridesA

List the per-platform version-gate overrides for the mobile app. SUPER_ADMIN only. Returns one entry per supported platform (ios/android/huawei) with the deploy-time YAML defaults, the live DB override (if any), and the merged effective values that drive /api/v1/version. Use admin_version_override_update to flip the kill switch.

admin_version_override_updateA

Set or clear per-field version-gate overrides for one mobile platform. SUPER_ADMIN only. Each override field is independent — set a string to override, set null to clear, omit to leave as-is. Audit-logged. Bumping minOverride to a value above the live install ratchets the in-app blocker on instantly without a redeploy.

admin_email_logA

List lifecycle email log entries with filtering and pagination. SUPER_ADMIN only. Returns sent/skipped/failed lifecycle emails across all categories (re_engagement, trial_ended, feature_drip, account_without_login, first_company_created, first_invoice_created, dunning, trial_expiration). Use to audit delivery, debug suppressions, or check drip cadence.

licensing_create_keyA

Generate a new license key for a self-hosted Storno instance. Only the organization owner can create license keys. The full 64-character license key is returned ONLY ONCE — store it immediately. Each self-hosted instance should use its own key.

licensing_list_keysA

List all license keys issued for the current organization. Keys are returned with masked values (first and last 8 characters shown). Includes active and revoked keys with lastValidatedAt timestamps to verify self-hosted instances are running. Only the organization owner can list keys.

licensing_revoke_keyA

Revoke (deactivate) a license key. The associated self-hosted instance will fall back to the Free plan on its next validation cycle (within 24 hours). Revocation is a soft delete — the key record is kept with active: false. Revoked keys cannot be reactivated; generate a new key instead. Only the organization owner can revoke keys.

licensing_validateA

Validate a self-hosted license key and retrieve the current plan, features, and subscription details. This endpoint does NOT require authentication — the license key itself is the credential. Returns plan features, organization name, billing period end, and trial info if applicable. Used by self-hosted instances every 24 hours.

pdf_template_config_getA

Get the PDF template configuration for the current company. Returns the active template slug, primary color, font, logo/bank info visibility, footer text, and custom CSS. Creates a default config if none exists.

pdf_template_config_updateA

Update the PDF template configuration for the current company. Customize the template design, colors, fonts, logo visibility, bank info display, footer text, and custom CSS applied to all generated PDFs.

pdf_template_config_templatesA

List all available PDF template designs with their slugs, names, descriptions, and default colors. Use the slug value when updating the template configuration.

pdf_template_config_previewA

Generate an HTML preview of a PDF template with sample invoice data. Use this to preview how a template will look before saving configuration changes.

receipts_listB

List receipts (bonuri fiscale) for the selected company with optional filtering by status, date range, client, and search term. Receipts document point-of-sale transactions and can be converted to invoices.

receipts_getA

Get complete details for a specific receipt (bon fiscal) including all line items, payment breakdown, fiscal data, and calculated totals.

receipts_createA

Create a new receipt (bon fiscal) in draft status. Receipts document point-of-sale transactions with payment method details and optional fiscal register information. Can later be issued and converted to invoices. A default receipt series is auto-assigned if neither seriesId nor documentSeriesId is provided.

receipts_updateB

Update an existing receipt. Receipts in draft or issued status can be updated. Replaces all line items with the provided array.

receipts_deleteA

Permanently delete a receipt. Only draft receipts can be deleted. Use cancel for issued receipts to preserve the audit trail.

receipts_issueA

Mark a receipt as issued at the point of sale. Transitions status from draft to issued. Once issued, the receipt becomes read-only and its fiscal data is locked.

receipts_cancelB

Cancel a receipt. Can be cancelled from draft or issued status. Preserves the historical record unlike deletion. Optionally provide a cancellation reason.

receipts_convert_to_invoiceA

Convert an issued receipt into a final invoice. Creates a new invoice with all receipt data, marks the receipt as invoiced, and establishes a link between the two documents. Returns both the new invoice and updated receipt.

receipts_refundA

Issue a refund (counter-)receipt that mirrors the parent receipt with negative quantities and inverted payment amounts. The refund is auto-issued, linked back via refundOf, and inherits the parent receipt series. Parent must be issued and not itself a refund. Omit lineSelections for a full refund of the whole receipt; pass it to refund only specific lines (with possibly partial quantities). Multiple partial refunds against the same parent are allowed until the original quantities are exhausted.

receipts_pdfA

Download the PDF for a receipt (bon fiscal). Returns base64-encoded PDF binary data. The receipt must be in issued or invoiced status.

receipts_restoreA

Restore a cancelled receipt back to draft status. Only cancelled receipts can be restored. This reverses the cancellation and allows the receipt to be re-issued.

receipts_emailA

Send a receipt (bon fiscal) to a customer via email with the PDF attached. Supports custom subject, body, CC, and BCC recipients. Recipients (to, cc, bcc) must be client emails registered on the company; other addresses are rejected with EMAIL_RECIPIENT_NOT_CLIENT.

receipts_email_defaultsB

Get pre-filled email content for a receipt including default recipient, subject, and body text with template variables already substituted.

receipts_email_historyA

Get the email sending history for a receipt, including all sent emails with their status, timestamps, and recipient information.

company_registry_searchA

Search the Romanian company registry (ONRC) by company name. Returns matching companies with CUI, name, and registration details. Useful for finding a company before creating a client. Results are cached for 5 minutes.

company_registry_citiesA

Get a list of cities for a given Romanian county. Optionally filter by city name. Useful for address auto-complete when creating clients or companies. Results are cached for 5 minutes.

system_healthA

Check the Storno API system health status. Returns database, queue, storage, and service diagnostics when authenticated. Useful for troubleshooting connectivity or service issues.

system_versionA

Get backend version plus web and mobile (iOS/Android/Huawei) latest+min versions and store URLs. Pass platform to get a flat client object for that mobile surface, and version to also get a resolved gate with tier (blocking/recommended/ok/unknown) so you do not have to compare versions yourself.

anaf_nomenclator_judeteA

ANAF county nomenclator (cod judet as used in declaration XSDs: 40 = Municipiul Bucuresti, 13 = Constanta …) with the fiscal offices (organe fiscale, ufisc codes) of each county. Public, served from Storno's local mirror of ANAF's nomenclators, no account needed.

anaf_nomenclator_localitatiA

ANAF locality nomenclator for a county: cod_localit (as required by declaration XSDs, e.g. C168 cod_localit_L), SIRUTA and town-hall codes. Optional q filters by name, diacritics-insensitive ("sector 6", "cluj"). Public, local mirror.

anaf_nomenclator_straziA

ANAF street nomenclator for a locality: cod_strada + name (e.g. C168 cod_strada_C). q filters by word prefix, diacritics-insensitive ("maniu" finds "Bld. Iuliu Maniu"). Streets are cached locally on first use per locality. Public.

document_typesA

Standard Romanian legal documents Storno can generate from structured fields (public, nothing stored): conventie_incetare_inchiriere (rental termination agreement between locator and locatar) and declaratie_incetare_contract (the locator's sworn statement that a rental contract ended, used as the mandatory C168 attachment). Returns each type with its required fields.

document_generateA

Generate a standard legal document as PDF (and HTML) from fields: 'conventie_incetare_inchiriere' (fields: data_conventie?, locator{nume, adresa, ci_serie?, ci_numar?, cnp?}, locatar{same}, contract{numar, data, adresa_imobil, numar_inregistrare_anaf?, data_inregistrare_anaf?}, data_incetare, termen_utilitati_zile?, garantie{suma?, valuta?, termen_zile?}) or 'declaratie_incetare_contract' (locator{nume, adresa, cnp?}, locatar{nume, cnp?}, contract{numar, data, adresa_imobil, data_inceput, data_sfarsit, chirie?, valuta?, numar_inregistrare_anaf?, data_inregistrare_anaf?}, data_incetare, motiv?, motiv_detalii?, organ_fiscal?, data_declaratie?). Dates as dd.mm.yyyy. Pass outFile to save the PDF locally (then sign it with agent_sign_pdf or have it signed by hand); otherwise the PDF comes back base64. Public, nothing stored.

declaration_formsA

ANAF declaration forms Storno can build from plain JSON for you (today: C168 rent contract registration/amendment/termination, D212 Declarația unică for rent income with tax and CASS computed). Returns type, title and description of each form. Public, no account.

declaration_form_specA

Everything needed to fill an ANAF declaration form correctly: the JSON input schema Storno expects (fields, required/optional, codes and their meaning, hints), how it maps to the ANAF XML (namespace, every XSD attribute with type and constraints), the business rules ANAF enforces (including the web-form rules the DUK validator misses, e.g. BR-C168-00991/0041/005911), the filing steps and a complete example. Read it before declaration_build. C168 addresses need the codes from anaf_nomenclator_*; never invent CNPs or CUIs.

declaration_buildA

Build an ANAF declaration from plain JSON (schema from declaration_form_spec): Storno writes the XML, applies its own rules (required fields, address codes, quotas, postal code, tenant CNP …), does the arithmetic (D212: 20 % forfait, 10 % tax, CASS tiers on the minimum wage), validates it with ANAF's DUKIntegrator and, for C168, with ANAF's online validator behind the web form (the authoritative BR-C168 rules). Returns valid, xml, issues[{level: error|warning|info, code, field, message}] (info = computed amounts to explain to the user) and validation{duk, anafOnline}. Loop: fix issues → build again until valid=true, then declaration_pdf. Public, nothing stored, 60 requests/hour per IP.

declaration_pdfA

Produce the PDF ANAF accepts for upload: DUKIntegrator renders the validated XML into ANAF's PDF form with the XML embedded and, where required (C168), a zip of attachments embedded (the scanned contract for a registration, the addendum for an amendment, the termination document or the landlord's sworn statement — document_generate — for a termination). Pass local file paths in attachmentPaths and/or base64 attachments (PDF, JPG, PNG, TIFF; 10 MB total). With outFile the PDF is written locally, ready for agent_submit_declaration_pdf (qualified certificate) or manual upload in SPV. Public, nothing stored.

anaf_declaration_statusA

Processing status of a declaration filed on the ANAF e-guvernare portal (after agent_submit_declaration_pdf or any upload that returned an index): ANAF's public StareD112 by upload index and the taxpayer's CUI/CNP. States: ok (accepted), nok (validation errors, see recipisa), processing, unknown (not indexed yet). Returns the recipisa PDF URL when available. Public, no account.

declaration_validate_xmlA

Validate an ANAF tax declaration XML (D212 Declaratia unica, C168 rent contract registration, D177, D700, D100, D112, D300, D390, D394 …) with ANAF's own DUKIntegrator validators, the same jars the ANAF portal uses. Public endpoint: no account needed, nothing is stored, 60 requests/hour per IP. Returns ANAF's errors and warnings verbatim. When the root namespace is missing or belongs to another reporting period, Storno applies the namespace ANAF asks for and returns the corrected XML (namespaceCorrected=true): upload that one. Use it before filing in SPV, or in a build → validate → fix loop when assembling a declaration from a taxpayer's documents.

storno_xml_generateA

Generate an e-Factura (UBL 2.1, CIUS-RO) XML for a storno / credit invoice without an account. Public endpoint: nothing is stored, no authentication needed, rate limited per IP. Returns the XML, the XSD + Schematron validation report, and totals. The result is an Invoice (type 380) with negated quantities and a BillingReference to the original document, exactly what Storno issues for stornos. RON only. Use it to correct an invoice already accepted in SPV, or to test XML output before integrating.

accounting_export_settings_getA

Get the accounting export configuration for the active company. Returns settings for Saga, Winmentor, and Ciel accounting software integrations including account codes, journal mappings, and export preferences.

accounting_export_settings_updateA

Update accounting export configuration for the active company. Settings are merged with existing config. Configure account codes, journal mappings, and export preferences for Saga, Winmentor, or Ciel.

accounting_export_zipA

Export accounting data as a ZIP archive for import into accounting software (Saga, Winmentor, or Ciel). The ZIP contains XML files for clients, suppliers, products, invoices, receipts, and payments. Filter by date range. For SAGA you may override the chart-of-accounts at export time (e.g. card analytic 5125.2) via accounts.{cash,bank,card,clients,suppliers}; values fall back to the company’s stored settings.

backup_createA

Create a new backup job for the active company. The backup is processed asynchronously and includes all company data (invoices, clients, products, settings). Optionally include uploaded files (PDFs, XMLs). Returns a job ID to check status.

backup_statusA

Get the status of a backup job. Returns progress percentage, current step, and download URL when complete. Statuses: pending, processing, completed, failed.

backup_downloadA

Download a completed backup as a ZIP file. Returns base64-encoded binary data. The backup must be in "completed" status.

backup_restoreA

Upload a backup ZIP file to restore company data. The restore runs asynchronously. Use backup_restore_status to check progress. WARNING: if purgeExisting is true, all current company data will be deleted before restoring.

backup_restore_statusA

Get the status of a restore job. Returns progress percentage and current step. Same as backup_status but specifically for restore jobs.

backup_historyB

List recent backup jobs for the active company. Returns job ID, status, creation date, file size, and whether files were included.

borderou_providersA

List available borderou (bank statement) providers. Returns supported banks and file formats for bank statement import and reconciliation.

borderou_uploadA

Upload a bank statement or borderou file (CSV, XLSX, XLS, or the original bank PDF) for transaction import and reconciliation. PDF statements are recognised automatically for Banca Transilvania, BRD, ING, CEC, Raiffeisen, UniCredit, BCR, Revolut, Garanti, Libra, Patria, Intesa Sanpaolo, Citi, Vista, Wise, myPOS, Viva, Nexent and Trezoreria Statului (pick the matching provider or generic_bank). Parses the file, creates transactions, and runs automatic matching against existing invoices.

borderou_transactionsB

List borderou transactions with pagination. Returns imported bank statement transactions with matching status, amounts, and linked invoice/proforma references.

borderou_transaction_getB

Get detailed information about a specific borderou transaction including matched invoice/proforma details.

borderou_transaction_updateA

Update a borderou transaction match. Link or unlink the transaction to an invoice or proforma invoice for reconciliation.

borderou_transaction_available_invoicesA

Get invoices or proforma invoices available to match against a borderou transaction. Search by number, client name, or amount.

borderou_transactions_saveC

Save and persist selected borderou transaction matches. Creates payment records for matched transactions and updates invoice payment status.

borderou_transactions_rematchB

Re-run the automatic matching algorithm on selected borderou transactions. Useful after adding new invoices or updating client data.

storage_config_getA

Get the organization's external storage configuration. Returns the current provider, bucket, region, and connection status. External storage allows storing PDFs and XMLs in your own S3-compatible bucket.

storage_config_updateB

Create or update external storage configuration. Supports S3-compatible providers (AWS S3, Cloudflare R2, MinIO, DigitalOcean Spaces, etc.). Credentials are encrypted at rest.

storage_config_deleteA

Delete the external storage configuration. Files already stored externally will no longer be accessible. This does NOT delete files from the external bucket.

storage_config_testB

Test the external storage connection. Attempts to write and read a test file to verify credentials and permissions. Uses existing config credentials if not provided.

storage_config_providersA

List available external storage providers with their configuration requirements and documentation links.

white_label_config_getA

Get the organization's white-label branding configuration (Business plan). Returns whether the org is entitled, plus the custom app name, logo URL, accent color, and whether Storno branding is removed from PDFs and client emails.

white_label_config_updateA

Create or update the organization's white-label branding (Business plan only). Set a custom app name, accent color, toggle white-label on/off, and remove the "Storno.ro" footer from generated PDFs and the emails your clients receive.

white_label_config_verify_domainA

Verify the custom domain by checking that the DNS TXT record (_storno-verify.) returned when the domain was set has been published. On success the domain becomes active for client links.

mailer_config_getA

Get the organization's custom email sender (SMTP) configuration (Business plan). Returns the host, port, encryption, username, from address/name, whether a password is saved, and the last test time. The password is never returned.

mailer_config_updateA

Create or update the organization's custom email sender (Business plan only). Invoices, receipts, and delivery notes to clients are then sent through this SMTP server from your own address. Omit the password on update to keep the saved one.

mailer_config_testA

Send a test message through the custom email sender to verify the SMTP settings. Uses the saved configuration unless overridden by the parameters. Sends to testEmail, or to the from address if omitted.

mailer_config_deleteA

Delete the organization's custom email sender configuration. Client documents revert to being sent from the default Storno address.

import_sourcesB

Get available import sources and import types. Returns supported import sources (SmartBill, Saga, Oblio, FGO, Facturis, etc.) and import types (clients, products, invoices_issued, invoices_received, recurring_invoices).

import_previewA

Get a preview of an uploaded import job including detected columns, sample data, and column mapping suggestions. Use after uploading a file to review before executing.

import_mappingA

Save column mapping for an import job. Maps CSV columns to Storno fields. Call after reviewing the preview to confirm or adjust mappings before executing.

import_executeA

Execute an import job after mapping is confirmed. The import runs asynchronously via a message queue. Check status with import_get.

import_getB

Get full status and details of an import job including progress, row counts (imported, skipped, failed), and error details.

import_uploadA

Upload a file (CSV, XLSX, or XML) to start a new import job. Requires importType (clients, products, invoices_issued, invoices_received, recurring_invoices) and source (smartbill, saga, oblio, fgo, facturis_online, easybill, ciel, factureaza, facturare_pro, icefact, bolt, facturis, emag, generic). Returns the created import job with preview data.

import_templateA

Download a CSV template for a specific import type. Returns base64-encoded CSV with column headers and example rows that can be filled in and uploaded via import_upload.

import_historyA

List past import jobs for the active company. Returns job ID, type, source, status, row counts, and timestamps.

cpv_codes_searchB

Search CPV (Common Procurement Vocabulary) classification codes by code number or description. CPV codes are used in e-Transport declarations and public procurement. Returns matching codes with their descriptions.

nc_codes_searchB

Search NC (Combined Nomenclature / NACE) classification codes by code number or description. NC codes are used in e-Transport declarations for goods classification. Returns matching codes with their descriptions.

telemetry_sendA

Send a batch of telemetry events for the current user and company. Events are processed asynchronously. Maximum 100 events per batch. Telemetry is always sent to api.storno.ro regardless of configured base URL.

declarations_listA

List tax declarations for the active company. Supports filtering by type, status, year, and month. Returns paginated list of declarations with their status and period.

declarations_getA

Get a single tax declaration by UUID. Returns full declaration details including populated data, status, metadata, and error messages.

declarations_createA

Create a new tax declaration. VAT and payroll types (d394, d300, d390, d100, d112) are auto-populated from the company's invoices for the period. Form-based types are filled from plain JSON: 'd212' (Declarația unică, rent income; month 12) and 'c168' (rental contract registration/amendment/termination; month 12) take data.input in the shape of declaration_form_spec, and c168 needs data.attachments [{name, contentBase64}] (the scanned contract / termination document) for the PDF. Then declarations_validate → declarations_file_via_agent.

declarations_recalculateA

Recalculate a draft declaration by re-populating its data from current invoices. Only works on declarations in "draft" status.

declarations_validateA

Validate a draft declaration by generating and checking the XML output. Transitions the declaration to "validated" status if successful.

declarations_submitA

Submit a declaration to ANAF. Generates XML, uploads to ANAF SPV, and begins async status polling. Works on "draft" or "validated" declarations.

declarations_deleteA

Soft-delete a tax declaration. Cannot delete accepted declarations.

declarations_syncA

RETIRED server-side sync: ANAF SPVWS2 accepts only the qualified certificate (mTLS), so this endpoint now answers 409 AGENT_REQUIRED. Declarations and SPV messages are pulled through the local storno-agent from the web app (declarations page or the SPV documents page); the tools spv_sync_prepare / spv_sync_agent_result cover the same flow for automation.

declarations_refresh_statusesC

RETIRED server-side status refresh: answers 409 AGENT_REQUIRED because ANAF SPVWS2 requires the qualified certificate (mTLS). Refresh statuses from the web app through the local storno-agent.

declarations_download_xmlB

Download the generated XML for a tax declaration. Returns the raw XML content.

declarations_updateB

Update a draft declaration: data (for d212 / c168 the form input under data.input and attachments under data.attachments) and/or metadata. Only drafts can be edited.

declarations_file_via_agentA

File a declaration at ANAF in one call, the way the web app does: Storno prepares the XML and the DUK PDF (with the attachment zip for c168), the local Storno Agent signs it with the qualified certificate and uploads it to the e-guvernare portal, and Storno records ANAF's upload index (status processing; the recipisa arrives in the SPV inbox and in the dosar). Needs the agent on this computer and the PIN (pin, STORNO_AGENT_PIN, or the PIN remembered on this computer by the agent). Check declarations_validate first. Remember: one C168 per landlord and period in processing at a time.

declarations_download_pdfA

The PDF ANAF accepts for this declaration (DUKIntegrator's form with the XML embedded and, for C168, the attachment zip), generated on demand from the current data. Use it when the user files by hand: they upload this file in SPV (persoane fizice: SPV → Depunere declarații) or on the e-guvernare portal with their own certificate. Written to outFile. Storno's rules and ANAF's validator run first; errors come back instead of a broken file.

declarations_prepareB

Prepare a declaration for agent-based submission. Returns XML content, ANAF URL, Bearer token, and CIF needed by the local agent to proxy the mTLS request. Use operation param for different flows: submit (default), listMessages, download.

declarations_agent_resultB

Submit the ANAF response received via the local agent back to the server. The server parses the response, extracts the upload ID, sets status to PROCESSING, and dispatches status checking.

spv_documents_listA

List the archived ANAF SPV inbox for a company: every message (somatii / enforcement notices, decizii, notificari, adrese, recipise, certificate, plati...) classified by category and severity, with archived-PDF status. Critical items (SOMATII, inactivation/VAT-cancellation decisions, risk reports) carry short legal deadlines. Documents get into the archive through the local storno-agent sync (certificate/mTLS), see spv_sync_prepare.

spv_documents_statsA

Counts for the SPV inbox archive of a company: total, unread, PDFs still to download, breakdown by category and by severity, plus the category and severity lists.

spv_documents_getA

Get one archived SPV document with all details (ANAF ids, dates, archive status, download errors).

spv_documents_downloadA

Download the archived PDF of an SPV document to a local file. Fails with SPV_FILE_PENDING when the agent has not fetched it yet, or SPV_FILE_PURGED when retention removed it.

spv_documents_mark_readA

Mark one SPV document as read (or all unread documents of the company when uuid is omitted).

spv_sync_prepareA

Step 1 of an SPV inbox sync. Returns the ANAF listaMesaje URL the local storno-agent must GET with the qualified certificate (mTLS; the OAuth token is not accepted by SPVWS2), plus any PDFs still pending download. Relay the ANAF response with spv_sync_agent_result.

spv_sync_agent_resultA

Step 2 of an SPV inbox sync: relay the raw ANAF listaMesaje response fetched by the agent. Every message is archived and classified, users are notified (push/email) about critical and important documents, and the response lists the PDFs the agent should now fetch from descarcare and upload with spv_document_upload.

spv_document_uploadA

Step 3 of an SPV inbox sync: store the PDF the agent fetched from ANAF descarcare for a document. Pass the body base64-encoded. HTML answers (expired SPV session) are rejected with SPV_NOT_A_DOCUMENT.

spv_request_typesA

Catalog of what can be requested from ANAF SPV (solicitari): reports (Fisa Rol, VECTOR FISCAL, Situatie Sintetica, Obligatii de plata, Istoric declaratii, Bilant), copies of filed declarations (D300, D394, D112, D212 ...), Duplicat Recipisa, Adeverinte Venit, certificates, decisions. Filtered for the company the way the SPV form does it: a CNP (individual person) gets D212, Duplicat declaratie unica, Adeverinte Venit, Istoric declaratii PF, C168, fisa rol…; a CUI gets the company returns, bilant, decisions. Each entry carries audience and lists the required and optional parameters (an, luna, motiv, numar_inregistrare, cui_pui, lunai/lunas), the first year with data, ANAF notes and wsSupported (false = the web service answers "tip raport necunoscut"; the agent then submits the SPV website form instead, e.g. C168, certificates, decisions); also the exact reasons accepted for income certificates.

spv_requests_listB

Requests sent to ANAF SPV for the company, newest first, with status (pending, requested, answered, error), ANAF id_solicitare and the archived answer document id when it arrived.

spv_request_prepareA

Step 1 of an SPV request: validate the type and parameters (see spv_request_types). Returns requestId and channel: "ws" with the ANAF cerere URL the local storno-agent must GET with the certificate, or "web" with a form the agent submits to the SPV website (POST /spv-web-request on the agent) for types the web service lacks (C168, certificates, decisions). Relay the answer with spv_request_agent_result. The answer document itself arrives later in listaMesaje with the same id_solicitare and is archived by the inbox sync.

spv_request_agent_resultA

Step 2 of an SPV request: relay the raw ANAF answer to cerere ({id_solicitare, titlu} or {eroare}). Records the ANAF request id or the error on the request.

spv_request_deleteA

Delete a pending or failed SPV request record (answered requests keep their history).

dosare_listB

Case files (dosare) of the company: rental contracts (with tenant, rent, period, the 30-day C168 deadline), yearly Declarația unică dosare (25 May deadline), periodic returns, fiscal standing. Each carries status (active / attention / closed), next step, deadline with days left, and counts of linked declarations, SPV requests and ANAF messages.

dosare_actionsA

What needs the user's attention across all dosare: "todo" (rejected filings with the reason, requests in error, dosare flagged for a decision, deadlines within 14 days, contracts expiring within 60 days, unread somații/decizii), "inProgress" (filings ANAF is processing, requests without answer) and "answers" (recipisas, answers, certificates received in the last 14 days). Start here when the user asks "what do I have to do?".

dosare_statsA

Rental portfolio of the company: every property with tenant, rent, period, active/expiring state and linked declarations; active contracts; contracts expiring within 60 days; monthly rent by currency; expected gross rent per income year from the contracts (RON) versus what the D212s declared per year (with the declaration status). Answers "how much rent did I collect and declare last year?".

dosare_getB

One dosar with its linked declarations, SPV requests, ANAF messages and the chronological timeline (filed, index, recipisa, answers).

dosare_createA

Create a dosar. For a rental contract pass subject {numar, data (contract date), adresa (property), chirias, chiriasCif (tenant CNP/CUI — needed for C168), chirie (monthly), moneda, deLa, panaLa, dataIncetare?}: the title and the 30-day C168 deadline are derived. For the yearly Declarația unică use dosare_annual_return instead. Other types: title, deadlineAt, deadlineLabel, nextStep, notes.

dosare_updateA

Update a dosar: title, subject fields (merged), status (active / attention / closed), nextStep, deadlineAt + deadlineLabel, notes, and the link to the other party as a client / supplier of the company (clientId / supplierId; null unlinks). The link is found by the tenant CUI/CNP automatically when a dosar is created; set it by hand when the client record has a different identifier.

dosare_deleteA

Delete a dosar. Its declarations, requests and messages are kept, only ungrouped.

dosare_attachA

Attach (or detach) a declaration, an SPV request or an ANAF message to a dosar. A declaration brings its archived recipisas along; a request brings its answer.

dosare_annual_returnA

Ensure the "Declarația unică " dosar (one per filing year) with its 25 May deadline; returns it. Default year: the one whose 25 May is next. Deadline reminders go out 30, 7 and 1 days before.

dosare_d212_prefillA

D212 rent-scenario input prefilled from the rental-contract dosare for the income year of a Declarația unică dosar (contract, period within the year, gross rent = monthly rent × months for RON contracts; foreign-currency rents come back as 0 with a note to convert at BNR rates). Review it with the user, then dosare_d212_create.

dosare_d212_createA

Create the D212 draft (rent scenario) inside a Declarația unică dosar from the reviewed input (schema: declaration_form_spec D212; omit input to use the prefill as is). The draft then goes through declarations_validate (ANAF DUKIntegrator), declarations_prepare / declarations_agent_result (sign + file with the certificate through the local agent) and the recipisa lands in the dosar.

dosare_files_uploadA

Put a file into a dosar: the scanned contract (kind contract), an addendum (act_aditional), the termination document or the signed sworn statement (incetare), a signed declaration (declaratie), anything else (altele). PDF, JPG, PNG or TIFF, up to 10 MB. Files in a dosar become the zip attachment of the C168 filed from it.

dosare_files_downloadA

Download a file kept in a dosar to a local path (e.g. to sign it with agent_sign_pdf, then upload the signed copy with dosare_files_upload).

dosare_c168_prefillA

The C168 input (registration / amendment / termination of the rental contract) prefilled from a rental-contract dosar and the company, with Storno's rule issues listing what is still missing (nomenclator address codes for the property, tenant and landlord; tenant CNP …). Fill the gaps with anaf_nomenclator_* and the user, then dosare_c168_create. Also lists the dosar files that can be attached.

dosare_c168_createA

Create the C168 declaration in the dosar from the reviewed input (schema: declaration_form_spec C168) with the attachment: dosar files by id (fileIds) and/or local files (attachmentPaths) — the scanned contract for a registration, the addendum for an amendment, the termination document or the signed sworn statement for a termination. Storno applies its rules (errors → 422 with issues), stores the reviewed addresses in the dosar for next time and sets the next step. Then declarations_validate and declarations_file_via_agent. ANAF processes one C168 per landlord and period at a time.

dosare_registry_proposalsA

Contracts listed in ANAF's registry extract ("Registrul contractelor de locatiune", the answer to the C168 SPV request — request it with spv_request_prepare type C168) with their state after all filings (active / expired without termination / terminated), each matched to the existing dosare. Reads the newest extract archived in the SPV inbox, or the PDF at pdfPath. Then dosare_registry_import for the ones without a dosar.

dosare_registry_importA

Create rental-contract dosare for registry contracts (pass the contract objects from dosare_registry_proposals, usually those with existingDosarId null). Terminated contracts become closed dosare; expired ones without a termination filing are flagged for attention (file C168 încetare or an addendum).

dosare_billingA

Everything invoiced between the landlord and the tenant of a rental dosar (matched by the tenant's CUI/CNP on clients and suppliers): the recurring invoice, the invoices issued to the tenant with paid / partial / unpaid / overdue state and days overdue, totals per currency, the invoices received from the tenant (e.g. works compensated with the rent) and, when the dosar records an investment clause, the compensation balance. Answers "did the tenant pay?" and "how much rent is outstanding?".

dosare_documentA

Generate a legal document from a rental-contract dosar, prefilled with the landlord (company), tenant, contract and property: 'conventie_incetare_inchiriere' (termination agreement), 'declaratie_incetare_contract' (landlord's sworn statement, the C168 termination attachment), 'act_aditional_inchiriere' (addendum: extension and/or new rent; fields act{numar,data}, prelungire{data_inceput,data_sfarsit}, chirie_noua{suma,valuta,de_la}) or 'notificare_incetare_inchiriere' (termination notice: data_incetare, preaviz_zile, motiv). Without render you get the prefilled fields to review with the user; with render:true and the reviewed fields (overrides) you get the PDF (written to outFile when given). Sign it by hand or with agent_sign_pdf, then attach it to the C168 termination.

related_getA

Everything in Storno connected to one record, whatever it is: for a client → its dosare (rental contracts), recurring invoices, recent invoices, the declarations and ANAF messages of those dosare; for an invoice → the client, the rental dosar of that tenant, the recurring invoice that issued it, sibling invoices; for a declaration or SPV message → the dosar behind it and its client; for a dosar → client, supplier, recurring invoice, invoices, declarations, SPV requests and messages. Every item has type, id, title, subtitle, status, date and the web page (href). Use it to answer "what else do we have about X?" before searching list by list.

agent_statusA

Is the local Storno Agent running, which version, and is an update available. The agent lives on the user's computer and holds the qualified certificate (USB token) used for ANAF declarations, SPV and PDF signing.

agent_certificatesA

Qualified certificates the local Storno Agent can use (USB tokens, Keychain / Windows store identities): id, subject, issuer, expiry. The id is what agent_sign_pdf and the submission tools need.

agent_sign_pdfA

Sign one or many PDF files with the qualified certificate through the local Storno Agent (PAdES/CMS signature embedded in the PDF), e.g. declarations produced by DUKIntegrator, contracts, any document ANAF or a partner wants signed. Pass file paths and/or directories (all *.pdf inside); each signed copy is written next to the original as .signed.pdf (or into outDir). Requires the certificate PIN (pin, STORNO_AGENT_PIN, or the PIN remembered on this computer by the agent); the batch stops at the first PIN error to protect the token.

agent_submit_declaration_pdfA

File a declaration PDF (made by DUKIntegrator, XML embedded, e.g. from Storno's declarations or a C168/D212 built with the public tools) at ANAF: the local agent signs it with the certificate and uploads it to the e-guvernare declarations portal (WAS6DUS), then returns ANAF's upload index. Track it with anaf_declaration_status (index + CUI/CNP); the recipisa arrives in the SPV inbox and on StareD112. Requires the PIN (pin, STORNO_AGENT_PIN, or the PIN remembered on this computer by the agent).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 341 tools

Disambiguation2/5

With 341 tools spanning overlapping domains, many tools have unclear boundaries: invoices_submit vs einvoice_submit, declarations_submit vs declarations_file_via_agent vs agent_submit_declaration_pdf, and multiple sync/status tools (anaf_sync_trigger, anaf_sync_status, spv_sync_prepare, declarations_sync). Even with detailed descriptions, an agent would frequently struggle to pick the right tool for a task.

Naming Consistency3/5

Most tools follow a resource_verb pattern (invoices_list, clients_create, webhooks_delete), but there are notable deviations: some use verb-first (auth_login, balance_list, import_get), some use bare nouns (borderou_providers, document_types, agent_status), and some mix conventions (spv_sync_agent_result vs spv_document_upload, dosare_d212_prefill vs dosare_c168_create). The pattern is readable but not consistently applied.

Tool Count1/5

341 tools is an extreme count for any MCP server. While the server covers a broad ERP/accounting domain, the sheer number creates overwhelming selection complexity and suggests the entire REST API surface was exposed without curation. This is far beyond the typical well-scoped MCP server.

Completeness4/5

The tool surface is remarkably comprehensive for the domain: invoices, proformas, delivery notes, receipts, clients, suppliers, products, payments, VAT, declarations, SPV, dosare, webhooks, backups, imports, exports, and admin functions are all covered with full lifecycle operations. Minor gaps exist (e.g., no explicit tool for updating invoice line items after issue, no direct SPV request cancellation), but the coverage is extensive.

Maintenance

ActivityMaintained
ResponsivenessNo issues