Velora LATAM Tools
by crossi-dev · remote · no sign-in to list tools · v1.0.0 · published by GitHub user crossi-dev
Argentina CUIT/CUIL validation and AFIP fiscal QR generation. Pure, no-auth MCP tools.
22 tools: 12 change things and 10 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things12Claude 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 latam-tools https://tools.somosvelora.com/api/mcp/publicFindings
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.
22 tools
Changes things 12Claude Code: ask
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.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http latam-tools https://tools.somosvelora.com/api/mcp/publicRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__latam-tools__validate_cuit",
"mcp__latam-tools__get_fiscal_readiness",
"mcp__latam-tools__query_catalog",
"mcp__latam-tools__find_customer",
"mcp__latam-tools__get_package_profile",
"mcp__latam-tools__connection_status",
"mcp__latam-tools__caja_consultar_saldo",
"mcp__latam-tools__get_payment_intent_status",
"mcp__latam-tools__list_suppliers",
"mcp__latam-tools__query_sales"
],
"ask": [
"mcp__latam-tools__open_catalog_selector",
"mcp__latam-tools__quote_shipping",
"mcp__latam-tools__track_shipment",
"mcp__latam-tools__open_payment_link_wizard",
"mcp__latam-tools__open_pending_orders",
"mcp__latam-tools__open_cobro_status",
"mcp__latam-tools__open_delivery_receipt",
"mcp__latam-tools__open_sale_confirm",
"mcp__latam-tools__open_caja_status",
"mcp__latam-tools__open_onboarding",
"mcp__latam-tools__open_business_overview",
"mcp__latam-tools__open_shipment_prep"
],
"deny": []
}
}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 latam-tools. Review it before you use it.
