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

Create a new company by providing its CIF (Romanian tax identification number). The system automatically validates the CIF with ANAF and retrieves official registration data (name, address, VAT status). The CIF can be provided with or without the RO prefix.

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.

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_registry

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_invoice

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_list

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.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/stornoro/storno-cli'

If you have feedback or need assistance with the MCP directory API, please join our Discord server