com.somosvelora/velora
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
Hosted Argentine commerce MCP: real AFIP invoicing, MercadoPago, logistics, catalog & WhatsApp.
| Author | com.somosvelora |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 356 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"velora": {
"url": "https://tools.somosvelora.com/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (50)
validate_cuitread-onlyValidates 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.
Parameters:
cuit(required) — string — CUIT/CUIL in any format (digits, hyphens, or spaces).
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_fiscal_readinessread-onlyChecks 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.
Hints: read-only yes · destructive no · idempotent yes · open-world no
emit_invoicedestructive[demo: deshabilitada] Emits an ARCA (formerly AFIP)-compliant electronic invoice (factura electrónica) for the authenticated business and returns the CAE authorization code.
Parameters:
customerCuit(required) — string — Customer CUIT/CUIL (11 digits, any format).amountARS(required) — number — Invoice total in Argentine pesos (ARS).tipo(required) — string — A = IVA discriminado (B2B), B = consumidor final, C = monotributo.concept— string — Items or concept description (optional).requestId— string — Optional idempotency nonce.
Hints: read-only no · destructive yes · idempotent no · open-world yes
emit_notadestructive[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.
Parameters:
customerCuit(required) — string — Customer CUIT/CUIL (11 digits, any format).amountARS(required) — number — Note total in Argentine pesos (ARS).tipo(required) — string — Invoice type letter for this nota.kind(required) — string — credito = Nota Crédito, debito = Nota Débito.associatedInvoice(required) — object — Reference to the original invoice being credited or debited.concept— string — Items or concept description (optional).requestId— string — Optional idempotency nonce.
Hints: read-only no · destructive yes · idempotent no · open-world yes
create_product[demo: deshabilitada] Creates a new product in the business catalog. Requires name and price.
Parameters:
name(required) — string — Product name.price(required) — number — Selling price in ARS.costPrice— number — Purchase cost price in ARS (optional).weightGrams— integer — Weight in grams (optional).initialStock— integer — Initial stock quantity (default 0).
Hints: read-only no · destructive no · idempotent yes · open-world no
edit_productdestructive[demo: deshabilitada] Updates a single product's fields (name, price, costPrice, or stockQuantity).
Parameters:
productId(required) — string — ID of the product to update.name— string — New product name (optional).price— number — New selling price in ARS (optional).costPrice— New cost price, or null to clear (optional).stockQuantity— integer — Set stock to this value (optional).
Hints: read-only no · destructive yes · idempotent yes · open-world no
stock_loaddestructive[demo: deshabilitada] Records inbound stock for a product — restock or initial stock, with an audit trail.
Parameters:
itemName(required) — string — Product name for resolution or auto-creation.quantity(required) — integer — Units received.productId— string — Existing product ID (optional if itemName resolves it).unitPrice— number — Cost per unit in ARS.supplierId— string — Existing supplier ID (optional).supplierName— string — Supplier name (optional).autoCreateProduct— boolean — Auto-create product if not found.createPurchaseRequest— boolean — Also create a purchase request for this stock load.
Hints: read-only no · destructive yes · idempotent yes · open-world no
adjust_stockdestructive[demo: deshabilitada] Sets the absolute stock quantity for a product (inventory sync, no audit trail).
Parameters:
productId(required) — string — Product ID to update.mode(required) — string — Must be 'set'. Absolute-set is the only mode available via MCP.quantity(required) — integer — New absolute stock quantity.
Hints: read-only no · destructive yes · idempotent yes · open-world no
delete_productdestructive[demo: deshabilitada] Deletes (or soft-archives, when it has sale records) a product from the catalog.
Parameters:
productId(required) — string — ID of the product to delete.
Hints: read-only no · destructive yes · idempotent yes · open-world no
bulk_price_updatedestructive[demo: deshabilitada] Mass price change for all products or a specified subset in this business.
Parameters:
amount(required) — number — Adjustment amount — percentage or fixed ARS value depending on mode.mode(required) — string — 'percent' = percentage change; 'fixed' = absolute ARS change.direction(required) — string — 'up' raises, 'down' lowers, 'set' assigns an exact price.productIds— array — Specific product IDs to update. Omit to update ALL products.
Hints: read-only no · destructive yes · idempotent yes · open-world no
query_catalogread-onlyLists active products in the business catalog. Returns products sorted by name, each with id, name, price (ARS), costPrice, sku, stock quantity, and weightGrams.
Parameters:
search— string — Optional name filter (case-insensitive substring match).
Hints: read-only yes · destructive no · idempotent yes · open-world no
open_catalog_selectorread-onlyOpens 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).
Parameters:
search— string — Optional name filter (case-insensitive substring match).
Hints: read-only yes · destructive no · idempotent yes · open-world no
register_saledestructive[demo: deshabilitada] Records a sale for the authenticated business. Creates a full Sale with SaleItems, decrements inventory, creates a CashMovement and Invoice.
Parameters:
items(required) — array — Line items for the sale.requestId— string — Optional idempotency override.customerId— string — Optional customer ID. Omit for anonymous sales.paymentMethod— string — Defaults to 'efectivo' when omitted.
Hints: read-only no · destructive yes · idempotent yes · open-world no
register_movementdestructive[demo: deshabilitada] Records a cash-register movement for the authenticated business ('purchase', 'income', 'salary', 'tax', 'adjustment').
Parameters:
type(required) — string — Movement type.description(required) — string — Description (e.g. 'Pago proveedor Distribuidora ABC').amount(required) — number — Amount in ARS (always positive).date— string — ISO 8601 date/datetime. Defaults to now.
Hints: read-only no · destructive yes · idempotent yes · open-world no
return_saledestructive[demo: deshabilitada] Reverses the N most-recent sales within a time window. Restores inventory, removes CashMovement, SaleItem, Invoice, and Sale records. Destructive and irreversible.
Parameters:
confirm(required) — boolean — Must be explicitly true to confirm reversing sales.count— integer — Number of recent sales to reverse (max 10).cutoffHours— number — Only consider sales within the last N hours (max 48).
Hints: read-only no · destructive yes · idempotent yes · open-world no
find_customerread-onlySearches customers in the business by name and/or phone. Returns up to 20 matching customers sorted by name.
Parameters:
name— string — Customer name substring to search (case-insensitive).phone— string — Customer phone number or partial number to search.
Hints: read-only yes · destructive no · idempotent yes · open-world no
upsert_customerdestructive[demo: deshabilitada] Creates a new customer or updates an existing one for the authenticated business.
Parameters:
city— string — Customer city or locality (optional).name— string — Customer display name.email— string — Customer email address (optional).phone— string — Customer phone number.address— string — Customer street address (optional).customerId— string — When provided, updates the customer with this id.postalCode— string — Customer postal code (optional).
Hints: read-only no · destructive yes · idempotent yes · open-world no
delete_customerdestructive[demo: deshabilitada] Deletes a customer from this business (blocked when the customer has sales or invoices).
Parameters:
customerId(required) — string — ID of the customer to delete.
Hints: read-only no · destructive yes · idempotent yes · open-world no
quote_shippingread-onlyQuotes shipment rates from every active courier configured for the authenticated business and returns options sorted by price ascending.
Parameters:
originPostalCode(required) — string — Origin postal code (4 digits).destinationPostalCode(required) — string — Destination postal code (4 digits).weightGrams(required) — number — Total shipment weight in grams.declaredValue— number — Declared value in ARS for insurance.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
create_shipmentdestructive[demo: deshabilitada] Creates a physical shipment via the chosen courier and returns a tracking number and label URL.
Parameters:
provider(required) — string — Courier slug from quote_shipping ('andreani', 'oca').saleId(required) — string — Velora Sale ID.customerName(required) — string — Recipient first name.customerAddress(required) — string — Recipient street name.customerPostalCode(required) — string — Recipient postal code.weightGrams(required) — number — Total shipment weight in grams.service— string — Courier-specific service key (defaults to 'domicilio').customerDni— string — Recipient DNI (required by Andreani in production).customerCity— string — Recipient city (optional).customerPhone— string — Recipient phone number (optional).customerLastName— string — Recipient last name (optional).customerProvince— string — Recipient province (required by OCA).customerAddressNumber— string — Recipient street number (required by OCA).
Hints: read-only no · destructive yes · idempotent yes · open-world yes
track_shipmentread-onlyTracks the current status and event history of a shipment by tracking number.
Parameters:
trackingNumber(required) — string — Tracking number returned by the courier at shipment creation time.provider(required) — string — Courier that created the shipment ('andreani', 'oca').
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_package_profileread-onlyComputes the shipment weight and item breakdown for a package. Accepts a saleId, a list of productIds, or an explicit weightGramsOverride.
Parameters:
saleId— string — Velora Sale ID (takes priority over productIds).productIds— array — Array of Velora Product IDs (assumes qty=1 per id).weightGramsOverride— number — Explicit weight override in grams.
Hints: read-only yes · destructive no · idempotent yes · open-world no
send_whatsapp_textdestructive[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).
Parameters:
to(required) — string — Recipient phone number (local AR or E.164).text(required) — string — Message text body.mediaUrl— string — Optional public URL of a media file to attach.
Hints: read-only no · destructive yes · idempotent no · open-world yes
send_whatsapp_templatedestructive[demo: deshabilitada] Sends a pre-approved Meta WhatsApp template message. Window-independent — can be sent proactively, outside the 24-hour session window.
Parameters:
to(required) — string — Recipient phone number (local AR or E.164).templateName(required) — string — Exact template name as registered in Meta Business Manager.components— array — Template variable substitutions (omit for templates with no placeholders).languageCode— string — BCP-47 language code (defaults to 'es_AR').
Hints: read-only no · destructive yes · idempotent no · open-world yes
connection_statusread-onlyReturns the BYOA (Bring Your Own Account) integration readiness for the authenticated business — what is connected and how to connect what is missing. Read-only.
Hints: read-only yes · destructive no · idempotent yes · open-world no
caja_consultar_saldoread-onlyQueries the current cash register balance for the authenticated business — the open session data or the last closed session. Read-only.
Hints: read-only yes · destructive no · idempotent yes · open-world no
caja_ciclo_cajadestructive[demo: deshabilitada] Opens or closes a cash register shift for the authenticated business.
Parameters:
action(required) — string — 'abrir' to open a shift, 'cerrar' to close it.monto(required) — number — Opening float (abrir) or physically counted cash (cerrar) in ARS.nota— string — Optional operator note.
Hints: read-only no · destructive yes · idempotent no · open-world no
caja_registrar_movimientodestructive[demo: deshabilitada] Records a cash movement tied to the OPEN caja shift: income, expense, withdrawal, tax, or payroll.
Parameters:
tipo(required) — string — Movement type.monto(required) — number — Positive amount in ARS.descripcion(required) — string — Movement description.
Hints: read-only no · destructive yes · idempotent yes · open-world no
get_payment_intent_statusread-onlyChecks the current status of a Velora PaymentIntent. Accepts a paymentIntentId OR a customer name.
Parameters:
customerName— string — Customer name (fuzzy match).paymentIntentId— string — Velora PaymentIntent id. Optional when customerName is provided.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
open_payment_link_wizardread-onlyOpens 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).
Parameters:
description(required) — string — Cobro description (e.g. '3 alfajores').items(required) — array — Line items (productId + quantity).customerId— string — Customer ID (optional).
Hints: read-only yes · destructive no · idempotent yes · open-world no
open_pending_ordersread-onlyOpens the pending cobros dashboard — a read-only widget listing PaymentIntents awaiting payment. Side-effect-free.
Hints: read-only yes · destructive no · idempotent yes · open-world no
open_cobro_statusread-onlyOpens the cobro status widget — a read-only view of ONE PaymentIntent's payment state. Accepts paymentIntentId OR customerName.
Parameters:
customerName— string — Customer name (optional when paymentIntentId is provided).paymentIntentId— string — Velora PaymentIntent id (optional when customerName is provided).
Hints: read-only yes · destructive no · idempotent yes · open-world no
open_delivery_receiptread-onlyOpens the comprobante + envío widget — a read-only view of the delivery receipt for a completed cobro. Accepts paymentIntentId, saleId, OR customerName.
Parameters:
saleId— string — Velora Sale id (optional).customerName— string — Customer name (optional).paymentIntentId— string — Velora PaymentIntent id (optional).
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_tracked_payment_linkdestructive[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.
Parameters:
customerId(required) — string — Customer ID.items(required) — array — Line items.description(required) — string — Cobro description shown on the MP preference.idempotencyKey(required) — string — Stable UUID generated by the wizard.expiresInDays— integer — Link lifetime in days (1–30, default 3).
Hints: read-only no · destructive yes · idempotent yes · open-world yes
list_suppliersread-onlyReturns all suppliers for this business (up to 50, sorted by name).
Parameters:
search— string — Optional name substring to filter suppliers.
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_supplier[demo: deshabilitada] Creates a supplier for this business.
Parameters:
name(required) — string — Supplier name (must be unique within this business).email— string — Supplier email address (optional).phone— string — Supplier phone number (optional).contactName— string — Contact person name (optional).leadTimeDays— integer — Default lead time in days (optional).
Hints: read-only no · destructive no · idempotent yes · open-world no
create_purchase_requestdestructive[demo: deshabilitada] Creates a procurement order (purchase request) to a supplier.
Parameters:
itemName(required) — string — Name of the item being ordered.quantity(required) — integer — Quantity to order.unitPrice(required) — number — Unit price per item in ARS.supplierId— string — Existing supplier ID (optional if supplierName is provided).supplierName— string — Supplier name (optional if supplierId is provided).
Hints: read-only no · destructive yes · idempotent yes · open-world no
edit_supplierdestructive[demo: deshabilitada] Updates an existing supplier's fields.
Parameters:
supplierId(required) — string — ID of the supplier to update.name— string — New supplier name (optional).email— New email, or null to clear.phone— New phone number, or null to clear.contactName— New contact person name, or null to clear.leadTimeDays— New lead time in days, or null to clear.
Hints: read-only no · destructive yes · idempotent yes · open-world no
delete_supplierdestructive[demo: deshabilitada] Deletes a supplier from this business (with full audit trail).
Parameters:
supplierId(required) — string — ID of the supplier to delete.
Hints: read-only no · destructive yes · idempotent yes · open-world no
query_salesread-onlyQueries sales metrics from the database: 'ventas_periodo', 'margen', 'ranking_productos', 'por_empleado', or 'historial_cliente'.
Parameters:
metrica(required) — string — Metric to query.to— string — End date YYYY-MM-DD. Requires 'from'.from— string — Start date YYYY-MM-DD. Requires 'to'.limit— integer — Max results (default 10, max 50).preset— string — Preset date range. Mutually exclusive with from/to.customer_name— string — Customer name or fragment. Only for historial_cliente.
Hints: read-only yes · destructive no · idempotent yes · open-world no
connect_mercadopagodestructive[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.
Parameters:
accessToken— string — Optional MercadoPago production access token.
Hints: read-only no · destructive yes · idempotent yes · open-world yes
connect_pedidosyadestructive[demo: deshabilitada] Connects PedidosYa for this business using the BYOA secure-form model. Primary: returns a secure link. Fallback: accepts an API token directly.
Parameters:
apiToken— string — Optional PedidosYa API token.
Hints: read-only no · destructive yes · idempotent yes · open-world no
connect_whatsappdestructive[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.
Parameters:
phone— string — Optional WhatsApp Business phone in E.164 format.
Hints: read-only no · destructive yes · idempotent yes · open-world no
connect_tiendanubedestructive[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.
Hints: read-only no · destructive yes · idempotent yes · open-world yes
upload_catalogdestructive[demo: deshabilitada] Bulk-creates products in the business catalog from a structured list (up to 50 items).
Parameters:
products(required) — array — List of products to create (1–50 items).
Hints: read-only no · destructive yes · idempotent no · open-world no
open_sale_confirmread-onlyOpens 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.
Parameters:
items(required) — array — Line items for the sale.customerId— string — Optional customer ID (omit for anonymous sales).
Hints: read-only yes · destructive no · idempotent yes · open-world no
open_caja_statusread-onlyOpens a visual widget showing the current shift state and action buttons. Read-only here.
Hints: read-only yes · destructive no · idempotent yes · open-world no
open_onboardingread-onlyOpens a graphical onboarding hub showing integration status and connect links. Read-only.
Hints: read-only yes · destructive no · idempotent yes · open-world no
open_business_overviewread-onlyONE 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.
Parameters:
defaultTab— string — Optional fullscreen tab to open into.customerName— string — Optional customer name to pre-search on the Cliente 360 tab.
Hints: read-only yes · destructive no · idempotent yes · open-world no
open_shipment_prepread-onlyCombines 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.
Parameters:
items(required) — array — Line items to prepare for shipment.originPostalCode(required) — string — Origin postal code (4 digits).destinationPostalCode(required) — string — Destination postal code (4 digits).declaredValue— number — Declared value in ARS for insurance.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.