sef-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SEF_ENV | No | SEF environment. Defaults to demo. Production requires SEF_ENV=prod and SEF_MCP_ALLOW_PROD_WRITE=true. | demo |
| SEF_MCP_ALLOW_PROD_WRITE | No | Required as true together with SEF_ENV=prod to enable production write operations. | false |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| sef_check_setupA | Shows environment (demo/prod), safety switches and profile summary. Makes no network calls. |
| sef_setup_companyA | Creates or updates the seller (your company) in the local profile, so no JSON has to be edited by hand. Call without confirmCode to get a preview and a confirmCode; show the preview to the user; only after they confirm, call again with the same values plus confirmCode. Nothing is sent to SEF. |
| sef_add_customerB | Adds a customer to the local profile (or replaces the one with the same id). Same preview → confirm flow as sef_setup_company. Nothing is sent to SEF. |
| sef_pingA | Calls a harmless read-only SEF endpoint to confirm the API key and environment work. |
| sef_list_customersA | Lists customers defined in the local profile (id, name, PIB, defaults). |
| sef_list_vat_exemption_reasonsA | Returns SEF's official list of VAT exemption reason codes (e.g. PDV-RS-33). |
| sef_list_unit_measuresA | Returns SEF's list of accepted unit codes (e.g. H87 piece, HUR hour, MON month). |
| sef_draft_invoiceA | Builds a UBL 2.1 invoice locally from the profile and the given lines, stores it as a draft and returns totals plus an approvalCode. Nothing is sent to SEF. Always show the result to the user before sending. |
| sef_get_draftB | Returns a stored draft's summary, optionally with the full XML. |
| sef_send_invoiceA | Uploads a previously drafted invoice to SEF. Requires the draftId and the approvalCode the user approved. Only call after the user explicitly approved this exact draft. In prod it also requires SEF_MCP_ALLOW_PROD_WRITE=true. Sends without SEF's own validation by default, like the SEF portal (SEF support: the option is not in operation yet). Pass executeValidation=true only if the user explicitly asks for it. A draft that was already sent successfully is not uploaded again: the result has alreadySent=true and the earlier SEF response. |
| sef_get_invoiceA | Returns a sales invoice and its status from SEF by SEF invoiceId. |
| sef_list_invoice_idsA | Lists SEF sales invoice ids by status within a date range. For New, Draft and Mistake the range filters by creation date; for all other statuses by sending date (SEF 3.15.0). |
| sef_cancel_invoiceA | Cancels a sales invoice on SEF. SEF allows this only for status Draft, New or Sending error; for Sent/Accepted/Rejected use sef_storno_invoice. Only call after explicit user approval. |
| sef_storno_invoiceA | Reverses (storno) a sales invoice on SEF. SEF allows this only for status Sent, Accepted or Rejected. Only call after explicit user approval. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| mesecna-faktura | Napravi nacrt mesečne e-fakture i pošalji je tek posle odobrenja. |
| podesavanje-firme | Prvo podešavanje: ključ, podaci firme, kupci i probna faktura na demo okruženju. |
| status-fakture | Proveri status poslate fakture i šta je sledeće moguće. |
| storno-ili-otkazivanje | Proveri status fakture i predloži otkazivanje ili storno, uz izričito odobrenje. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| greske | Šifre grešaka koje SEF vraća, šta znače i šta uraditi. |
| statusi | Statusi izlaznih faktura i da li je moguće otkazivanje ili storno. |
| pravila | Pravila koja sef-mcp proverava i trenutna bezbednosna podešavanja. |
TDQS
Scored across 14 tools
The tools are mostly distinct: draft/send/get/list/cancel/storno each target a clear lifecycle stage, and cancel vs storno is explicitly disambiguated by invoice status. Minor overlap exists between sef_check_setup and sef_ping, and between sef_get_invoice and sef_get_draft, but the descriptions resolve these cases.
All tools use a consistent snake_case sef_ prefix, and nearly all follow a verb_noun pattern (list_invoice_ids, send_invoice, get_draft). The only slight deviation is sef_ping, which is a conventional diagnostic name and does not disrupt the pattern.
With 14 tools, the server sits well within the typical 3-15 range and each tool corresponds to a meaningful operation in the SEF invoice workflow. There is no obvious bloat or missing thin wrapper.
The surface covers the core invoice lifecycle: profile setup, customer management, reference data, drafting, sending, retrieval, listing, cancellation, and storno. Minor gaps remain around draft management (delete/update or list drafts) and customer deletion, but agents can work around these.