Skip to content

Oblio MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi

Read Oblio clients, products and documents; create proformas, issue, collect and cancel invoices.

Deletes · 8Changes · 1

18 tools: 8 can delete or cancel things, 1 change things and 9 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http oblio https://oblio.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The description contains "every other tool", wording about other tools or servers.

    Matched text

    description: "...nnected Oblio account. Good first call: every other tool needs a CIF from here. GET /api/nomencl..."

    What this check looks for
  • The server marks "oblio_list_products" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "oblio_list_products" says "list": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

18 tools

Deletes or cancels 8Claude Code: deny
  • oblio_cancel_documentCANCEL an invoice, proforma or notice.No findings

    Why it is in this group

    • The name "oblio_cancel_document" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    CANCEL an invoice, proforma or notice. A cancelled invoice stays in the series but is void; if it was already sent to e-Factura / SPV, check the SPV side as well. Needs confirm: true and the user's approval. Not retried. PUT /api/docs/<type>/cancel.

    Annotations the server declares

    • title: Cancel a document (fiscal)
    • destructiveHint: true
    • readOnlyHint: false
    • idempotentHint: false
    • openWorldHint: true
  • oblio_collect_invoiceRecord that an issued invoice was paid (receipt, bank order, card...).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Record that an issued invoice was paid (receipt, bank order, card...). Changes the invoice's paid status and is not reversible from the API. Needs confirm: true and the user's approval of the amount. Not retried. PUT /api/docs/invoice/collect.

    Annotations the server declares

    • title: Record an invoice payment (collect)
    • destructiveHint: true
    • readOnlyHint: false
    • idempotentHint: false
    • openWorldHint: true
  • oblio_create_proformaCreate a PROFORMA (not a fiscal invoice; the preferred first step).No findings

    Why it is in this group

    • The name "oblio_create_proforma" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create a PROFORMA (not a fiscal invoice; the preferred first step). It takes the next number of the series immediately, there is no draft state, and Oblio sends no e-mail. Check client, lines, VAT (oblio_list_vat_rates) and series (oblio_list_series) first. Returns the series, number and a PDF link. Not retried: if the reply is an error, look in Oblio before repeating. POST /api/docs/proforma.

    Annotations the server declares

    • title: Create a proforma
    • destructiveHint: true
    • readOnlyHint: false
    • idempotentHint: false
    • openWorldHint: true
  • oblio_create_webhookSubscribe an HTTPS endpoint to an Oblio event (stock changes, drafts/updates/cancellations of documents, collections).No findings

    Why it is in this group

    • The name "oblio_create_webhook" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Subscribe an HTTPS endpoint to an Oblio event (stock changes, drafts/updates/cancellations of documents, collections). Oblio will POST account data to that URL, so only use an endpoint the user named and controls; it must answer 200 with the base64 of the X-Oblio-Request-Id header. Needs confirm: true. POST /api/webhooks.

    Annotations the server declares

    • title: Create a webhook
    • destructiveHint: true
    • readOnlyHint: false
    • idempotentHint: false
    • openWorldHint: true
  • oblio_delete_webhookDelete a webhook subscription by id (from oblio_list_webhooks).No findings

    Why it is in this group

    • The name "oblio_delete_webhook" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a webhook subscription by id (from oblio_list_webhooks). Needs confirm: true. DELETE /api/webhooks/{id}.

    Annotations the server declares

    • title: Delete a webhook
    • destructiveHint: true
    • readOnlyHint: false
    • idempotentHint: false
    • openWorldHint: true
  • oblio_issue_invoiceISSUE a real INVOICE.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    ISSUE a real INVOICE. This is a legal fiscal document: it takes the next number in the series at once, there is no draft state, it cannot be edited, and it can only be cancelled afterwards (it may also be sent to ANAF e-Factura / SPV, automatically if the account is set up so). Needs confirm: true, an idempotency_key, and the user's explicit approval of the exact client, lines, totals and series. Optionally base it on a proforma or notice (reference_document), record the payment at once (collect) or set the delivery date. Not retried: if the reply is an error, look in Oblio before repeating. Oblio never e-mails the client from this tool. POST /api/docs/invoice.

    Annotations the server declares

    • title: Issue an invoice (fiscal, irreversible)
    • destructiveHint: true
    • readOnlyHint: false
    • idempotentHint: false
    • openWorldHint: true
  • oblio_restore_documentRestore a previously CANCELLED invoice, proforma or notice.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Restore a previously CANCELLED invoice, proforma or notice. Needs confirm: true and the user's approval. Not retried. PUT /api/docs/<type>/restore.

    Annotations the server declares

    • title: Restore a cancelled document (fiscal)
    • destructiveHint: true
    • readOnlyHint: false
    • idempotentHint: false
    • openWorldHint: true
  • oblio_send_einvoice_to_spvSEND an issued invoice to ANAF e-Factura (SPV).No findings

    Why it is in this group

    • The name "oblio_send_einvoice_to_spv" says "send": a word for sending, and what is sent cannot be taken back.
    • The description says "Irreversible".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    SEND an issued invoice to ANAF e-Factura (SPV). Irreversible: a document accepted by ANAF cannot be withdrawn from this API. Needs confirm: true and the user's approval. Not retried: check the status with oblio_list_invoices (with_einvoice_status) before repeating. Returns text, sent and a code (-1 not sent, 2 errors, 0 processing, 1 sent). POST /api/docs/einvoice.

    Annotations the server declares

    • title: Send an invoice to e-Factura (SPV)
    • destructiveHint: true
    • readOnlyHint: false
    • idempotentHint: false
    • openWorldHint: true
Changes things 1Claude Code: ask
  • oblio_list_productsProducts and services of a company with unit, price, VAT and (with stock) quantities.1 finding

    Why it is in this group

    • The name "oblio_list_products" says "list": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "oblio_list_products" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "oblio_list_products" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Products and services of a company with unit, price, VAT and (with stock) quantities. Up to 250 per page: pass next_offset as offset. GET /api/nomenclature/products.

    Annotations the server declares

    • title: List or search products
    • readOnlyHint: true
Only reads 9Claude Code: allow
  • oblio_get_documentOne invoice, proforma or notice by series and number: type, series, number, link to the PDF and (invoices) the collections.No findings

    Why it is in this group

    • The name "oblio_get_document" says "get": a word for reading.
    Description, as the server wrote it
    One invoice, proforma or notice by series and number: type, series, number, link to the PDF and (invoices) the collections. GET /api/docs/<type>.

    Annotations the server declares

    • title: Get a document
    • readOnlyHint: true
  • oblio_list_clientsClients of a company, optionally filtered by name or client CIF.No findings

    Why it is in this group

    • The name "oblio_list_clients" says "list": a word for reading.
    Description, as the server wrote it
    Clients of a company, optionally filtered by name or client CIF. Up to 250 per page: pass next_offset as offset for the next page. GET /api/nomenclature/clients.

    Annotations the server declares

    • title: List or search clients
    • readOnlyHint: true
  • oblio_list_companiesThe companies (CIF, name, your access level) linked to the connected Oblio account.1 finding

    Why it is in this group

    • The name "oblio_list_companies" says "list": a word for reading.

    Findings

    • Warn

      The description contains "every other tool", wording about other tools or servers.

      Matched text

      description: "...nnected Oblio account. Good first call: every other tool needs a CIF from here. GET /api/nomencl..."

      What this check looks for
    Description, as the server wrote it
    The companies (CIF, name, your access level) linked to the connected Oblio account. Good first call: every other tool needs a CIF from here. GET /api/nomenclature/companies.

    Annotations the server declares

    • title: List companies
    • readOnlyHint: true
  • oblio_list_invoicesInvoices of a company with filters (series, number, dates, client, draft/canceled/collected), newest first by default.No findings

    Why it is in this group

    • The name "oblio_list_invoices" says "list": a word for reading.
    Description, as the server wrote it
    Invoices of a company with filters (series, number, dates, client, draft/canceled/collected), newest first by default. Optional products, collections and e-Factura (SPV) status per invoice. Pass next_offset as offset for the next page. GET /api/docs/invoice/list.

    Annotations the server declares

    • title: List invoices
    • readOnlyHint: true
  • oblio_list_languagesForeign languages a company can issue documents in (code, name).No findings

    Why it is in this group

    • The name "oblio_list_languages" says "list": a word for reading.
    Description, as the server wrote it
    Foreign languages a company can issue documents in (code, name). GET /api/nomenclature/languages.

    Annotations the server declares

    • title: List document languages
    • readOnlyHint: true
  • oblio_list_managementStock managements (gestiuni) of a company with their work point and type; works only when stock is enabled.No findings

    Why it is in this group

    • The name "oblio_list_management" says "list": a word for reading.
    Description, as the server wrote it
    Stock managements (gestiuni) of a company with their work point and type; works only when stock is enabled. GET /api/nomenclature/management.

    Annotations the server declares

    • title: List stock managements
    • readOnlyHint: true
  • oblio_list_seriesDocument series of a company (type Factura/Proforma/Aviz, name, start, next number, default).No findings

    Why it is in this group

    • The name "oblio_list_series" says "list": a word for reading.
    Description, as the server wrote it
    Document series of a company (type Factura/Proforma/Aviz, name, start, next number, default). Use the name as series_name. GET /api/nomenclature/series.

    Annotations the server declares

    • title: List document series
    • readOnlyHint: true
  • oblio_list_vat_ratesVAT rates (name, percent, default) of a company; use the name and percent on document lines.No findings

    Why it is in this group

    • The name "oblio_list_vat_rates" says "list": a word for reading.
    Description, as the server wrote it
    VAT rates (name, percent, default) of a company; use the name and percent on document lines. GET /api/nomenclature/vat_rates.

    Annotations the server declares

    • title: List VAT rates
    • readOnlyHint: true
  • oblio_list_webhooksThe webhook subscriptions of the account (id, CIF, topic, endpoint).No findings

    Why it is in this group

    • The name "oblio_list_webhooks" says "list": a word for reading.
    Description, as the server wrote it
    The webhook subscriptions of the account (id, CIF, topic, endpoint). GET /api/webhooks.

    Annotations the server declares

    • title: List webhooks
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.3.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http oblio https://oblio.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__oblio__oblio_list_companies",
      "mcp__oblio__oblio_list_vat_rates",
      "mcp__oblio__oblio_list_series",
      "mcp__oblio__oblio_list_languages",
      "mcp__oblio__oblio_list_management",
      "mcp__oblio__oblio_list_clients",
      "mcp__oblio__oblio_get_document",
      "mcp__oblio__oblio_list_invoices",
      "mcp__oblio__oblio_list_webhooks"
    ],
    "ask": [
      "mcp__oblio__oblio_list_products"
    ],
    "deny": [
      "mcp__oblio__oblio_create_proforma",
      "mcp__oblio__oblio_issue_invoice",
      "mcp__oblio__oblio_collect_invoice",
      "mcp__oblio__oblio_cancel_document",
      "mcp__oblio__oblio_restore_document",
      "mcp__oblio__oblio_send_einvoice_to_spv",
      "mcp__oblio__oblio_create_webhook",
      "mcp__oblio__oblio_delete_webhook"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as oblio. Review it before you use it.