Velora LATAM Tools

Argentina CUIT/CUIL validation and AFIP fiscal QR generation. Pure, no-auth MCP tools.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
77%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'query_sales' description lacks action verbin query_sales

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,321Tokens (tool definitions)
~967 BTypical response size
Significant attention impact (2.59% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "latam-tools": {
      "url": "https://tools.somosvelora.com/api/mcp/public"
    }
  }
}

Remote endpoints

https://tools.somosvelora.com/api/mcp/publicstreamable-http

What it can do

Tool inventory

Tools (22)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒validate_cuit(cuit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "cuit": {
      "type": "string",
      "description": "CUIT/CUIL in any format (digits, hyphens, or spaces)."
    }
  },
  "required": [
    "cuit"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_fiscal_readiness

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒query_catalog(search)

Lists active products in the business catalog. Returns products sorted by name, each with id, name, price (ARS), costPrice, sku, stock quantity, and weightGrams.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Optional name filter (case-insensitive substring match).",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒open_catalog_selector(search)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Optional name filter (case-insensitive substring match).",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒find_customer(name, phone)

Searches customers in the business by name and/or phone. Returns up to 20 matching customers sorted by name.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Customer name substring to search (case-insensitive).",
      "type": "string"
    },
    "phone": {
      "description": "Customer phone number or partial number to search.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒quote_shipping(originPostalCode, destinationPostalCode, weightGrams, declaredValue)

Quotes shipment rates from every active courier configured for the authenticated business and returns options sorted by price ascending.

Input Schema

{
  "type": "object",
  "properties": {
    "originPostalCode": {
      "type": "string",
      "description": "Origin postal code (4 digits)."
    },
    "destinationPostalCode": {
      "type": "string",
      "description": "Destination postal code (4 digits)."
    },
    "weightGrams": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Total shipment weight in grams."
    },
    "declaredValue": {
      "description": "Declared value in ARS for insurance.",
      "type": "number",
      "minimum": 0
    }
  },
  "required": [
    "originPostalCode",
    "destinationPostalCode",
    "weightGrams"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒track_shipment(trackingNumber, provider)

Tracks the current status and event history of a shipment by tracking number.

Input Schema

{
  "type": "object",
  "properties": {
    "trackingNumber": {
      "type": "string",
      "description": "Tracking number returned by the courier at shipment creation time."
    },
    "provider": {
      "type": "string",
      "description": "Courier that created the shipment ('andreani', 'oca')."
    }
  },
  "required": [
    "trackingNumber",
    "provider"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_package_profile(saleId, productIds, weightGramsOverride)

Computes the shipment weight and item breakdown for a package. Accepts a saleId, a list of productIds, or an explicit weightGramsOverride.

Input Schema

{
  "type": "object",
  "properties": {
    "saleId": {
      "description": "Velora Sale ID (takes priority over productIds).",
      "type": "string"
    },
    "productIds": {
      "description": "Array of Velora Product IDs (assumes qty=1 per id).",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "weightGramsOverride": {
      "description": "Explicit weight override in grams.",
      "type": "number",
      "exclusiveMinimum": 0
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒connection_status

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒caja_consultar_saldo

Queries the current cash register balance for the authenticated business β€” the open session data or the last closed session. Read-only.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_payment_intent_status(paymentIntentId, customerName)

Checks the current status of a Velora PaymentIntent. Accepts a paymentIntentId OR a customer name.

Input Schema

{
  "type": "object",
  "properties": {
    "paymentIntentId": {
      "description": "Velora PaymentIntent id. Optional when customerName is provided.",
      "type": "string"
    },
    "customerName": {
      "description": "Customer name (fuzzy match).",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒open_payment_link_wizard(description, customerId, items)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "description": {
      "type": "string",
      "minLength": 1,
      "description": "Cobro description (e.g. '3 alfajores')."
    },
    "customerId": {
      "description": "Customer ID (optional).",
      "type": "string",
      "minLength": 1
    },
    "items": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "minLength": 1,
            "description": "Product ID."
          },
          "quantity": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Units."
          },
          "unitPriceOverride": {
            "description": "Optional negotiated unit price.",
            "type": "number",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "productId",
          "quantity"
        ]
      },
      "description": "Line items (productId + quantity)."
    }
  },
  "required": [
    "description",
    "items"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒open_pending_orders

Opens the pending cobros dashboard β€” a read-only widget listing PaymentIntents awaiting payment. Side-effect-free.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒open_cobro_status(paymentIntentId, customerName)

Opens the cobro status widget β€” a read-only view of ONE PaymentIntent's payment state. Accepts paymentIntentId OR customerName.

Input Schema

{
  "type": "object",
  "properties": {
    "paymentIntentId": {
      "description": "Velora PaymentIntent id (optional when customerName is provided).",
      "type": "string"
    },
    "customerName": {
      "description": "Customer name (optional when paymentIntentId is provided).",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒open_delivery_receipt(paymentIntentId, saleId, customerName)

Opens the comprobante + envΓ­o widget β€” a read-only view of the delivery receipt for a completed cobro. Accepts paymentIntentId, saleId, OR customerName.

Input Schema

{
  "type": "object",
  "properties": {
    "paymentIntentId": {
      "description": "Velora PaymentIntent id (optional).",
      "type": "string"
    },
    "saleId": {
      "description": "Velora Sale id (optional).",
      "type": "string"
    },
    "customerName": {
      "description": "Customer name (optional).",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒list_suppliers(search)

Returns all suppliers for this business (up to 50, sorted by name).

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Optional name substring to filter suppliers.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒query_sales(metrica, preset, from, to, customer_name, ...)

Queries sales metrics from the database: 'ventas_periodo', 'margen', 'ranking_productos', 'por_empleado', or 'historial_cliente'.

Input Schema

{
  "type": "object",
  "properties": {
    "metrica": {
      "type": "string",
      "enum": [
        "ventas_periodo",
        "margen",
        "ranking_productos",
        "por_empleado",
        "historial_cliente"
      ],
      "description": "Metric to query."
    },
    "preset": {
      "description": "Preset date range. Mutually exclusive with from/to.",
      "type": "string",
      "enum": [
        "hoy",
        "semana",
        "mes"
      ]
    },
    "from": {
      "description": "Start date YYYY-MM-DD. Requires 'to'.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "to": {
      "description": "End date YYYY-MM-DD. Requires 'from'.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "customer_name": {
      "description": "Customer name or fragment. Only for historial_cliente.",
      "type": "string",
      "minLength": 1
    },
    "limit": {
      "default": 10,
      "description": "Max results (default 10, max 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "metrica"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒open_sale_confirm(items, customerId)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "items": {
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "minLength": 1,
            "description": "Product ID."
          },
          "quantity": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Units to sell."
          }
        },
        "required": [
          "productId",
          "quantity"
        ]
      },
      "description": "Line items for the sale."
    },
    "customerId": {
      "description": "Optional customer ID (omit for anonymous sales).",
      "type": "string"
    }
  },
  "required": [
    "items"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒open_caja_status

Opens a visual widget showing the current shift state and action buttons. Read-only here.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒open_onboarding

Opens a graphical onboarding hub showing integration status and connect links. Read-only.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒open_business_overview(customerName, defaultTab)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "customerName": {
      "description": "Optional customer name to pre-search on the Cliente 360 tab.",
      "type": "string"
    },
    "defaultTab": {
      "description": "Optional fullscreen tab to open into.",
      "type": "string",
      "enum": [
        "cliente_360",
        "cierre_dia",
        "reposicion_stock",
        "dashboard_ventas"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒open_shipment_prep(items, originPostalCode, destinationPostalCode, declaredValue)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "items": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "minLength": 1,
            "description": "Product ID."
          },
          "quantity": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Units."
          }
        },
        "required": [
          "productId",
          "quantity"
        ]
      },
      "description": "Line items to prepare for shipment."
    },
    "originPostalCode": {
      "type": "string",
      "description": "Origin postal code (4 digits)."
    },
    "destinationPostalCode": {
      "type": "string",
      "description": "Destination postal code (4 digits)."
    },
    "declaredValue": {
      "description": "Declared value in ARS for insurance.",
      "type": "number",
      "minimum": 0
    }
  },
  "required": [
    "items",
    "originPostalCode",
    "destinationPostalCode"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded22 tools
verifiedversion not recorded22 tools
verifiedversion not recorded22 tools