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.
50 tools: 26 can delete or cancel things, 14 change things and 10 only read.
Scanned Oct 21, 2026
- Deletes or cancels26Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things14Claude Code: ask: see these tools
- Only reads10Claude Code: allow: see these tools
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/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "open_catalog_selector" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_catalog_selector" says "open": a word for a change.
The server marks "open_payment_link_wizard" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_payment_link_wizard" says "open": a word for a change.
The server marks "open_pending_orders" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_pending_orders" says "open": a word for a change.
The server marks "open_cobro_status" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_cobro_status" says "open": a word for a change.
The server marks "open_delivery_receipt" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_delivery_receipt" says "open": a word for a change.
The server marks "open_sale_confirm" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_sale_confirm" says "open": a word for a change.
Show 4 more findingsShow fewer
- Warnopen_caja_status
The server marks "open_caja_status" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_caja_status" says "open": a word for a change.
- Warnopen_onboarding
The server marks "open_onboarding" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_onboarding" says "open": a word for a change.
The server marks "open_business_overview" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_business_overview" says "open": a word for a change.
The server marks "open_shipment_prep" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "open_shipment_prep" says "open": a word for a change.
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
create_tracked_payment_link[demo: deshabilitada] Creates a tracked MercadoPago payment link for a catalog-tied cobro: atomically records the Sale + Invoice + PaymentIntent, then generates a real Checkout Pro…No findings
Why it is in this group
- The name "create_tracked_payment_link" says "create": a word for a change.
- The description says "irreversible".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it [demo: deshabilitada] Creates a tracked MercadoPago payment link for a catalog-tied cobro: atomically records the Sale + Invoice + PaymentIntent, then generates a real Checkout Pro link. MONEY: real and irreversible.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_business_overview" says "open": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_caja_status" says "open": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_catalog_selector" says "open": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_cobro_status" says "open": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_delivery_receipt" says "open": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_onboarding" says "open": a word for a change.
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_payment_link_wizardOpens the payment-link wizard — a graphical form pre-filled with the cobro, for the owner to review and confirm before any money moves.1 finding
Why it is in this group
- The name "open_payment_link_wizard" 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_payment_link_wizard" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_payment_link_wizard" says "open": a word for a change.
Description, as the server wrote it Opens the payment-link wizard — a graphical form pre-filled with the cobro, for the owner to review and confirm before any money moves. Side-effect-free (no charge).
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_pending_orders" says "open": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_sale_confirm" says "open": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "open_shipment_prep" says "open": a word for a change.
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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.