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
verifiedversion not recorded22 tools
verifiedversion not recorded22 tools
verifiedversion not recorded22 tools