Skip to content

com.somosvelora/velora

by somosvelora.com · remote · no sign-in to list tools · v1.0.1 · published by com.somosvelora

Hosted Argentine commerce MCP: real AFIP invoicing, MercadoPago, logistics, catalog & WhatsApp.

Deletes · 26Changes · 14

50 tools: 26 can delete or cancel things, 14 change things and 10 only read.

Scanned Oct 21, 2026

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

claude mcp add --transport http velora https://tools.somosvelora.com/api/mcp

Findings

Matches of fixed checks, with the text they matched.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_catalog_selector" says "open": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_payment_link_wizard" says "open": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_pending_orders" says "open": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_cobro_status" says "open": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_delivery_receipt" says "open": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_sale_confirm" says "open": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_caja_status" says "open": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_onboarding" says "open": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_business_overview" says "open": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "open_shipment_prep" says "open": a word for a change.

    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.

50 tools

Deletes or cancels 26Claude Code: deny
  • adjust_stock[demo: deshabilitada] Sets the absolute stock quantity for a product (inventory sync, no audit trail).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
    [demo: deshabilitada] Sets the absolute stock quantity for a product (inventory sync, no audit trail).

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • bulk_price_update[demo: deshabilitada] Mass price change for all products or a specified subset in this business.No findings

    Why it is in this group

    • The name "bulk_price_update" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Mass price change for all products or a specified subset in this business.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • caja_ciclo_caja[demo: deshabilitada] Opens or closes a cash register shift for the authenticated business.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
    [demo: deshabilitada] Opens or closes a cash register shift for the authenticated business.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: false
    • destructiveHint: true
    • openWorldHint: false
  • caja_registrar_movimiento[demo: deshabilitada] Records a cash movement tied to the OPEN caja shift: income, expense, withdrawal, tax, or payroll.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
    [demo: deshabilitada] Records a cash movement tied to the OPEN caja shift: income, expense, withdrawal, tax, or payroll.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • connect_mercadopago[demo: deshabilitada] Connects MercadoPago for this business using the BYOA OAuth-redirect model.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
    [demo: deshabilitada] Connects MercadoPago for this business using the BYOA OAuth-redirect model. Primary: returns an authorization URL. Fallback: accepts a production access token directly.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: true
  • connect_pedidosya[demo: deshabilitada] Connects PedidosYa for this business using the BYOA secure-form model.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
    [demo: deshabilitada] Connects PedidosYa for this business using the BYOA secure-form model. Primary: returns a secure link. Fallback: accepts an API token directly.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • connect_tiendanube[demo: deshabilitada] Connects Tienda Nube (Nuvemshop) using the BYOA OAuth-redirect model.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
    [demo: deshabilitada] Connects Tienda Nube (Nuvemshop) using the BYOA OAuth-redirect model. Returns an authorization URL — no token ever passes through chat. Gated behind env config in production.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: true
  • connect_whatsapp[demo: deshabilitada] Connects WhatsApp Business using the BYOA Meta Embedded Signup model.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
    [demo: deshabilitada] Connects WhatsApp Business using the BYOA Meta Embedded Signup model. Primary: returns a signup link. Optional: registers a phone number as a lightweight pre-step.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • create_purchase_request[demo: deshabilitada] Creates a procurement order (purchase request) to a supplier.No findings

    Why it is in this group

    • The name "create_purchase_request" says "create": a word for a change.
    • The name "create_purchase_request" also says "purchase": a word that usually means money moves, which cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Creates a procurement order (purchase request) to a supplier.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • create_shipment[demo: deshabilitada] Creates a physical shipment via the chosen courier and returns a tracking number and label URL.No findings

    Why it is in this group

    • The name "create_shipment" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Creates a physical shipment via the chosen courier and returns a tracking number and label URL.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: true
  • delete_customer[demo: deshabilitada] Deletes a customer from this business (blocked when the customer has sales or invoices).No findings

    Why it is in this group

    • The name "delete_customer" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Deletes a customer from this business (blocked when the customer has sales or invoices).

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • delete_product[demo: deshabilitada] Deletes (or soft-archives, when it has sale records) a product from the catalog.No findings

    Why it is in this group

    • The name "delete_product" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Deletes (or soft-archives, when it has sale records) a product from the catalog.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • delete_supplier[demo: deshabilitada] Deletes a supplier from this business (with full audit trail).No findings

    Why it is in this group

    • The name "delete_supplier" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Deletes a supplier from this business (with full audit trail).

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • edit_product[demo: deshabilitada] Updates a single product's fields (name, price, costPrice, or stockQuantity).No findings

    Why it is in this group

    • The name "edit_product" says "edit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Updates a single product's fields (name, price, costPrice, or stockQuantity).

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • edit_supplier[demo: deshabilitada] Updates an existing supplier's fields.No findings

    Why it is in this group

    • The name "edit_supplier" says "edit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Updates an existing supplier's fields.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • emit_invoice[demo: deshabilitada] Emits an ARCA (formerly AFIP)-compliant electronic invoice (factura electrónica) for the authenticated business and returns the CAE authorization code.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
    [demo: deshabilitada] Emits an ARCA (formerly AFIP)-compliant electronic invoice (factura electrónica) for the authenticated business and returns the CAE authorization code.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: false
    • destructiveHint: true
    • openWorldHint: true
  • emit_nota[demo: deshabilitada] Emits an ARCA-compliant Nota Crédito (NC) or Nota Débito (ND) against an original AFIP invoice and returns the CAE authorization code.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
    [demo: deshabilitada] Emits an ARCA-compliant Nota Crédito (NC) or Nota Débito (ND) against an original AFIP invoice and returns the CAE authorization code.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: false
    • destructiveHint: true
    • openWorldHint: true
  • register_movement[demo: deshabilitada] Records a cash-register movement for the authenticated business ('purchase', 'income', 'salary', 'tax', 'adjustment').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
    [demo: deshabilitada] Records a cash-register movement for the authenticated business ('purchase', 'income', 'salary', 'tax', 'adjustment').

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • register_sale[demo: deshabilitada] Records a sale for the authenticated business.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
    [demo: deshabilitada] Records a sale for the authenticated business. Creates a full Sale with SaleItems, decrements inventory, creates a CashMovement and Invoice.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • return_sale[demo: deshabilitada] Reverses the N most-recent sales within a time window.No findings

    Why it is in this group

    • The description says "irreversible".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Reverses the N most-recent sales within a time window. Restores inventory, removes CashMovement, SaleItem, Invoice, and Sale records. Destructive and irreversible.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • send_whatsapp_template[demo: deshabilitada] Sends a pre-approved Meta WhatsApp template message.No findings

    Why it is in this group

    • The name "send_whatsapp_template" says "send": a word for sending, and what is sent cannot be taken back.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Sends a pre-approved Meta WhatsApp template message. Window-independent — can be sent proactively, outside the 24-hour session window.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: false
    • destructiveHint: true
    • openWorldHint: true
  • send_whatsapp_text[demo: deshabilitada] Sends a plain-text WhatsApp message to a customer phone number.No findings

    Why it is in this group

    • The name "send_whatsapp_text" says "send": a word for sending, and what is sent cannot be taken back.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Sends a plain-text WhatsApp message to a customer phone number. Only valid inside the 24-hour customer-service window (Meta error 131026 outside).

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: false
    • destructiveHint: true
    • openWorldHint: true
  • stock_load[demo: deshabilitada] Records inbound stock for a product — restock or initial stock, with an audit trail.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
    [demo: deshabilitada] Records inbound stock for a product — restock or initial stock, with an audit trail.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
  • upload_catalog[demo: deshabilitada] Bulk-creates products in the business catalog from a structured list (up to 50 items).No findings

    Why it is in this group

    • The name "upload_catalog" says "upload": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Bulk-creates products in the business catalog from a structured list (up to 50 items).

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: false
    • destructiveHint: true
    • openWorldHint: false
  • upsert_customer[demo: deshabilitada] Creates a new customer or updates an existing one for the authenticated business.No findings

    Why it is in this group

    • The name "upsert_customer" says "upsert": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    [demo: deshabilitada] Creates a new customer or updates an existing one for the authenticated business.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: true
    • openWorldHint: false
Changes things 14Claude Code: ask
  • create_product[demo: deshabilitada] Creates a new product in the business catalog.No findings

    Why it is in this group

    • The name "create_product" says "create": a word for a change.
    Description, as the server wrote it
    [demo: deshabilitada] Creates a new product in the business catalog. Requires name and price.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • create_supplier[demo: deshabilitada] Creates a supplier for this business.No findings

    Why it is in this group

    • The name "create_supplier" says "create": a word for a change.
    Description, as the server wrote it
    [demo: deshabilitada] Creates a supplier for this business.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • open_business_overviewONE widget, two display modes: inline snapshot by default, fullscreen tabs (Cliente 360, Cerrar el día, Reposición de stock, Dashboard de ventas) on demand.1 finding

    Why it is in this group

    • The name "open_business_overview" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_business_overview" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    ONE widget, two display modes: inline snapshot by default, fullscreen tabs (Cliente 360, Cerrar el día, Reposición de stock, Dashboard de ventas) on demand. Aggregates caja, payments, ventas, reportes, supplier, and customer reads.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • open_caja_statusOpens a visual widget showing the current shift state and action buttons.1 finding

    Why it is in this group

    • The name "open_caja_status" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_caja_status" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Opens a visual widget showing the current shift state and action buttons. Read-only here.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • open_catalog_selectorOpens the catalog selector — a graphical product picker (MCP Apps widget) that shows active products with prices (ARS) and stock.1 finding

    Why it is in this group

    • The name "open_catalog_selector" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_catalog_selector" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Opens the catalog selector — a graphical product picker (MCP Apps widget) that shows active products with prices (ARS) and stock. Side-effect-free (no sale, no charge).

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • open_cobro_statusOpens the cobro status widget — a read-only view of ONE PaymentIntent's payment state.1 finding

    Why it is in this group

    • The name "open_cobro_status" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_cobro_status" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Opens the cobro status widget — a read-only view of ONE PaymentIntent's payment state. Accepts paymentIntentId OR customerName.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • open_delivery_receiptOpens the comprobante + envío widget — a read-only view of the delivery receipt for a completed cobro.1 finding

    Why it is in this group

    • The name "open_delivery_receipt" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_delivery_receipt" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Opens the comprobante + envío widget — a read-only view of the delivery receipt for a completed cobro. Accepts paymentIntentId, saleId, OR customerName.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • open_onboardingOpens a graphical onboarding hub showing integration status and connect links.1 finding

    Why it is in this group

    • The name "open_onboarding" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_onboarding" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Opens a graphical onboarding hub showing integration status and connect links. Read-only.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • open_pending_ordersOpens the pending cobros dashboard — a read-only widget listing PaymentIntents awaiting payment.1 finding

    Why it is in this group

    • The name "open_pending_orders" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_pending_orders" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Opens the pending cobros dashboard — a read-only widget listing PaymentIntents awaiting payment. Side-effect-free.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • open_sale_confirmOpens a VISUAL preview of a cash sale — resolved product names, unit prices, quantities, and total — with a confirm button that fires register_sale.1 finding

    Why it is in this group

    • The name "open_sale_confirm" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_sale_confirm" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Opens a VISUAL preview of a cash sale — resolved product names, unit prices, quantities, and total — with a confirm button that fires register_sale. Read-only preview itself.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • open_shipment_prepCombines catalog stock/weight data and a live shipping quote into one widget — resolves items, computes total weight, and quotes couriers.1 finding

    Why it is in this group

    • The name "open_shipment_prep" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "open_shipment_prep" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Combines catalog stock/weight data and a live shipping quote into one widget — resolves items, computes total weight, and quotes couriers. Read-only, side-effect-free.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: true
  • quote_shippingQuotes shipment rates from every active courier configured for the authenticated business and returns options sorted by price ascending.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 read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Quotes shipment rates from every active courier configured for the authenticated business and returns options sorted by price ascending.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: true
  • track_shipmentTracks the current status and event history of a shipment by tracking number.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 read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Tracks the current status and event history of a shipment by tracking number.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: true
Only reads 10Claude Code: allow
  • caja_consultar_saldoQueries the current cash register balance for the authenticated business — the open session data or the last closed session.No findings

    Why it is in this group

    • The description's first verb is "query": a word for reading.
    Description, as the server wrote it
    Queries the current cash register balance for the authenticated business — the open session data or the last closed session. Read-only.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • connection_statusReturns the BYOA (Bring Your Own Account) integration readiness for the authenticated business — what is connected and how to connect what is missing.No findings

    Why it is in this group

    • The name "connection_status" says "status": a word for reading.
    Description, as the server wrote it
    Returns the BYOA (Bring Your Own Account) integration readiness for the authenticated business — what is connected and how to connect what is missing. Read-only.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • find_customerSearches customers in the business by name and/or phone.No findings

    Why it is in this group

    • The name "find_customer" says "find": a word for reading.
    Description, as the server wrote it
    Searches customers in the business by name and/or phone. Returns up to 20 matching customers sorted by name.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_fiscal_readinessChecks whether the business is ready to emit real ARCA electronic invoices.No findings

    Why it is in this group

    • The name "get_fiscal_readiness" says "get": a word for reading.
    Description, as the server wrote it
    Checks whether the business is ready to emit real ARCA electronic invoices. Returns { ready, missing, guidance } where ready=true means all fiscal fields and the ARCA certificate are configured.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_package_profileComputes the shipment weight and item breakdown for a package.No findings

    Why it is in this group

    • The name "get_package_profile" says "get": a word for reading.
    Description, as the server wrote it
    Computes the shipment weight and item breakdown for a package. Accepts a saleId, a list of productIds, or an explicit weightGramsOverride.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_payment_intent_statusChecks the current status of a Velora PaymentIntent.No findings

    Why it is in this group

    • The name "get_payment_intent_status" says "get": a word for reading.
    Description, as the server wrote it
    Checks the current status of a Velora PaymentIntent. Accepts a paymentIntentId OR a customer name.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: true
  • list_suppliersReturns all suppliers for this business (up to 50, sorted by name).No findings

    Why it is in this group

    • The name "list_suppliers" says "list": a word for reading.
    Description, as the server wrote it
    Returns all suppliers for this business (up to 50, sorted by name).

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • query_catalogLists active products in the business catalog.No findings

    Why it is in this group

    • The name "query_catalog" says "query": a word for reading.
    Description, as the server wrote it
    Lists active products in the business catalog. Returns products sorted by name, each with id, name, price (ARS), costPrice, sku, stock quantity, and weightGrams.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • query_salesQueries sales metrics from the database: 'ventas_periodo', 'margen', 'ranking_productos', 'por_empleado', or 'historial_cliente'.No findings

    Why it is in this group

    • The name "query_sales" says "query": a word for reading.
    Description, as the server wrote it
    Queries sales metrics from the database: 'ventas_periodo', 'margen', 'ranking_productos', 'por_empleado', or 'historial_cliente'.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false
  • validate_cuitValidates an Argentine CUIT or CUIL number.No findings

    Why it is in this group

    • The name "validate_cuit" says "validate": a word for reading.
    Description, as the server wrote it
    Validates an Argentine CUIT or CUIL number. Returns parsed components (prefix, body, check digit), person type, and whether the check digit is mathematically correct. Accepts any format: raw digits, hyphened (20-12345678-9), or spaced. This tool runs the REAL check-digit algorithm — not a demo fixture.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • destructiveHint: false
    • openWorldHint: false

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.0.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http velora https://tools.somosvelora.com/api/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__velora__validate_cuit",
      "mcp__velora__get_fiscal_readiness",
      "mcp__velora__query_catalog",
      "mcp__velora__find_customer",
      "mcp__velora__get_package_profile",
      "mcp__velora__connection_status",
      "mcp__velora__caja_consultar_saldo",
      "mcp__velora__get_payment_intent_status",
      "mcp__velora__list_suppliers",
      "mcp__velora__query_sales"
    ],
    "ask": [
      "mcp__velora__create_product",
      "mcp__velora__open_catalog_selector",
      "mcp__velora__quote_shipping",
      "mcp__velora__track_shipment",
      "mcp__velora__open_payment_link_wizard",
      "mcp__velora__open_pending_orders",
      "mcp__velora__open_cobro_status",
      "mcp__velora__open_delivery_receipt",
      "mcp__velora__create_supplier",
      "mcp__velora__open_sale_confirm",
      "mcp__velora__open_caja_status",
      "mcp__velora__open_onboarding",
      "mcp__velora__open_business_overview",
      "mcp__velora__open_shipment_prep"
    ],
    "deny": [
      "mcp__velora__emit_invoice",
      "mcp__velora__emit_nota",
      "mcp__velora__edit_product",
      "mcp__velora__stock_load",
      "mcp__velora__adjust_stock",
      "mcp__velora__delete_product",
      "mcp__velora__bulk_price_update",
      "mcp__velora__register_sale",
      "mcp__velora__register_movement",
      "mcp__velora__return_sale",
      "mcp__velora__upsert_customer",
      "mcp__velora__delete_customer",
      "mcp__velora__create_shipment",
      "mcp__velora__send_whatsapp_text",
      "mcp__velora__send_whatsapp_template",
      "mcp__velora__caja_ciclo_caja",
      "mcp__velora__caja_registrar_movimiento",
      "mcp__velora__create_tracked_payment_link",
      "mcp__velora__create_purchase_request",
      "mcp__velora__edit_supplier",
      "mcp__velora__delete_supplier",
      "mcp__velora__connect_mercadopago",
      "mcp__velora__connect_pedidosya",
      "mcp__velora__connect_whatsapp",
      "mcp__velora__connect_tiendanube",
      "mcp__velora__upload_catalog"
    ]
  }
}

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 velora. Review it before you use it.